bfd/ChangeLog
[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}
07540c15
DE
1046Do not execute commands found in any initialization file.
1047There are three init files, loaded in the following order:
1048
1049@table @code
1050@item @file{system.gdbinit}
1051This is the system-wide init file.
1052Its location is specified with the @code{--with-system-gdbinit}
1053configure option (@pxref{System-wide configuration}).
1054It is loaded first when @value{GDBN} starts, before command line options
1055have been processed.
1056@item @file{~/.gdbinit}
1057This is the init file in your home directory.
1058It is loaded next, after @file{system.gdbinit}, and before
1059command options have been processed.
1060@item @file{./.gdbinit}
1061This is the init file in the current directory.
1062It is loaded last, after command line options other than @code{-x} and
1063@code{-ex} have been processed. Command line options @code{-x} and
1064@code{-ex} are processed last, after @file{./.gdbinit} has been loaded.
1065@end table
1066
1067For further documentation on startup processing, @xref{Startup}.
1068For documentation on how to write command files,
1069@xref{Command Files,,Command Files}.
1070
1071@anchor{-nh}
1072@item -nh
1073@cindex @code{--nh}
1074Do not execute commands found in @file{~/.gdbinit}, the init file
1075in your home directory.
1076@xref{Startup}.
c906108c
SS
1077
1078@item -quiet
d700128c 1079@itemx -silent
c906108c 1080@itemx -q
d700128c
EZ
1081@cindex @code{--quiet}
1082@cindex @code{--silent}
1083@cindex @code{-q}
c906108c
SS
1084``Quiet''. Do not print the introductory and copyright messages. These
1085messages are also suppressed in batch mode.
1086
1087@item -batch
d700128c 1088@cindex @code{--batch}
c906108c
SS
1089Run in batch mode. Exit with status @code{0} after processing all the
1090command files specified with @samp{-x} (and all commands from
1091initialization files, if not inhibited with @samp{-n}). Exit with
1092nonzero status if an error occurs in executing the @value{GDBN} commands
5da1313b
JK
1093in the command files. Batch mode also disables pagination, sets unlimited
1094terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm
1095off} were in effect (@pxref{Messages/Warnings}).
c906108c 1096
2df3850c
JM
1097Batch mode may be useful for running @value{GDBN} as a filter, for
1098example to download and run a program on another computer; in order to
1099make this more useful, the message
c906108c 1100
474c8240 1101@smallexample
c906108c 1102Program exited normally.
474c8240 1103@end smallexample
c906108c
SS
1104
1105@noindent
2df3850c
JM
1106(which is ordinarily issued whenever a program running under
1107@value{GDBN} control terminates) is not issued when running in batch
1108mode.
1109
1a088d06
AS
1110@item -batch-silent
1111@cindex @code{--batch-silent}
1112Run in batch mode exactly like @samp{-batch}, but totally silently. All
1113@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
1114unaffected). This is much quieter than @samp{-silent} and would be useless
1115for an interactive session.
1116
1117This is particularly useful when using targets that give @samp{Loading section}
1118messages, for example.
1119
1120Note that targets that give their output via @value{GDBN}, as opposed to
1121writing directly to @code{stdout}, will also be made silent.
1122
4b0ad762
AS
1123@item -return-child-result
1124@cindex @code{--return-child-result}
1125The return code from @value{GDBN} will be the return code from the child
1126process (the process being debugged), with the following exceptions:
1127
1128@itemize @bullet
1129@item
1130@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an
1131internal error. In this case the exit code is the same as it would have been
1132without @samp{-return-child-result}.
1133@item
1134The user quits with an explicit value. E.g., @samp{quit 1}.
1135@item
1136The child process never runs, or is not allowed to terminate, in which case
1137the exit code will be -1.
1138@end itemize
1139
1140This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
1141when @value{GDBN} is being used as a remote program loader or simulator
1142interface.
1143
2df3850c
JM
1144@item -nowindows
1145@itemx -nw
d700128c
EZ
1146@cindex @code{--nowindows}
1147@cindex @code{-nw}
2df3850c 1148``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 1149(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
1150interface. If no GUI is available, this option has no effect.
1151
1152@item -windows
1153@itemx -w
d700128c
EZ
1154@cindex @code{--windows}
1155@cindex @code{-w}
2df3850c
JM
1156If @value{GDBN} includes a GUI, then this option requires it to be
1157used if possible.
c906108c
SS
1158
1159@item -cd @var{directory}
d700128c 1160@cindex @code{--cd}
c906108c
SS
1161Run @value{GDBN} using @var{directory} as its working directory,
1162instead of the current directory.
1163
aae1c79a
DE
1164@item -data-directory @var{directory}
1165@cindex @code{--data-directory}
1166Run @value{GDBN} using @var{directory} as its data directory.
1167The data directory is where @value{GDBN} searches for its
1168auxiliary files. @xref{Data Files}.
1169
c906108c
SS
1170@item -fullname
1171@itemx -f
d700128c
EZ
1172@cindex @code{--fullname}
1173@cindex @code{-f}
7a292a7a
SS
1174@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1175subprocess. It tells @value{GDBN} to output the full file name and line
1176number in a standard, recognizable fashion each time a stack frame is
1177displayed (which includes each time your program stops). This
1178recognizable format looks like two @samp{\032} characters, followed by
1179the file name, line number and character position separated by colons,
1180and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1181@samp{\032} characters as a signal to display the source code for the
1182frame.
c906108c 1183
d700128c
EZ
1184@item -epoch
1185@cindex @code{--epoch}
1186The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1187@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1188routines so as to allow Epoch to display values of expressions in a
1189separate window.
1190
1191@item -annotate @var{level}
1192@cindex @code{--annotate}
1193This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1194effect is identical to using @samp{set annotate @var{level}}
086432e2
AC
1195(@pxref{Annotations}). The annotation @var{level} controls how much
1196information @value{GDBN} prints together with its prompt, values of
1197expressions, source lines, and other types of output. Level 0 is the
1198normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1199@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1200that control @value{GDBN}, and level 2 has been deprecated.
1201
265eeb58 1202The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2 1203(@pxref{GDB/MI}).
d700128c 1204
aa26fa3a
TT
1205@item --args
1206@cindex @code{--args}
1207Change interpretation of command line so that arguments following the
1208executable file are passed as command line arguments to the inferior.
1209This option stops option processing.
1210
2df3850c
JM
1211@item -baud @var{bps}
1212@itemx -b @var{bps}
d700128c
EZ
1213@cindex @code{--baud}
1214@cindex @code{-b}
c906108c
SS
1215Set the line speed (baud rate or bits per second) of any serial
1216interface used by @value{GDBN} for remote debugging.
c906108c 1217
f47b1503
AS
1218@item -l @var{timeout}
1219@cindex @code{-l}
1220Set the timeout (in seconds) of any communication used by @value{GDBN}
1221for remote debugging.
1222
c906108c 1223@item -tty @var{device}
d700128c
EZ
1224@itemx -t @var{device}
1225@cindex @code{--tty}
1226@cindex @code{-t}
c906108c
SS
1227Run using @var{device} for your program's standard input and output.
1228@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1229
53a5351d 1230@c resolve the situation of these eventually
c4555f82
SC
1231@item -tui
1232@cindex @code{--tui}
d0d5df6f
AC
1233Activate the @dfn{Text User Interface} when starting. The Text User
1234Interface manages several text windows on the terminal, showing
1235source, assembly, registers and @value{GDBN} command outputs
217bff3e
JK
1236(@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this
1237option if you run @value{GDBN} from Emacs (@pxref{Emacs, ,
1238Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1239
1240@c @item -xdb
d700128c 1241@c @cindex @code{--xdb}
53a5351d
JM
1242@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1243@c For information, see the file @file{xdb_trans.html}, which is usually
1244@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1245@c systems.
1246
d700128c
EZ
1247@item -interpreter @var{interp}
1248@cindex @code{--interpreter}
1249Use the interpreter @var{interp} for interface with the controlling
1250program or device. This option is meant to be set by programs which
94bbb2c0 1251communicate with @value{GDBN} using it as a back end.
21c294e6 1252@xref{Interpreters, , Command Interpreters}.
94bbb2c0 1253
da0f9dcd 1254@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
2fcf52f0 1255@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
6b5e8c01 1256The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The
6c74ac8b
AC
1257previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1258selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1259@sc{gdb/mi} interfaces are no longer supported.
d700128c
EZ
1260
1261@item -write
1262@cindex @code{--write}
1263Open the executable and core files for both reading and writing. This
1264is equivalent to the @samp{set write on} command inside @value{GDBN}
1265(@pxref{Patching}).
1266
1267@item -statistics
1268@cindex @code{--statistics}
1269This option causes @value{GDBN} to print statistics about time and
1270memory usage after it completes each command and returns to the prompt.
1271
1272@item -version
1273@cindex @code{--version}
1274This option causes @value{GDBN} to print its version number and
1275no-warranty blurb, and exit.
1276
c906108c
SS
1277@end table
1278
6fc08d32 1279@node Startup
79a6e687 1280@subsection What @value{GDBN} Does During Startup
6fc08d32
EZ
1281@cindex @value{GDBN} startup
1282
1283Here's the description of what @value{GDBN} does during session startup:
1284
1285@enumerate
1286@item
1287Sets up the command interpreter as specified by the command line
1288(@pxref{Mode Options, interpreter}).
1289
1290@item
1291@cindex init file
098b41a6
JG
1292Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was
1293used when building @value{GDBN}; @pxref{System-wide configuration,
1294 ,System-wide configuration and settings}) and executes all the commands in
1295that file.
1296
bf88dd68 1297@anchor{Home Directory Init File}
098b41a6
JG
1298@item
1299Reads the init file (if any) in your home directory@footnote{On
6fc08d32
EZ
1300DOS/Windows systems, the home directory is the one pointed to by the
1301@code{HOME} environment variable.} and executes all the commands in
1302that file.
1303
2d7b58e8
JK
1304@anchor{Option -init-eval-command}
1305@item
1306Executes commands and command files specified by the @samp{-iex} and
1307@samp{-ix} options in their specified order. Usually you should use the
1308@samp{-ex} and @samp{-x} options instead, but this way you can apply
1309settings before @value{GDBN} init files get executed and before inferior
1310gets loaded.
1311
6fc08d32
EZ
1312@item
1313Processes command line options and operands.
1314
bf88dd68 1315@anchor{Init File in the Current Directory during Startup}
6fc08d32
EZ
1316@item
1317Reads and executes the commands from init file (if any) in the current
bf88dd68
JK
1318working directory as long as @samp{set auto-load local-gdbinit} is set to
1319@samp{on} (@pxref{Init File in the Current Directory}).
1320This is only done if the current directory is
119b882a
EZ
1321different from your home directory. Thus, you can have more than one
1322init file, one generic in your home directory, and another, specific
1323to the program you are debugging, in the directory where you invoke
6fc08d32
EZ
1324@value{GDBN}.
1325
a86caf66
DE
1326@item
1327If the command line specified a program to debug, or a process to
1328attach to, or a core file, @value{GDBN} loads any auto-loaded
1329scripts provided for the program or for its loaded shared libraries.
1330@xref{Auto-loading}.
1331
1332If you wish to disable the auto-loading during startup,
1333you must do something like the following:
1334
1335@smallexample
bf88dd68 1336$ gdb -iex "set auto-load python-scripts off" myprogram
a86caf66
DE
1337@end smallexample
1338
8320cc4f
JK
1339Option @samp{-ex} does not work because the auto-loading is then turned
1340off too late.
a86caf66 1341
6fc08d32 1342@item
6fe37d23
JK
1343Executes commands and command files specified by the @samp{-ex} and
1344@samp{-x} options in their specified order. @xref{Command Files}, for
1345more details about @value{GDBN} command files.
6fc08d32
EZ
1346
1347@item
1348Reads the command history recorded in the @dfn{history file}.
d620b259 1349@xref{Command History}, for more details about the command history and the
6fc08d32
EZ
1350files where @value{GDBN} records it.
1351@end enumerate
1352
1353Init files use the same syntax as @dfn{command files} (@pxref{Command
1354Files}) and are processed by @value{GDBN} in the same way. The init
1355file in your home directory can set options (such as @samp{set
1356complaints}) that affect subsequent processing of command line options
1357and operands. Init files are not executed if you use the @samp{-nx}
79a6e687 1358option (@pxref{Mode Options, ,Choosing Modes}).
6fc08d32 1359
098b41a6
JG
1360To display the list of init files loaded by gdb at startup, you
1361can use @kbd{gdb --help}.
1362
6fc08d32
EZ
1363@cindex init file name
1364@cindex @file{.gdbinit}
119b882a 1365@cindex @file{gdb.ini}
8807d78b 1366The @value{GDBN} init files are normally called @file{.gdbinit}.
119b882a
EZ
1367The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to
1368the limitations of file names imposed by DOS filesystems. The Windows
4d3f93a2
JB
1369port of @value{GDBN} uses the standard name, but if it finds a
1370@file{gdb.ini} file in your home directory, it warns you about that
1371and suggests to rename the file to the standard name.
119b882a 1372
6fc08d32 1373
6d2ebf8b 1374@node Quitting GDB
c906108c
SS
1375@section Quitting @value{GDBN}
1376@cindex exiting @value{GDBN}
1377@cindex leaving @value{GDBN}
1378
1379@table @code
1380@kindex quit @r{[}@var{expression}@r{]}
41afff9a 1381@kindex q @r{(@code{quit})}
96a2c332
SS
1382@item quit @r{[}@var{expression}@r{]}
1383@itemx q
1384To exit @value{GDBN}, use the @code{quit} command (abbreviated
c8aa23ab 1385@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you
96a2c332
SS
1386do not supply @var{expression}, @value{GDBN} will terminate normally;
1387otherwise it will terminate using the result of @var{expression} as the
1388error code.
c906108c
SS
1389@end table
1390
1391@cindex interrupt
c8aa23ab 1392An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather
c906108c
SS
1393terminates the action of any @value{GDBN} command that is in progress and
1394returns to @value{GDBN} command level. It is safe to type the interrupt
1395character at any time because @value{GDBN} does not allow it to take effect
1396until a time when it is safe.
1397
c906108c
SS
1398If you have been using @value{GDBN} to control an attached process or
1399device, you can release it with the @code{detach} command
79a6e687 1400(@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 1401
6d2ebf8b 1402@node Shell Commands
79a6e687 1403@section Shell Commands
c906108c
SS
1404
1405If you need to execute occasional shell commands during your
1406debugging session, there is no need to leave or suspend @value{GDBN}; you can
1407just use the @code{shell} command.
1408
1409@table @code
1410@kindex shell
ed59ded5 1411@kindex !
c906108c 1412@cindex shell escape
ed59ded5
DE
1413@item shell @var{command-string}
1414@itemx !@var{command-string}
1415Invoke a standard shell to execute @var{command-string}.
1416Note that no space is needed between @code{!} and @var{command-string}.
c906108c 1417If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1418shell to run. Otherwise @value{GDBN} uses the default shell
1419(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1420@end table
1421
1422The utility @code{make} is often needed in development environments.
1423You do not have to use the @code{shell} command for this purpose in
1424@value{GDBN}:
1425
1426@table @code
1427@kindex make
1428@cindex calling make
1429@item make @var{make-args}
1430Execute the @code{make} program with the specified
1431arguments. This is equivalent to @samp{shell make @var{make-args}}.
1432@end table
1433
79a6e687
BW
1434@node Logging Output
1435@section Logging Output
0fac0b41 1436@cindex logging @value{GDBN} output
9c16f35a 1437@cindex save @value{GDBN} output to a file
0fac0b41
DJ
1438
1439You may want to save the output of @value{GDBN} commands to a file.
1440There are several commands to control @value{GDBN}'s logging.
1441
1442@table @code
1443@kindex set logging
1444@item set logging on
1445Enable logging.
1446@item set logging off
1447Disable logging.
9c16f35a 1448@cindex logging file name
0fac0b41
DJ
1449@item set logging file @var{file}
1450Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1451@item set logging overwrite [on|off]
1452By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1453you want @code{set logging on} to overwrite the logfile instead.
1454@item set logging redirect [on|off]
1455By default, @value{GDBN} output will go to both the terminal and the logfile.
1456Set @code{redirect} if you want output to go only to the log file.
1457@kindex show logging
1458@item show logging
1459Show the current values of the logging settings.
1460@end table
1461
6d2ebf8b 1462@node Commands
c906108c
SS
1463@chapter @value{GDBN} Commands
1464
1465You can abbreviate a @value{GDBN} command to the first few letters of the command
1466name, if that abbreviation is unambiguous; and you can repeat certain
1467@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1468key to get @value{GDBN} to fill out the rest of a word in a command (or to
1469show you the alternatives available, if there is more than one possibility).
1470
1471@menu
1472* Command Syntax:: How to give commands to @value{GDBN}
1473* Completion:: Command completion
1474* Help:: How to ask @value{GDBN} for help
1475@end menu
1476
6d2ebf8b 1477@node Command Syntax
79a6e687 1478@section Command Syntax
c906108c
SS
1479
1480A @value{GDBN} command is a single line of input. There is no limit on
1481how long it can be. It starts with a command name, which is followed by
1482arguments whose meaning depends on the command name. For example, the
1483command @code{step} accepts an argument which is the number of times to
1484step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1485with no arguments. Some commands do not allow any arguments.
c906108c
SS
1486
1487@cindex abbreviation
1488@value{GDBN} command names may always be truncated if that abbreviation is
1489unambiguous. Other possible command abbreviations are listed in the
1490documentation for individual commands. In some cases, even ambiguous
1491abbreviations are allowed; for example, @code{s} is specially defined as
1492equivalent to @code{step} even though there are other commands whose
1493names start with @code{s}. You can test abbreviations by using them as
1494arguments to the @code{help} command.
1495
1496@cindex repeating commands
41afff9a 1497@kindex RET @r{(repeat last command)}
c906108c 1498A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1499repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1500will not repeat this way; these are commands whose unintentional
1501repetition might cause trouble and which you are unlikely to want to
c45da7e6
EZ
1502repeat. User-defined commands can disable this feature; see
1503@ref{Define, dont-repeat}.
c906108c
SS
1504
1505The @code{list} and @code{x} commands, when you repeat them with
1506@key{RET}, construct new arguments rather than repeating
1507exactly as typed. This permits easy scanning of source or memory.
1508
1509@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1510output, in a way similar to the common utility @code{more}
79a6e687 1511(@pxref{Screen Size,,Screen Size}). Since it is easy to press one
c906108c
SS
1512@key{RET} too many in this situation, @value{GDBN} disables command
1513repetition after any command that generates this sort of display.
1514
41afff9a 1515@kindex # @r{(a comment)}
c906108c
SS
1516@cindex comment
1517Any text from a @kbd{#} to the end of the line is a comment; it does
1518nothing. This is useful mainly in command files (@pxref{Command
79a6e687 1519Files,,Command Files}).
c906108c 1520
88118b3a 1521@cindex repeating command sequences
c8aa23ab
EZ
1522@kindex Ctrl-o @r{(operate-and-get-next)}
1523The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of
7f9087cb 1524commands. This command accepts the current line, like @key{RET}, and
88118b3a
TT
1525then fetches the next line relative to the current line from the history
1526for editing.
1527
6d2ebf8b 1528@node Completion
79a6e687 1529@section Command Completion
c906108c
SS
1530
1531@cindex completion
1532@cindex word completion
1533@value{GDBN} can fill in the rest of a word in a command for you, if there is
1534only one possibility; it can also show you what the valid possibilities
1535are for the next word in a command, at any time. This works for @value{GDBN}
1536commands, @value{GDBN} subcommands, and the names of symbols in your program.
1537
1538Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1539of a word. If there is only one possibility, @value{GDBN} fills in the
1540word, and waits for you to finish the command (or press @key{RET} to
1541enter it). For example, if you type
1542
1543@c FIXME "@key" does not distinguish its argument sufficiently to permit
1544@c complete accuracy in these examples; space introduced for clarity.
1545@c If texinfo enhancements make it unnecessary, it would be nice to
1546@c replace " @key" by "@key" in the following...
474c8240 1547@smallexample
c906108c 1548(@value{GDBP}) info bre @key{TAB}
474c8240 1549@end smallexample
c906108c
SS
1550
1551@noindent
1552@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1553the only @code{info} subcommand beginning with @samp{bre}:
1554
474c8240 1555@smallexample
c906108c 1556(@value{GDBP}) info breakpoints
474c8240 1557@end smallexample
c906108c
SS
1558
1559@noindent
1560You can either press @key{RET} at this point, to run the @code{info
1561breakpoints} command, or backspace and enter something else, if
1562@samp{breakpoints} does not look like the command you expected. (If you
1563were sure you wanted @code{info breakpoints} in the first place, you
1564might as well just type @key{RET} immediately after @samp{info bre},
1565to exploit command abbreviations rather than command completion).
1566
1567If there is more than one possibility for the next word when you press
1568@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1569characters and try again, or just press @key{TAB} a second time;
1570@value{GDBN} displays all the possible completions for that word. For
1571example, you might want to set a breakpoint on a subroutine whose name
1572begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1573just sounds the bell. Typing @key{TAB} again displays all the
1574function names in your program that begin with those characters, for
1575example:
1576
474c8240 1577@smallexample
c906108c
SS
1578(@value{GDBP}) b make_ @key{TAB}
1579@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1580make_a_section_from_file make_environ
1581make_abs_section make_function_type
1582make_blockvector make_pointer_type
1583make_cleanup make_reference_type
c906108c
SS
1584make_command make_symbol_completion_list
1585(@value{GDBP}) b make_
474c8240 1586@end smallexample
c906108c
SS
1587
1588@noindent
1589After displaying the available possibilities, @value{GDBN} copies your
1590partial input (@samp{b make_} in the example) so you can finish the
1591command.
1592
1593If you just want to see the list of alternatives in the first place, you
b37052ae 1594can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1595means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1596key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1597one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1598
1599@cindex quotes in commands
1600@cindex completion of quoted strings
1601Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1602parentheses or other characters that @value{GDBN} normally excludes from
1603its notion of a word. To permit word completion to work in this
1604situation, you may enclose words in @code{'} (single quote marks) in
1605@value{GDBN} commands.
c906108c 1606
c906108c 1607The most likely situation where you might need this is in typing the
b37052ae
EZ
1608name of a C@t{++} function. This is because C@t{++} allows function
1609overloading (multiple definitions of the same function, distinguished
1610by argument type). For example, when you want to set a breakpoint you
1611may need to distinguish whether you mean the version of @code{name}
1612that takes an @code{int} parameter, @code{name(int)}, or the version
1613that takes a @code{float} parameter, @code{name(float)}. To use the
1614word-completion facilities in this situation, type a single quote
1615@code{'} at the beginning of the function name. This alerts
1616@value{GDBN} that it may need to consider more information than usual
1617when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c 1618
474c8240 1619@smallexample
96a2c332 1620(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1621bubble(double,double) bubble(int,int)
1622(@value{GDBP}) b 'bubble(
474c8240 1623@end smallexample
c906108c
SS
1624
1625In some cases, @value{GDBN} can tell that completing a name requires using
1626quotes. When this happens, @value{GDBN} inserts the quote for you (while
1627completing as much as it can) if you do not type the quote in the first
1628place:
1629
474c8240 1630@smallexample
c906108c
SS
1631(@value{GDBP}) b bub @key{TAB}
1632@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1633(@value{GDBP}) b 'bubble(
474c8240 1634@end smallexample
c906108c
SS
1635
1636@noindent
1637In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1638you have not yet started typing the argument list when you ask for
1639completion on an overloaded symbol.
1640
79a6e687
BW
1641For more information about overloaded functions, see @ref{C Plus Plus
1642Expressions, ,C@t{++} Expressions}. You can use the command @code{set
c906108c 1643overload-resolution off} to disable overload resolution;
79a6e687 1644see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}.
c906108c 1645
65d12d83
TT
1646@cindex completion of structure field names
1647@cindex structure field name completion
1648@cindex completion of union field names
1649@cindex union field name completion
1650When completing in an expression which looks up a field in a
1651structure, @value{GDBN} also tries@footnote{The completer can be
1652confused by certain kinds of invalid expressions. Also, it only
1653examines the static type of the expression, not the dynamic type.} to
1654limit completions to the field names available in the type of the
1655left-hand-side:
1656
1657@smallexample
1658(@value{GDBP}) p gdb_stdout.@kbd{M-?}
01124a23
DE
1659magic to_fputs to_rewind
1660to_data to_isatty to_write
1661to_delete to_put to_write_async_safe
1662to_flush to_read
65d12d83
TT
1663@end smallexample
1664
1665@noindent
1666This is because the @code{gdb_stdout} is a variable of the type
1667@code{struct ui_file} that is defined in @value{GDBN} sources as
1668follows:
1669
1670@smallexample
1671struct ui_file
1672@{
1673 int *magic;
1674 ui_file_flush_ftype *to_flush;
1675 ui_file_write_ftype *to_write;
01124a23 1676 ui_file_write_async_safe_ftype *to_write_async_safe;
65d12d83
TT
1677 ui_file_fputs_ftype *to_fputs;
1678 ui_file_read_ftype *to_read;
1679 ui_file_delete_ftype *to_delete;
1680 ui_file_isatty_ftype *to_isatty;
1681 ui_file_rewind_ftype *to_rewind;
1682 ui_file_put_ftype *to_put;
1683 void *to_data;
1684@}
1685@end smallexample
1686
c906108c 1687
6d2ebf8b 1688@node Help
79a6e687 1689@section Getting Help
c906108c
SS
1690@cindex online documentation
1691@kindex help
1692
5d161b24 1693You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1694using the command @code{help}.
1695
1696@table @code
41afff9a 1697@kindex h @r{(@code{help})}
c906108c
SS
1698@item help
1699@itemx h
1700You can use @code{help} (abbreviated @code{h}) with no arguments to
1701display a short list of named classes of commands:
1702
1703@smallexample
1704(@value{GDBP}) help
1705List of classes of commands:
1706
2df3850c 1707aliases -- Aliases of other commands
c906108c 1708breakpoints -- Making program stop at certain points
2df3850c 1709data -- Examining data
c906108c 1710files -- Specifying and examining files
2df3850c
JM
1711internals -- Maintenance commands
1712obscure -- Obscure features
1713running -- Running the program
1714stack -- Examining the stack
c906108c
SS
1715status -- Status inquiries
1716support -- Support facilities
12c27660 1717tracepoints -- Tracing of program execution without
96a2c332 1718 stopping the program
c906108c 1719user-defined -- User-defined commands
c906108c 1720
5d161b24 1721Type "help" followed by a class name for a list of
c906108c 1722commands in that class.
5d161b24 1723Type "help" followed by command name for full
c906108c
SS
1724documentation.
1725Command name abbreviations are allowed if unambiguous.
1726(@value{GDBP})
1727@end smallexample
96a2c332 1728@c the above line break eliminates huge line overfull...
c906108c
SS
1729
1730@item help @var{class}
1731Using one of the general help classes as an argument, you can get a
1732list of the individual commands in that class. For example, here is the
1733help display for the class @code{status}:
1734
1735@smallexample
1736(@value{GDBP}) help status
1737Status inquiries.
1738
1739List of commands:
1740
1741@c Line break in "show" line falsifies real output, but needed
1742@c to fit in smallbook page size.
2df3850c 1743info -- Generic command for showing things
12c27660 1744 about the program being debugged
2df3850c 1745show -- Generic command for showing things
12c27660 1746 about the debugger
c906108c 1747
5d161b24 1748Type "help" followed by command name for full
c906108c
SS
1749documentation.
1750Command name abbreviations are allowed if unambiguous.
1751(@value{GDBP})
1752@end smallexample
1753
1754@item help @var{command}
1755With a command name as @code{help} argument, @value{GDBN} displays a
1756short paragraph on how to use that command.
1757
6837a0a2
DB
1758@kindex apropos
1759@item apropos @var{args}
09d4efe1 1760The @code{apropos} command searches through all of the @value{GDBN}
6837a0a2 1761commands, and their documentation, for the regular expression specified in
99e008fe 1762@var{args}. It prints out all matches found. For example:
6837a0a2
DB
1763
1764@smallexample
16899756 1765apropos alias
6837a0a2
DB
1766@end smallexample
1767
b37052ae
EZ
1768@noindent
1769results in:
6837a0a2
DB
1770
1771@smallexample
6d2ebf8b 1772@c @group
16899756
DE
1773alias -- Define a new command that is an alias of an existing command
1774aliases -- Aliases of other commands
1775d -- Delete some breakpoints or auto-display expressions
1776del -- Delete some breakpoints or auto-display expressions
1777delete -- Delete some breakpoints or auto-display expressions
6d2ebf8b 1778@c @end group
6837a0a2
DB
1779@end smallexample
1780
c906108c
SS
1781@kindex complete
1782@item complete @var{args}
1783The @code{complete @var{args}} command lists all the possible completions
1784for the beginning of a command. Use @var{args} to specify the beginning of the
1785command you want completed. For example:
1786
1787@smallexample
1788complete i
1789@end smallexample
1790
1791@noindent results in:
1792
1793@smallexample
1794@group
2df3850c
JM
1795if
1796ignore
c906108c
SS
1797info
1798inspect
c906108c
SS
1799@end group
1800@end smallexample
1801
1802@noindent This is intended for use by @sc{gnu} Emacs.
1803@end table
1804
1805In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1806and @code{show} to inquire about the state of your program, or the state
1807of @value{GDBN} itself. Each command supports many topics of inquiry; this
1808manual introduces each of them in the appropriate context. The listings
00595b5e
EZ
1809under @code{info} and under @code{show} in the Command, Variable, and
1810Function Index point to all the sub-commands. @xref{Command and Variable
1811Index}.
c906108c
SS
1812
1813@c @group
1814@table @code
1815@kindex info
41afff9a 1816@kindex i @r{(@code{info})}
c906108c
SS
1817@item info
1818This command (abbreviated @code{i}) is for describing the state of your
cda4ce5a 1819program. For example, you can show the arguments passed to a function
c906108c
SS
1820with @code{info args}, list the registers currently in use with @code{info
1821registers}, or list the breakpoints you have set with @code{info breakpoints}.
1822You can get a complete list of the @code{info} sub-commands with
1823@w{@code{help info}}.
1824
1825@kindex set
1826@item set
5d161b24 1827You can assign the result of an expression to an environment variable with
c906108c
SS
1828@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1829@code{set prompt $}.
1830
1831@kindex show
1832@item show
5d161b24 1833In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1834@value{GDBN} itself.
1835You can change most of the things you can @code{show}, by using the
1836related command @code{set}; for example, you can control what number
1837system is used for displays with @code{set radix}, or simply inquire
1838which is currently in use with @code{show radix}.
1839
1840@kindex info set
1841To display all the settable parameters and their current
1842values, you can use @code{show} with no arguments; you may also use
1843@code{info set}. Both commands produce the same display.
1844@c FIXME: "info set" violates the rule that "info" is for state of
1845@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1846@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1847@end table
1848@c @end group
1849
1850Here are three miscellaneous @code{show} subcommands, all of which are
1851exceptional in lacking corresponding @code{set} commands:
1852
1853@table @code
1854@kindex show version
9c16f35a 1855@cindex @value{GDBN} version number
c906108c
SS
1856@item show version
1857Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1858information in @value{GDBN} bug-reports. If multiple versions of
1859@value{GDBN} are in use at your site, you may need to determine which
1860version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1861commands are introduced, and old ones may wither away. Also, many
1862system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1863variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1864The version number is the same as the one announced when you start
1865@value{GDBN}.
c906108c
SS
1866
1867@kindex show copying
09d4efe1 1868@kindex info copying
9c16f35a 1869@cindex display @value{GDBN} copyright
c906108c 1870@item show copying
09d4efe1 1871@itemx info copying
c906108c
SS
1872Display information about permission for copying @value{GDBN}.
1873
1874@kindex show warranty
09d4efe1 1875@kindex info warranty
c906108c 1876@item show warranty
09d4efe1 1877@itemx info warranty
2df3850c 1878Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1879if your version of @value{GDBN} comes with one.
2df3850c 1880
c906108c
SS
1881@end table
1882
6d2ebf8b 1883@node Running
c906108c
SS
1884@chapter Running Programs Under @value{GDBN}
1885
1886When you run a program under @value{GDBN}, you must first generate
1887debugging information when you compile it.
7a292a7a
SS
1888
1889You may start @value{GDBN} with its arguments, if any, in an environment
1890of your choice. If you are doing native debugging, you may redirect
1891your program's input and output, debug an already running process, or
1892kill a child process.
c906108c
SS
1893
1894@menu
1895* Compilation:: Compiling for debugging
1896* Starting:: Starting your program
c906108c
SS
1897* Arguments:: Your program's arguments
1898* Environment:: Your program's environment
c906108c
SS
1899
1900* Working Directory:: Your program's working directory
1901* Input/Output:: Your program's input and output
1902* Attach:: Debugging an already-running process
1903* Kill Process:: Killing the child process
c906108c 1904
6c95b8df 1905* Inferiors and Programs:: Debugging multiple inferiors and programs
c906108c 1906* Threads:: Debugging programs with multiple threads
6c95b8df 1907* Forks:: Debugging forks
5c95884b 1908* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later
c906108c
SS
1909@end menu
1910
6d2ebf8b 1911@node Compilation
79a6e687 1912@section Compiling for Debugging
c906108c
SS
1913
1914In order to debug a program effectively, you need to generate
1915debugging information when you compile it. This debugging information
1916is stored in the object file; it describes the data type of each
1917variable or function and the correspondence between source line numbers
1918and addresses in the executable code.
1919
1920To request debugging information, specify the @samp{-g} option when you run
1921the compiler.
1922
514c4d71 1923Programs that are to be shipped to your customers are compiled with
edb3359d 1924optimizations, using the @samp{-O} compiler option. However, some
514c4d71
EZ
1925compilers are unable to handle the @samp{-g} and @samp{-O} options
1926together. Using those compilers, you cannot generate optimized
c906108c
SS
1927executables containing debugging information.
1928
514c4d71 1929@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or
53a5351d
JM
1930without @samp{-O}, making it possible to debug optimized code. We
1931recommend that you @emph{always} use @samp{-g} whenever you compile a
1932program. You may think your program is correct, but there is no sense
edb3359d 1933in pushing your luck. For more information, see @ref{Optimized Code}.
c906108c
SS
1934
1935Older versions of the @sc{gnu} C compiler permitted a variant option
1936@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1937format; if your @sc{gnu} C compiler has this option, do not use it.
1938
514c4d71
EZ
1939@value{GDBN} knows about preprocessor macros and can show you their
1940expansion (@pxref{Macros}). Most compilers do not include information
1941about preprocessor macros in the debugging information if you specify
e0f8f636
TT
1942the @option{-g} flag alone. Version 3.1 and later of @value{NGCC},
1943the @sc{gnu} C compiler, provides macro information if you are using
1944the DWARF debugging format, and specify the option @option{-g3}.
1945
1946@xref{Debugging Options,,Options for Debugging Your Program or GCC,
1947gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}, for more
1948information on @value{NGCC} options affecting debug information.
1949
1950You will have the best debugging experience if you use the latest
1951version of the DWARF debugging format that your compiler supports.
1952DWARF is currently the most expressive and best supported debugging
1953format in @value{GDBN}.
514c4d71 1954
c906108c 1955@need 2000
6d2ebf8b 1956@node Starting
79a6e687 1957@section Starting your Program
c906108c
SS
1958@cindex starting
1959@cindex running
1960
1961@table @code
1962@kindex run
41afff9a 1963@kindex r @r{(@code{run})}
c906108c
SS
1964@item run
1965@itemx r
7a292a7a
SS
1966Use the @code{run} command to start your program under @value{GDBN}.
1967You must first specify the program name (except on VxWorks) with an
1968argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1969@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
79a6e687 1970(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
1971
1972@end table
1973
c906108c
SS
1974If you are running your program in an execution environment that
1975supports processes, @code{run} creates an inferior process and makes
8edfe269
DJ
1976that process run your program. In some environments without processes,
1977@code{run} jumps to the start of your program. Other targets,
1978like @samp{remote}, are always running. If you get an error
1979message like this one:
1980
1981@smallexample
1982The "remote" target does not support "run".
1983Try "help target" or "continue".
1984@end smallexample
1985
1986@noindent
1987then use @code{continue} to run your program. You may need @code{load}
1988first (@pxref{load}).
c906108c
SS
1989
1990The execution of a program is affected by certain information it
1991receives from its superior. @value{GDBN} provides ways to specify this
1992information, which you must do @emph{before} starting your program. (You
1993can change it after starting your program, but such changes only affect
1994your program the next time you start it.) This information may be
1995divided into four categories:
1996
1997@table @asis
1998@item The @emph{arguments.}
1999Specify the arguments to give your program as the arguments of the
2000@code{run} command. If a shell is available on your target, the shell
2001is used to pass the arguments, so that you may use normal conventions
2002(such as wildcard expansion or variable substitution) in describing
2003the arguments.
2004In Unix systems, you can control which shell is used with the
2005@code{SHELL} environment variable.
79a6e687 2006@xref{Arguments, ,Your Program's Arguments}.
c906108c
SS
2007
2008@item The @emph{environment.}
2009Your program normally inherits its environment from @value{GDBN}, but you can
2010use the @value{GDBN} commands @code{set environment} and @code{unset
2011environment} to change parts of the environment that affect
79a6e687 2012your program. @xref{Environment, ,Your Program's Environment}.
c906108c
SS
2013
2014@item The @emph{working directory.}
2015Your program inherits its working directory from @value{GDBN}. You can set
2016the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
79a6e687 2017@xref{Working Directory, ,Your Program's Working Directory}.
c906108c
SS
2018
2019@item The @emph{standard input and output.}
2020Your program normally uses the same device for standard input and
2021standard output as @value{GDBN} is using. You can redirect input and output
2022in the @code{run} command line, or you can use the @code{tty} command to
2023set a different device for your program.
79a6e687 2024@xref{Input/Output, ,Your Program's Input and Output}.
c906108c
SS
2025
2026@cindex pipes
2027@emph{Warning:} While input and output redirection work, you cannot use
2028pipes to pass the output of the program you are debugging to another
2029program; if you attempt this, @value{GDBN} is likely to wind up debugging the
2030wrong program.
2031@end table
c906108c
SS
2032
2033When you issue the @code{run} command, your program begins to execute
79a6e687 2034immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion
c906108c
SS
2035of how to arrange for your program to stop. Once your program has
2036stopped, you may call functions in your program, using the @code{print}
2037or @code{call} commands. @xref{Data, ,Examining Data}.
2038
2039If the modification time of your symbol file has changed since the last
2040time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
2041table, and reads it again. When it does this, @value{GDBN} tries to retain
2042your current breakpoints.
2043
4e8b0763
JB
2044@table @code
2045@kindex start
2046@item start
2047@cindex run to main procedure
2048The name of the main procedure can vary from language to language.
2049With C or C@t{++}, the main procedure name is always @code{main}, but
2050other languages such as Ada do not require a specific name for their
2051main procedure. The debugger provides a convenient way to start the
2052execution of the program and to stop at the beginning of the main
2053procedure, depending on the language used.
2054
2055The @samp{start} command does the equivalent of setting a temporary
2056breakpoint at the beginning of the main procedure and then invoking
2057the @samp{run} command.
2058
f018e82f
EZ
2059@cindex elaboration phase
2060Some programs contain an @dfn{elaboration} phase where some startup code is
2061executed before the main procedure is called. This depends on the
2062languages used to write your program. In C@t{++}, for instance,
4e8b0763
JB
2063constructors for static and global objects are executed before
2064@code{main} is called. It is therefore possible that the debugger stops
2065before reaching the main procedure. However, the temporary breakpoint
2066will remain to halt execution.
2067
2068Specify the arguments to give to your program as arguments to the
2069@samp{start} command. These arguments will be given verbatim to the
2070underlying @samp{run} command. Note that the same arguments will be
2071reused if no argument is provided during subsequent calls to
2072@samp{start} or @samp{run}.
2073
2074It is sometimes necessary to debug the program during elaboration. In
2075these cases, using the @code{start} command would stop the execution of
2076your program too late, as the program would have already completed the
2077elaboration phase. Under these circumstances, insert breakpoints in your
2078elaboration code before running your program.
ccd213ac
DJ
2079
2080@kindex set exec-wrapper
2081@item set exec-wrapper @var{wrapper}
2082@itemx show exec-wrapper
2083@itemx unset exec-wrapper
2084When @samp{exec-wrapper} is set, the specified wrapper is used to
2085launch programs for debugging. @value{GDBN} starts your program
2086with a shell command of the form @kbd{exec @var{wrapper}
2087@var{program}}. Quoting is added to @var{program} and its
2088arguments, but not to @var{wrapper}, so you should add quotes if
2089appropriate for your shell. The wrapper runs until it executes
2090your program, and then @value{GDBN} takes control.
2091
2092You can use any program that eventually calls @code{execve} with
2093its arguments as a wrapper. Several standard Unix utilities do
2094this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
2095with @code{exec "$@@"} will also work.
2096
2097For example, you can use @code{env} to pass an environment variable to
2098the debugged program, without setting the variable in your shell's
2099environment:
2100
2101@smallexample
2102(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so'
2103(@value{GDBP}) run
2104@end smallexample
2105
2106This command is available when debugging locally on most targets, excluding
2107@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
2108
10568435
JK
2109@kindex set disable-randomization
2110@item set disable-randomization
2111@itemx set disable-randomization on
2112This option (enabled by default in @value{GDBN}) will turn off the native
2113randomization of the virtual address space of the started program. This option
2114is useful for multiple debugging sessions to make the execution better
2115reproducible and memory addresses reusable across debugging sessions.
2116
03583c20
UW
2117This feature is implemented only on certain targets, including @sc{gnu}/Linux.
2118On @sc{gnu}/Linux you can get the same behavior using
10568435
JK
2119
2120@smallexample
2121(@value{GDBP}) set exec-wrapper setarch `uname -m` -R
2122@end smallexample
2123
2124@item set disable-randomization off
2125Leave the behavior of the started executable unchanged. Some bugs rear their
2126ugly heads only when the program is loaded at certain addresses. If your bug
2127disappears when you run the program under @value{GDBN}, that might be because
2128@value{GDBN} by default disables the address randomization on platforms, such
2129as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set
2130disable-randomization off} to try to reproduce such elusive bugs.
2131
03583c20
UW
2132On targets where it is available, virtual address space randomization
2133protects the programs against certain kinds of security attacks. In these
10568435
JK
2134cases the attacker needs to know the exact location of a concrete executable
2135code. Randomizing its location makes it impossible to inject jumps misusing
2136a code at its expected addresses.
2137
2138Prelinking shared libraries provides a startup performance advantage but it
2139makes addresses in these libraries predictable for privileged processes by
2140having just unprivileged access at the target system. Reading the shared
2141library binary gives enough information for assembling the malicious code
2142misusing it. Still even a prelinked shared library can get loaded at a new
2143random address just requiring the regular relocation process during the
2144startup. Shared libraries not already prelinked are always loaded at
2145a randomly chosen address.
2146
2147Position independent executables (PIE) contain position independent code
2148similar to the shared libraries and therefore such executables get loaded at
2149a randomly chosen address upon startup. PIE executables always load even
2150already prelinked shared libraries at a random address. You can build such
2151executable using @command{gcc -fPIE -pie}.
2152
2153Heap (malloc storage), stack and custom mmap areas are always placed randomly
2154(as long as the randomization is enabled).
2155
2156@item show disable-randomization
2157Show the current setting of the explicit disable of the native randomization of
2158the virtual address space of the started program.
2159
4e8b0763
JB
2160@end table
2161
6d2ebf8b 2162@node Arguments
79a6e687 2163@section Your Program's Arguments
c906108c
SS
2164
2165@cindex arguments (to your program)
2166The arguments to your program can be specified by the arguments of the
5d161b24 2167@code{run} command.
c906108c
SS
2168They are passed to a shell, which expands wildcard characters and
2169performs redirection of I/O, and thence to your program. Your
2170@code{SHELL} environment variable (if it exists) specifies what shell
2171@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
2172the default shell (@file{/bin/sh} on Unix).
2173
2174On non-Unix systems, the program is usually invoked directly by
2175@value{GDBN}, which emulates I/O redirection via the appropriate system
2176calls, and the wildcard characters are expanded by the startup code of
2177the program, not by the shell.
c906108c
SS
2178
2179@code{run} with no arguments uses the same arguments used by the previous
2180@code{run}, or those set by the @code{set args} command.
2181
c906108c 2182@table @code
41afff9a 2183@kindex set args
c906108c
SS
2184@item set args
2185Specify the arguments to be used the next time your program is run. If
2186@code{set args} has no arguments, @code{run} executes your program
2187with no arguments. Once you have run your program with arguments,
2188using @code{set args} before the next @code{run} is the only way to run
2189it again without arguments.
2190
2191@kindex show args
2192@item show args
2193Show the arguments to give your program when it is started.
2194@end table
2195
6d2ebf8b 2196@node Environment
79a6e687 2197@section Your Program's Environment
c906108c
SS
2198
2199@cindex environment (of your program)
2200The @dfn{environment} consists of a set of environment variables and
2201their values. Environment variables conventionally record such things as
2202your user name, your home directory, your terminal type, and your search
2203path for programs to run. Usually you set up environment variables with
2204the shell and they are inherited by all the other programs you run. When
2205debugging, it can be useful to try running your program with a modified
2206environment without having to start @value{GDBN} over again.
2207
2208@table @code
2209@kindex path
2210@item path @var{directory}
2211Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
2212(the search path for executables) that will be passed to your program.
2213The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
2214You may specify several directory names, separated by whitespace or by a
2215system-dependent separator character (@samp{:} on Unix, @samp{;} on
2216MS-DOS and MS-Windows). If @var{directory} is already in the path, it
2217is moved to the front, so it is searched sooner.
c906108c
SS
2218
2219You can use the string @samp{$cwd} to refer to whatever is the current
2220working directory at the time @value{GDBN} searches the path. If you
2221use @samp{.} instead, it refers to the directory where you executed the
2222@code{path} command. @value{GDBN} replaces @samp{.} in the
2223@var{directory} argument (with the current path) before adding
2224@var{directory} to the search path.
2225@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
2226@c document that, since repeating it would be a no-op.
2227
2228@kindex show paths
2229@item show paths
2230Display the list of search paths for executables (the @code{PATH}
2231environment variable).
2232
2233@kindex show environment
2234@item show environment @r{[}@var{varname}@r{]}
2235Print the value of environment variable @var{varname} to be given to
2236your program when it starts. If you do not supply @var{varname},
2237print the names and values of all environment variables to be given to
2238your program. You can abbreviate @code{environment} as @code{env}.
2239
2240@kindex set environment
53a5351d 2241@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
2242Set environment variable @var{varname} to @var{value}. The value
2243changes for your program only, not for @value{GDBN} itself. @var{value} may
2244be any string; the values of environment variables are just strings, and
2245any interpretation is supplied by your program itself. The @var{value}
2246parameter is optional; if it is eliminated, the variable is set to a
2247null value.
2248@c "any string" here does not include leading, trailing
2249@c blanks. Gnu asks: does anyone care?
2250
2251For example, this command:
2252
474c8240 2253@smallexample
c906108c 2254set env USER = foo
474c8240 2255@end smallexample
c906108c
SS
2256
2257@noindent
d4f3574e 2258tells the debugged program, when subsequently run, that its user is named
c906108c
SS
2259@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
2260are not actually required.)
2261
2262@kindex unset environment
2263@item unset environment @var{varname}
2264Remove variable @var{varname} from the environment to be passed to your
2265program. This is different from @samp{set env @var{varname} =};
2266@code{unset environment} removes the variable from the environment,
2267rather than assigning it an empty value.
2268@end table
2269
d4f3574e
SS
2270@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
2271the shell indicated
c906108c
SS
2272by your @code{SHELL} environment variable if it exists (or
2273@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
2274that runs an initialization file---such as @file{.cshrc} for C-shell, or
2275@file{.bashrc} for BASH---any variables you set in that file affect
2276your program. You may wish to move setting of environment variables to
2277files that are only run when you sign on, such as @file{.login} or
2278@file{.profile}.
2279
6d2ebf8b 2280@node Working Directory
79a6e687 2281@section Your Program's Working Directory
c906108c
SS
2282
2283@cindex working directory (of your program)
2284Each time you start your program with @code{run}, it inherits its
2285working directory from the current working directory of @value{GDBN}.
2286The @value{GDBN} working directory is initially whatever it inherited
2287from its parent process (typically the shell), but you can specify a new
2288working directory in @value{GDBN} with the @code{cd} command.
2289
2290The @value{GDBN} working directory also serves as a default for the commands
2291that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
79a6e687 2292Specify Files}.
c906108c
SS
2293
2294@table @code
2295@kindex cd
721c2651 2296@cindex change working directory
f3c8a52a
JK
2297@item cd @r{[}@var{directory}@r{]}
2298Set the @value{GDBN} working directory to @var{directory}. If not
2299given, @var{directory} uses @file{'~'}.
c906108c
SS
2300
2301@kindex pwd
2302@item pwd
2303Print the @value{GDBN} working directory.
2304@end table
2305
60bf7e09
EZ
2306It is generally impossible to find the current working directory of
2307the process being debugged (since a program can change its directory
2308during its run). If you work on a system where @value{GDBN} is
2309configured with the @file{/proc} support, you can use the @code{info
2310proc} command (@pxref{SVR4 Process Information}) to find out the
2311current working directory of the debuggee.
2312
6d2ebf8b 2313@node Input/Output
79a6e687 2314@section Your Program's Input and Output
c906108c
SS
2315
2316@cindex redirection
2317@cindex i/o
2318@cindex terminal
2319By default, the program you run under @value{GDBN} does input and output to
5d161b24 2320the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
2321to its own terminal modes to interact with you, but it records the terminal
2322modes your program was using and switches back to them when you continue
2323running your program.
2324
2325@table @code
2326@kindex info terminal
2327@item info terminal
2328Displays information recorded by @value{GDBN} about the terminal modes your
2329program is using.
2330@end table
2331
2332You can redirect your program's input and/or output using shell
2333redirection with the @code{run} command. For example,
2334
474c8240 2335@smallexample
c906108c 2336run > outfile
474c8240 2337@end smallexample
c906108c
SS
2338
2339@noindent
2340starts your program, diverting its output to the file @file{outfile}.
2341
2342@kindex tty
2343@cindex controlling terminal
2344Another way to specify where your program should do input and output is
2345with the @code{tty} command. This command accepts a file name as
2346argument, and causes this file to be the default for future @code{run}
2347commands. It also resets the controlling terminal for the child
2348process, for future @code{run} commands. For example,
2349
474c8240 2350@smallexample
c906108c 2351tty /dev/ttyb
474c8240 2352@end smallexample
c906108c
SS
2353
2354@noindent
2355directs that processes started with subsequent @code{run} commands
2356default to do input and output on the terminal @file{/dev/ttyb} and have
2357that as their controlling terminal.
2358
2359An explicit redirection in @code{run} overrides the @code{tty} command's
2360effect on the input/output device, but not its effect on the controlling
2361terminal.
2362
2363When you use the @code{tty} command or redirect input in the @code{run}
2364command, only the input @emph{for your program} is affected. The input
3cb3b8df
BR
2365for @value{GDBN} still comes from your terminal. @code{tty} is an alias
2366for @code{set inferior-tty}.
2367
2368@cindex inferior tty
2369@cindex set inferior controlling terminal
2370You can use the @code{show inferior-tty} command to tell @value{GDBN} to
2371display the name of the terminal that will be used for future runs of your
2372program.
2373
2374@table @code
2375@item set inferior-tty /dev/ttyb
2376@kindex set inferior-tty
2377Set the tty for the program being debugged to /dev/ttyb.
2378
2379@item show inferior-tty
2380@kindex show inferior-tty
2381Show the current tty for the program being debugged.
2382@end table
c906108c 2383
6d2ebf8b 2384@node Attach
79a6e687 2385@section Debugging an Already-running Process
c906108c
SS
2386@kindex attach
2387@cindex attach
2388
2389@table @code
2390@item attach @var{process-id}
2391This command attaches to a running process---one that was started
2392outside @value{GDBN}. (@code{info files} shows your active
2393targets.) The command takes as argument a process ID. The usual way to
09d4efe1 2394find out the @var{process-id} of a Unix process is with the @code{ps} utility,
c906108c
SS
2395or with the @samp{jobs -l} shell command.
2396
2397@code{attach} does not repeat if you press @key{RET} a second time after
2398executing the command.
2399@end table
2400
2401To use @code{attach}, your program must be running in an environment
2402which supports processes; for example, @code{attach} does not work for
2403programs on bare-board targets that lack an operating system. You must
2404also have permission to send the process a signal.
2405
2406When you use @code{attach}, the debugger finds the program running in
2407the process first by looking in the current working directory, then (if
2408the program is not found) by using the source file search path
79a6e687 2409(@pxref{Source Path, ,Specifying Source Directories}). You can also use
c906108c
SS
2410the @code{file} command to load the program. @xref{Files, ,Commands to
2411Specify Files}.
2412
2413The first thing @value{GDBN} does after arranging to debug the specified
2414process is to stop it. You can examine and modify an attached process
53a5351d
JM
2415with all the @value{GDBN} commands that are ordinarily available when
2416you start processes with @code{run}. You can insert breakpoints; you
2417can step and continue; you can modify storage. If you would rather the
2418process continue running, you may use the @code{continue} command after
c906108c
SS
2419attaching @value{GDBN} to the process.
2420
2421@table @code
2422@kindex detach
2423@item detach
2424When you have finished debugging the attached process, you can use the
2425@code{detach} command to release it from @value{GDBN} control. Detaching
2426the process continues its execution. After the @code{detach} command,
2427that process and @value{GDBN} become completely independent once more, and you
2428are ready to @code{attach} another process or start one with @code{run}.
2429@code{detach} does not repeat if you press @key{RET} again after
2430executing the command.
2431@end table
2432
159fcc13
JK
2433If you exit @value{GDBN} while you have an attached process, you detach
2434that process. If you use the @code{run} command, you kill that process.
2435By default, @value{GDBN} asks for confirmation if you try to do either of these
2436things; you can control whether or not you need to confirm by using the
2437@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and
79a6e687 2438Messages}).
c906108c 2439
6d2ebf8b 2440@node Kill Process
79a6e687 2441@section Killing the Child Process
c906108c
SS
2442
2443@table @code
2444@kindex kill
2445@item kill
2446Kill the child process in which your program is running under @value{GDBN}.
2447@end table
2448
2449This command is useful if you wish to debug a core dump instead of a
2450running process. @value{GDBN} ignores any core dump file while your program
2451is running.
2452
2453On some operating systems, a program cannot be executed outside @value{GDBN}
2454while you have breakpoints set on it inside @value{GDBN}. You can use the
2455@code{kill} command in this situation to permit running your program
2456outside the debugger.
2457
2458The @code{kill} command is also useful if you wish to recompile and
2459relink your program, since on many systems it is impossible to modify an
2460executable file while it is running in a process. In this case, when you
2461next type @code{run}, @value{GDBN} notices that the file has changed, and
2462reads the symbol table again (while trying to preserve your current
2463breakpoint settings).
2464
6c95b8df
PA
2465@node Inferiors and Programs
2466@section Debugging Multiple Inferiors and Programs
b77209e0 2467
6c95b8df
PA
2468@value{GDBN} lets you run and debug multiple programs in a single
2469session. In addition, @value{GDBN} on some systems may let you run
2470several programs simultaneously (otherwise you have to exit from one
2471before starting another). In the most general case, you can have
2472multiple threads of execution in each of multiple processes, launched
2473from multiple executables.
b77209e0
PA
2474
2475@cindex inferior
2476@value{GDBN} represents the state of each program execution with an
2477object called an @dfn{inferior}. An inferior typically corresponds to
2478a process, but is more general and applies also to targets that do not
2479have processes. Inferiors may be created before a process runs, and
6c95b8df
PA
2480may be retained after a process exits. Inferiors have unique
2481identifiers that are different from process ids. Usually each
2482inferior will also have its own distinct address space, although some
2483embedded targets may have several inferiors running in different parts
2484of a single address space. Each inferior may in turn have multiple
2485threads running in it.
b77209e0 2486
6c95b8df
PA
2487To find out what inferiors exist at any moment, use @w{@code{info
2488inferiors}}:
b77209e0
PA
2489
2490@table @code
2491@kindex info inferiors
2492@item info inferiors
2493Print a list of all inferiors currently being managed by @value{GDBN}.
3a1ff0b6
PA
2494
2495@value{GDBN} displays for each inferior (in this order):
2496
2497@enumerate
2498@item
2499the inferior number assigned by @value{GDBN}
2500
2501@item
2502the target system's inferior identifier
6c95b8df
PA
2503
2504@item
2505the name of the executable the inferior is running.
2506
3a1ff0b6
PA
2507@end enumerate
2508
2509@noindent
2510An asterisk @samp{*} preceding the @value{GDBN} inferior number
2511indicates the current inferior.
2512
2513For example,
2277426b 2514@end table
3a1ff0b6
PA
2515@c end table here to get a little more width for example
2516
2517@smallexample
2518(@value{GDBP}) info inferiors
6c95b8df
PA
2519 Num Description Executable
2520 2 process 2307 hello
2521* 1 process 3401 goodbye
3a1ff0b6 2522@end smallexample
2277426b
PA
2523
2524To switch focus between inferiors, use the @code{inferior} command:
2525
2526@table @code
3a1ff0b6
PA
2527@kindex inferior @var{infno}
2528@item inferior @var{infno}
2529Make inferior number @var{infno} the current inferior. The argument
2530@var{infno} is the inferior number assigned by @value{GDBN}, as shown
2531in the first field of the @samp{info inferiors} display.
2277426b
PA
2532@end table
2533
6c95b8df
PA
2534
2535You can get multiple executables into a debugging session via the
2536@code{add-inferior} and @w{@code{clone-inferior}} commands. On some
2537systems @value{GDBN} can add inferiors to the debug session
2538automatically by following calls to @code{fork} and @code{exec}. To
2539remove inferiors from the debugging session use the
af624141 2540@w{@code{remove-inferiors}} command.
6c95b8df
PA
2541
2542@table @code
2543@kindex add-inferior
2544@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ]
2545Adds @var{n} inferiors to be run using @var{executable} as the
2546executable. @var{n} defaults to 1. If no executable is specified,
2547the inferiors begins empty, with no program. You can still assign or
2548change the program assigned to the inferior at any time by using the
2549@code{file} command with the executable name as its argument.
2550
2551@kindex clone-inferior
2552@item clone-inferior [ -copies @var{n} ] [ @var{infno} ]
2553Adds @var{n} inferiors ready to execute the same program as inferior
2554@var{infno}. @var{n} defaults to 1. @var{infno} defaults to the
2555number of the current inferior. This is a convenient command when you
2556want to run another instance of the inferior you are debugging.
2557
2558@smallexample
2559(@value{GDBP}) info inferiors
2560 Num Description Executable
2561* 1 process 29964 helloworld
2562(@value{GDBP}) clone-inferior
2563Added inferior 2.
25641 inferiors added.
2565(@value{GDBP}) info inferiors
2566 Num Description Executable
2567 2 <null> helloworld
2568* 1 process 29964 helloworld
2569@end smallexample
2570
2571You can now simply switch focus to inferior 2 and run it.
2572
af624141
MS
2573@kindex remove-inferiors
2574@item remove-inferiors @var{infno}@dots{}
2575Removes the inferior or inferiors @var{infno}@dots{}. It is not
2576possible to remove an inferior that is running with this command. For
2577those, use the @code{kill} or @code{detach} command first.
6c95b8df
PA
2578
2579@end table
2580
2581To quit debugging one of the running inferiors that is not the current
2582inferior, you can either detach from it by using the @w{@code{detach
2583inferior}} command (allowing it to run independently), or kill it
af624141 2584using the @w{@code{kill inferiors}} command:
2277426b
PA
2585
2586@table @code
af624141
MS
2587@kindex detach inferiors @var{infno}@dots{}
2588@item detach inferior @var{infno}@dots{}
2589Detach from the inferior or inferiors identified by @value{GDBN}
5e30da2c 2590inferior number(s) @var{infno}@dots{}. Note that the inferior's entry
af624141
MS
2591still stays on the list of inferiors shown by @code{info inferiors},
2592but its Description will show @samp{<null>}.
2593
2594@kindex kill inferiors @var{infno}@dots{}
2595@item kill inferiors @var{infno}@dots{}
2596Kill the inferior or inferiors identified by @value{GDBN} inferior
2597number(s) @var{infno}@dots{}. Note that the inferior's entry still
2598stays on the list of inferiors shown by @code{info inferiors}, but its
2599Description will show @samp{<null>}.
2277426b
PA
2600@end table
2601
6c95b8df 2602After the successful completion of a command such as @code{detach},
af624141 2603@code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after
6c95b8df
PA
2604a normal process exit, the inferior is still valid and listed with
2605@code{info inferiors}, ready to be restarted.
2606
2607
2277426b
PA
2608To be notified when inferiors are started or exit under @value{GDBN}'s
2609control use @w{@code{set print inferior-events}}:
b77209e0 2610
2277426b 2611@table @code
b77209e0
PA
2612@kindex set print inferior-events
2613@cindex print messages on inferior start and exit
2614@item set print inferior-events
2615@itemx set print inferior-events on
2616@itemx set print inferior-events off
2617The @code{set print inferior-events} command allows you to enable or
2618disable printing of messages when @value{GDBN} notices that new
2619inferiors have started or that inferiors have exited or have been
2620detached. By default, these messages will not be printed.
2621
2622@kindex show print inferior-events
2623@item show print inferior-events
2624Show whether messages will be printed when @value{GDBN} detects that
2625inferiors have started, exited or have been detached.
2626@end table
2627
6c95b8df
PA
2628Many commands will work the same with multiple programs as with a
2629single program: e.g., @code{print myglobal} will simply display the
2630value of @code{myglobal} in the current inferior.
2631
2632
2633Occasionaly, when debugging @value{GDBN} itself, it may be useful to
2634get more info about the relationship of inferiors, programs, address
2635spaces in a debug session. You can do that with the @w{@code{maint
2636info program-spaces}} command.
2637
2638@table @code
2639@kindex maint info program-spaces
2640@item maint info program-spaces
2641Print a list of all program spaces currently being managed by
2642@value{GDBN}.
2643
2644@value{GDBN} displays for each program space (in this order):
2645
2646@enumerate
2647@item
2648the program space number assigned by @value{GDBN}
2649
2650@item
2651the name of the executable loaded into the program space, with e.g.,
2652the @code{file} command.
2653
2654@end enumerate
2655
2656@noindent
2657An asterisk @samp{*} preceding the @value{GDBN} program space number
2658indicates the current program space.
2659
2660In addition, below each program space line, @value{GDBN} prints extra
2661information that isn't suitable to display in tabular form. For
2662example, the list of inferiors bound to the program space.
2663
2664@smallexample
2665(@value{GDBP}) maint info program-spaces
2666 Id Executable
2667 2 goodbye
2668 Bound inferiors: ID 1 (process 21561)
2669* 1 hello
2670@end smallexample
2671
2672Here we can see that no inferior is running the program @code{hello},
2673while @code{process 21561} is running the program @code{goodbye}. On
2674some targets, it is possible that multiple inferiors are bound to the
2675same program space. The most common example is that of debugging both
2676the parent and child processes of a @code{vfork} call. For example,
2677
2678@smallexample
2679(@value{GDBP}) maint info program-spaces
2680 Id Executable
2681* 1 vfork-test
2682 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045)
2683@end smallexample
2684
2685Here, both inferior 2 and inferior 1 are running in the same program
2686space as a result of inferior 1 having executed a @code{vfork} call.
2687@end table
2688
6d2ebf8b 2689@node Threads
79a6e687 2690@section Debugging Programs with Multiple Threads
c906108c
SS
2691
2692@cindex threads of execution
2693@cindex multiple threads
2694@cindex switching threads
2695In some operating systems, such as HP-UX and Solaris, a single program
2696may have more than one @dfn{thread} of execution. The precise semantics
2697of threads differ from one operating system to another, but in general
2698the threads of a single program are akin to multiple processes---except
2699that they share one address space (that is, they can all examine and
2700modify the same variables). On the other hand, each thread has its own
2701registers and execution stack, and perhaps private memory.
2702
2703@value{GDBN} provides these facilities for debugging multi-thread
2704programs:
2705
2706@itemize @bullet
2707@item automatic notification of new threads
2708@item @samp{thread @var{threadno}}, a command to switch among threads
2709@item @samp{info threads}, a command to inquire about existing threads
5d161b24 2710@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
2711a command to apply a command to a list of threads
2712@item thread-specific breakpoints
93815fbf
VP
2713@item @samp{set print thread-events}, which controls printing of
2714messages on thread start and exit.
17a37d48
PP
2715@item @samp{set libthread-db-search-path @var{path}}, which lets
2716the user specify which @code{libthread_db} to use if the default choice
2717isn't compatible with the program.
c906108c
SS
2718@end itemize
2719
c906108c
SS
2720@quotation
2721@emph{Warning:} These facilities are not yet available on every
2722@value{GDBN} configuration where the operating system supports threads.
2723If your @value{GDBN} does not support threads, these commands have no
2724effect. For example, a system without thread support shows no output
2725from @samp{info threads}, and always rejects the @code{thread} command,
2726like this:
2727
2728@smallexample
2729(@value{GDBP}) info threads
2730(@value{GDBP}) thread 1
2731Thread ID 1 not known. Use the "info threads" command to
2732see the IDs of currently known threads.
2733@end smallexample
2734@c FIXME to implementors: how hard would it be to say "sorry, this GDB
2735@c doesn't support threads"?
2736@end quotation
c906108c
SS
2737
2738@cindex focus of debugging
2739@cindex current thread
2740The @value{GDBN} thread debugging facility allows you to observe all
2741threads while your program runs---but whenever @value{GDBN} takes
2742control, one thread in particular is always the focus of debugging.
2743This thread is called the @dfn{current thread}. Debugging commands show
2744program information from the perspective of the current thread.
2745
41afff9a 2746@cindex @code{New} @var{systag} message
c906108c
SS
2747@cindex thread identifier (system)
2748@c FIXME-implementors!! It would be more helpful if the [New...] message
2749@c included GDB's numeric thread handle, so you could just go to that
2750@c thread without first checking `info threads'.
2751Whenever @value{GDBN} detects a new thread in your program, it displays
2752the target system's identification for the thread with a message in the
2753form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2754whose form varies depending on the particular system. For example, on
8807d78b 2755@sc{gnu}/Linux, you might see
c906108c 2756
474c8240 2757@smallexample
08e796bc 2758[New Thread 0x41e02940 (LWP 25582)]
474c8240 2759@end smallexample
c906108c
SS
2760
2761@noindent
2762when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2763the @var{systag} is simply something like @samp{process 368}, with no
2764further qualifier.
2765
2766@c FIXME!! (1) Does the [New...] message appear even for the very first
2767@c thread of a program, or does it only appear for the
6ca652b0 2768@c second---i.e.@: when it becomes obvious we have a multithread
c906108c
SS
2769@c program?
2770@c (2) *Is* there necessarily a first thread always? Or do some
2771@c multithread systems permit starting a program with multiple
5d161b24 2772@c threads ab initio?
c906108c
SS
2773
2774@cindex thread number
2775@cindex thread identifier (GDB)
2776For debugging purposes, @value{GDBN} associates its own thread
2777number---always a single integer---with each thread in your program.
2778
2779@table @code
2780@kindex info threads
60f98dde
MS
2781@item info threads @r{[}@var{id}@dots{}@r{]}
2782Display a summary of all threads currently in your program. Optional
2783argument @var{id}@dots{} is one or more thread ids separated by spaces, and
2784means to print information only about the specified thread or threads.
2785@value{GDBN} displays for each thread (in this order):
c906108c
SS
2786
2787@enumerate
09d4efe1
EZ
2788@item
2789the thread number assigned by @value{GDBN}
c906108c 2790
09d4efe1
EZ
2791@item
2792the target system's thread identifier (@var{systag})
c906108c 2793
4694da01
TT
2794@item
2795the thread's name, if one is known. A thread can either be named by
2796the user (see @code{thread name}, below), or, in some cases, by the
2797program itself.
2798
09d4efe1
EZ
2799@item
2800the current stack frame summary for that thread
c906108c
SS
2801@end enumerate
2802
2803@noindent
2804An asterisk @samp{*} to the left of the @value{GDBN} thread number
2805indicates the current thread.
2806
5d161b24 2807For example,
c906108c
SS
2808@end table
2809@c end table here to get a little more width for example
2810
2811@smallexample
2812(@value{GDBP}) info threads
13fd8b81
TT
2813 Id Target Id Frame
2814 3 process 35 thread 27 0x34e5 in sigpause ()
2815 2 process 35 thread 23 0x34e5 in sigpause ()
2816* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
c906108c
SS
2817 at threadtest.c:68
2818@end smallexample
53a5351d 2819
c45da7e6
EZ
2820On Solaris, you can display more information about user threads with a
2821Solaris-specific command:
2822
2823@table @code
2824@item maint info sol-threads
2825@kindex maint info sol-threads
2826@cindex thread info (Solaris)
2827Display info on Solaris user threads.
2828@end table
2829
c906108c
SS
2830@table @code
2831@kindex thread @var{threadno}
2832@item thread @var{threadno}
2833Make thread number @var{threadno} the current thread. The command
2834argument @var{threadno} is the internal @value{GDBN} thread number, as
2835shown in the first field of the @samp{info threads} display.
2836@value{GDBN} responds by displaying the system identifier of the thread
2837you selected, and its current stack frame summary:
2838
2839@smallexample
c906108c 2840(@value{GDBP}) thread 2
13fd8b81
TT
2841[Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))]
2842#0 some_function (ignore=0x0) at example.c:8
28438 printf ("hello\n");
c906108c
SS
2844@end smallexample
2845
2846@noindent
2847As with the @samp{[New @dots{}]} message, the form of the text after
2848@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2849threads.
c906108c 2850
6aed2dbc
SS
2851@vindex $_thread@r{, convenience variable}
2852The debugger convenience variable @samp{$_thread} contains the number
2853of the current thread. You may find this useful in writing breakpoint
2854conditional expressions, command scripts, and so forth. See
2855@xref{Convenience Vars,, Convenience Variables}, for general
2856information on convenience variables.
2857
9c16f35a 2858@kindex thread apply
638ac427 2859@cindex apply command to several threads
13fd8b81 2860@item thread apply [@var{threadno} | all] @var{command}
839c27b7
EZ
2861The @code{thread apply} command allows you to apply the named
2862@var{command} to one or more threads. Specify the numbers of the
2863threads that you want affected with the command argument
2864@var{threadno}. It can be a single thread number, one of the numbers
2865shown in the first field of the @samp{info threads} display; or it
2866could be a range of thread numbers, as in @code{2-4}. To apply a
2867command to all threads, type @kbd{thread apply all @var{command}}.
93815fbf 2868
4694da01
TT
2869@kindex thread name
2870@cindex name a thread
2871@item thread name [@var{name}]
2872This command assigns a name to the current thread. If no argument is
2873given, any existing user-specified name is removed. The thread name
2874appears in the @samp{info threads} display.
2875
2876On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to
2877determine the name of the thread as given by the OS. On these
2878systems, a name specified with @samp{thread name} will override the
2879system-give name, and removing the user-specified name will cause
2880@value{GDBN} to once again display the system-specified name.
2881
60f98dde
MS
2882@kindex thread find
2883@cindex search for a thread
2884@item thread find [@var{regexp}]
2885Search for and display thread ids whose name or @var{systag}
2886matches the supplied regular expression.
2887
2888As well as being the complement to the @samp{thread name} command,
2889this command also allows you to identify a thread by its target
2890@var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag}
2891is the LWP id.
2892
2893@smallexample
2894(@value{GDBN}) thread find 26688
2895Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)'
2896(@value{GDBN}) info thread 4
2897 Id Target Id Frame
2898 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select ()
2899@end smallexample
2900
93815fbf
VP
2901@kindex set print thread-events
2902@cindex print messages on thread start and exit
2903@item set print thread-events
2904@itemx set print thread-events on
2905@itemx set print thread-events off
2906The @code{set print thread-events} command allows you to enable or
2907disable printing of messages when @value{GDBN} notices that new threads have
2908started or that threads have exited. By default, these messages will
2909be printed if detection of these events is supported by the target.
2910Note that these messages cannot be disabled on all targets.
2911
2912@kindex show print thread-events
2913@item show print thread-events
2914Show whether messages will be printed when @value{GDBN} detects that threads
2915have started and exited.
c906108c
SS
2916@end table
2917
79a6e687 2918@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for
c906108c
SS
2919more information about how @value{GDBN} behaves when you stop and start
2920programs with multiple threads.
2921
79a6e687 2922@xref{Set Watchpoints,,Setting Watchpoints}, for information about
c906108c 2923watchpoints in programs with multiple threads.
c906108c 2924
bf88dd68 2925@anchor{set libthread-db-search-path}
17a37d48
PP
2926@table @code
2927@kindex set libthread-db-search-path
2928@cindex search path for @code{libthread_db}
2929@item set libthread-db-search-path @r{[}@var{path}@r{]}
2930If this variable is set, @var{path} is a colon-separated list of
2931directories @value{GDBN} will use to search for @code{libthread_db}.
2932If you omit @var{path}, @samp{libthread-db-search-path} will be reset to
98a5dd13 2933its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems).
7e0396aa
DE
2934Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH}
2935macro.
17a37d48
PP
2936
2937On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper''
2938@code{libthread_db} library to obtain information about threads in the
2939inferior process. @value{GDBN} will use @samp{libthread-db-search-path}
bf88dd68
JK
2940to find @code{libthread_db}. @value{GDBN} also consults first if inferior
2941specific thread debugging library loading is enabled
2942by @samp{set auto-load libthread-db} (@pxref{libthread_db.so.1 file}).
98a5dd13
DE
2943
2944A special entry @samp{$sdir} for @samp{libthread-db-search-path}
2945refers to the default system directories that are
bf88dd68
JK
2946normally searched for loading shared libraries. The @samp{$sdir} entry
2947is the only kind not needing to be enabled by @samp{set auto-load libthread-db}
2948(@pxref{libthread_db.so.1 file}).
98a5dd13
DE
2949
2950A special entry @samp{$pdir} for @samp{libthread-db-search-path}
2951refers to the directory from which @code{libpthread}
2952was loaded in the inferior process.
17a37d48
PP
2953
2954For any @code{libthread_db} library @value{GDBN} finds in above directories,
2955@value{GDBN} attempts to initialize it with the current inferior process.
2956If this initialization fails (which could happen because of a version
2957mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN}
2958will unload @code{libthread_db}, and continue with the next directory.
2959If none of @code{libthread_db} libraries initialize successfully,
2960@value{GDBN} will issue a warning and thread debugging will be disabled.
2961
2962Setting @code{libthread-db-search-path} is currently implemented
2963only on some platforms.
2964
2965@kindex show libthread-db-search-path
2966@item show libthread-db-search-path
2967Display current libthread_db search path.
02d868e8
PP
2968
2969@kindex set debug libthread-db
2970@kindex show debug libthread-db
2971@cindex debugging @code{libthread_db}
2972@item set debug libthread-db
2973@itemx show debug libthread-db
2974Turns on or off display of @code{libthread_db}-related events.
2975Use @code{1} to enable, @code{0} to disable.
17a37d48
PP
2976@end table
2977
6c95b8df
PA
2978@node Forks
2979@section Debugging Forks
c906108c
SS
2980
2981@cindex fork, debugging programs which call
2982@cindex multiple processes
2983@cindex processes, multiple
53a5351d
JM
2984On most systems, @value{GDBN} has no special support for debugging
2985programs which create additional processes using the @code{fork}
2986function. When a program forks, @value{GDBN} will continue to debug the
2987parent process and the child process will run unimpeded. If you have
2988set a breakpoint in any code which the child then executes, the child
2989will get a @code{SIGTRAP} signal which (unless it catches the signal)
2990will cause it to terminate.
c906108c
SS
2991
2992However, if you want to debug the child process there is a workaround
2993which isn't too painful. Put a call to @code{sleep} in the code which
2994the child process executes after the fork. It may be useful to sleep
2995only if a certain environment variable is set, or a certain file exists,
2996so that the delay need not occur when you don't want to run @value{GDBN}
2997on the child. While the child is sleeping, use the @code{ps} program to
2998get its process ID. Then tell @value{GDBN} (a new invocation of
2999@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 3000the child process (@pxref{Attach}). From that point on you can debug
c906108c 3001the child process just like any other process which you attached to.
c906108c 3002
b51970ac
DJ
3003On some systems, @value{GDBN} provides support for debugging programs that
3004create additional processes using the @code{fork} or @code{vfork} functions.
3005Currently, the only platforms with this feature are HP-UX (11.x and later
a6b151f1 3006only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later).
c906108c
SS
3007
3008By default, when a program forks, @value{GDBN} will continue to debug
3009the parent process and the child process will run unimpeded.
3010
3011If you want to follow the child process instead of the parent process,
3012use the command @w{@code{set follow-fork-mode}}.
3013
3014@table @code
3015@kindex set follow-fork-mode
3016@item set follow-fork-mode @var{mode}
3017Set the debugger response to a program call of @code{fork} or
3018@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
9c16f35a 3019process. The @var{mode} argument can be:
c906108c
SS
3020
3021@table @code
3022@item parent
3023The original process is debugged after a fork. The child process runs
2df3850c 3024unimpeded. This is the default.
c906108c
SS
3025
3026@item child
3027The new process is debugged after a fork. The parent process runs
3028unimpeded.
3029
c906108c
SS
3030@end table
3031
9c16f35a 3032@kindex show follow-fork-mode
c906108c 3033@item show follow-fork-mode
2df3850c 3034Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
3035@end table
3036
5c95884b
MS
3037@cindex debugging multiple processes
3038On Linux, if you want to debug both the parent and child processes, use the
3039command @w{@code{set detach-on-fork}}.
3040
3041@table @code
3042@kindex set detach-on-fork
3043@item set detach-on-fork @var{mode}
3044Tells gdb whether to detach one of the processes after a fork, or
3045retain debugger control over them both.
3046
3047@table @code
3048@item on
3049The child process (or parent process, depending on the value of
3050@code{follow-fork-mode}) will be detached and allowed to run
3051independently. This is the default.
3052
3053@item off
3054Both processes will be held under the control of @value{GDBN}.
3055One process (child or parent, depending on the value of
3056@code{follow-fork-mode}) is debugged as usual, while the other
3057is held suspended.
3058
3059@end table
3060
11310833
NR
3061@kindex show detach-on-fork
3062@item show detach-on-fork
3063Show whether detach-on-fork mode is on/off.
5c95884b
MS
3064@end table
3065
2277426b
PA
3066If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN}
3067will retain control of all forked processes (including nested forks).
3068You can list the forked processes under the control of @value{GDBN} by
3069using the @w{@code{info inferiors}} command, and switch from one fork
6c95b8df
PA
3070to another by using the @code{inferior} command (@pxref{Inferiors and
3071Programs, ,Debugging Multiple Inferiors and Programs}).
5c95884b
MS
3072
3073To quit debugging one of the forked processes, you can either detach
af624141
MS
3074from it by using the @w{@code{detach inferiors}} command (allowing it
3075to run independently), or kill it using the @w{@code{kill inferiors}}
6c95b8df
PA
3076command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors
3077and Programs}.
5c95884b 3078
c906108c
SS
3079If you ask to debug a child process and a @code{vfork} is followed by an
3080@code{exec}, @value{GDBN} executes the new target up to the first
3081breakpoint in the new target. If you have a breakpoint set on
3082@code{main} in your original program, the breakpoint will also be set on
3083the child process's @code{main}.
3084
2277426b
PA
3085On some systems, when a child process is spawned by @code{vfork}, you
3086cannot debug the child or parent until an @code{exec} call completes.
c906108c
SS
3087
3088If you issue a @code{run} command to @value{GDBN} after an @code{exec}
6c95b8df
PA
3089call executes, the new target restarts. To restart the parent
3090process, use the @code{file} command with the parent executable name
3091as its argument. By default, after an @code{exec} call executes,
3092@value{GDBN} discards the symbols of the previous executable image.
3093You can change this behaviour with the @w{@code{set follow-exec-mode}}
3094command.
3095
3096@table @code
3097@kindex set follow-exec-mode
3098@item set follow-exec-mode @var{mode}
3099
3100Set debugger response to a program call of @code{exec}. An
3101@code{exec} call replaces the program image of a process.
3102
3103@code{follow-exec-mode} can be:
3104
3105@table @code
3106@item new
3107@value{GDBN} creates a new inferior and rebinds the process to this
3108new inferior. The program the process was running before the
3109@code{exec} call can be restarted afterwards by restarting the
3110original inferior.
3111
3112For example:
3113
3114@smallexample
3115(@value{GDBP}) info inferiors
3116(gdb) info inferior
3117 Id Description Executable
3118* 1 <null> prog1
3119(@value{GDBP}) run
3120process 12020 is executing new program: prog2
3121Program exited normally.
3122(@value{GDBP}) info inferiors
3123 Id Description Executable
3124* 2 <null> prog2
3125 1 <null> prog1
3126@end smallexample
3127
3128@item same
3129@value{GDBN} keeps the process bound to the same inferior. The new
3130executable image replaces the previous executable loaded in the
3131inferior. Restarting the inferior after the @code{exec} call, with
3132e.g., the @code{run} command, restarts the executable the process was
3133running after the @code{exec} call. This is the default mode.
3134
3135For example:
3136
3137@smallexample
3138(@value{GDBP}) info inferiors
3139 Id Description Executable
3140* 1 <null> prog1
3141(@value{GDBP}) run
3142process 12020 is executing new program: prog2
3143Program exited normally.
3144(@value{GDBP}) info inferiors
3145 Id Description Executable
3146* 1 <null> prog2
3147@end smallexample
3148
3149@end table
3150@end table
c906108c
SS
3151
3152You can use the @code{catch} command to make @value{GDBN} stop whenever
3153a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
79a6e687 3154Catchpoints, ,Setting Catchpoints}.
c906108c 3155
5c95884b 3156@node Checkpoint/Restart
79a6e687 3157@section Setting a @emph{Bookmark} to Return to Later
5c95884b
MS
3158
3159@cindex checkpoint
3160@cindex restart
3161@cindex bookmark
3162@cindex snapshot of a process
3163@cindex rewind program state
3164
3165On certain operating systems@footnote{Currently, only
3166@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a
3167program's state, called a @dfn{checkpoint}, and come back to it
3168later.
3169
3170Returning to a checkpoint effectively undoes everything that has
3171happened in the program since the @code{checkpoint} was saved. This
3172includes changes in memory, registers, and even (within some limits)
3173system state. Effectively, it is like going back in time to the
3174moment when the checkpoint was saved.
3175
3176Thus, if you're stepping thru a program and you think you're
3177getting close to the point where things go wrong, you can save
3178a checkpoint. Then, if you accidentally go too far and miss
3179the critical statement, instead of having to restart your program
3180from the beginning, you can just go back to the checkpoint and
3181start again from there.
3182
3183This can be especially useful if it takes a lot of time or
3184steps to reach the point where you think the bug occurs.
3185
3186To use the @code{checkpoint}/@code{restart} method of debugging:
3187
3188@table @code
3189@kindex checkpoint
3190@item checkpoint
3191Save a snapshot of the debugged program's current execution state.
3192The @code{checkpoint} command takes no arguments, but each checkpoint
3193is assigned a small integer id, similar to a breakpoint id.
3194
3195@kindex info checkpoints
3196@item info checkpoints
3197List the checkpoints that have been saved in the current debugging
3198session. For each checkpoint, the following information will be
3199listed:
3200
3201@table @code
3202@item Checkpoint ID
3203@item Process ID
3204@item Code Address
3205@item Source line, or label
3206@end table
3207
3208@kindex restart @var{checkpoint-id}
3209@item restart @var{checkpoint-id}
3210Restore the program state that was saved as checkpoint number
3211@var{checkpoint-id}. All program variables, registers, stack frames
3212etc.@: will be returned to the values that they had when the checkpoint
3213was saved. In essence, gdb will ``wind back the clock'' to the point
3214in time when the checkpoint was saved.
3215
3216Note that breakpoints, @value{GDBN} variables, command history etc.
3217are not affected by restoring a checkpoint. In general, a checkpoint
3218only restores things that reside in the program being debugged, not in
3219the debugger.
3220
b8db102d
MS
3221@kindex delete checkpoint @var{checkpoint-id}
3222@item delete checkpoint @var{checkpoint-id}
5c95884b
MS
3223Delete the previously-saved checkpoint identified by @var{checkpoint-id}.
3224
3225@end table
3226
3227Returning to a previously saved checkpoint will restore the user state
3228of the program being debugged, plus a significant subset of the system
3229(OS) state, including file pointers. It won't ``un-write'' data from
3230a file, but it will rewind the file pointer to the previous location,
3231so that the previously written data can be overwritten. For files
3232opened in read mode, the pointer will also be restored so that the
3233previously read data can be read again.
3234
3235Of course, characters that have been sent to a printer (or other
3236external device) cannot be ``snatched back'', and characters received
3237from eg.@: a serial device can be removed from internal program buffers,
3238but they cannot be ``pushed back'' into the serial pipeline, ready to
3239be received again. Similarly, the actual contents of files that have
3240been changed cannot be restored (at this time).
3241
3242However, within those constraints, you actually can ``rewind'' your
3243program to a previously saved point in time, and begin debugging it
3244again --- and you can change the course of events so as to debug a
3245different execution path this time.
3246
3247@cindex checkpoints and process id
3248Finally, there is one bit of internal program state that will be
3249different when you return to a checkpoint --- the program's process
3250id. Each checkpoint will have a unique process id (or @var{pid}),
3251and each will be different from the program's original @var{pid}.
3252If your program has saved a local copy of its process id, this could
3253potentially pose a problem.
3254
79a6e687 3255@subsection A Non-obvious Benefit of Using Checkpoints
5c95884b
MS
3256
3257On some systems such as @sc{gnu}/Linux, address space randomization
3258is performed on new processes for security reasons. This makes it
3259difficult or impossible to set a breakpoint, or watchpoint, on an
3260absolute address if you have to restart the program, since the
3261absolute location of a symbol will change from one execution to the
3262next.
3263
3264A checkpoint, however, is an @emph{identical} copy of a process.
3265Therefore if you create a checkpoint at (eg.@:) the start of main,
3266and simply return to that checkpoint instead of restarting the
3267process, you can avoid the effects of address randomization and
3268your symbols will all stay in the same place.
3269
6d2ebf8b 3270@node Stopping
c906108c
SS
3271@chapter Stopping and Continuing
3272
3273The principal purposes of using a debugger are so that you can stop your
3274program before it terminates; or so that, if your program runs into
3275trouble, you can investigate and find out why.
3276
7a292a7a
SS
3277Inside @value{GDBN}, your program may stop for any of several reasons,
3278such as a signal, a breakpoint, or reaching a new line after a
3279@value{GDBN} command such as @code{step}. You may then examine and
3280change variables, set new breakpoints or remove old ones, and then
3281continue execution. Usually, the messages shown by @value{GDBN} provide
3282ample explanation of the status of your program---but you can also
3283explicitly request this information at any time.
c906108c
SS
3284
3285@table @code
3286@kindex info program
3287@item info program
3288Display information about the status of your program: whether it is
7a292a7a 3289running or not, what process it is, and why it stopped.
c906108c
SS
3290@end table
3291
3292@menu
3293* Breakpoints:: Breakpoints, watchpoints, and catchpoints
3294* Continuing and Stepping:: Resuming execution
aad1c02c
TT
3295* Skipping Over Functions and Files::
3296 Skipping over functions and files
c906108c 3297* Signals:: Signals
c906108c 3298* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
3299@end menu
3300
6d2ebf8b 3301@node Breakpoints
79a6e687 3302@section Breakpoints, Watchpoints, and Catchpoints
c906108c
SS
3303
3304@cindex breakpoints
3305A @dfn{breakpoint} makes your program stop whenever a certain point in
3306the program is reached. For each breakpoint, you can add conditions to
3307control in finer detail whether your program stops. You can set
3308breakpoints with the @code{break} command and its variants (@pxref{Set
79a6e687 3309Breaks, ,Setting Breakpoints}), to specify the place where your program
c906108c
SS
3310should stop by line number, function name or exact address in the
3311program.
3312
09d4efe1
EZ
3313On some systems, you can set breakpoints in shared libraries before
3314the executable is run. There is a minor limitation on HP-UX systems:
3315you must wait until the executable is run in order to set breakpoints
3316in shared library routines that are not called directly by the program
3317(for example, routines that are arguments in a @code{pthread_create}
3318call).
c906108c
SS
3319
3320@cindex watchpoints
fd60e0df 3321@cindex data breakpoints
c906108c
SS
3322@cindex memory tracing
3323@cindex breakpoint on memory address
3324@cindex breakpoint on variable modification
3325A @dfn{watchpoint} is a special breakpoint that stops your program
fd60e0df 3326when the value of an expression changes. The expression may be a value
0ced0c34 3327of a variable, or it could involve values of one or more variables
fd60e0df
EZ
3328combined by operators, such as @samp{a + b}. This is sometimes called
3329@dfn{data breakpoints}. You must use a different command to set
79a6e687 3330watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside
fd60e0df
EZ
3331from that, you can manage a watchpoint like any other breakpoint: you
3332enable, disable, and delete both breakpoints and watchpoints using the
3333same commands.
c906108c
SS
3334
3335You can arrange to have values from your program displayed automatically
3336whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
79a6e687 3337Automatic Display}.
c906108c
SS
3338
3339@cindex catchpoints
3340@cindex breakpoint on events
3341A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 3342when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
3343exception or the loading of a library. As with watchpoints, you use a
3344different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
79a6e687 3345Catchpoints}), but aside from that, you can manage a catchpoint like any
c906108c 3346other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 3347@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
3348
3349@cindex breakpoint numbers
3350@cindex numbers for breakpoints
3351@value{GDBN} assigns a number to each breakpoint, watchpoint, or
3352catchpoint when you create it; these numbers are successive integers
3353starting with one. In many of the commands for controlling various
3354features of breakpoints you use the breakpoint number to say which
3355breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
3356@dfn{disabled}; if disabled, it has no effect on your program until you
3357enable it again.
3358
c5394b80
JM
3359@cindex breakpoint ranges
3360@cindex ranges of breakpoints
3361Some @value{GDBN} commands accept a range of breakpoints on which to
3362operate. A breakpoint range is either a single breakpoint number, like
3363@samp{5}, or two such numbers, in increasing order, separated by a
3364hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
d52fb0e9 3365all breakpoints in that range are operated on.
c5394b80 3366
c906108c
SS
3367@menu
3368* Set Breaks:: Setting breakpoints
3369* Set Watchpoints:: Setting watchpoints
3370* Set Catchpoints:: Setting catchpoints
3371* Delete Breaks:: Deleting breakpoints
3372* Disabling:: Disabling breakpoints
3373* Conditions:: Break conditions
3374* Break Commands:: Breakpoint command lists
e7e0cddf 3375* Dynamic Printf:: Dynamic printf
6149aea9 3376* Save Breakpoints:: How to save breakpoints in a file
62e5f89c 3377* Static Probe Points:: Listing static probe points
d4f3574e 3378* Error in Breakpoints:: ``Cannot insert breakpoints''
79a6e687 3379* Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
c906108c
SS
3380@end menu
3381
6d2ebf8b 3382@node Set Breaks
79a6e687 3383@subsection Setting Breakpoints
c906108c 3384
5d161b24 3385@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
3386@c consider in particular declaration with/without initialization.
3387@c
3388@c FIXME 2 is there stuff on this already? break at fun start, already init?
3389
3390@kindex break
41afff9a
EZ
3391@kindex b @r{(@code{break})}
3392@vindex $bpnum@r{, convenience variable}
c906108c
SS
3393@cindex latest breakpoint
3394Breakpoints are set with the @code{break} command (abbreviated
5d161b24 3395@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 3396number of the breakpoint you've set most recently; see @ref{Convenience
79a6e687 3397Vars,, Convenience Variables}, for a discussion of what you can do with
c906108c
SS
3398convenience variables.
3399
c906108c 3400@table @code
2a25a5ba
EZ
3401@item break @var{location}
3402Set a breakpoint at the given @var{location}, which can specify a
3403function name, a line number, or an address of an instruction.
3404(@xref{Specify Location}, for a list of all the possible ways to
3405specify a @var{location}.) The breakpoint will stop your program just
3406before it executes any of the code in the specified @var{location}.
3407
c906108c 3408When using source languages that permit overloading of symbols, such as
2a25a5ba 3409C@t{++}, a function name may refer to more than one possible place to break.
6ba66d6a
JB
3410@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of
3411that situation.
c906108c 3412
45ac276d 3413It is also possible to insert a breakpoint that will stop the program
2c88c651
JB
3414only if a specific thread (@pxref{Thread-Specific Breakpoints})
3415or a specific task (@pxref{Ada Tasks}) hits that breakpoint.
45ac276d 3416
c906108c
SS
3417@item break
3418When called without any arguments, @code{break} sets a breakpoint at
3419the next instruction to be executed in the selected stack frame
3420(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
3421innermost, this makes your program stop as soon as control
3422returns to that frame. This is similar to the effect of a
3423@code{finish} command in the frame inside the selected frame---except
3424that @code{finish} does not leave an active breakpoint. If you use
3425@code{break} without an argument in the innermost frame, @value{GDBN} stops
3426the next time it reaches the current location; this may be useful
3427inside loops.
3428
3429@value{GDBN} normally ignores breakpoints when it resumes execution, until at
3430least one instruction has been executed. If it did not do this, you
3431would be unable to proceed past a breakpoint without first disabling the
3432breakpoint. This rule applies whether or not the breakpoint already
3433existed when your program stopped.
3434
3435@item break @dots{} if @var{cond}
3436Set a breakpoint with condition @var{cond}; evaluate the expression
3437@var{cond} each time the breakpoint is reached, and stop only if the
3438value is nonzero---that is, if @var{cond} evaluates as true.
3439@samp{@dots{}} stands for one of the possible arguments described
3440above (or no argument) specifying where to break. @xref{Conditions,
79a6e687 3441,Break Conditions}, for more information on breakpoint conditions.
c906108c
SS
3442
3443@kindex tbreak
3444@item tbreak @var{args}
3445Set a breakpoint enabled only for one stop. @var{args} are the
3446same as for the @code{break} command, and the breakpoint is set in the same
3447way, but the breakpoint is automatically deleted after the first time your
79a6e687 3448program stops there. @xref{Disabling, ,Disabling Breakpoints}.
c906108c 3449
c906108c 3450@kindex hbreak
ba04e063 3451@cindex hardware breakpoints
c906108c 3452@item hbreak @var{args}
d4f3574e
SS
3453Set a hardware-assisted breakpoint. @var{args} are the same as for the
3454@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
3455breakpoint requires hardware support and some target hardware may not
3456have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
3457debugging, so you can set a breakpoint at an instruction without
3458changing the instruction. This can be used with the new trap-generation
09d4efe1 3459provided by SPARClite DSU and most x86-based targets. These targets
d4f3574e
SS
3460will generate traps when a program accesses some data or instruction
3461address that is assigned to the debug registers. However the hardware
3462breakpoint registers can take a limited number of breakpoints. For
3463example, on the DSU, only two data breakpoints can be set at a time, and
3464@value{GDBN} will reject this command if more than two are used. Delete
3465or disable unused hardware breakpoints before setting new ones
79a6e687
BW
3466(@pxref{Disabling, ,Disabling Breakpoints}).
3467@xref{Conditions, ,Break Conditions}.
9c16f35a
EZ
3468For remote targets, you can restrict the number of hardware
3469breakpoints @value{GDBN} will use, see @ref{set remote
3470hardware-breakpoint-limit}.
501eef12 3471
c906108c
SS
3472@kindex thbreak
3473@item thbreak @var{args}
3474Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
3475are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 3476the same way. However, like the @code{tbreak} command,
c906108c
SS
3477the breakpoint is automatically deleted after the
3478first time your program stops there. Also, like the @code{hbreak}
5d161b24 3479command, the breakpoint requires hardware support and some target hardware
79a6e687
BW
3480may not have this support. @xref{Disabling, ,Disabling Breakpoints}.
3481See also @ref{Conditions, ,Break Conditions}.
c906108c
SS
3482
3483@kindex rbreak
3484@cindex regular expression
8bd10a10 3485@cindex breakpoints at functions matching a regexp
c45da7e6 3486@cindex set breakpoints in many functions
c906108c 3487@item rbreak @var{regex}
c906108c 3488Set breakpoints on all functions matching the regular expression
11cf8741
JM
3489@var{regex}. This command sets an unconditional breakpoint on all
3490matches, printing a list of all breakpoints it set. Once these
3491breakpoints are set, they are treated just like the breakpoints set with
3492the @code{break} command. You can delete them, disable them, or make
3493them conditional the same way as any other breakpoint.
3494
3495The syntax of the regular expression is the standard one used with tools
3496like @file{grep}. Note that this is different from the syntax used by
3497shells, so for instance @code{foo*} matches all functions that include
3498an @code{fo} followed by zero or more @code{o}s. There is an implicit
3499@code{.*} leading and trailing the regular expression you supply, so to
3500match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 3501
f7dc1244 3502@cindex non-member C@t{++} functions, set breakpoint in
b37052ae 3503When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
3504breakpoints on overloaded functions that are not members of any special
3505classes.
c906108c 3506
f7dc1244
EZ
3507@cindex set breakpoints on all functions
3508The @code{rbreak} command can be used to set breakpoints in
3509@strong{all} the functions in a program, like this:
3510
3511@smallexample
3512(@value{GDBP}) rbreak .
3513@end smallexample
3514
8bd10a10
CM
3515@item rbreak @var{file}:@var{regex}
3516If @code{rbreak} is called with a filename qualification, it limits
3517the search for functions matching the given regular expression to the
3518specified @var{file}. This can be used, for example, to set breakpoints on
3519every function in a given file:
3520
3521@smallexample
3522(@value{GDBP}) rbreak file.c:.
3523@end smallexample
3524
3525The colon separating the filename qualifier from the regex may
3526optionally be surrounded by spaces.
3527
c906108c
SS
3528@kindex info breakpoints
3529@cindex @code{$_} and @code{info breakpoints}
e5a67952
MS
3530@item info breakpoints @r{[}@var{n}@dots{}@r{]}
3531@itemx info break @r{[}@var{n}@dots{}@r{]}
c906108c 3532Print a table of all breakpoints, watchpoints, and catchpoints set and
45ac1734 3533not deleted. Optional argument @var{n} means print information only
e5a67952
MS
3534about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)).
3535For each breakpoint, following columns are printed:
c906108c
SS
3536
3537@table @emph
3538@item Breakpoint Numbers
3539@item Type
3540Breakpoint, watchpoint, or catchpoint.
3541@item Disposition
3542Whether the breakpoint is marked to be disabled or deleted when hit.
3543@item Enabled or Disabled
3544Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
b3db7447 3545that are not enabled.
c906108c 3546@item Address
fe6fbf8b 3547Where the breakpoint is in your program, as a memory address. For a
b3db7447
NR
3548pending breakpoint whose address is not yet known, this field will
3549contain @samp{<PENDING>}. Such breakpoint won't fire until a shared
3550library that has the symbol or line referred by breakpoint is loaded.
3551See below for details. A breakpoint with several locations will
3b784c4f 3552have @samp{<MULTIPLE>} in this field---see below for details.
c906108c
SS
3553@item What
3554Where the breakpoint is in the source for your program, as a file and
2650777c
JJ
3555line number. For a pending breakpoint, the original string passed to
3556the breakpoint command will be listed as it cannot be resolved until
3557the appropriate shared library is loaded in the future.
c906108c
SS
3558@end table
3559
3560@noindent
83364271
LM
3561If a breakpoint is conditional, there are two evaluation modes: ``host'' and
3562``target''. If mode is ``host'', breakpoint condition evaluation is done by
3563@value{GDBN} on the host's side. If it is ``target'', then the condition
3564is evaluated by the target. The @code{info break} command shows
3565the condition on the line following the affected breakpoint, together with
3566its condition evaluation mode in between parentheses.
3567
3568Breakpoint commands, if any, are listed after that. A pending breakpoint is
3569allowed to have a condition specified for it. The condition is not parsed for
3570validity until a shared library is loaded that allows the pending
3571breakpoint to resolve to a valid location.
c906108c
SS
3572
3573@noindent
3574@code{info break} with a breakpoint
3575number @var{n} as argument lists only that breakpoint. The
3576convenience variable @code{$_} and the default examining-address for
3577the @code{x} command are set to the address of the last breakpoint
79a6e687 3578listed (@pxref{Memory, ,Examining Memory}).
c906108c
SS
3579
3580@noindent
3581@code{info break} displays a count of the number of times the breakpoint
3582has been hit. This is especially useful in conjunction with the
3583@code{ignore} command. You can ignore a large number of breakpoint
3584hits, look at the breakpoint info to see how many times the breakpoint
3585was hit, and then run again, ignoring one less than that number. This
3586will get you quickly to the last hit of that breakpoint.
816338b5
SS
3587
3588@noindent
3589For a breakpoints with an enable count (xref) greater than 1,
3590@code{info break} also displays that count.
3591
c906108c
SS
3592@end table
3593
3594@value{GDBN} allows you to set any number of breakpoints at the same place in
3595your program. There is nothing silly or meaningless about this. When
3596the breakpoints are conditional, this is even useful
79a6e687 3597(@pxref{Conditions, ,Break Conditions}).
c906108c 3598
2e9132cc
EZ
3599@cindex multiple locations, breakpoints
3600@cindex breakpoints, multiple locations
fcda367b 3601It is possible that a breakpoint corresponds to several locations
fe6fbf8b
VP
3602in your program. Examples of this situation are:
3603
3604@itemize @bullet
f8eba3c6
TT
3605@item
3606Multiple functions in the program may have the same name.
3607
fe6fbf8b
VP
3608@item
3609For a C@t{++} constructor, the @value{NGCC} compiler generates several
3610instances of the function body, used in different cases.
3611
3612@item
3613For a C@t{++} template function, a given line in the function can
3614correspond to any number of instantiations.
3615
3616@item
3617For an inlined function, a given source line can correspond to
3618several places where that function is inlined.
fe6fbf8b
VP
3619@end itemize
3620
3621In all those cases, @value{GDBN} will insert a breakpoint at all
f8eba3c6 3622the relevant locations.
fe6fbf8b 3623
3b784c4f
EZ
3624A breakpoint with multiple locations is displayed in the breakpoint
3625table using several rows---one header row, followed by one row for
3626each breakpoint location. The header row has @samp{<MULTIPLE>} in the
3627address column. The rows for individual locations contain the actual
3628addresses for locations, and show the functions to which those
3629locations belong. The number column for a location is of the form
fe6fbf8b
VP
3630@var{breakpoint-number}.@var{location-number}.
3631
3632For example:
3b784c4f 3633
fe6fbf8b
VP
3634@smallexample
3635Num Type Disp Enb Address What
36361 breakpoint keep y <MULTIPLE>
3637 stop only if i==1
3638 breakpoint already hit 1 time
36391.1 y 0x080486a2 in void foo<int>() at t.cc:8
36401.2 y 0x080486ca in void foo<double>() at t.cc:8
3641@end smallexample
3642
3643Each location can be individually enabled or disabled by passing
3644@var{breakpoint-number}.@var{location-number} as argument to the
3b784c4f
EZ
3645@code{enable} and @code{disable} commands. Note that you cannot
3646delete the individual locations from the list, you can only delete the
16bfc218 3647entire list of locations that belong to their parent breakpoint (with
3b784c4f
EZ
3648the @kbd{delete @var{num}} command, where @var{num} is the number of
3649the parent breakpoint, 1 in the above example). Disabling or enabling
3650the parent breakpoint (@pxref{Disabling}) affects all of the locations
3651that belong to that breakpoint.
fe6fbf8b 3652
2650777c 3653@cindex pending breakpoints
fe6fbf8b 3654It's quite common to have a breakpoint inside a shared library.
3b784c4f 3655Shared libraries can be loaded and unloaded explicitly,
fe6fbf8b
VP
3656and possibly repeatedly, as the program is executed. To support
3657this use case, @value{GDBN} updates breakpoint locations whenever
3658any shared library is loaded or unloaded. Typically, you would
fcda367b 3659set a breakpoint in a shared library at the beginning of your
fe6fbf8b
VP
3660debugging session, when the library is not loaded, and when the
3661symbols from the library are not available. When you try to set
3662breakpoint, @value{GDBN} will ask you if you want to set
3b784c4f 3663a so called @dfn{pending breakpoint}---breakpoint whose address
fe6fbf8b
VP
3664is not yet resolved.
3665
3666After the program is run, whenever a new shared library is loaded,
3667@value{GDBN} reevaluates all the breakpoints. When a newly loaded
3668shared library contains the symbol or line referred to by some
3669pending breakpoint, that breakpoint is resolved and becomes an
3670ordinary breakpoint. When a library is unloaded, all breakpoints
3671that refer to its symbols or source lines become pending again.
3672
3673This logic works for breakpoints with multiple locations, too. For
3674example, if you have a breakpoint in a C@t{++} template function, and
3675a newly loaded shared library has an instantiation of that template,
3676a new location is added to the list of locations for the breakpoint.
3677
3678Except for having unresolved address, pending breakpoints do not
3679differ from regular breakpoints. You can set conditions or commands,
3680enable and disable them and perform other breakpoint operations.
3681
3682@value{GDBN} provides some additional commands for controlling what
3683happens when the @samp{break} command cannot resolve breakpoint
3684address specification to an address:
dd79a6cf
JJ
3685
3686@kindex set breakpoint pending
3687@kindex show breakpoint pending
3688@table @code
3689@item set breakpoint pending auto
3690This is the default behavior. When @value{GDBN} cannot find the breakpoint
3691location, it queries you whether a pending breakpoint should be created.
3692
3693@item set breakpoint pending on
3694This indicates that an unrecognized breakpoint location should automatically
3695result in a pending breakpoint being created.
3696
3697@item set breakpoint pending off
3698This indicates that pending breakpoints are not to be created. Any
3699unrecognized breakpoint location results in an error. This setting does
3700not affect any pending breakpoints previously created.
3701
3702@item show breakpoint pending
3703Show the current behavior setting for creating pending breakpoints.
3704@end table
2650777c 3705
fe6fbf8b
VP
3706The settings above only affect the @code{break} command and its
3707variants. Once breakpoint is set, it will be automatically updated
3708as shared libraries are loaded and unloaded.
2650777c 3709
765dc015
VP
3710@cindex automatic hardware breakpoints
3711For some targets, @value{GDBN} can automatically decide if hardware or
3712software breakpoints should be used, depending on whether the
3713breakpoint address is read-only or read-write. This applies to
3714breakpoints set with the @code{break} command as well as to internal
3715breakpoints set by commands like @code{next} and @code{finish}. For
fcda367b 3716breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware
765dc015
VP
3717breakpoints.
3718
3719You can control this automatic behaviour with the following commands::
3720
3721@kindex set breakpoint auto-hw
3722@kindex show breakpoint auto-hw
3723@table @code
3724@item set breakpoint auto-hw on
3725This is the default behavior. When @value{GDBN} sets a breakpoint, it
3726will try to use the target memory map to decide if software or hardware
3727breakpoint must be used.
3728
3729@item set breakpoint auto-hw off
3730This indicates @value{GDBN} should not automatically select breakpoint
3731type. If the target provides a memory map, @value{GDBN} will warn when
3732trying to set software breakpoint at a read-only address.
3733@end table
3734
74960c60
VP
3735@value{GDBN} normally implements breakpoints by replacing the program code
3736at the breakpoint address with a special instruction, which, when
3737executed, given control to the debugger. By default, the program
3738code is so modified only when the program is resumed. As soon as
3739the program stops, @value{GDBN} restores the original instructions. This
3740behaviour guards against leaving breakpoints inserted in the
3741target should gdb abrubptly disconnect. However, with slow remote
3742targets, inserting and removing breakpoint can reduce the performance.
3743This behavior can be controlled with the following commands::
3744
3745@kindex set breakpoint always-inserted
3746@kindex show breakpoint always-inserted
3747@table @code
3748@item set breakpoint always-inserted off
33e5cbd6
PA
3749All breakpoints, including newly added by the user, are inserted in
3750the target only when the target is resumed. All breakpoints are
3751removed from the target when it stops.
74960c60
VP
3752
3753@item set breakpoint always-inserted on
3754Causes all breakpoints to be inserted in the target at all times. If
3755the user adds a new breakpoint, or changes an existing breakpoint, the
3756breakpoints in the target are updated immediately. A breakpoint is
3757removed from the target only when breakpoint itself is removed.
33e5cbd6
PA
3758
3759@cindex non-stop mode, and @code{breakpoint always-inserted}
3760@item set breakpoint always-inserted auto
3761This is the default mode. If @value{GDBN} is controlling the inferior
3762in non-stop mode (@pxref{Non-Stop Mode}), gdb behaves as if
3763@code{breakpoint always-inserted} mode is on. If @value{GDBN} is
3764controlling the inferior in all-stop mode, @value{GDBN} behaves as if
3765@code{breakpoint always-inserted} mode is off.
74960c60 3766@end table
765dc015 3767
83364271
LM
3768@value{GDBN} handles conditional breakpoints by evaluating these conditions
3769when a breakpoint breaks. If the condition is true, then the process being
3770debugged stops, otherwise the process is resumed.
3771
3772If the target supports evaluating conditions on its end, @value{GDBN} may
3773download the breakpoint, together with its conditions, to it.
3774
3775This feature can be controlled via the following commands:
3776
3777@kindex set breakpoint condition-evaluation
3778@kindex show breakpoint condition-evaluation
3779@table @code
3780@item set breakpoint condition-evaluation host
3781This option commands @value{GDBN} to evaluate the breakpoint
3782conditions on the host's side. Unconditional breakpoints are sent to
3783the target which in turn receives the triggers and reports them back to GDB
3784for condition evaluation. This is the standard evaluation mode.
3785
3786@item set breakpoint condition-evaluation target
3787This option commands @value{GDBN} to download breakpoint conditions
3788to the target at the moment of their insertion. The target
3789is responsible for evaluating the conditional expression and reporting
3790breakpoint stop events back to @value{GDBN} whenever the condition
3791is true. Due to limitations of target-side evaluation, some conditions
3792cannot be evaluated there, e.g., conditions that depend on local data
3793that is only known to the host. Examples include
3794conditional expressions involving convenience variables, complex types
3795that cannot be handled by the agent expression parser and expressions
3796that are too long to be sent over to the target, specially when the
3797target is a remote system. In these cases, the conditions will be
3798evaluated by @value{GDBN}.
3799
3800@item set breakpoint condition-evaluation auto
3801This is the default mode. If the target supports evaluating breakpoint
3802conditions on its end, @value{GDBN} will download breakpoint conditions to
3803the target (limitations mentioned previously apply). If the target does
3804not support breakpoint condition evaluation, then @value{GDBN} will fallback
3805to evaluating all these conditions on the host's side.
3806@end table
3807
3808
c906108c
SS
3809@cindex negative breakpoint numbers
3810@cindex internal @value{GDBN} breakpoints
eb12ee30
AC
3811@value{GDBN} itself sometimes sets breakpoints in your program for
3812special purposes, such as proper handling of @code{longjmp} (in C
3813programs). These internal breakpoints are assigned negative numbers,
3814starting with @code{-1}; @samp{info breakpoints} does not display them.
c906108c 3815You can see these breakpoints with the @value{GDBN} maintenance command
eb12ee30 3816@samp{maint info breakpoints} (@pxref{maint info breakpoints}).
c906108c
SS
3817
3818
6d2ebf8b 3819@node Set Watchpoints
79a6e687 3820@subsection Setting Watchpoints
c906108c
SS
3821
3822@cindex setting watchpoints
c906108c
SS
3823You can use a watchpoint to stop execution whenever the value of an
3824expression changes, without having to predict a particular place where
fd60e0df
EZ
3825this may happen. (This is sometimes called a @dfn{data breakpoint}.)
3826The expression may be as simple as the value of a single variable, or
3827as complex as many variables combined by operators. Examples include:
3828
3829@itemize @bullet
3830@item
3831A reference to the value of a single variable.
3832
3833@item
3834An address cast to an appropriate data type. For example,
3835@samp{*(int *)0x12345678} will watch a 4-byte region at the specified
3836address (assuming an @code{int} occupies 4 bytes).
3837
3838@item
3839An arbitrarily complex expression, such as @samp{a*b + c/d}. The
3840expression can use any operators valid in the program's native
3841language (@pxref{Languages}).
3842@end itemize
c906108c 3843
fa4727a6
DJ
3844You can set a watchpoint on an expression even if the expression can
3845not be evaluated yet. For instance, you can set a watchpoint on
3846@samp{*global_ptr} before @samp{global_ptr} is initialized.
3847@value{GDBN} will stop when your program sets @samp{global_ptr} and
3848the expression produces a valid value. If the expression becomes
3849valid in some other way than changing a variable (e.g.@: if the memory
3850pointed to by @samp{*global_ptr} becomes readable as the result of a
3851@code{malloc} call), @value{GDBN} may not stop until the next time
3852the expression changes.
3853
82f2d802
EZ
3854@cindex software watchpoints
3855@cindex hardware watchpoints
c906108c 3856Depending on your system, watchpoints may be implemented in software or
2df3850c 3857hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
3858program and testing the variable's value each time, which is hundreds of
3859times slower than normal execution. (But this may still be worth it, to
3860catch errors where you have no clue what part of your program is the
3861culprit.)
3862
37e4754d 3863On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other
82f2d802
EZ
3864x86-based targets, @value{GDBN} includes support for hardware
3865watchpoints, which do not slow down the running of your program.
c906108c
SS
3866
3867@table @code
3868@kindex watch
9c06b0b4 3869@item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
fd60e0df
EZ
3870Set a watchpoint for an expression. @value{GDBN} will break when the
3871expression @var{expr} is written into by the program and its value
3872changes. The simplest (and the most popular) use of this command is
3873to watch the value of a single variable:
3874
3875@smallexample
3876(@value{GDBP}) watch foo
3877@end smallexample
c906108c 3878
d8b2a693 3879If the command includes a @code{@r{[}thread @var{threadnum}@r{]}}
9c06b0b4 3880argument, @value{GDBN} breaks only when the thread identified by
d8b2a693
JB
3881@var{threadnum} changes the value of @var{expr}. If any other threads
3882change the value of @var{expr}, @value{GDBN} will not break. Note
3883that watchpoints restricted to a single thread in this way only work
3884with Hardware Watchpoints.
3885
06a64a0b
TT
3886Ordinarily a watchpoint respects the scope of variables in @var{expr}
3887(see below). The @code{-location} argument tells @value{GDBN} to
3888instead watch the memory referred to by @var{expr}. In this case,
3889@value{GDBN} will evaluate @var{expr}, take the address of the result,
3890and watch the memory at that address. The type of the result is used
3891to determine the size of the watched memory. If the expression's
3892result does not have an address, then @value{GDBN} will print an
3893error.
3894
9c06b0b4
TJB
3895The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation
3896of masked watchpoints, if the current architecture supports this
3897feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC
3898Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition
3899to an address to watch. The mask specifies that some bits of an address
3900(the bits which are reset in the mask) should be ignored when matching
3901the address accessed by the inferior against the watchpoint address.
3902Thus, a masked watchpoint watches many addresses simultaneously---those
3903addresses whose unmasked bits are identical to the unmasked bits in the
3904watchpoint address. The @code{mask} argument implies @code{-location}.
3905Examples:
3906
3907@smallexample
3908(@value{GDBP}) watch foo mask 0xffff00ff
3909(@value{GDBP}) watch *0xdeadbeef mask 0xffffff00
3910@end smallexample
3911
c906108c 3912@kindex rwatch
9c06b0b4 3913@item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
09d4efe1
EZ
3914Set a watchpoint that will break when the value of @var{expr} is read
3915by the program.
c906108c
SS
3916
3917@kindex awatch
9c06b0b4 3918@item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
09d4efe1
EZ
3919Set a watchpoint that will break when @var{expr} is either read from
3920or written into by the program.
c906108c 3921
e5a67952
MS
3922@kindex info watchpoints @r{[}@var{n}@dots{}@r{]}
3923@item info watchpoints @r{[}@var{n}@dots{}@r{]}
d77f58be
SS
3924This command prints a list of watchpoints, using the same format as
3925@code{info break} (@pxref{Set Breaks}).
c906108c
SS
3926@end table
3927
65d79d4b
SDJ
3928If you watch for a change in a numerically entered address you need to
3929dereference it, as the address itself is just a constant number which will
3930never change. @value{GDBN} refuses to create a watchpoint that watches
3931a never-changing value:
3932
3933@smallexample
3934(@value{GDBP}) watch 0x600850
3935Cannot watch constant value 0x600850.
3936(@value{GDBP}) watch *(int *) 0x600850
3937Watchpoint 1: *(int *) 6293584
3938@end smallexample
3939
c906108c
SS
3940@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
3941watchpoints execute very quickly, and the debugger reports a change in
3942value at the exact instruction where the change occurs. If @value{GDBN}
3943cannot set a hardware watchpoint, it sets a software watchpoint, which
3944executes more slowly and reports the change in value at the next
82f2d802
EZ
3945@emph{statement}, not the instruction, after the change occurs.
3946
82f2d802
EZ
3947@cindex use only software watchpoints
3948You can force @value{GDBN} to use only software watchpoints with the
3949@kbd{set can-use-hw-watchpoints 0} command. With this variable set to
3950zero, @value{GDBN} will never try to use hardware watchpoints, even if
3951the underlying system supports them. (Note that hardware-assisted
3952watchpoints that were set @emph{before} setting
3953@code{can-use-hw-watchpoints} to zero will still use the hardware
d3e8051b 3954mechanism of watching expression values.)
c906108c 3955
9c16f35a
EZ
3956@table @code
3957@item set can-use-hw-watchpoints
3958@kindex set can-use-hw-watchpoints
3959Set whether or not to use hardware watchpoints.
3960
3961@item show can-use-hw-watchpoints
3962@kindex show can-use-hw-watchpoints
3963Show the current mode of using hardware watchpoints.
3964@end table
3965
3966For remote targets, you can restrict the number of hardware
3967watchpoints @value{GDBN} will use, see @ref{set remote
3968hardware-breakpoint-limit}.
3969
c906108c
SS
3970When you issue the @code{watch} command, @value{GDBN} reports
3971
474c8240 3972@smallexample
c906108c 3973Hardware watchpoint @var{num}: @var{expr}
474c8240 3974@end smallexample
c906108c
SS
3975
3976@noindent
3977if it was able to set a hardware watchpoint.
3978
7be570e7
JM
3979Currently, the @code{awatch} and @code{rwatch} commands can only set
3980hardware watchpoints, because accesses to data that don't change the
3981value of the watched expression cannot be detected without examining
3982every instruction as it is being executed, and @value{GDBN} does not do
3983that currently. If @value{GDBN} finds that it is unable to set a
3984hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
3985will print a message like this:
3986
3987@smallexample
3988Expression cannot be implemented with read/access watchpoint.
3989@end smallexample
3990
3991Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
3992data type of the watched expression is wider than what a hardware
3993watchpoint on the target machine can handle. For example, some systems
3994can only watch regions that are up to 4 bytes wide; on such systems you
3995cannot set hardware watchpoints for an expression that yields a
3996double-precision floating-point number (which is typically 8 bytes
3997wide). As a work-around, it might be possible to break the large region
3998into a series of smaller ones and watch them with separate watchpoints.
3999
4000If you set too many hardware watchpoints, @value{GDBN} might be unable
4001to insert all of them when you resume the execution of your program.
4002Since the precise number of active watchpoints is unknown until such
4003time as the program is about to be resumed, @value{GDBN} might not be
4004able to warn you about this when you set the watchpoints, and the
4005warning will be printed only when the program is resumed:
4006
4007@smallexample
4008Hardware watchpoint @var{num}: Could not insert watchpoint
4009@end smallexample
4010
4011@noindent
4012If this happens, delete or disable some of the watchpoints.
4013
fd60e0df
EZ
4014Watching complex expressions that reference many variables can also
4015exhaust the resources available for hardware-assisted watchpoints.
4016That's because @value{GDBN} needs to watch every variable in the
4017expression with separately allocated resources.
4018
c906108c 4019If you call a function interactively using @code{print} or @code{call},
2df3850c 4020any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
4021kind of breakpoint or the call completes.
4022
7be570e7
JM
4023@value{GDBN} automatically deletes watchpoints that watch local
4024(automatic) variables, or expressions that involve such variables, when
4025they go out of scope, that is, when the execution leaves the block in
4026which these variables were defined. In particular, when the program
4027being debugged terminates, @emph{all} local variables go out of scope,
4028and so only watchpoints that watch global variables remain set. If you
4029rerun the program, you will need to set all such watchpoints again. One
4030way of doing that would be to set a code breakpoint at the entry to the
4031@code{main} function and when it breaks, set all the watchpoints.
4032
c906108c
SS
4033@cindex watchpoints and threads
4034@cindex threads and watchpoints
d983da9c
DJ
4035In multi-threaded programs, watchpoints will detect changes to the
4036watched expression from every thread.
4037
4038@quotation
4039@emph{Warning:} In multi-threaded programs, software watchpoints
53a5351d
JM
4040have only limited usefulness. If @value{GDBN} creates a software
4041watchpoint, it can only watch the value of an expression @emph{in a
4042single thread}. If you are confident that the expression can only
4043change due to the current thread's activity (and if you are also
4044confident that no other thread can become current), then you can use
4045software watchpoints as usual. However, @value{GDBN} may not notice
4046when a non-current thread's activity changes the expression. (Hardware
4047watchpoints, in contrast, watch an expression in all threads.)
c906108c 4048@end quotation
c906108c 4049
501eef12
AC
4050@xref{set remote hardware-watchpoint-limit}.
4051
6d2ebf8b 4052@node Set Catchpoints
79a6e687 4053@subsection Setting Catchpoints
d4f3574e 4054@cindex catchpoints, setting
c906108c
SS
4055@cindex exception handlers
4056@cindex event handling
4057
4058You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 4059kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
4060shared library. Use the @code{catch} command to set a catchpoint.
4061
4062@table @code
4063@kindex catch
4064@item catch @var{event}
4065Stop when @var{event} occurs. @var{event} can be any of the following:
4066@table @code
4067@item throw
4644b6e3 4068@cindex stop on C@t{++} exceptions
b37052ae 4069The throwing of a C@t{++} exception.
c906108c
SS
4070
4071@item catch
b37052ae 4072The catching of a C@t{++} exception.
c906108c 4073
8936fcda
JB
4074@item exception
4075@cindex Ada exception catching
4076@cindex catch Ada exceptions
4077An Ada exception being raised. If an exception name is specified
4078at the end of the command (eg @code{catch exception Program_Error}),
4079the debugger will stop only when this specific exception is raised.
4080Otherwise, the debugger stops execution when any Ada exception is raised.
4081
87f67dba
JB
4082When inserting an exception catchpoint on a user-defined exception whose
4083name is identical to one of the exceptions defined by the language, the
4084fully qualified name must be used as the exception name. Otherwise,
4085@value{GDBN} will assume that it should stop on the pre-defined exception
4086rather than the user-defined one. For instance, assuming an exception
4087called @code{Constraint_Error} is defined in package @code{Pck}, then
4088the command to use to catch such exceptions is @kbd{catch exception
4089Pck.Constraint_Error}.
4090
8936fcda
JB
4091@item exception unhandled
4092An exception that was raised but is not handled by the program.
4093
4094@item assert
4095A failed Ada assertion.
4096
c906108c 4097@item exec
4644b6e3 4098@cindex break on fork/exec
5ee187d7
DJ
4099A call to @code{exec}. This is currently only available for HP-UX
4100and @sc{gnu}/Linux.
c906108c 4101
a96d9b2e 4102@item syscall
ee8e71d4 4103@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{}
a96d9b2e
SDJ
4104@cindex break on a system call.
4105A call to or return from a system call, a.k.a.@: @dfn{syscall}. A
4106syscall is a mechanism for application programs to request a service
4107from the operating system (OS) or one of the OS system services.
4108@value{GDBN} can catch some or all of the syscalls issued by the
4109debuggee, and show the related information for each syscall. If no
4110argument is specified, calls to and returns from all system calls
4111will be caught.
4112
4113@var{name} can be any system call name that is valid for the
4114underlying OS. Just what syscalls are valid depends on the OS. On
4115GNU and Unix systems, you can find the full list of valid syscall
4116names on @file{/usr/include/asm/unistd.h}.
4117
4118@c For MS-Windows, the syscall names and the corresponding numbers
4119@c can be found, e.g., on this URL:
4120@c http://www.metasploit.com/users/opcode/syscalls.html
4121@c but we don't support Windows syscalls yet.
4122
4123Normally, @value{GDBN} knows in advance which syscalls are valid for
4124each OS, so you can use the @value{GDBN} command-line completion
4125facilities (@pxref{Completion,, command completion}) to list the
4126available choices.
4127
4128You may also specify the system call numerically. A syscall's
4129number is the value passed to the OS's syscall dispatcher to
4130identify the requested service. When you specify the syscall by its
4131name, @value{GDBN} uses its database of syscalls to convert the name
4132into the corresponding numeric code, but using the number directly
4133may be useful if @value{GDBN}'s database does not have the complete
4134list of syscalls on your system (e.g., because @value{GDBN} lags
4135behind the OS upgrades).
4136
4137The example below illustrates how this command works if you don't provide
4138arguments to it:
4139
4140@smallexample
4141(@value{GDBP}) catch syscall
4142Catchpoint 1 (syscall)
4143(@value{GDBP}) r
4144Starting program: /tmp/catch-syscall
4145
4146Catchpoint 1 (call to syscall 'close'), \
4147 0xffffe424 in __kernel_vsyscall ()
4148(@value{GDBP}) c
4149Continuing.
4150
4151Catchpoint 1 (returned from syscall 'close'), \
4152 0xffffe424 in __kernel_vsyscall ()
4153(@value{GDBP})
4154@end smallexample
4155
4156Here is an example of catching a system call by name:
4157
4158@smallexample
4159(@value{GDBP}) catch syscall chroot
4160Catchpoint 1 (syscall 'chroot' [61])
4161(@value{GDBP}) r
4162Starting program: /tmp/catch-syscall
4163
4164Catchpoint 1 (call to syscall 'chroot'), \
4165 0xffffe424 in __kernel_vsyscall ()
4166(@value{GDBP}) c
4167Continuing.
4168
4169Catchpoint 1 (returned from syscall 'chroot'), \
4170 0xffffe424 in __kernel_vsyscall ()
4171(@value{GDBP})
4172@end smallexample
4173
4174An example of specifying a system call numerically. In the case
4175below, the syscall number has a corresponding entry in the XML
4176file, so @value{GDBN} finds its name and prints it:
4177
4178@smallexample
4179(@value{GDBP}) catch syscall 252
4180Catchpoint 1 (syscall(s) 'exit_group')
4181(@value{GDBP}) r
4182Starting program: /tmp/catch-syscall
4183
4184Catchpoint 1 (call to syscall 'exit_group'), \
4185 0xffffe424 in __kernel_vsyscall ()
4186(@value{GDBP}) c
4187Continuing.
4188
4189Program exited normally.
4190(@value{GDBP})
4191@end smallexample
4192
4193However, there can be situations when there is no corresponding name
4194in XML file for that syscall number. In this case, @value{GDBN} prints
4195a warning message saying that it was not able to find the syscall name,
4196but the catchpoint will be set anyway. See the example below:
4197
4198@smallexample
4199(@value{GDBP}) catch syscall 764
4200warning: The number '764' does not represent a known syscall.
4201Catchpoint 2 (syscall 764)
4202(@value{GDBP})
4203@end smallexample
4204
4205If you configure @value{GDBN} using the @samp{--without-expat} option,
4206it will not be able to display syscall names. Also, if your
4207architecture does not have an XML file describing its system calls,
4208you will not be able to see the syscall names. It is important to
4209notice that these two features are used for accessing the syscall
4210name database. In either case, you will see a warning like this:
4211
4212@smallexample
4213(@value{GDBP}) catch syscall
4214warning: Could not open "syscalls/i386-linux.xml"
4215warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'.
4216GDB will not be able to display syscall names.
4217Catchpoint 1 (syscall)
4218(@value{GDBP})
4219@end smallexample
4220
4221Of course, the file name will change depending on your architecture and system.
4222
4223Still using the example above, you can also try to catch a syscall by its
4224number. In this case, you would see something like:
4225
4226@smallexample
4227(@value{GDBP}) catch syscall 252
4228Catchpoint 1 (syscall(s) 252)
4229@end smallexample
4230
4231Again, in this case @value{GDBN} would not be able to display syscall's names.
4232
c906108c 4233@item fork
5ee187d7
DJ
4234A call to @code{fork}. This is currently only available for HP-UX
4235and @sc{gnu}/Linux.
c906108c
SS
4236
4237@item vfork
5ee187d7
DJ
4238A call to @code{vfork}. This is currently only available for HP-UX
4239and @sc{gnu}/Linux.
c906108c 4240
edcc5120
TT
4241@item load @r{[}regexp@r{]}
4242@itemx unload @r{[}regexp@r{]}
4243The loading or unloading of a shared library. If @var{regexp} is
4244given, then the catchpoint will stop only if the regular expression
4245matches one of the affected libraries.
4246
c906108c
SS
4247@end table
4248
4249@item tcatch @var{event}
4250Set a catchpoint that is enabled only for one stop. The catchpoint is
4251automatically deleted after the first time the event is caught.
4252
4253@end table
4254
4255Use the @code{info break} command to list the current catchpoints.
4256
b37052ae 4257There are currently some limitations to C@t{++} exception handling
c906108c
SS
4258(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
4259
4260@itemize @bullet
4261@item
4262If you call a function interactively, @value{GDBN} normally returns
4263control to you when the function has finished executing. If the call
4264raises an exception, however, the call may bypass the mechanism that
4265returns control to you and cause your program either to abort or to
4266simply continue running until it hits a breakpoint, catches a signal
4267that @value{GDBN} is listening for, or exits. This is the case even if
4268you set a catchpoint for the exception; catchpoints on exceptions are
4269disabled within interactive calls.
4270
4271@item
4272You cannot raise an exception interactively.
4273
4274@item
4275You cannot install an exception handler interactively.
4276@end itemize
4277
4278@cindex raise exceptions
4279Sometimes @code{catch} is not the best way to debug exception handling:
4280if you need to know exactly where an exception is raised, it is better to
4281stop @emph{before} the exception handler is called, since that way you
4282can see the stack before any unwinding takes place. If you set a
4283breakpoint in an exception handler instead, it may not be easy to find
4284out where the exception was raised.
4285
4286To stop just before an exception handler is called, you need some
b37052ae 4287knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
4288raised by calling a library function named @code{__raise_exception}
4289which has the following ANSI C interface:
4290
474c8240 4291@smallexample
c906108c 4292 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
4293 @var{id} is the exception identifier. */
4294 void __raise_exception (void **addr, void *id);
474c8240 4295@end smallexample
c906108c
SS
4296
4297@noindent
4298To make the debugger catch all exceptions before any stack
4299unwinding takes place, set a breakpoint on @code{__raise_exception}
79a6e687 4300(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Exceptions}).
c906108c 4301
79a6e687 4302With a conditional breakpoint (@pxref{Conditions, ,Break Conditions})
c906108c
SS
4303that depends on the value of @var{id}, you can stop your program when
4304a specific exception is raised. You can use multiple conditional
4305breakpoints to stop your program when any of a number of exceptions are
4306raised.
4307
4308
6d2ebf8b 4309@node Delete Breaks
79a6e687 4310@subsection Deleting Breakpoints
c906108c
SS
4311
4312@cindex clearing breakpoints, watchpoints, catchpoints
4313@cindex deleting breakpoints, watchpoints, catchpoints
4314It is often necessary to eliminate a breakpoint, watchpoint, or
4315catchpoint once it has done its job and you no longer want your program
4316to stop there. This is called @dfn{deleting} the breakpoint. A
4317breakpoint that has been deleted no longer exists; it is forgotten.
4318
4319With the @code{clear} command you can delete breakpoints according to
4320where they are in your program. With the @code{delete} command you can
4321delete individual breakpoints, watchpoints, or catchpoints by specifying
4322their breakpoint numbers.
4323
4324It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
4325automatically ignores breakpoints on the first instruction to be executed
4326when you continue execution without changing the execution address.
4327
4328@table @code
4329@kindex clear
4330@item clear
4331Delete any breakpoints at the next instruction to be executed in the
79a6e687 4332selected stack frame (@pxref{Selection, ,Selecting a Frame}). When
c906108c
SS
4333the innermost frame is selected, this is a good way to delete a
4334breakpoint where your program just stopped.
4335
2a25a5ba
EZ
4336@item clear @var{location}
4337Delete any breakpoints set at the specified @var{location}.
4338@xref{Specify Location}, for the various forms of @var{location}; the
4339most useful ones are listed below:
4340
4341@table @code
c906108c
SS
4342@item clear @var{function}
4343@itemx clear @var{filename}:@var{function}
09d4efe1 4344Delete any breakpoints set at entry to the named @var{function}.
c906108c
SS
4345
4346@item clear @var{linenum}
4347@itemx clear @var{filename}:@var{linenum}
09d4efe1
EZ
4348Delete any breakpoints set at or within the code of the specified
4349@var{linenum} of the specified @var{filename}.
2a25a5ba 4350@end table
c906108c
SS
4351
4352@cindex delete breakpoints
4353@kindex delete
41afff9a 4354@kindex d @r{(@code{delete})}
c5394b80
JM
4355@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
4356Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
4357ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
4358breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
4359confirm off}). You can abbreviate this command as @code{d}.
4360@end table
4361
6d2ebf8b 4362@node Disabling
79a6e687 4363@subsection Disabling Breakpoints
c906108c 4364
4644b6e3 4365@cindex enable/disable a breakpoint
c906108c
SS
4366Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
4367prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
4368it had been deleted, but remembers the information on the breakpoint so
4369that you can @dfn{enable} it again later.
4370
4371You disable and enable breakpoints, watchpoints, and catchpoints with
d77f58be
SS
4372the @code{enable} and @code{disable} commands, optionally specifying
4373one or more breakpoint numbers as arguments. Use @code{info break} to
4374print a list of all breakpoints, watchpoints, and catchpoints if you
4375do not know which numbers to use.
c906108c 4376
3b784c4f
EZ
4377Disabling and enabling a breakpoint that has multiple locations
4378affects all of its locations.
4379
816338b5
SS
4380A breakpoint, watchpoint, or catchpoint can have any of several
4381different states of enablement:
c906108c
SS
4382
4383@itemize @bullet
4384@item
4385Enabled. The breakpoint stops your program. A breakpoint set
4386with the @code{break} command starts out in this state.
4387@item
4388Disabled. The breakpoint has no effect on your program.
4389@item
4390Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 4391disabled.
c906108c 4392@item
816338b5
SS
4393Enabled for a count. The breakpoint stops your program for the next
4394N times, then becomes disabled.
4395@item
c906108c 4396Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
4397immediately after it does so it is deleted permanently. A breakpoint
4398set with the @code{tbreak} command starts out in this state.
c906108c
SS
4399@end itemize
4400
4401You can use the following commands to enable or disable breakpoints,
4402watchpoints, and catchpoints:
4403
4404@table @code
c906108c 4405@kindex disable
41afff9a 4406@kindex dis @r{(@code{disable})}
c5394b80 4407@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4408Disable the specified breakpoints---or all breakpoints, if none are
4409listed. A disabled breakpoint has no effect but is not forgotten. All
4410options such as ignore-counts, conditions and commands are remembered in
4411case the breakpoint is enabled again later. You may abbreviate
4412@code{disable} as @code{dis}.
4413
c906108c 4414@kindex enable
c5394b80 4415@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4416Enable the specified breakpoints (or all defined breakpoints). They
4417become effective once again in stopping your program.
4418
c5394b80 4419@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
4420Enable the specified breakpoints temporarily. @value{GDBN} disables any
4421of these breakpoints immediately after stopping your program.
4422
816338b5
SS
4423@item enable @r{[}breakpoints@r{]} count @var{count} @var{range}@dots{}
4424Enable the specified breakpoints temporarily. @value{GDBN} records
4425@var{count} with each of the specified breakpoints, and decrements a
4426breakpoint's count when it is hit. When any count reaches 0,
4427@value{GDBN} disables that breakpoint. If a breakpoint has an ignore
4428count (@pxref{Conditions, ,Break Conditions}), that will be
4429decremented to 0 before @var{count} is affected.
4430
c5394b80 4431@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
4432Enable the specified breakpoints to work once, then die. @value{GDBN}
4433deletes any of these breakpoints as soon as your program stops there.
09d4efe1 4434Breakpoints set by the @code{tbreak} command start out in this state.
c906108c
SS
4435@end table
4436
d4f3574e
SS
4437@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
4438@c confusing: tbreak is also initially enabled.
c906108c 4439Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
79a6e687 4440,Setting Breakpoints}), breakpoints that you set are initially enabled;
c906108c
SS
4441subsequently, they become disabled or enabled only when you use one of
4442the commands above. (The command @code{until} can set and delete a
4443breakpoint of its own, but it does not change the state of your other
4444breakpoints; see @ref{Continuing and Stepping, ,Continuing and
79a6e687 4445Stepping}.)
c906108c 4446
6d2ebf8b 4447@node Conditions
79a6e687 4448@subsection Break Conditions
c906108c
SS
4449@cindex conditional breakpoints
4450@cindex breakpoint conditions
4451
4452@c FIXME what is scope of break condition expr? Context where wanted?
5d161b24 4453@c in particular for a watchpoint?
c906108c
SS
4454The simplest sort of breakpoint breaks every time your program reaches a
4455specified place. You can also specify a @dfn{condition} for a
4456breakpoint. A condition is just a Boolean expression in your
4457programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
4458a condition evaluates the expression each time your program reaches it,
4459and your program stops only if the condition is @emph{true}.
4460
4461This is the converse of using assertions for program validation; in that
4462situation, you want to stop when the assertion is violated---that is,
4463when the condition is false. In C, if you want to test an assertion expressed
4464by the condition @var{assert}, you should set the condition
4465@samp{! @var{assert}} on the appropriate breakpoint.
4466
4467Conditions are also accepted for watchpoints; you may not need them,
4468since a watchpoint is inspecting the value of an expression anyhow---but
4469it might be simpler, say, to just set a watchpoint on a variable name,
4470and specify a condition that tests whether the new value is an interesting
4471one.
4472
4473Break conditions can have side effects, and may even call functions in
4474your program. This can be useful, for example, to activate functions
4475that log program progress, or to use your own print functions to
99e008fe 4476format special data structures. The effects are completely predictable
c906108c
SS
4477unless there is another enabled breakpoint at the same address. (In
4478that case, @value{GDBN} might see the other breakpoint first and stop your
4479program without checking the condition of this one.) Note that
d4f3574e
SS
4480breakpoint commands are usually more convenient and flexible than break
4481conditions for the
c906108c 4482purpose of performing side effects when a breakpoint is reached
79a6e687 4483(@pxref{Break Commands, ,Breakpoint Command Lists}).
c906108c 4484
83364271
LM
4485Breakpoint conditions can also be evaluated on the target's side if
4486the target supports it. Instead of evaluating the conditions locally,
4487@value{GDBN} encodes the expression into an agent expression
4488(@pxref{Agent Expressions}) suitable for execution on the target,
4489independently of @value{GDBN}. Global variables become raw memory
4490locations, locals become stack accesses, and so forth.
4491
4492In this case, @value{GDBN} will only be notified of a breakpoint trigger
4493when its condition evaluates to true. This mechanism may provide faster
4494response times depending on the performance characteristics of the target
4495since it does not need to keep @value{GDBN} informed about
4496every breakpoint trigger, even those with false conditions.
4497
c906108c
SS
4498Break conditions can be specified when a breakpoint is set, by using
4499@samp{if} in the arguments to the @code{break} command. @xref{Set
79a6e687 4500Breaks, ,Setting Breakpoints}. They can also be changed at any time
c906108c 4501with the @code{condition} command.
53a5351d 4502
c906108c
SS
4503You can also use the @code{if} keyword with the @code{watch} command.
4504The @code{catch} command does not recognize the @code{if} keyword;
4505@code{condition} is the only way to impose a further condition on a
4506catchpoint.
c906108c
SS
4507
4508@table @code
4509@kindex condition
4510@item condition @var{bnum} @var{expression}
4511Specify @var{expression} as the break condition for breakpoint,
4512watchpoint, or catchpoint number @var{bnum}. After you set a condition,
4513breakpoint @var{bnum} stops your program only if the value of
4514@var{expression} is true (nonzero, in C). When you use
4515@code{condition}, @value{GDBN} checks @var{expression} immediately for
4516syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
4517referents in the context of your breakpoint. If @var{expression} uses
4518symbols not referenced in the context of the breakpoint, @value{GDBN}
4519prints an error message:
4520
474c8240 4521@smallexample
d4f3574e 4522No symbol "foo" in current context.
474c8240 4523@end smallexample
d4f3574e
SS
4524
4525@noindent
c906108c
SS
4526@value{GDBN} does
4527not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
4528command (or a command that sets a breakpoint with a condition, like
4529@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
4530
4531@item condition @var{bnum}
4532Remove the condition from breakpoint number @var{bnum}. It becomes
4533an ordinary unconditional breakpoint.
4534@end table
4535
4536@cindex ignore count (of breakpoint)
4537A special case of a breakpoint condition is to stop only when the
4538breakpoint has been reached a certain number of times. This is so
4539useful that there is a special way to do it, using the @dfn{ignore
4540count} of the breakpoint. Every breakpoint has an ignore count, which
4541is an integer. Most of the time, the ignore count is zero, and
4542therefore has no effect. But if your program reaches a breakpoint whose
4543ignore count is positive, then instead of stopping, it just decrements
4544the ignore count by one and continues. As a result, if the ignore count
4545value is @var{n}, the breakpoint does not stop the next @var{n} times
4546your program reaches it.
4547
4548@table @code
4549@kindex ignore
4550@item ignore @var{bnum} @var{count}
4551Set the ignore count of breakpoint number @var{bnum} to @var{count}.
4552The next @var{count} times the breakpoint is reached, your program's
4553execution does not stop; other than to decrement the ignore count, @value{GDBN}
4554takes no action.
4555
4556To make the breakpoint stop the next time it is reached, specify
4557a count of zero.
4558
4559When you use @code{continue} to resume execution of your program from a
4560breakpoint, you can specify an ignore count directly as an argument to
4561@code{continue}, rather than using @code{ignore}. @xref{Continuing and
79a6e687 4562Stepping,,Continuing and Stepping}.
c906108c
SS
4563
4564If a breakpoint has a positive ignore count and a condition, the
4565condition is not checked. Once the ignore count reaches zero,
4566@value{GDBN} resumes checking the condition.
4567
4568You could achieve the effect of the ignore count with a condition such
4569as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
4570is decremented each time. @xref{Convenience Vars, ,Convenience
79a6e687 4571Variables}.
c906108c
SS
4572@end table
4573
4574Ignore counts apply to breakpoints, watchpoints, and catchpoints.
4575
4576
6d2ebf8b 4577@node Break Commands
79a6e687 4578@subsection Breakpoint Command Lists
c906108c
SS
4579
4580@cindex breakpoint commands
4581You can give any breakpoint (or watchpoint or catchpoint) a series of
4582commands to execute when your program stops due to that breakpoint. For
4583example, you might want to print the values of certain expressions, or
4584enable other breakpoints.
4585
4586@table @code
4587@kindex commands
ca91424e 4588@kindex end@r{ (breakpoint commands)}
95a42b64 4589@item commands @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4590@itemx @dots{} @var{command-list} @dots{}
4591@itemx end
95a42b64 4592Specify a list of commands for the given breakpoints. The commands
c906108c
SS
4593themselves appear on the following lines. Type a line containing just
4594@code{end} to terminate the commands.
4595
4596To remove all commands from a breakpoint, type @code{commands} and
4597follow it immediately with @code{end}; that is, give no commands.
4598
95a42b64
TT
4599With no argument, @code{commands} refers to the last breakpoint,
4600watchpoint, or catchpoint set (not to the breakpoint most recently
4601encountered). If the most recent breakpoints were set with a single
4602command, then the @code{commands} will apply to all the breakpoints
4603set by that command. This applies to breakpoints set by
86b17b60
PA
4604@code{rbreak}, and also applies when a single @code{break} command
4605creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous
4606Expressions}).
c906108c
SS
4607@end table
4608
4609Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
4610disabled within a @var{command-list}.
4611
4612You can use breakpoint commands to start your program up again. Simply
4613use the @code{continue} command, or @code{step}, or any other command
4614that resumes execution.
4615
4616Any other commands in the command list, after a command that resumes
4617execution, are ignored. This is because any time you resume execution
4618(even with a simple @code{next} or @code{step}), you may encounter
4619another breakpoint---which could have its own command list, leading to
4620ambiguities about which list to execute.
4621
4622@kindex silent
4623If the first command you specify in a command list is @code{silent}, the
4624usual message about stopping at a breakpoint is not printed. This may
4625be desirable for breakpoints that are to print a specific message and
4626then continue. If none of the remaining commands print anything, you
4627see no sign that the breakpoint was reached. @code{silent} is
4628meaningful only at the beginning of a breakpoint command list.
4629
4630The commands @code{echo}, @code{output}, and @code{printf} allow you to
4631print precisely controlled output, and are often useful in silent
79a6e687 4632breakpoints. @xref{Output, ,Commands for Controlled Output}.
c906108c
SS
4633
4634For example, here is how you could use breakpoint commands to print the
4635value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
4636
474c8240 4637@smallexample
c906108c
SS
4638break foo if x>0
4639commands
4640silent
4641printf "x is %d\n",x
4642cont
4643end
474c8240 4644@end smallexample
c906108c
SS
4645
4646One application for breakpoint commands is to compensate for one bug so
4647you can test for another. Put a breakpoint just after the erroneous line
4648of code, give it a condition to detect the case in which something
4649erroneous has been done, and give it commands to assign correct values
4650to any variables that need them. End with the @code{continue} command
4651so that your program does not stop, and start with the @code{silent}
4652command so that no output is produced. Here is an example:
4653
474c8240 4654@smallexample
c906108c
SS
4655break 403
4656commands
4657silent
4658set x = y + 4
4659cont
4660end
474c8240 4661@end smallexample
c906108c 4662
e7e0cddf
SS
4663@node Dynamic Printf
4664@subsection Dynamic Printf
4665
4666@cindex dynamic printf
4667@cindex dprintf
4668The dynamic printf command @code{dprintf} combines a breakpoint with
4669formatted printing of your program's data to give you the effect of
4670inserting @code{printf} calls into your program on-the-fly, without
4671having to recompile it.
4672
4673In its most basic form, the output goes to the GDB console. However,
4674you can set the variable @code{dprintf-style} for alternate handling.
4675For instance, you can ask to format the output by calling your
4676program's @code{printf} function. This has the advantage that the
4677characters go to the program's output device, so they can recorded in
4678redirects to files and so forth.
4679
d3ce09f5
SS
4680If you are doing remote debugging with a stub or agent, you can also
4681ask to have the printf handled by the remote agent. In addition to
4682ensuring that the output goes to the remote program's device along
4683with any other output the program might produce, you can also ask that
4684the dprintf remain active even after disconnecting from the remote
4685target. Using the stub/agent is also more efficient, as it can do
4686everything without needing to communicate with @value{GDBN}.
4687
e7e0cddf
SS
4688@table @code
4689@kindex dprintf
4690@item dprintf @var{location},@var{template},@var{expression}[,@var{expression}@dots{}]
4691Whenever execution reaches @var{location}, print the values of one or
4692more @var{expressions} under the control of the string @var{template}.
4693To print several values, separate them with commas.
4694
4695@item set dprintf-style @var{style}
4696Set the dprintf output to be handled in one of several different
4697styles enumerated below. A change of style affects all existing
4698dynamic printfs immediately. (If you need individual control over the
4699print commands, simply define normal breakpoints with
4700explicitly-supplied command lists.)
4701
4702@item gdb
4703@kindex dprintf-style gdb
4704Handle the output using the @value{GDBN} @code{printf} command.
4705
4706@item call
4707@kindex dprintf-style call
4708Handle the output by calling a function in your program (normally
4709@code{printf}).
4710
d3ce09f5
SS
4711@item agent
4712@kindex dprintf-style agent
4713Have the remote debugging agent (such as @code{gdbserver}) handle
4714the output itself. This style is only available for agents that
4715support running commands on the target.
4716
e7e0cddf
SS
4717@item set dprintf-function @var{function}
4718Set the function to call if the dprintf style is @code{call}. By
4719default its value is @code{printf}. You may set it to any expression.
4720that @value{GDBN} can evaluate to a function, as per the @code{call}
4721command.
4722
4723@item set dprintf-channel @var{channel}
4724Set a ``channel'' for dprintf. If set to a non-empty value,
4725@value{GDBN} will evaluate it as an expression and pass the result as
4726a first argument to the @code{dprintf-function}, in the manner of
4727@code{fprintf} and similar functions. Otherwise, the dprintf format
4728string will be the first argument, in the manner of @code{printf}.
4729
4730As an example, if you wanted @code{dprintf} output to go to a logfile
4731that is a standard I/O stream assigned to the variable @code{mylog},
4732you could do the following:
4733
4734@example
4735(gdb) set dprintf-style call
4736(gdb) set dprintf-function fprintf
4737(gdb) set dprintf-channel mylog
4738(gdb) dprintf 25,"at line 25, glob=%d\n",glob
4739Dprintf 1 at 0x123456: file main.c, line 25.
4740(gdb) info break
47411 dprintf keep y 0x00123456 in main at main.c:25
4742 call (void) fprintf (mylog,"at line 25, glob=%d\n",glob)
4743 continue
4744(gdb)
4745@end example
4746
4747Note that the @code{info break} displays the dynamic printf commands
4748as normal breakpoint commands; you can thus easily see the effect of
4749the variable settings.
4750
d3ce09f5
SS
4751@item set disconnected-dprintf on
4752@itemx set disconnected-dprintf off
4753@kindex set disconnected-dprintf
4754Choose whether @code{dprintf} commands should continue to run if
4755@value{GDBN} has disconnected from the target. This only applies
4756if the @code{dprintf-style} is @code{agent}.
4757
4758@item show disconnected-dprintf off
4759@kindex show disconnected-dprintf
4760Show the current choice for disconnected @code{dprintf}.
4761
e7e0cddf
SS
4762@end table
4763
4764@value{GDBN} does not check the validity of function and channel,
4765relying on you to supply values that are meaningful for the contexts
4766in which they are being used. For instance, the function and channel
4767may be the values of local variables, but if that is the case, then
4768all enabled dynamic prints must be at locations within the scope of
4769those locals. If evaluation fails, @value{GDBN} will report an error.
4770
6149aea9
PA
4771@node Save Breakpoints
4772@subsection How to save breakpoints to a file
4773
4774To save breakpoint definitions to a file use the @w{@code{save
4775breakpoints}} command.
4776
4777@table @code
4778@kindex save breakpoints
4779@cindex save breakpoints to a file for future sessions
4780@item save breakpoints [@var{filename}]
4781This command saves all current breakpoint definitions together with
4782their commands and ignore counts, into a file @file{@var{filename}}
4783suitable for use in a later debugging session. This includes all
4784types of breakpoints (breakpoints, watchpoints, catchpoints,
4785tracepoints). To read the saved breakpoint definitions, use the
4786@code{source} command (@pxref{Command Files}). Note that watchpoints
4787with expressions involving local variables may fail to be recreated
4788because it may not be possible to access the context where the
4789watchpoint is valid anymore. Because the saved breakpoint definitions
4790are simply a sequence of @value{GDBN} commands that recreate the
4791breakpoints, you can edit the file in your favorite editing program,
4792and remove the breakpoint definitions you're not interested in, or
4793that can no longer be recreated.
4794@end table
4795
62e5f89c
SDJ
4796@node Static Probe Points
4797@subsection Static Probe Points
4798
4799@cindex static probe point, SystemTap
4800@value{GDBN} supports @dfn{SDT} probes in the code. @acronym{SDT} stands
4801for Statically Defined Tracing, and the probes are designed to have a tiny
4802runtime code and data footprint, and no dynamic relocations. They are
4803usable from assembly, C and C@t{++} languages. See
4804@uref{http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation}
4805for a good reference on how the @acronym{SDT} probes are implemented.
4806
4807Currently, @code{SystemTap} (@uref{http://sourceware.org/systemtap/})
4808@acronym{SDT} probes are supported on ELF-compatible systems. See
4809@uref{http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps}
4810for more information on how to add @code{SystemTap} @acronym{SDT} probes
4811in your applications.
4812
4813@cindex semaphores on static probe points
4814Some probes have an associated semaphore variable; for instance, this
4815happens automatically if you defined your probe using a DTrace-style
4816@file{.d} file. If your probe has a semaphore, @value{GDBN} will
4817automatically enable it when you specify a breakpoint using the
4818@samp{-probe-stap} notation. But, if you put a breakpoint at a probe's
4819location by some other method (e.g., @code{break file:line}), then
4820@value{GDBN} will not automatically set the semaphore.
4821
4822You can examine the available static static probes using @code{info
4823probes}, with optional arguments:
4824
4825@table @code
4826@kindex info probes
4827@item info probes stap @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]}
4828If given, @var{provider} is a regular expression used to match against provider
4829names when selecting which probes to list. If omitted, probes by all
4830probes from all providers are listed.
4831
4832If given, @var{name} is a regular expression to match against probe names
4833when selecting which probes to list. If omitted, probe names are not
4834considered when deciding whether to display them.
4835
4836If given, @var{objfile} is a regular expression used to select which
4837object files (executable or shared libraries) to examine. If not
4838given, all object files are considered.
4839
4840@item info probes all
4841List the available static probes, from all types.
4842@end table
4843
4844@vindex $_probe_arg@r{, convenience variable}
4845A probe may specify up to twelve arguments. These are available at the
4846point at which the probe is defined---that is, when the current PC is
4847at the probe's location. The arguments are available using the
4848convenience variables (@pxref{Convenience Vars})
4849@code{$_probe_arg0}@dots{}@code{$_probe_arg11}. Each probe argument is
4850an integer of the appropriate size; types are not preserved. The
4851convenience variable @code{$_probe_argc} holds the number of arguments
4852at the current probe point.
4853
4854These variables are always available, but attempts to access them at
4855any location other than a probe point will cause @value{GDBN} to give
4856an error message.
4857
4858
c906108c 4859@c @ifclear BARETARGET
6d2ebf8b 4860@node Error in Breakpoints
d4f3574e 4861@subsection ``Cannot insert breakpoints''
c906108c 4862
fa3a767f
PA
4863If you request too many active hardware-assisted breakpoints and
4864watchpoints, you will see this error message:
d4f3574e
SS
4865
4866@c FIXME: the precise wording of this message may change; the relevant
4867@c source change is not committed yet (Sep 3, 1999).
4868@smallexample
4869Stopped; cannot insert breakpoints.
4870You may have requested too many hardware breakpoints and watchpoints.
4871@end smallexample
4872
4873@noindent
4874This message is printed when you attempt to resume the program, since
4875only then @value{GDBN} knows exactly how many hardware breakpoints and
4876watchpoints it needs to insert.
4877
4878When this message is printed, you need to disable or remove some of the
4879hardware-assisted breakpoints and watchpoints, and then continue.
4880
79a6e687 4881@node Breakpoint-related Warnings
1485d690
KB
4882@subsection ``Breakpoint address adjusted...''
4883@cindex breakpoint address adjusted
4884
4885Some processor architectures place constraints on the addresses at
4886which breakpoints may be placed. For architectures thus constrained,
4887@value{GDBN} will attempt to adjust the breakpoint's address to comply
4888with the constraints dictated by the architecture.
4889
4890One example of such an architecture is the Fujitsu FR-V. The FR-V is
4891a VLIW architecture in which a number of RISC-like instructions may be
4892bundled together for parallel execution. The FR-V architecture
4893constrains the location of a breakpoint instruction within such a
4894bundle to the instruction with the lowest address. @value{GDBN}
4895honors this constraint by adjusting a breakpoint's address to the
4896first in the bundle.
4897
4898It is not uncommon for optimized code to have bundles which contain
4899instructions from different source statements, thus it may happen that
4900a breakpoint's address will be adjusted from one source statement to
4901another. Since this adjustment may significantly alter @value{GDBN}'s
4902breakpoint related behavior from what the user expects, a warning is
4903printed when the breakpoint is first set and also when the breakpoint
4904is hit.
4905
4906A warning like the one below is printed when setting a breakpoint
4907that's been subject to address adjustment:
4908
4909@smallexample
4910warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
4911@end smallexample
4912
4913Such warnings are printed both for user settable and @value{GDBN}'s
4914internal breakpoints. If you see one of these warnings, you should
4915verify that a breakpoint set at the adjusted address will have the
4916desired affect. If not, the breakpoint in question may be removed and
b383017d 4917other breakpoints may be set which will have the desired behavior.
1485d690
KB
4918E.g., it may be sufficient to place the breakpoint at a later
4919instruction. A conditional breakpoint may also be useful in some
4920cases to prevent the breakpoint from triggering too often.
4921
4922@value{GDBN} will also issue a warning when stopping at one of these
4923adjusted breakpoints:
4924
4925@smallexample
4926warning: Breakpoint 1 address previously adjusted from 0x00010414
4927to 0x00010410.
4928@end smallexample
4929
4930When this warning is encountered, it may be too late to take remedial
4931action except in cases where the breakpoint is hit earlier or more
4932frequently than expected.
d4f3574e 4933
6d2ebf8b 4934@node Continuing and Stepping
79a6e687 4935@section Continuing and Stepping
c906108c
SS
4936
4937@cindex stepping
4938@cindex continuing
4939@cindex resuming execution
4940@dfn{Continuing} means resuming program execution until your program
4941completes normally. In contrast, @dfn{stepping} means executing just
4942one more ``step'' of your program, where ``step'' may mean either one
4943line of source code, or one machine instruction (depending on what
7a292a7a
SS
4944particular command you use). Either when continuing or when stepping,
4945your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
4946it stops due to a signal, you may want to use @code{handle}, or use
4947@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
4948
4949@table @code
4950@kindex continue
41afff9a
EZ
4951@kindex c @r{(@code{continue})}
4952@kindex fg @r{(resume foreground execution)}
c906108c
SS
4953@item continue @r{[}@var{ignore-count}@r{]}
4954@itemx c @r{[}@var{ignore-count}@r{]}
4955@itemx fg @r{[}@var{ignore-count}@r{]}
4956Resume program execution, at the address where your program last stopped;
4957any breakpoints set at that address are bypassed. The optional argument
4958@var{ignore-count} allows you to specify a further number of times to
4959ignore a breakpoint at this location; its effect is like that of
79a6e687 4960@code{ignore} (@pxref{Conditions, ,Break Conditions}).
c906108c
SS
4961
4962The argument @var{ignore-count} is meaningful only when your program
4963stopped due to a breakpoint. At other times, the argument to
4964@code{continue} is ignored.
4965
d4f3574e
SS
4966The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
4967debugged program is deemed to be the foreground program) are provided
4968purely for convenience, and have exactly the same behavior as
4969@code{continue}.
c906108c
SS
4970@end table
4971
4972To resume execution at a different place, you can use @code{return}
79a6e687 4973(@pxref{Returning, ,Returning from a Function}) to go back to the
c906108c 4974calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
79a6e687 4975Different Address}) to go to an arbitrary location in your program.
c906108c
SS
4976
4977A typical technique for using stepping is to set a breakpoint
79a6e687 4978(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the
c906108c
SS
4979beginning of the function or the section of your program where a problem
4980is believed to lie, run your program until it stops at that breakpoint,
4981and then step through the suspect area, examining the variables that are
4982interesting, until you see the problem happen.
4983
4984@table @code
4985@kindex step
41afff9a 4986@kindex s @r{(@code{step})}
c906108c
SS
4987@item step
4988Continue running your program until control reaches a different source
4989line, then stop it and return control to @value{GDBN}. This command is
4990abbreviated @code{s}.
4991
4992@quotation
4993@c "without debugging information" is imprecise; actually "without line
4994@c numbers in the debugging information". (gcc -g1 has debugging info but
4995@c not line numbers). But it seems complex to try to make that
4996@c distinction here.
4997@emph{Warning:} If you use the @code{step} command while control is
4998within a function that was compiled without debugging information,
4999execution proceeds until control reaches a function that does have
5000debugging information. Likewise, it will not step into a function which
5001is compiled without debugging information. To step through functions
5002without debugging information, use the @code{stepi} command, described
5003below.
5004@end quotation
5005
4a92d011
EZ
5006The @code{step} command only stops at the first instruction of a source
5007line. This prevents the multiple stops that could otherwise occur in
5008@code{switch} statements, @code{for} loops, etc. @code{step} continues
5009to stop if a function that has debugging information is called within
5010the line. In other words, @code{step} @emph{steps inside} any functions
5011called within the line.
c906108c 5012
d4f3574e
SS
5013Also, the @code{step} command only enters a function if there is line
5014number information for the function. Otherwise it acts like the
5d161b24 5015@code{next} command. This avoids problems when using @code{cc -gl}
eb17f351 5016on @acronym{MIPS} machines. Previously, @code{step} entered subroutines if there
5d161b24 5017was any debugging information about the routine.
c906108c
SS
5018
5019@item step @var{count}
5020Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
5021breakpoint is reached, or a signal not related to stepping occurs before
5022@var{count} steps, stepping stops right away.
c906108c
SS
5023
5024@kindex next
41afff9a 5025@kindex n @r{(@code{next})}
c906108c
SS
5026@item next @r{[}@var{count}@r{]}
5027Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
5028This is similar to @code{step}, but function calls that appear within
5029the line of code are executed without stopping. Execution stops when
5030control reaches a different line of code at the original stack level
5031that was executing when you gave the @code{next} command. This command
5032is abbreviated @code{n}.
c906108c
SS
5033
5034An argument @var{count} is a repeat count, as for @code{step}.
5035
5036
5037@c FIX ME!! Do we delete this, or is there a way it fits in with
5038@c the following paragraph? --- Vctoria
5039@c
5040@c @code{next} within a function that lacks debugging information acts like
5041@c @code{step}, but any function calls appearing within the code of the
5042@c function are executed without stopping.
5043
d4f3574e
SS
5044The @code{next} command only stops at the first instruction of a
5045source line. This prevents multiple stops that could otherwise occur in
4a92d011 5046@code{switch} statements, @code{for} loops, etc.
c906108c 5047
b90a5f51
CF
5048@kindex set step-mode
5049@item set step-mode
5050@cindex functions without line info, and stepping
5051@cindex stepping into functions with no line info
5052@itemx set step-mode on
4a92d011 5053The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
5054stop at the first instruction of a function which contains no debug line
5055information rather than stepping over it.
5056
4a92d011
EZ
5057This is useful in cases where you may be interested in inspecting the
5058machine instructions of a function which has no symbolic info and do not
5059want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
5060
5061@item set step-mode off
4a92d011 5062Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
5063debug information. This is the default.
5064
9c16f35a
EZ
5065@item show step-mode
5066Show whether @value{GDBN} will stop in or step over functions without
5067source line debug information.
5068
c906108c 5069@kindex finish
8dfa32fc 5070@kindex fin @r{(@code{finish})}
c906108c
SS
5071@item finish
5072Continue running until just after function in the selected stack frame
8dfa32fc
JB
5073returns. Print the returned value (if any). This command can be
5074abbreviated as @code{fin}.
c906108c
SS
5075
5076Contrast this with the @code{return} command (@pxref{Returning,
79a6e687 5077,Returning from a Function}).
c906108c
SS
5078
5079@kindex until
41afff9a 5080@kindex u @r{(@code{until})}
09d4efe1 5081@cindex run until specified location
c906108c
SS
5082@item until
5083@itemx u
5084Continue running until a source line past the current line, in the
5085current stack frame, is reached. This command is used to avoid single
5086stepping through a loop more than once. It is like the @code{next}
5087command, except that when @code{until} encounters a jump, it
5088automatically continues execution until the program counter is greater
5089than the address of the jump.
5090
5091This means that when you reach the end of a loop after single stepping
5092though it, @code{until} makes your program continue execution until it
5093exits the loop. In contrast, a @code{next} command at the end of a loop
5094simply steps back to the beginning of the loop, which forces you to step
5095through the next iteration.
5096
5097@code{until} always stops your program if it attempts to exit the current
5098stack frame.
5099
5100@code{until} may produce somewhat counterintuitive results if the order
5101of machine code does not match the order of the source lines. For
5102example, in the following excerpt from a debugging session, the @code{f}
5103(@code{frame}) command shows that execution is stopped at line
5104@code{206}; yet when we use @code{until}, we get to line @code{195}:
5105
474c8240 5106@smallexample
c906108c
SS
5107(@value{GDBP}) f
5108#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
5109206 expand_input();
5110(@value{GDBP}) until
5111195 for ( ; argc > 0; NEXTARG) @{
474c8240 5112@end smallexample
c906108c
SS
5113
5114This happened because, for execution efficiency, the compiler had
5115generated code for the loop closure test at the end, rather than the
5116start, of the loop---even though the test in a C @code{for}-loop is
5117written before the body of the loop. The @code{until} command appeared
5118to step back to the beginning of the loop when it advanced to this
5119expression; however, it has not really gone to an earlier
5120statement---not in terms of the actual machine code.
5121
5122@code{until} with no argument works by means of single
5123instruction stepping, and hence is slower than @code{until} with an
5124argument.
5125
5126@item until @var{location}
5127@itemx u @var{location}
5128Continue running your program until either the specified location is
5129reached, or the current stack frame returns. @var{location} is any of
2a25a5ba
EZ
5130the forms described in @ref{Specify Location}.
5131This form of the command uses temporary breakpoints, and
c60eb6f1
EZ
5132hence is quicker than @code{until} without an argument. The specified
5133location is actually reached only if it is in the current frame. This
5134implies that @code{until} can be used to skip over recursive function
5135invocations. For instance in the code below, if the current location is
5136line @code{96}, issuing @code{until 99} will execute the program up to
db2e3e2e 5137line @code{99} in the same invocation of factorial, i.e., after the inner
c60eb6f1
EZ
5138invocations have returned.
5139
5140@smallexample
514194 int factorial (int value)
514295 @{
514396 if (value > 1) @{
514497 value *= factorial (value - 1);
514598 @}
514699 return (value);
5147100 @}
5148@end smallexample
5149
5150
5151@kindex advance @var{location}
984359d2 5152@item advance @var{location}
09d4efe1 5153Continue running the program up to the given @var{location}. An argument is
2a25a5ba
EZ
5154required, which should be of one of the forms described in
5155@ref{Specify Location}.
5156Execution will also stop upon exit from the current stack
c60eb6f1
EZ
5157frame. This command is similar to @code{until}, but @code{advance} will
5158not skip over recursive function calls, and the target location doesn't
5159have to be in the same frame as the current one.
5160
c906108c
SS
5161
5162@kindex stepi
41afff9a 5163@kindex si @r{(@code{stepi})}
c906108c 5164@item stepi
96a2c332 5165@itemx stepi @var{arg}
c906108c
SS
5166@itemx si
5167Execute one machine instruction, then stop and return to the debugger.
5168
5169It is often useful to do @samp{display/i $pc} when stepping by machine
5170instructions. This makes @value{GDBN} automatically display the next
5171instruction to be executed, each time your program stops. @xref{Auto
79a6e687 5172Display,, Automatic Display}.
c906108c
SS
5173
5174An argument is a repeat count, as in @code{step}.
5175
5176@need 750
5177@kindex nexti
41afff9a 5178@kindex ni @r{(@code{nexti})}
c906108c 5179@item nexti
96a2c332 5180@itemx nexti @var{arg}
c906108c
SS
5181@itemx ni
5182Execute one machine instruction, but if it is a function call,
5183proceed until the function returns.
5184
5185An argument is a repeat count, as in @code{next}.
5186@end table
5187
aad1c02c
TT
5188@node Skipping Over Functions and Files
5189@section Skipping Over Functions and Files
1bfeeb0f
JL
5190@cindex skipping over functions and files
5191
5192The program you are debugging may contain some functions which are
5193uninteresting to debug. The @code{skip} comand lets you tell @value{GDBN} to
5194skip a function or all functions in a file when stepping.
5195
5196For example, consider the following C function:
5197
5198@smallexample
5199101 int func()
5200102 @{
5201103 foo(boring());
5202104 bar(boring());
5203105 @}
5204@end smallexample
5205
5206@noindent
5207Suppose you wish to step into the functions @code{foo} and @code{bar}, but you
5208are not interested in stepping through @code{boring}. If you run @code{step}
5209at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll
5210step over both @code{foo} and @code{boring}!
5211
5212One solution is to @code{step} into @code{boring} and use the @code{finish}
5213command to immediately exit it. But this can become tedious if @code{boring}
5214is called from many places.
5215
5216A more flexible solution is to execute @kbd{skip boring}. This instructs
5217@value{GDBN} never to step into @code{boring}. Now when you execute
5218@code{step} at line 103, you'll step over @code{boring} and directly into
5219@code{foo}.
5220
5221You can also instruct @value{GDBN} to skip all functions in a file, with, for
5222example, @code{skip file boring.c}.
5223
5224@table @code
5225@kindex skip function
5226@item skip @r{[}@var{linespec}@r{]}
5227@itemx skip function @r{[}@var{linespec}@r{]}
5228After running this command, the function named by @var{linespec} or the
5229function containing the line named by @var{linespec} will be skipped over when
983fb131 5230stepping. @xref{Specify Location}.
1bfeeb0f
JL
5231
5232If you do not specify @var{linespec}, the function you're currently debugging
5233will be skipped.
5234
5235(If you have a function called @code{file} that you want to skip, use
5236@kbd{skip function file}.)
5237
5238@kindex skip file
5239@item skip file @r{[}@var{filename}@r{]}
5240After running this command, any function whose source lives in @var{filename}
5241will be skipped over when stepping.
5242
5243If you do not specify @var{filename}, functions whose source lives in the file
5244you're currently debugging will be skipped.
5245@end table
5246
5247Skips can be listed, deleted, disabled, and enabled, much like breakpoints.
5248These are the commands for managing your list of skips:
5249
5250@table @code
5251@kindex info skip
5252@item info skip @r{[}@var{range}@r{]}
5253Print details about the specified skip(s). If @var{range} is not specified,
5254print a table with details about all functions and files marked for skipping.
5255@code{info skip} prints the following information about each skip:
5256
5257@table @emph
5258@item Identifier
5259A number identifying this skip.
5260@item Type
5261The type of this skip, either @samp{function} or @samp{file}.
5262@item Enabled or Disabled
5263Enabled skips are marked with @samp{y}. Disabled skips are marked with @samp{n}.
5264@item Address
5265For function skips, this column indicates the address in memory of the function
5266being skipped. If you've set a function skip on a function which has not yet
5267been loaded, this field will contain @samp{<PENDING>}. Once a shared library
5268which has the function is loaded, @code{info skip} will show the function's
5269address here.
5270@item What
5271For file skips, this field contains the filename being skipped. For functions
5272skips, this field contains the function name and its line number in the file
5273where it is defined.
5274@end table
5275
5276@kindex skip delete
5277@item skip delete @r{[}@var{range}@r{]}
5278Delete the specified skip(s). If @var{range} is not specified, delete all
5279skips.
5280
5281@kindex skip enable
5282@item skip enable @r{[}@var{range}@r{]}
5283Enable the specified skip(s). If @var{range} is not specified, enable all
5284skips.
5285
5286@kindex skip disable
5287@item skip disable @r{[}@var{range}@r{]}
5288Disable the specified skip(s). If @var{range} is not specified, disable all
5289skips.
5290
5291@end table
5292
6d2ebf8b 5293@node Signals
c906108c
SS
5294@section Signals
5295@cindex signals
5296
5297A signal is an asynchronous event that can happen in a program. The
5298operating system defines the possible kinds of signals, and gives each
5299kind a name and a number. For example, in Unix @code{SIGINT} is the
c8aa23ab 5300signal a program gets when you type an interrupt character (often @kbd{Ctrl-c});
c906108c
SS
5301@code{SIGSEGV} is the signal a program gets from referencing a place in
5302memory far away from all the areas in use; @code{SIGALRM} occurs when
5303the alarm clock timer goes off (which happens only if your program has
5304requested an alarm).
5305
5306@cindex fatal signals
5307Some signals, including @code{SIGALRM}, are a normal part of the
5308functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 5309errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
5310program has not specified in advance some other way to handle the signal.
5311@code{SIGINT} does not indicate an error in your program, but it is normally
5312fatal so it can carry out the purpose of the interrupt: to kill the program.
5313
5314@value{GDBN} has the ability to detect any occurrence of a signal in your
5315program. You can tell @value{GDBN} in advance what to do for each kind of
5316signal.
5317
5318@cindex handling signals
24f93129
EZ
5319Normally, @value{GDBN} is set up to let the non-erroneous signals like
5320@code{SIGALRM} be silently passed to your program
5321(so as not to interfere with their role in the program's functioning)
c906108c
SS
5322but to stop your program immediately whenever an error signal happens.
5323You can change these settings with the @code{handle} command.
5324
5325@table @code
5326@kindex info signals
09d4efe1 5327@kindex info handle
c906108c 5328@item info signals
96a2c332 5329@itemx info handle
c906108c
SS
5330Print a table of all the kinds of signals and how @value{GDBN} has been told to
5331handle each one. You can use this to see the signal numbers of all
5332the defined types of signals.
5333
45ac1734
EZ
5334@item info signals @var{sig}
5335Similar, but print information only about the specified signal number.
5336
d4f3574e 5337@code{info handle} is an alias for @code{info signals}.
c906108c
SS
5338
5339@kindex handle
45ac1734 5340@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]}
5ece1a18
EZ
5341Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
5342can be the number of a signal or its name (with or without the
24f93129 5343@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18 5344@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
45ac1734
EZ
5345known signals. Optional arguments @var{keywords}, described below,
5346say what change to make.
c906108c
SS
5347@end table
5348
5349@c @group
5350The keywords allowed by the @code{handle} command can be abbreviated.
5351Their full names are:
5352
5353@table @code
5354@item nostop
5355@value{GDBN} should not stop your program when this signal happens. It may
5356still print a message telling you that the signal has come in.
5357
5358@item stop
5359@value{GDBN} should stop your program when this signal happens. This implies
5360the @code{print} keyword as well.
5361
5362@item print
5363@value{GDBN} should print a message when this signal happens.
5364
5365@item noprint
5366@value{GDBN} should not mention the occurrence of the signal at all. This
5367implies the @code{nostop} keyword as well.
5368
5369@item pass
5ece1a18 5370@itemx noignore
c906108c
SS
5371@value{GDBN} should allow your program to see this signal; your program
5372can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 5373and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
5374
5375@item nopass
5ece1a18 5376@itemx ignore
c906108c 5377@value{GDBN} should not allow your program to see this signal.
5ece1a18 5378@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
5379@end table
5380@c @end group
5381
d4f3574e
SS
5382When a signal stops your program, the signal is not visible to the
5383program until you
c906108c
SS
5384continue. Your program sees the signal then, if @code{pass} is in
5385effect for the signal in question @emph{at that time}. In other words,
5386after @value{GDBN} reports a signal, you can use the @code{handle}
5387command with @code{pass} or @code{nopass} to control whether your
5388program sees that signal when you continue.
5389
24f93129
EZ
5390The default is set to @code{nostop}, @code{noprint}, @code{pass} for
5391non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
5392@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
5393erroneous signals.
5394
c906108c
SS
5395You can also use the @code{signal} command to prevent your program from
5396seeing a signal, or cause it to see a signal it normally would not see,
5397or to give it any signal at any time. For example, if your program stopped
5398due to some sort of memory reference error, you might store correct
5399values into the erroneous variables and continue, hoping to see more
5400execution; but your program would probably terminate immediately as
5401a result of the fatal signal once it saw the signal. To prevent this,
5402you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
79a6e687 5403Program a Signal}.
c906108c 5404
4aa995e1
PA
5405@cindex extra signal information
5406@anchor{extra signal information}
5407
5408On some targets, @value{GDBN} can inspect extra signal information
5409associated with the intercepted signal, before it is actually
5410delivered to the program being debugged. This information is exported
5411by the convenience variable @code{$_siginfo}, and consists of data
5412that is passed by the kernel to the signal handler at the time of the
5413receipt of a signal. The data type of the information itself is
5414target dependent. You can see the data type using the @code{ptype
5415$_siginfo} command. On Unix systems, it typically corresponds to the
5416standard @code{siginfo_t} type, as defined in the @file{signal.h}
5417system header.
5418
5419Here's an example, on a @sc{gnu}/Linux system, printing the stray
5420referenced address that raised a segmentation fault.
5421
5422@smallexample
5423@group
5424(@value{GDBP}) continue
5425Program received signal SIGSEGV, Segmentation fault.
54260x0000000000400766 in main ()
542769 *(int *)p = 0;
5428(@value{GDBP}) ptype $_siginfo
5429type = struct @{
5430 int si_signo;
5431 int si_errno;
5432 int si_code;
5433 union @{
5434 int _pad[28];
5435 struct @{...@} _kill;
5436 struct @{...@} _timer;
5437 struct @{...@} _rt;
5438 struct @{...@} _sigchld;
5439 struct @{...@} _sigfault;
5440 struct @{...@} _sigpoll;
5441 @} _sifields;
5442@}
5443(@value{GDBP}) ptype $_siginfo._sifields._sigfault
5444type = struct @{
5445 void *si_addr;
5446@}
5447(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr
5448$1 = (void *) 0x7ffff7ff7000
5449@end group
5450@end smallexample
5451
5452Depending on target support, @code{$_siginfo} may also be writable.
5453
6d2ebf8b 5454@node Thread Stops
79a6e687 5455@section Stopping and Starting Multi-thread Programs
c906108c 5456
0606b73b
SL
5457@cindex stopped threads
5458@cindex threads, stopped
5459
5460@cindex continuing threads
5461@cindex threads, continuing
5462
5463@value{GDBN} supports debugging programs with multiple threads
5464(@pxref{Threads,, Debugging Programs with Multiple Threads}). There
5465are two modes of controlling execution of your program within the
5466debugger. In the default mode, referred to as @dfn{all-stop mode},
5467when any thread in your program stops (for example, at a breakpoint
5468or while being stepped), all other threads in the program are also stopped by
5469@value{GDBN}. On some targets, @value{GDBN} also supports
5470@dfn{non-stop mode}, in which other threads can continue to run freely while
5471you examine the stopped thread in the debugger.
5472
5473@menu
5474* All-Stop Mode:: All threads stop when GDB takes control
5475* Non-Stop Mode:: Other threads continue to execute
5476* Background Execution:: Running your program asynchronously
5477* Thread-Specific Breakpoints:: Controlling breakpoints
5478* Interrupted System Calls:: GDB may interfere with system calls
d914c394 5479* Observer Mode:: GDB does not alter program behavior
0606b73b
SL
5480@end menu
5481
5482@node All-Stop Mode
5483@subsection All-Stop Mode
5484
5485@cindex all-stop mode
5486
5487In all-stop mode, whenever your program stops under @value{GDBN} for any reason,
5488@emph{all} threads of execution stop, not just the current thread. This
5489allows you to examine the overall state of the program, including
5490switching between threads, without worrying that things may change
5491underfoot.
5492
5493Conversely, whenever you restart the program, @emph{all} threads start
5494executing. @emph{This is true even when single-stepping} with commands
5495like @code{step} or @code{next}.
5496
5497In particular, @value{GDBN} cannot single-step all threads in lockstep.
5498Since thread scheduling is up to your debugging target's operating
5499system (not controlled by @value{GDBN}), other threads may
5500execute more than one statement while the current thread completes a
5501single step. Moreover, in general other threads stop in the middle of a
5502statement, rather than at a clean statement boundary, when the program
5503stops.
5504
5505You might even find your program stopped in another thread after
5506continuing or even single-stepping. This happens whenever some other
5507thread runs into a breakpoint, a signal, or an exception before the
5508first thread completes whatever you requested.
5509
5510@cindex automatic thread selection
5511@cindex switching threads automatically
5512@cindex threads, automatic switching
5513Whenever @value{GDBN} stops your program, due to a breakpoint or a
5514signal, it automatically selects the thread where that breakpoint or
5515signal happened. @value{GDBN} alerts you to the context switch with a
5516message such as @samp{[Switching to Thread @var{n}]} to identify the
5517thread.
5518
5519On some OSes, you can modify @value{GDBN}'s default behavior by
5520locking the OS scheduler to allow only a single thread to run.
5521
5522@table @code
5523@item set scheduler-locking @var{mode}
5524@cindex scheduler locking mode
5525@cindex lock scheduler
5526Set the scheduler locking mode. If it is @code{off}, then there is no
5527locking and any thread may run at any time. If @code{on}, then only the
5528current thread may run when the inferior is resumed. The @code{step}
5529mode optimizes for single-stepping; it prevents other threads
5530from preempting the current thread while you are stepping, so that
5531the focus of debugging does not change unexpectedly.
5532Other threads only rarely (or never) get a chance to run
5533when you step. They are more likely to run when you @samp{next} over a
5534function call, and they are completely free to run when you use commands
5535like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
5536thread hits a breakpoint during its timeslice, @value{GDBN} does not change
5537the current thread away from the thread that you are debugging.
5538
5539@item show scheduler-locking
5540Display the current scheduler locking mode.
5541@end table
5542
d4db2f36
PA
5543@cindex resume threads of multiple processes simultaneously
5544By default, when you issue one of the execution commands such as
5545@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only
5546threads of the current inferior to run. For example, if @value{GDBN}
5547is attached to two inferiors, each with two threads, the
5548@code{continue} command resumes only the two threads of the current
5549inferior. This is useful, for example, when you debug a program that
5550forks and you want to hold the parent stopped (so that, for instance,
5551it doesn't run to exit), while you debug the child. In other
5552situations, you may not be interested in inspecting the current state
5553of any of the processes @value{GDBN} is attached to, and you may want
5554to resume them all until some breakpoint is hit. In the latter case,
5555you can instruct @value{GDBN} to allow all threads of all the
5556inferiors to run with the @w{@code{set schedule-multiple}} command.
5557
5558@table @code
5559@kindex set schedule-multiple
5560@item set schedule-multiple
5561Set the mode for allowing threads of multiple processes to be resumed
5562when an execution command is issued. When @code{on}, all threads of
5563all processes are allowed to run. When @code{off}, only the threads
5564of the current process are resumed. The default is @code{off}. The
5565@code{scheduler-locking} mode takes precedence when set to @code{on},
5566or while you are stepping and set to @code{step}.
5567
5568@item show schedule-multiple
5569Display the current mode for resuming the execution of threads of
5570multiple processes.
5571@end table
5572
0606b73b
SL
5573@node Non-Stop Mode
5574@subsection Non-Stop Mode
5575
5576@cindex non-stop mode
5577
5578@c This section is really only a place-holder, and needs to be expanded
5579@c with more details.
5580
5581For some multi-threaded targets, @value{GDBN} supports an optional
5582mode of operation in which you can examine stopped program threads in
5583the debugger while other threads continue to execute freely. This
5584minimizes intrusion when debugging live systems, such as programs
5585where some threads have real-time constraints or must continue to
5586respond to external events. This is referred to as @dfn{non-stop} mode.
5587
5588In non-stop mode, when a thread stops to report a debugging event,
5589@emph{only} that thread is stopped; @value{GDBN} does not stop other
5590threads as well, in contrast to the all-stop mode behavior. Additionally,
5591execution commands such as @code{continue} and @code{step} apply by default
5592only to the current thread in non-stop mode, rather than all threads as
5593in all-stop mode. This allows you to control threads explicitly in
5594ways that are not possible in all-stop mode --- for example, stepping
5595one thread while allowing others to run freely, stepping
5596one thread while holding all others stopped, or stepping several threads
5597independently and simultaneously.
5598
5599To enter non-stop mode, use this sequence of commands before you run
5600or attach to your program:
5601
0606b73b
SL
5602@smallexample
5603# Enable the async interface.
c6ebd6cf 5604set target-async 1
0606b73b 5605
0606b73b
SL
5606# If using the CLI, pagination breaks non-stop.
5607set pagination off
5608
5609# Finally, turn it on!
5610set non-stop on
5611@end smallexample
5612
5613You can use these commands to manipulate the non-stop mode setting:
5614
5615@table @code
5616@kindex set non-stop
5617@item set non-stop on
5618Enable selection of non-stop mode.
5619@item set non-stop off
5620Disable selection of non-stop mode.
5621@kindex show non-stop
5622@item show non-stop
5623Show the current non-stop enablement setting.
5624@end table
5625
5626Note these commands only reflect whether non-stop mode is enabled,
5627not whether the currently-executing program is being run in non-stop mode.
5628In particular, the @code{set non-stop} preference is only consulted when
5629@value{GDBN} starts or connects to the target program, and it is generally
5630not possible to switch modes once debugging has started. Furthermore,
5631since not all targets support non-stop mode, even when you have enabled
5632non-stop mode, @value{GDBN} may still fall back to all-stop operation by
5633default.
5634
5635In non-stop mode, all execution commands apply only to the current thread
5636by default. That is, @code{continue} only continues one thread.
5637To continue all threads, issue @code{continue -a} or @code{c -a}.
5638
5639You can use @value{GDBN}'s background execution commands
5640(@pxref{Background Execution}) to run some threads in the background
5641while you continue to examine or step others from @value{GDBN}.
5642The MI execution commands (@pxref{GDB/MI Program Execution}) are
5643always executed asynchronously in non-stop mode.
5644
5645Suspending execution is done with the @code{interrupt} command when
5646running in the background, or @kbd{Ctrl-c} during foreground execution.
5647In all-stop mode, this stops the whole process;
5648but in non-stop mode the interrupt applies only to the current thread.
5649To stop the whole program, use @code{interrupt -a}.
5650
5651Other execution commands do not currently support the @code{-a} option.
5652
5653In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make
5654that thread current, as it does in all-stop mode. This is because the
5655thread stop notifications are asynchronous with respect to @value{GDBN}'s
5656command interpreter, and it would be confusing if @value{GDBN} unexpectedly
5657changed to a different thread just as you entered a command to operate on the
5658previously current thread.
5659
5660@node Background Execution
5661@subsection Background Execution
5662
5663@cindex foreground execution
5664@cindex background execution
5665@cindex asynchronous execution
5666@cindex execution, foreground, background and asynchronous
5667
5668@value{GDBN}'s execution commands have two variants: the normal
5669foreground (synchronous) behavior, and a background
5670(asynchronous) behavior. In foreground execution, @value{GDBN} waits for
5671the program to report that some thread has stopped before prompting for
5672another command. In background execution, @value{GDBN} immediately gives
5673a command prompt so that you can issue other commands while your program runs.
5674
32fc0df9
PA
5675You need to explicitly enable asynchronous mode before you can use
5676background execution commands. You can use these commands to
5677manipulate the asynchronous mode setting:
5678
5679@table @code
5680@kindex set target-async
5681@item set target-async on
5682Enable asynchronous mode.
5683@item set target-async off
5684Disable asynchronous mode.
5685@kindex show target-async
5686@item show target-async
5687Show the current target-async setting.
5688@end table
5689
5690If the target doesn't support async mode, @value{GDBN} issues an error
5691message if you attempt to use the background execution commands.
5692
0606b73b
SL
5693To specify background execution, add a @code{&} to the command. For example,
5694the background form of the @code{continue} command is @code{continue&}, or
5695just @code{c&}. The execution commands that accept background execution
5696are:
5697
5698@table @code
5699@kindex run&
5700@item run
5701@xref{Starting, , Starting your Program}.
5702
5703@item attach
5704@kindex attach&
5705@xref{Attach, , Debugging an Already-running Process}.
5706
5707@item step
5708@kindex step&
5709@xref{Continuing and Stepping, step}.
5710
5711@item stepi
5712@kindex stepi&
5713@xref{Continuing and Stepping, stepi}.
5714
5715@item next
5716@kindex next&
5717@xref{Continuing and Stepping, next}.
5718
7ce58dd2
DE
5719@item nexti
5720@kindex nexti&
5721@xref{Continuing and Stepping, nexti}.
5722
0606b73b
SL
5723@item continue
5724@kindex continue&
5725@xref{Continuing and Stepping, continue}.
5726
5727@item finish
5728@kindex finish&
5729@xref{Continuing and Stepping, finish}.
5730
5731@item until
5732@kindex until&
5733@xref{Continuing and Stepping, until}.
5734
5735@end table
5736
5737Background execution is especially useful in conjunction with non-stop
5738mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}.
5739However, you can also use these commands in the normal all-stop mode with
5740the restriction that you cannot issue another execution command until the
5741previous one finishes. Examples of commands that are valid in all-stop
5742mode while the program is running include @code{help} and @code{info break}.
5743
5744You can interrupt your program while it is running in the background by
5745using the @code{interrupt} command.
5746
5747@table @code
5748@kindex interrupt
5749@item interrupt
5750@itemx interrupt -a
5751
5752Suspend execution of the running program. In all-stop mode,
5753@code{interrupt} stops the whole process, but in non-stop mode, it stops
5754only the current thread. To stop the whole program in non-stop mode,
5755use @code{interrupt -a}.
5756@end table
5757
0606b73b
SL
5758@node Thread-Specific Breakpoints
5759@subsection Thread-Specific Breakpoints
5760
c906108c 5761When your program has multiple threads (@pxref{Threads,, Debugging
79a6e687 5762Programs with Multiple Threads}), you can choose whether to set
c906108c
SS
5763breakpoints on all threads, or on a particular thread.
5764
5765@table @code
5766@cindex breakpoints and threads
5767@cindex thread breakpoints
5768@kindex break @dots{} thread @var{threadno}
5769@item break @var{linespec} thread @var{threadno}
5770@itemx break @var{linespec} thread @var{threadno} if @dots{}
5771@var{linespec} specifies source lines; there are several ways of
2a25a5ba
EZ
5772writing them (@pxref{Specify Location}), but the effect is always to
5773specify some source line.
c906108c
SS
5774
5775Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
5776to specify that you only want @value{GDBN} to stop the program when a
5777particular thread reaches this breakpoint. @var{threadno} is one of the
5778numeric thread identifiers assigned by @value{GDBN}, shown in the first
5779column of the @samp{info threads} display.
5780
5781If you do not specify @samp{thread @var{threadno}} when you set a
5782breakpoint, the breakpoint applies to @emph{all} threads of your
5783program.
5784
5785You can use the @code{thread} qualifier on conditional breakpoints as
b6199126
DJ
5786well; in this case, place @samp{thread @var{threadno}} before or
5787after the breakpoint condition, like this:
c906108c
SS
5788
5789@smallexample
2df3850c 5790(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
5791@end smallexample
5792
5793@end table
5794
0606b73b
SL
5795@node Interrupted System Calls
5796@subsection Interrupted System Calls
c906108c 5797
36d86913
MC
5798@cindex thread breakpoints and system calls
5799@cindex system calls and thread breakpoints
5800@cindex premature return from system calls
0606b73b
SL
5801There is an unfortunate side effect when using @value{GDBN} to debug
5802multi-threaded programs. If one thread stops for a
36d86913
MC
5803breakpoint, or for some other reason, and another thread is blocked in a
5804system call, then the system call may return prematurely. This is a
5805consequence of the interaction between multiple threads and the signals
5806that @value{GDBN} uses to implement breakpoints and other events that
5807stop execution.
5808
5809To handle this problem, your program should check the return value of
5810each system call and react appropriately. This is good programming
5811style anyways.
5812
5813For example, do not write code like this:
5814
5815@smallexample
5816 sleep (10);
5817@end smallexample
5818
5819The call to @code{sleep} will return early if a different thread stops
5820at a breakpoint or for some other reason.
5821
5822Instead, write this:
5823
5824@smallexample
5825 int unslept = 10;
5826 while (unslept > 0)
5827 unslept = sleep (unslept);
5828@end smallexample
5829
5830A system call is allowed to return early, so the system is still
5831conforming to its specification. But @value{GDBN} does cause your
5832multi-threaded program to behave differently than it would without
5833@value{GDBN}.
5834
5835Also, @value{GDBN} uses internal breakpoints in the thread library to
5836monitor certain events such as thread creation and thread destruction.
5837When such an event happens, a system call in another thread may return
5838prematurely, even though your program does not appear to stop.
5839
d914c394
SS
5840@node Observer Mode
5841@subsection Observer Mode
5842
5843If you want to build on non-stop mode and observe program behavior
5844without any chance of disruption by @value{GDBN}, you can set
5845variables to disable all of the debugger's attempts to modify state,
5846whether by writing memory, inserting breakpoints, etc. These operate
5847at a low level, intercepting operations from all commands.
5848
5849When all of these are set to @code{off}, then @value{GDBN} is said to
5850be @dfn{observer mode}. As a convenience, the variable
5851@code{observer} can be set to disable these, plus enable non-stop
5852mode.
5853
5854Note that @value{GDBN} will not prevent you from making nonsensical
5855combinations of these settings. For instance, if you have enabled
5856@code{may-insert-breakpoints} but disabled @code{may-write-memory},
5857then breakpoints that work by writing trap instructions into the code
5858stream will still not be able to be placed.
5859
5860@table @code
5861
5862@kindex observer
5863@item set observer on
5864@itemx set observer off
5865When set to @code{on}, this disables all the permission variables
5866below (except for @code{insert-fast-tracepoints}), plus enables
5867non-stop debugging. Setting this to @code{off} switches back to
5868normal debugging, though remaining in non-stop mode.
5869
5870@item show observer
5871Show whether observer mode is on or off.
5872
5873@kindex may-write-registers
5874@item set may-write-registers on
5875@itemx set may-write-registers off
5876This controls whether @value{GDBN} will attempt to alter the values of
5877registers, such as with assignment expressions in @code{print}, or the
5878@code{jump} command. It defaults to @code{on}.
5879
5880@item show may-write-registers
5881Show the current permission to write registers.
5882
5883@kindex may-write-memory
5884@item set may-write-memory on
5885@itemx set may-write-memory off
5886This controls whether @value{GDBN} will attempt to alter the contents
5887of memory, such as with assignment expressions in @code{print}. It
5888defaults to @code{on}.
5889
5890@item show may-write-memory
5891Show the current permission to write memory.
5892
5893@kindex may-insert-breakpoints
5894@item set may-insert-breakpoints on
5895@itemx set may-insert-breakpoints off
5896This controls whether @value{GDBN} will attempt to insert breakpoints.
5897This affects all breakpoints, including internal breakpoints defined
5898by @value{GDBN}. It defaults to @code{on}.
5899
5900@item show may-insert-breakpoints
5901Show the current permission to insert breakpoints.
5902
5903@kindex may-insert-tracepoints
5904@item set may-insert-tracepoints on
5905@itemx set may-insert-tracepoints off
5906This controls whether @value{GDBN} will attempt to insert (regular)
5907tracepoints at the beginning of a tracing experiment. It affects only
5908non-fast tracepoints, fast tracepoints being under the control of
5909@code{may-insert-fast-tracepoints}. It defaults to @code{on}.
5910
5911@item show may-insert-tracepoints
5912Show the current permission to insert tracepoints.
5913
5914@kindex may-insert-fast-tracepoints
5915@item set may-insert-fast-tracepoints on
5916@itemx set may-insert-fast-tracepoints off
5917This controls whether @value{GDBN} will attempt to insert fast
5918tracepoints at the beginning of a tracing experiment. It affects only
5919fast tracepoints, regular (non-fast) tracepoints being under the
5920control of @code{may-insert-tracepoints}. It defaults to @code{on}.
5921
5922@item show may-insert-fast-tracepoints
5923Show the current permission to insert fast tracepoints.
5924
5925@kindex may-interrupt
5926@item set may-interrupt on
5927@itemx set may-interrupt off
5928This controls whether @value{GDBN} will attempt to interrupt or stop
5929program execution. When this variable is @code{off}, the
5930@code{interrupt} command will have no effect, nor will
5931@kbd{Ctrl-c}. It defaults to @code{on}.
5932
5933@item show may-interrupt
5934Show the current permission to interrupt or stop the program.
5935
5936@end table
c906108c 5937
bacec72f
MS
5938@node Reverse Execution
5939@chapter Running programs backward
5940@cindex reverse execution
5941@cindex running programs backward
5942
5943When you are debugging a program, it is not unusual to realize that
5944you have gone too far, and some event of interest has already happened.
5945If the target environment supports it, @value{GDBN} can allow you to
5946``rewind'' the program by running it backward.
5947
5948A target environment that supports reverse execution should be able
5949to ``undo'' the changes in machine state that have taken place as the
5950program was executing normally. Variables, registers etc.@: should
5951revert to their previous values. Obviously this requires a great
5952deal of sophistication on the part of the target environment; not
5953all target environments can support reverse execution.
5954
5955When a program is executed in reverse, the instructions that
5956have most recently been executed are ``un-executed'', in reverse
5957order. The program counter runs backward, following the previous
5958thread of execution in reverse. As each instruction is ``un-executed'',
5959the values of memory and/or registers that were changed by that
5960instruction are reverted to their previous states. After executing
5961a piece of source code in reverse, all side effects of that code
5962should be ``undone'', and all variables should be returned to their
5963prior values@footnote{
5964Note that some side effects are easier to undo than others. For instance,
5965memory and registers are relatively easy, but device I/O is hard. Some
5966targets may be able undo things like device I/O, and some may not.
5967
5968The contract between @value{GDBN} and the reverse executing target
5969requires only that the target do something reasonable when
5970@value{GDBN} tells it to execute backwards, and then report the
5971results back to @value{GDBN}. Whatever the target reports back to
5972@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN}
5973assumes that the memory and registers that the target reports are in a
5974consistant state, but @value{GDBN} accepts whatever it is given.
5975}.
5976
5977If you are debugging in a target environment that supports
5978reverse execution, @value{GDBN} provides the following commands.
5979
5980@table @code
5981@kindex reverse-continue
5982@kindex rc @r{(@code{reverse-continue})}
5983@item reverse-continue @r{[}@var{ignore-count}@r{]}
5984@itemx rc @r{[}@var{ignore-count}@r{]}
5985Beginning at the point where your program last stopped, start executing
5986in reverse. Reverse execution will stop for breakpoints and synchronous
5987exceptions (signals), just like normal execution. Behavior of
5988asynchronous signals depends on the target environment.
5989
5990@kindex reverse-step
5991@kindex rs @r{(@code{step})}
5992@item reverse-step @r{[}@var{count}@r{]}
5993Run the program backward until control reaches the start of a
5994different source line; then stop it, and return control to @value{GDBN}.
5995
5996Like the @code{step} command, @code{reverse-step} will only stop
5997at the beginning of a source line. It ``un-executes'' the previously
5998executed source line. If the previous source line included calls to
5999debuggable functions, @code{reverse-step} will step (backward) into
6000the called function, stopping at the beginning of the @emph{last}
6001statement in the called function (typically a return statement).
6002
6003Also, as with the @code{step} command, if non-debuggable functions are
6004called, @code{reverse-step} will run thru them backward without stopping.
6005
6006@kindex reverse-stepi
6007@kindex rsi @r{(@code{reverse-stepi})}
6008@item reverse-stepi @r{[}@var{count}@r{]}
6009Reverse-execute one machine instruction. Note that the instruction
6010to be reverse-executed is @emph{not} the one pointed to by the program
6011counter, but the instruction executed prior to that one. For instance,
6012if the last instruction was a jump, @code{reverse-stepi} will take you
6013back from the destination of the jump to the jump instruction itself.
6014
6015@kindex reverse-next
6016@kindex rn @r{(@code{reverse-next})}
6017@item reverse-next @r{[}@var{count}@r{]}
6018Run backward to the beginning of the previous line executed in
6019the current (innermost) stack frame. If the line contains function
6020calls, they will be ``un-executed'' without stopping. Starting from
6021the first line of a function, @code{reverse-next} will take you back
6022to the caller of that function, @emph{before} the function was called,
6023just as the normal @code{next} command would take you from the last
6024line of a function back to its return to its caller
16af530a 6025@footnote{Unless the code is too heavily optimized.}.
bacec72f
MS
6026
6027@kindex reverse-nexti
6028@kindex rni @r{(@code{reverse-nexti})}
6029@item reverse-nexti @r{[}@var{count}@r{]}
6030Like @code{nexti}, @code{reverse-nexti} executes a single instruction
6031in reverse, except that called functions are ``un-executed'' atomically.
6032That is, if the previously executed instruction was a return from
540aa8e7 6033another function, @code{reverse-nexti} will continue to execute
bacec72f
MS
6034in reverse until the call to that function (from the current stack
6035frame) is reached.
6036
6037@kindex reverse-finish
6038@item reverse-finish
6039Just as the @code{finish} command takes you to the point where the
6040current function returns, @code{reverse-finish} takes you to the point
6041where it was called. Instead of ending up at the end of the current
6042function invocation, you end up at the beginning.
6043
6044@kindex set exec-direction
6045@item set exec-direction
6046Set the direction of target execution.
984359d2 6047@item set exec-direction reverse
bacec72f
MS
6048@cindex execute forward or backward in time
6049@value{GDBN} will perform all execution commands in reverse, until the
6050exec-direction mode is changed to ``forward''. Affected commands include
6051@code{step, stepi, next, nexti, continue, and finish}. The @code{return}
6052command cannot be used in reverse mode.
6053@item set exec-direction forward
6054@value{GDBN} will perform all execution commands in the normal fashion.
6055This is the default.
6056@end table
6057
c906108c 6058
a2311334
EZ
6059@node Process Record and Replay
6060@chapter Recording Inferior's Execution and Replaying It
53cc454a
HZ
6061@cindex process record and replay
6062@cindex recording inferior's execution and replaying it
6063
8e05493c
EZ
6064On some platforms, @value{GDBN} provides a special @dfn{process record
6065and replay} target that can record a log of the process execution, and
6066replay it later with both forward and reverse execution commands.
a2311334
EZ
6067
6068@cindex replay mode
6069When this target is in use, if the execution log includes the record
6070for the next instruction, @value{GDBN} will debug in @dfn{replay
6071mode}. In the replay mode, the inferior does not really execute code
6072instructions. Instead, all the events that normally happen during
6073code execution are taken from the execution log. While code is not
6074really executed in replay mode, the values of registers (including the
6075program counter register) and the memory of the inferior are still
8e05493c
EZ
6076changed as they normally would. Their contents are taken from the
6077execution log.
a2311334
EZ
6078
6079@cindex record mode
6080If the record for the next instruction is not in the execution log,
6081@value{GDBN} will debug in @dfn{record mode}. In this mode, the
6082inferior executes normally, and @value{GDBN} records the execution log
6083for future replay.
6084
8e05493c
EZ
6085The process record and replay target supports reverse execution
6086(@pxref{Reverse Execution}), even if the platform on which the
6087inferior runs does not. However, the reverse execution is limited in
6088this case by the range of the instructions recorded in the execution
6089log. In other words, reverse execution on platforms that don't
6090support it directly can only be done in the replay mode.
6091
6092When debugging in the reverse direction, @value{GDBN} will work in
6093replay mode as long as the execution log includes the record for the
6094previous instruction; otherwise, it will work in record mode, if the
6095platform supports reverse execution, or stop if not.
6096
a2311334
EZ
6097For architecture environments that support process record and replay,
6098@value{GDBN} provides the following commands:
53cc454a
HZ
6099
6100@table @code
6101@kindex target record
6102@kindex record
6103@kindex rec
6104@item target record
a2311334
EZ
6105This command starts the process record and replay target. The process
6106record and replay target can only debug a process that is already
6107running. Therefore, you need first to start the process with the
6108@kbd{run} or @kbd{start} commands, and then start the recording with
6109the @kbd{target record} command.
6110
6111Both @code{record} and @code{rec} are aliases of @code{target record}.
6112
6113@cindex displaced stepping, and process record and replay
6114Displaced stepping (@pxref{Maintenance Commands,, displaced stepping})
6115will be automatically disabled when process record and replay target
6116is started. That's because the process record and replay target
6117doesn't support displaced stepping.
6118
6119@cindex non-stop mode, and process record and replay
6120@cindex asynchronous execution, and process record and replay
6121If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in
6122the asynchronous execution mode (@pxref{Background Execution}), the
6123process record and replay target cannot be started because it doesn't
6124support these two modes.
53cc454a
HZ
6125
6126@kindex record stop
6127@kindex rec s
6128@item record stop
a2311334
EZ
6129Stop the process record and replay target. When process record and
6130replay target stops, the entire execution log will be deleted and the
6131inferior will either be terminated, or will remain in its final state.
53cc454a 6132
a2311334
EZ
6133When you stop the process record and replay target in record mode (at
6134the end of the execution log), the inferior will be stopped at the
6135next instruction that would have been recorded. In other words, if
6136you record for a while and then stop recording, the inferior process
6137will be left in the same state as if the recording never happened.
53cc454a 6138
a2311334
EZ
6139On the other hand, if the process record and replay target is stopped
6140while in replay mode (that is, not at the end of the execution log,
6141but at some earlier point), the inferior process will become ``live''
6142at that earlier state, and it will then be possible to continue the
6143usual ``live'' debugging of the process from that state.
53cc454a 6144
a2311334
EZ
6145When the inferior process exits, or @value{GDBN} detaches from it,
6146process record and replay target will automatically stop itself.
53cc454a 6147
24e933df
HZ
6148@kindex record save
6149@item record save @var{filename}
6150Save the execution log to a file @file{@var{filename}}.
6151Default filename is @file{gdb_record.@var{process_id}}, where
6152@var{process_id} is the process ID of the inferior.
6153
6154@kindex record restore
6155@item record restore @var{filename}
6156Restore the execution log from a file @file{@var{filename}}.
6157File must have been created with @code{record save}.
6158
53cc454a
HZ
6159@kindex set record insn-number-max
6160@item set record insn-number-max @var{limit}
6161Set the limit of instructions to be recorded. Default value is 200000.
6162
a2311334
EZ
6163If @var{limit} is a positive number, then @value{GDBN} will start
6164deleting instructions from the log once the number of the record
6165instructions becomes greater than @var{limit}. For every new recorded
6166instruction, @value{GDBN} will delete the earliest recorded
6167instruction to keep the number of recorded instructions at the limit.
6168(Since deleting recorded instructions loses information, @value{GDBN}
6169lets you control what happens when the limit is reached, by means of
6170the @code{stop-at-limit} option, described below.)
53cc454a 6171
a2311334
EZ
6172If @var{limit} is zero, @value{GDBN} will never delete recorded
6173instructions from the execution log. The number of recorded
6174instructions is unlimited in this case.
53cc454a
HZ
6175
6176@kindex show record insn-number-max
6177@item show record insn-number-max
a2311334 6178Show the limit of instructions to be recorded.
53cc454a
HZ
6179
6180@kindex set record stop-at-limit
a2311334
EZ
6181@item set record stop-at-limit
6182Control the behavior when the number of recorded instructions reaches
6183the limit. If ON (the default), @value{GDBN} will stop when the limit
6184is reached for the first time and ask you whether you want to stop the
6185inferior or continue running it and recording the execution log. If
6186you decide to continue recording, each new recorded instruction will
6187cause the oldest one to be deleted.
53cc454a 6188
a2311334
EZ
6189If this option is OFF, @value{GDBN} will automatically delete the
6190oldest record to make room for each new one, without asking.
53cc454a
HZ
6191
6192@kindex show record stop-at-limit
6193@item show record stop-at-limit
a2311334 6194Show the current setting of @code{stop-at-limit}.
53cc454a 6195
bb08c432
HZ
6196@kindex set record memory-query
6197@item set record memory-query
6198Control the behavior when @value{GDBN} is unable to record memory
6199changes caused by an instruction. If ON, @value{GDBN} will query
6200whether to stop the inferior in that case.
6201
6202If this option is OFF (the default), @value{GDBN} will automatically
6203ignore the effect of such instructions on memory. Later, when
6204@value{GDBN} replays this execution log, it will mark the log of this
6205instruction as not accessible, and it will not affect the replay
6206results.
6207
6208@kindex show record memory-query
6209@item show record memory-query
6210Show the current setting of @code{memory-query}.
6211
29153c24
MS
6212@kindex info record
6213@item info record
6214Show various statistics about the state of process record and its
6215in-memory execution log buffer, including:
6216
6217@itemize @bullet
6218@item
6219Whether in record mode or replay mode.
6220@item
6221Lowest recorded instruction number (counting from when the current execution log started recording instructions).
6222@item
6223Highest recorded instruction number.
6224@item
6225Current instruction about to be replayed (if in replay mode).
6226@item
6227Number of instructions contained in the execution log.
6228@item
6229Maximum number of instructions that may be contained in the execution log.
6230@end itemize
53cc454a
HZ
6231
6232@kindex record delete
6233@kindex rec del
6234@item record delete
a2311334 6235When record target runs in replay mode (``in the past''), delete the
53cc454a 6236subsequent execution log and begin to record a new execution log starting
a2311334 6237from the current address. This means you will abandon the previously
53cc454a
HZ
6238recorded ``future'' and begin recording a new ``future''.
6239@end table
6240
6241
6d2ebf8b 6242@node Stack
c906108c
SS
6243@chapter Examining the Stack
6244
6245When your program has stopped, the first thing you need to know is where it
6246stopped and how it got there.
6247
6248@cindex call stack
5d161b24
DB
6249Each time your program performs a function call, information about the call
6250is generated.
6251That information includes the location of the call in your program,
6252the arguments of the call,
c906108c 6253and the local variables of the function being called.
5d161b24 6254The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
6255The stack frames are allocated in a region of memory called the @dfn{call
6256stack}.
6257
6258When your program stops, the @value{GDBN} commands for examining the
6259stack allow you to see all of this information.
6260
6261@cindex selected frame
6262One of the stack frames is @dfn{selected} by @value{GDBN} and many
6263@value{GDBN} commands refer implicitly to the selected frame. In
6264particular, whenever you ask @value{GDBN} for the value of a variable in
6265your program, the value is found in the selected frame. There are
6266special @value{GDBN} commands to select whichever frame you are
79a6e687 6267interested in. @xref{Selection, ,Selecting a Frame}.
c906108c
SS
6268
6269When your program stops, @value{GDBN} automatically selects the
5d161b24 6270currently executing frame and describes it briefly, similar to the
79a6e687 6271@code{frame} command (@pxref{Frame Info, ,Information about a Frame}).
c906108c
SS
6272
6273@menu
6274* Frames:: Stack frames
6275* Backtrace:: Backtraces
6276* Selection:: Selecting a frame
6277* Frame Info:: Information on a frame
c906108c
SS
6278
6279@end menu
6280
6d2ebf8b 6281@node Frames
79a6e687 6282@section Stack Frames
c906108c 6283
d4f3574e 6284@cindex frame, definition
c906108c
SS
6285@cindex stack frame
6286The call stack is divided up into contiguous pieces called @dfn{stack
6287frames}, or @dfn{frames} for short; each frame is the data associated
6288with one call to one function. The frame contains the arguments given
6289to the function, the function's local variables, and the address at
6290which the function is executing.
6291
6292@cindex initial frame
6293@cindex outermost frame
6294@cindex innermost frame
6295When your program is started, the stack has only one frame, that of the
6296function @code{main}. This is called the @dfn{initial} frame or the
6297@dfn{outermost} frame. Each time a function is called, a new frame is
6298made. Each time a function returns, the frame for that function invocation
6299is eliminated. If a function is recursive, there can be many frames for
6300the same function. The frame for the function in which execution is
6301actually occurring is called the @dfn{innermost} frame. This is the most
6302recently created of all the stack frames that still exist.
6303
6304@cindex frame pointer
6305Inside your program, stack frames are identified by their addresses. A
6306stack frame consists of many bytes, each of which has its own address; each
6307kind of computer has a convention for choosing one byte whose
6308address serves as the address of the frame. Usually this address is kept
e09f16f9
EZ
6309in a register called the @dfn{frame pointer register}
6310(@pxref{Registers, $fp}) while execution is going on in that frame.
c906108c
SS
6311
6312@cindex frame number
6313@value{GDBN} assigns numbers to all existing stack frames, starting with
6314zero for the innermost frame, one for the frame that called it,
6315and so on upward. These numbers do not really exist in your program;
6316they are assigned by @value{GDBN} to give you a way of designating stack
6317frames in @value{GDBN} commands.
6318
6d2ebf8b
SS
6319@c The -fomit-frame-pointer below perennially causes hbox overflow
6320@c underflow problems.
c906108c
SS
6321@cindex frameless execution
6322Some compilers provide a way to compile functions so that they operate
e22ea452 6323without stack frames. (For example, the @value{NGCC} option
474c8240 6324@smallexample
6d2ebf8b 6325@samp{-fomit-frame-pointer}
474c8240 6326@end smallexample
6d2ebf8b 6327generates functions without a frame.)
c906108c
SS
6328This is occasionally done with heavily used library functions to save
6329the frame setup time. @value{GDBN} has limited facilities for dealing
6330with these function invocations. If the innermost function invocation
6331has no stack frame, @value{GDBN} nevertheless regards it as though
6332it had a separate frame, which is numbered zero as usual, allowing
6333correct tracing of the function call chain. However, @value{GDBN} has
6334no provision for frameless functions elsewhere in the stack.
6335
6336@table @code
d4f3574e 6337@kindex frame@r{, command}
41afff9a 6338@cindex current stack frame
c906108c 6339@item frame @var{args}
5d161b24 6340The @code{frame} command allows you to move from one stack frame to another,
c906108c 6341and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
6342address of the frame or the stack frame number. Without an argument,
6343@code{frame} prints the current stack frame.
c906108c
SS
6344
6345@kindex select-frame
41afff9a 6346@cindex selecting frame silently
c906108c
SS
6347@item select-frame
6348The @code{select-frame} command allows you to move from one stack frame
6349to another without printing the frame. This is the silent version of
6350@code{frame}.
6351@end table
6352
6d2ebf8b 6353@node Backtrace
c906108c
SS
6354@section Backtraces
6355
09d4efe1
EZ
6356@cindex traceback
6357@cindex call stack traces
c906108c
SS
6358A backtrace is a summary of how your program got where it is. It shows one
6359line per frame, for many frames, starting with the currently executing
6360frame (frame zero), followed by its caller (frame one), and on up the
6361stack.
6362
6363@table @code
6364@kindex backtrace
41afff9a 6365@kindex bt @r{(@code{backtrace})}
c906108c
SS
6366@item backtrace
6367@itemx bt
6368Print a backtrace of the entire stack: one line per frame for all
6369frames in the stack.
6370
6371You can stop the backtrace at any time by typing the system interrupt
c8aa23ab 6372character, normally @kbd{Ctrl-c}.
c906108c
SS
6373
6374@item backtrace @var{n}
6375@itemx bt @var{n}
6376Similar, but print only the innermost @var{n} frames.
6377
6378@item backtrace -@var{n}
6379@itemx bt -@var{n}
6380Similar, but print only the outermost @var{n} frames.
0f061b69
NR
6381
6382@item backtrace full
0f061b69 6383@itemx bt full
dd74f6ae
NR
6384@itemx bt full @var{n}
6385@itemx bt full -@var{n}
e7109c7e 6386Print the values of the local variables also. @var{n} specifies the
286ba84d 6387number of frames to print, as described above.
c906108c
SS
6388@end table
6389
6390@kindex where
6391@kindex info stack
c906108c
SS
6392The names @code{where} and @code{info stack} (abbreviated @code{info s})
6393are additional aliases for @code{backtrace}.
6394
839c27b7
EZ
6395@cindex multiple threads, backtrace
6396In a multi-threaded program, @value{GDBN} by default shows the
6397backtrace only for the current thread. To display the backtrace for
6398several or all of the threads, use the command @code{thread apply}
6399(@pxref{Threads, thread apply}). For example, if you type @kbd{thread
6400apply all backtrace}, @value{GDBN} will display the backtrace for all
6401the threads; this is handy when you debug a core dump of a
6402multi-threaded program.
6403
c906108c
SS
6404Each line in the backtrace shows the frame number and the function name.
6405The program counter value is also shown---unless you use @code{set
6406print address off}. The backtrace also shows the source file name and
6407line number, as well as the arguments to the function. The program
6408counter value is omitted if it is at the beginning of the code for that
6409line number.
6410
6411Here is an example of a backtrace. It was made with the command
6412@samp{bt 3}, so it shows the innermost three frames.
6413
6414@smallexample
6415@group
5d161b24 6416#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c 6417 at builtin.c:993
4f5376b2 6418#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242
c906108c
SS
6419#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
6420 at macro.c:71
6421(More stack frames follow...)
6422@end group
6423@end smallexample
6424
6425@noindent
6426The display for frame zero does not begin with a program counter
6427value, indicating that your program has stopped at the beginning of the
6428code for line @code{993} of @code{builtin.c}.
6429
4f5376b2
JB
6430@noindent
6431The value of parameter @code{data} in frame 1 has been replaced by
6432@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter
6433only if it is a scalar (integer, pointer, enumeration, etc). See command
6434@kbd{set print frame-arguments} in @ref{Print Settings} for more details
6435on how to configure the way function parameter values are printed.
6436
585fdaa1 6437@cindex optimized out, in backtrace
18999be5
EZ
6438@cindex function call arguments, optimized out
6439If your program was compiled with optimizations, some compilers will
6440optimize away arguments passed to functions if those arguments are
6441never used after the call. Such optimizations generate code that
6442passes arguments through registers, but doesn't store those arguments
6443in the stack frame. @value{GDBN} has no way of displaying such
6444arguments in stack frames other than the innermost one. Here's what
6445such a backtrace might look like:
6446
6447@smallexample
6448@group
6449#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
6450 at builtin.c:993
585fdaa1
PA
6451#1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242
6452#2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08)
18999be5
EZ
6453 at macro.c:71
6454(More stack frames follow...)
6455@end group
6456@end smallexample
6457
6458@noindent
6459The values of arguments that were not saved in their stack frames are
585fdaa1 6460shown as @samp{<optimized out>}.
18999be5
EZ
6461
6462If you need to display the values of such optimized-out arguments,
6463either deduce that from other variables whose values depend on the one
6464you are interested in, or recompile without optimizations.
6465
a8f24a35
EZ
6466@cindex backtrace beyond @code{main} function
6467@cindex program entry point
6468@cindex startup code, and backtrace
25d29d70
AC
6469Most programs have a standard user entry point---a place where system
6470libraries and startup code transition into user code. For C this is
d416eeec
EZ
6471@code{main}@footnote{
6472Note that embedded programs (the so-called ``free-standing''
6473environment) are not required to have a @code{main} function as the
6474entry point. They could even have multiple entry points.}.
6475When @value{GDBN} finds the entry function in a backtrace
25d29d70
AC
6476it will terminate the backtrace, to avoid tracing into highly
6477system-specific (and generally uninteresting) code.
6478
6479If you need to examine the startup code, or limit the number of levels
6480in a backtrace, you can change this behavior:
95f90d25
DJ
6481
6482@table @code
25d29d70
AC
6483@item set backtrace past-main
6484@itemx set backtrace past-main on
4644b6e3 6485@kindex set backtrace
25d29d70
AC
6486Backtraces will continue past the user entry point.
6487
6488@item set backtrace past-main off
95f90d25
DJ
6489Backtraces will stop when they encounter the user entry point. This is the
6490default.
6491
25d29d70 6492@item show backtrace past-main
4644b6e3 6493@kindex show backtrace
25d29d70
AC
6494Display the current user entry point backtrace policy.
6495
2315ffec
RC
6496@item set backtrace past-entry
6497@itemx set backtrace past-entry on
a8f24a35 6498Backtraces will continue past the internal entry point of an application.
2315ffec
RC
6499This entry point is encoded by the linker when the application is built,
6500and is likely before the user entry point @code{main} (or equivalent) is called.
6501
6502@item set backtrace past-entry off
d3e8051b 6503Backtraces will stop when they encounter the internal entry point of an
2315ffec
RC
6504application. This is the default.
6505
6506@item show backtrace past-entry
6507Display the current internal entry point backtrace policy.
6508
25d29d70
AC
6509@item set backtrace limit @var{n}
6510@itemx set backtrace limit 0
6511@cindex backtrace limit
6512Limit the backtrace to @var{n} levels. A value of zero means
6513unlimited.
95f90d25 6514
25d29d70
AC
6515@item show backtrace limit
6516Display the current limit on backtrace levels.
95f90d25
DJ
6517@end table
6518
6d2ebf8b 6519@node Selection
79a6e687 6520@section Selecting a Frame
c906108c
SS
6521
6522Most commands for examining the stack and other data in your program work on
6523whichever stack frame is selected at the moment. Here are the commands for
6524selecting a stack frame; all of them finish by printing a brief description
6525of the stack frame just selected.
6526
6527@table @code
d4f3574e 6528@kindex frame@r{, selecting}
41afff9a 6529@kindex f @r{(@code{frame})}
c906108c
SS
6530@item frame @var{n}
6531@itemx f @var{n}
6532Select frame number @var{n}. Recall that frame zero is the innermost
6533(currently executing) frame, frame one is the frame that called the
6534innermost one, and so on. The highest-numbered frame is the one for
6535@code{main}.
6536
6537@item frame @var{addr}
6538@itemx f @var{addr}
6539Select the frame at address @var{addr}. This is useful mainly if the
6540chaining of stack frames has been damaged by a bug, making it
6541impossible for @value{GDBN} to assign numbers properly to all frames. In
6542addition, this can be useful when your program has multiple stacks and
6543switches between them.
6544
c906108c
SS
6545On the SPARC architecture, @code{frame} needs two addresses to
6546select an arbitrary frame: a frame pointer and a stack pointer.
6547
eb17f351 6548On the @acronym{MIPS} and Alpha architecture, it needs two addresses: a stack
c906108c
SS
6549pointer and a program counter.
6550
6551On the 29k architecture, it needs three addresses: a register stack
6552pointer, a program counter, and a memory stack pointer.
c906108c
SS
6553
6554@kindex up
6555@item up @var{n}
6556Move @var{n} frames up the stack. For positive numbers @var{n}, this
6557advances toward the outermost frame, to higher frame numbers, to frames
6558that have existed longer. @var{n} defaults to one.
6559
6560@kindex down
41afff9a 6561@kindex do @r{(@code{down})}
c906108c
SS
6562@item down @var{n}
6563Move @var{n} frames down the stack. For positive numbers @var{n}, this
6564advances toward the innermost frame, to lower frame numbers, to frames
6565that were created more recently. @var{n} defaults to one. You may
6566abbreviate @code{down} as @code{do}.
6567@end table
6568
6569All of these commands end by printing two lines of output describing the
6570frame. The first line shows the frame number, the function name, the
6571arguments, and the source file and line number of execution in that
5d161b24 6572frame. The second line shows the text of that source line.
c906108c
SS
6573
6574@need 1000
6575For example:
6576
6577@smallexample
6578@group
6579(@value{GDBP}) up
6580#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
6581 at env.c:10
658210 read_input_file (argv[i]);
6583@end group
6584@end smallexample
6585
6586After such a printout, the @code{list} command with no arguments
6587prints ten lines centered on the point of execution in the frame.
87885426
FN
6588You can also edit the program at the point of execution with your favorite
6589editing program by typing @code{edit}.
79a6e687 6590@xref{List, ,Printing Source Lines},
87885426 6591for details.
c906108c
SS
6592
6593@table @code
6594@kindex down-silently
6595@kindex up-silently
6596@item up-silently @var{n}
6597@itemx down-silently @var{n}
6598These two commands are variants of @code{up} and @code{down},
6599respectively; they differ in that they do their work silently, without
6600causing display of the new frame. They are intended primarily for use
6601in @value{GDBN} command scripts, where the output might be unnecessary and
6602distracting.
6603@end table
6604
6d2ebf8b 6605@node Frame Info
79a6e687 6606@section Information About a Frame
c906108c
SS
6607
6608There are several other commands to print information about the selected
6609stack frame.
6610
6611@table @code
6612@item frame
6613@itemx f
6614When used without any argument, this command does not change which
6615frame is selected, but prints a brief description of the currently
6616selected stack frame. It can be abbreviated @code{f}. With an
6617argument, this command is used to select a stack frame.
79a6e687 6618@xref{Selection, ,Selecting a Frame}.
c906108c
SS
6619
6620@kindex info frame
41afff9a 6621@kindex info f @r{(@code{info frame})}
c906108c
SS
6622@item info frame
6623@itemx info f
6624This command prints a verbose description of the selected stack frame,
6625including:
6626
6627@itemize @bullet
5d161b24
DB
6628@item
6629the address of the frame
c906108c
SS
6630@item
6631the address of the next frame down (called by this frame)
6632@item
6633the address of the next frame up (caller of this frame)
6634@item
6635the language in which the source code corresponding to this frame is written
6636@item
6637the address of the frame's arguments
6638@item
d4f3574e
SS
6639the address of the frame's local variables
6640@item
c906108c
SS
6641the program counter saved in it (the address of execution in the caller frame)
6642@item
6643which registers were saved in the frame
6644@end itemize
6645
6646@noindent The verbose description is useful when
6647something has gone wrong that has made the stack format fail to fit
6648the usual conventions.
6649
6650@item info frame @var{addr}
6651@itemx info f @var{addr}
6652Print a verbose description of the frame at address @var{addr}, without
6653selecting that frame. The selected frame remains unchanged by this
6654command. This requires the same kind of address (more than one for some
6655architectures) that you specify in the @code{frame} command.
79a6e687 6656@xref{Selection, ,Selecting a Frame}.
c906108c
SS
6657
6658@kindex info args
6659@item info args
6660Print the arguments of the selected frame, each on a separate line.
6661
6662@item info locals
6663@kindex info locals
6664Print the local variables of the selected frame, each on a separate
6665line. These are all variables (declared either static or automatic)
6666accessible at the point of execution of the selected frame.
6667
c906108c
SS
6668@end table
6669
c906108c 6670
6d2ebf8b 6671@node Source
c906108c
SS
6672@chapter Examining Source Files
6673
6674@value{GDBN} can print parts of your program's source, since the debugging
6675information recorded in the program tells @value{GDBN} what source files were
6676used to build it. When your program stops, @value{GDBN} spontaneously prints
6677the line where it stopped. Likewise, when you select a stack frame
79a6e687 6678(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where
c906108c
SS
6679execution in that frame has stopped. You can print other portions of
6680source files by explicit command.
6681
7a292a7a 6682If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 6683prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 6684@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
6685
6686@menu
6687* List:: Printing source lines
2a25a5ba 6688* Specify Location:: How to specify code locations
87885426 6689* Edit:: Editing source files
c906108c 6690* Search:: Searching source files
c906108c
SS
6691* Source Path:: Specifying source directories
6692* Machine Code:: Source and machine code
6693@end menu
6694
6d2ebf8b 6695@node List
79a6e687 6696@section Printing Source Lines
c906108c
SS
6697
6698@kindex list
41afff9a 6699@kindex l @r{(@code{list})}
c906108c 6700To print lines from a source file, use the @code{list} command
5d161b24 6701(abbreviated @code{l}). By default, ten lines are printed.
2a25a5ba
EZ
6702There are several ways to specify what part of the file you want to
6703print; see @ref{Specify Location}, for the full list.
c906108c
SS
6704
6705Here are the forms of the @code{list} command most commonly used:
6706
6707@table @code
6708@item list @var{linenum}
6709Print lines centered around line number @var{linenum} in the
6710current source file.
6711
6712@item list @var{function}
6713Print lines centered around the beginning of function
6714@var{function}.
6715
6716@item list
6717Print more lines. If the last lines printed were printed with a
6718@code{list} command, this prints lines following the last lines
6719printed; however, if the last line printed was a solitary line printed
6720as part of displaying a stack frame (@pxref{Stack, ,Examining the
6721Stack}), this prints lines centered around that line.
6722
6723@item list -
6724Print lines just before the lines last printed.
6725@end table
6726
9c16f35a 6727@cindex @code{list}, how many lines to display
c906108c
SS
6728By default, @value{GDBN} prints ten source lines with any of these forms of
6729the @code{list} command. You can change this using @code{set listsize}:
6730
6731@table @code
6732@kindex set listsize
6733@item set listsize @var{count}
6734Make the @code{list} command display @var{count} source lines (unless
6735the @code{list} argument explicitly specifies some other number).
6fc1c773
YQ
6736Setting @var{count} to -1 means there's no limit and 0 means suppress
6737display of source lines.
c906108c
SS
6738
6739@kindex show listsize
6740@item show listsize
6741Display the number of lines that @code{list} prints.
6742@end table
6743
6744Repeating a @code{list} command with @key{RET} discards the argument,
6745so it is equivalent to typing just @code{list}. This is more useful
6746than listing the same lines again. An exception is made for an
6747argument of @samp{-}; that argument is preserved in repetition so that
6748each repetition moves up in the source file.
6749
c906108c
SS
6750In general, the @code{list} command expects you to supply zero, one or two
6751@dfn{linespecs}. Linespecs specify source lines; there are several ways
2a25a5ba
EZ
6752of writing them (@pxref{Specify Location}), but the effect is always
6753to specify some source line.
6754
c906108c
SS
6755Here is a complete description of the possible arguments for @code{list}:
6756
6757@table @code
6758@item list @var{linespec}
6759Print lines centered around the line specified by @var{linespec}.
6760
6761@item list @var{first},@var{last}
6762Print lines from @var{first} to @var{last}. Both arguments are
2a25a5ba
EZ
6763linespecs. When a @code{list} command has two linespecs, and the
6764source file of the second linespec is omitted, this refers to
6765the same source file as the first linespec.
c906108c
SS
6766
6767@item list ,@var{last}
6768Print lines ending with @var{last}.
6769
6770@item list @var{first},
6771Print lines starting with @var{first}.
6772
6773@item list +
6774Print lines just after the lines last printed.
6775
6776@item list -
6777Print lines just before the lines last printed.
6778
6779@item list
6780As described in the preceding table.
6781@end table
6782
2a25a5ba
EZ
6783@node Specify Location
6784@section Specifying a Location
6785@cindex specifying location
6786@cindex linespec
c906108c 6787
2a25a5ba
EZ
6788Several @value{GDBN} commands accept arguments that specify a location
6789of your program's code. Since @value{GDBN} is a source-level
6790debugger, a location usually specifies some line in the source code;
6791for that reason, locations are also known as @dfn{linespecs}.
c906108c 6792
2a25a5ba
EZ
6793Here are all the different ways of specifying a code location that
6794@value{GDBN} understands:
c906108c 6795
2a25a5ba
EZ
6796@table @code
6797@item @var{linenum}
6798Specifies the line number @var{linenum} of the current source file.
c906108c 6799
2a25a5ba
EZ
6800@item -@var{offset}
6801@itemx +@var{offset}
6802Specifies the line @var{offset} lines before or after the @dfn{current
6803line}. For the @code{list} command, the current line is the last one
6804printed; for the breakpoint commands, this is the line at which
6805execution stopped in the currently selected @dfn{stack frame}
6806(@pxref{Frames, ,Frames}, for a description of stack frames.) When
6807used as the second of the two linespecs in a @code{list} command,
6808this specifies the line @var{offset} lines up or down from the first
6809linespec.
6810
6811@item @var{filename}:@var{linenum}
6812Specifies the line @var{linenum} in the source file @var{filename}.
4aac40c8
TT
6813If @var{filename} is a relative file name, then it will match any
6814source file name with the same trailing components. For example, if
6815@var{filename} is @samp{gcc/expr.c}, then it will match source file
6816name of @file{/build/trunk/gcc/expr.c}, but not
6817@file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
c906108c
SS
6818
6819@item @var{function}
6820Specifies the line that begins the body of the function @var{function}.
2a25a5ba 6821For example, in C, this is the line with the open brace.
c906108c 6822
9ef07c8c
TT
6823@item @var{function}:@var{label}
6824Specifies the line where @var{label} appears in @var{function}.
6825
c906108c 6826@item @var{filename}:@var{function}
2a25a5ba
EZ
6827Specifies the line that begins the body of the function @var{function}
6828in the file @var{filename}. You only need the file name with a
6829function name to avoid ambiguity when there are identically named
6830functions in different source files.
c906108c 6831
0f5238ed
TT
6832@item @var{label}
6833Specifies the line at which the label named @var{label} appears.
6834@value{GDBN} searches for the label in the function corresponding to
6835the currently selected stack frame. If there is no current selected
6836stack frame (for instance, if the inferior is not running), then
6837@value{GDBN} will not search for a label.
6838
c906108c 6839@item *@var{address}
2a25a5ba
EZ
6840Specifies the program address @var{address}. For line-oriented
6841commands, such as @code{list} and @code{edit}, this specifies a source
6842line that contains @var{address}. For @code{break} and other
6843breakpoint oriented commands, this can be used to set breakpoints in
6844parts of your program which do not have debugging information or
6845source files.
6846
6847Here @var{address} may be any expression valid in the current working
6848language (@pxref{Languages, working language}) that specifies a code
5fa54e5d
EZ
6849address. In addition, as a convenience, @value{GDBN} extends the
6850semantics of expressions used in locations to cover the situations
6851that frequently happen during debugging. Here are the various forms
6852of @var{address}:
2a25a5ba
EZ
6853
6854@table @code
6855@item @var{expression}
6856Any expression valid in the current working language.
6857
6858@item @var{funcaddr}
6859An address of a function or procedure derived from its name. In C,
6860C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is
6861simply the function's name @var{function} (and actually a special case
6862of a valid expression). In Pascal and Modula-2, this is
6863@code{&@var{function}}. In Ada, this is @code{@var{function}'Address}
6864(although the Pascal form also works).
6865
6866This form specifies the address of the function's first instruction,
6867before the stack frame and arguments have been set up.
6868
6869@item '@var{filename}'::@var{funcaddr}
6870Like @var{funcaddr} above, but also specifies the name of the source
6871file explicitly. This is useful if the name of the function does not
6872specify the function unambiguously, e.g., if there are several
6873functions with identical names in different source files.
c906108c
SS
6874@end table
6875
62e5f89c
SDJ
6876@cindex breakpoint at static probe point
6877@item -pstap|-probe-stap @r{[}@var{objfile}:@r{[}@var{provider}:@r{]}@r{]}@var{name}
6878The @sc{gnu}/Linux tool @code{SystemTap} provides a way for
6879applications to embed static probes. @xref{Static Probe Points}, for more
6880information on finding and using static probes. This form of linespec
6881specifies the location of such a static probe.
6882
6883If @var{objfile} is given, only probes coming from that shared library
6884or executable matching @var{objfile} as a regular expression are considered.
6885If @var{provider} is given, then only probes from that provider are considered.
6886If several probes match the spec, @value{GDBN} will insert a breakpoint at
6887each one of those probes.
6888
2a25a5ba
EZ
6889@end table
6890
6891
87885426 6892@node Edit
79a6e687 6893@section Editing Source Files
87885426
FN
6894@cindex editing source files
6895
6896@kindex edit
6897@kindex e @r{(@code{edit})}
6898To edit the lines in a source file, use the @code{edit} command.
6899The editing program of your choice
6900is invoked with the current line set to
6901the active line in the program.
6902Alternatively, there are several ways to specify what part of the file you
2a25a5ba 6903want to print if you want to see other parts of the program:
87885426
FN
6904
6905@table @code
2a25a5ba
EZ
6906@item edit @var{location}
6907Edit the source file specified by @code{location}. Editing starts at
6908that @var{location}, e.g., at the specified source line of the
6909specified file. @xref{Specify Location}, for all the possible forms
6910of the @var{location} argument; here are the forms of the @code{edit}
6911command most commonly used:
87885426 6912
2a25a5ba 6913@table @code
87885426
FN
6914@item edit @var{number}
6915Edit the current source file with @var{number} as the active line number.
6916
6917@item edit @var{function}
6918Edit the file containing @var{function} at the beginning of its definition.
2a25a5ba 6919@end table
87885426 6920
87885426
FN
6921@end table
6922
79a6e687 6923@subsection Choosing your Editor
87885426
FN
6924You can customize @value{GDBN} to use any editor you want
6925@footnote{
6926The only restriction is that your editor (say @code{ex}), recognizes the
6927following command-line syntax:
10998722 6928@smallexample
87885426 6929ex +@var{number} file
10998722 6930@end smallexample
15387254
EZ
6931The optional numeric value +@var{number} specifies the number of the line in
6932the file where to start editing.}.
6933By default, it is @file{@value{EDITOR}}, but you can change this
10998722
AC
6934by setting the environment variable @code{EDITOR} before using
6935@value{GDBN}. For example, to configure @value{GDBN} to use the
6936@code{vi} editor, you could use these commands with the @code{sh} shell:
6937@smallexample
87885426
FN
6938EDITOR=/usr/bin/vi
6939export EDITOR
15387254 6940gdb @dots{}
10998722 6941@end smallexample
87885426 6942or in the @code{csh} shell,
10998722 6943@smallexample
87885426 6944setenv EDITOR /usr/bin/vi
15387254 6945gdb @dots{}
10998722 6946@end smallexample
87885426 6947
6d2ebf8b 6948@node Search
79a6e687 6949@section Searching Source Files
15387254 6950@cindex searching source files
c906108c
SS
6951
6952There are two commands for searching through the current source file for a
6953regular expression.
6954
6955@table @code
6956@kindex search
6957@kindex forward-search
1e96de83 6958@kindex fo @r{(@code{forward-search})}
c906108c
SS
6959@item forward-search @var{regexp}
6960@itemx search @var{regexp}
6961The command @samp{forward-search @var{regexp}} checks each line,
6962starting with the one following the last line listed, for a match for
5d161b24 6963@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
6964synonym @samp{search @var{regexp}} or abbreviate the command name as
6965@code{fo}.
6966
09d4efe1 6967@kindex reverse-search
c906108c
SS
6968@item reverse-search @var{regexp}
6969The command @samp{reverse-search @var{regexp}} checks each line, starting
6970with the one before the last line listed and going backward, for a match
6971for @var{regexp}. It lists the line that is found. You can abbreviate
6972this command as @code{rev}.
6973@end table
c906108c 6974
6d2ebf8b 6975@node Source Path
79a6e687 6976@section Specifying Source Directories
c906108c
SS
6977
6978@cindex source path
6979@cindex directories for source files
6980Executable programs sometimes do not record the directories of the source
6981files from which they were compiled, just the names. Even when they do,
6982the directories could be moved between the compilation and your debugging
6983session. @value{GDBN} has a list of directories to search for source files;
6984this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
6985it tries all the directories in the list, in the order they are present
0b66e38c
EZ
6986in the list, until it finds a file with the desired name.
6987
6988For example, suppose an executable references the file
6989@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
6990@file{/mnt/cross}. The file is first looked up literally; if this
6991fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
6992fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
6993message is printed. @value{GDBN} does not look up the parts of the
6994source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
6995Likewise, the subdirectories of the source path are not searched: if
6996the source path is @file{/mnt/cross}, and the binary refers to
6997@file{foo.c}, @value{GDBN} would not find it under
6998@file{/mnt/cross/usr/src/foo-1.0/lib}.
6999
7000Plain file names, relative file names with leading directories, file
7001names containing dots, etc.@: are all treated as described above; for
7002instance, if the source path is @file{/mnt/cross}, and the source file
7003is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
7004@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
7005that---@file{/mnt/cross/foo.c}.
7006
7007Note that the executable search path is @emph{not} used to locate the
cd852561 7008source files.
c906108c
SS
7009
7010Whenever you reset or rearrange the source path, @value{GDBN} clears out
7011any information it has cached about where source files are found and where
7012each line is in the file.
7013
7014@kindex directory
7015@kindex dir
d4f3574e
SS
7016When you start @value{GDBN}, its source path includes only @samp{cdir}
7017and @samp{cwd}, in that order.
c906108c
SS
7018To add other directories, use the @code{directory} command.
7019
4b505b12
AS
7020The search path is used to find both program source files and @value{GDBN}
7021script files (read using the @samp{-command} option and @samp{source} command).
7022
30daae6c
JB
7023In addition to the source path, @value{GDBN} provides a set of commands
7024that manage a list of source path substitution rules. A @dfn{substitution
7025rule} specifies how to rewrite source directories stored in the program's
7026debug information in case the sources were moved to a different
7027directory between compilation and debugging. A rule is made of
7028two strings, the first specifying what needs to be rewritten in
7029the path, and the second specifying how it should be rewritten.
7030In @ref{set substitute-path}, we name these two parts @var{from} and
7031@var{to} respectively. @value{GDBN} does a simple string replacement
7032of @var{from} with @var{to} at the start of the directory part of the
7033source file name, and uses that result instead of the original file
7034name to look up the sources.
7035
7036Using the previous example, suppose the @file{foo-1.0} tree has been
7037moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell
3f94c067 7038@value{GDBN} to replace @file{/usr/src} in all source path names with
30daae6c
JB
7039@file{/mnt/cross}. The first lookup will then be
7040@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location
7041of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path
7042substitution rule, use the @code{set substitute-path} command
7043(@pxref{set substitute-path}).
7044
7045To avoid unexpected substitution results, a rule is applied only if the
7046@var{from} part of the directory name ends at a directory separator.
7047For instance, a rule substituting @file{/usr/source} into
7048@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but
7049not to @file{/usr/sourceware/foo-2.0}. And because the substitution
d3e8051b 7050is applied only at the beginning of the directory name, this rule will
30daae6c
JB
7051not be applied to @file{/root/usr/source/baz.c} either.
7052
7053In many cases, you can achieve the same result using the @code{directory}
7054command. However, @code{set substitute-path} can be more efficient in
7055the case where the sources are organized in a complex tree with multiple
7056subdirectories. With the @code{directory} command, you need to add each
7057subdirectory of your project. If you moved the entire tree while
7058preserving its internal organization, then @code{set substitute-path}
7059allows you to direct the debugger to all the sources with one single
7060command.
7061
7062@code{set substitute-path} is also more than just a shortcut command.
7063The source path is only used if the file at the original location no
7064longer exists. On the other hand, @code{set substitute-path} modifies
7065the debugger behavior to look at the rewritten location instead. So, if
7066for any reason a source file that is not relevant to your executable is
7067located at the original location, a substitution rule is the only
3f94c067 7068method available to point @value{GDBN} at the new location.
30daae6c 7069
29b0e8a2
JM
7070@cindex @samp{--with-relocated-sources}
7071@cindex default source path substitution
7072You can configure a default source path substitution rule by
7073configuring @value{GDBN} with the
7074@samp{--with-relocated-sources=@var{dir}} option. The @var{dir}
7075should be the name of a directory under @value{GDBN}'s configured
7076prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and
7077directory names in debug information under @var{dir} will be adjusted
7078automatically if the installed @value{GDBN} is moved to a new
7079location. This is useful if @value{GDBN}, libraries or executables
7080with debug information and corresponding source code are being moved
7081together.
7082
c906108c
SS
7083@table @code
7084@item directory @var{dirname} @dots{}
7085@item dir @var{dirname} @dots{}
7086Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
7087directory names may be given to this command, separated by @samp{:}
7088(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
7089part of absolute file names) or
c906108c
SS
7090whitespace. You may specify a directory that is already in the source
7091path; this moves it forward, so @value{GDBN} searches it sooner.
7092
7093@kindex cdir
7094@kindex cwd
41afff9a 7095@vindex $cdir@r{, convenience variable}
d3e8051b 7096@vindex $cwd@r{, convenience variable}
c906108c
SS
7097@cindex compilation directory
7098@cindex current directory
7099@cindex working directory
7100@cindex directory, current
7101@cindex directory, compilation
7102You can use the string @samp{$cdir} to refer to the compilation
7103directory (if one is recorded), and @samp{$cwd} to refer to the current
7104working directory. @samp{$cwd} is not the same as @samp{.}---the former
7105tracks the current working directory as it changes during your @value{GDBN}
7106session, while the latter is immediately expanded to the current
7107directory at the time you add an entry to the source path.
7108
7109@item directory
cd852561 7110Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation.
c906108c
SS
7111
7112@c RET-repeat for @code{directory} is explicitly disabled, but since
7113@c repeating it would be a no-op we do not say that. (thanks to RMS)
7114
99e7ae30
DE
7115@item set directories @var{path-list}
7116@kindex set directories
7117Set the source path to @var{path-list}.
7118@samp{$cdir:$cwd} are added if missing.
7119
c906108c
SS
7120@item show directories
7121@kindex show directories
7122Print the source path: show which directories it contains.
30daae6c
JB
7123
7124@anchor{set substitute-path}
7125@item set substitute-path @var{from} @var{to}
7126@kindex set substitute-path
7127Define a source path substitution rule, and add it at the end of the
7128current list of existing substitution rules. If a rule with the same
7129@var{from} was already defined, then the old rule is also deleted.
7130
7131For example, if the file @file{/foo/bar/baz.c} was moved to
7132@file{/mnt/cross/baz.c}, then the command
7133
7134@smallexample
7135(@value{GDBP}) set substitute-path /usr/src /mnt/cross
7136@end smallexample
7137
7138@noindent
7139will tell @value{GDBN} to replace @samp{/usr/src} with
7140@samp{/mnt/cross}, which will allow @value{GDBN} to find the file
7141@file{baz.c} even though it was moved.
7142
7143In the case when more than one substitution rule have been defined,
7144the rules are evaluated one by one in the order where they have been
7145defined. The first one matching, if any, is selected to perform
7146the substitution.
7147
7148For instance, if we had entered the following commands:
7149
7150@smallexample
7151(@value{GDBP}) set substitute-path /usr/src/include /mnt/include
7152(@value{GDBP}) set substitute-path /usr/src /mnt/src
7153@end smallexample
7154
7155@noindent
7156@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into
7157@file{/mnt/include/defs.h} by using the first rule. However, it would
7158use the second rule to rewrite @file{/usr/src/lib/foo.c} into
7159@file{/mnt/src/lib/foo.c}.
7160
7161
7162@item unset substitute-path [path]
7163@kindex unset substitute-path
7164If a path is specified, search the current list of substitution rules
7165for a rule that would rewrite that path. Delete that rule if found.
7166A warning is emitted by the debugger if no rule could be found.
7167
7168If no path is specified, then all substitution rules are deleted.
7169
7170@item show substitute-path [path]
7171@kindex show substitute-path
7172If a path is specified, then print the source path substitution rule
7173which would rewrite that path, if any.
7174
7175If no path is specified, then print all existing source path substitution
7176rules.
7177
c906108c
SS
7178@end table
7179
7180If your source path is cluttered with directories that are no longer of
7181interest, @value{GDBN} may sometimes cause confusion by finding the wrong
7182versions of source. You can correct the situation as follows:
7183
7184@enumerate
7185@item
cd852561 7186Use @code{directory} with no argument to reset the source path to its default value.
c906108c
SS
7187
7188@item
7189Use @code{directory} with suitable arguments to reinstall the
7190directories you want in the source path. You can add all the
7191directories in one command.
7192@end enumerate
7193
6d2ebf8b 7194@node Machine Code
79a6e687 7195@section Source and Machine Code
15387254 7196@cindex source line and its code address
c906108c
SS
7197
7198You can use the command @code{info line} to map source lines to program
7199addresses (and vice versa), and the command @code{disassemble} to display
91440f57
HZ
7200a range of addresses as machine instructions. You can use the command
7201@code{set disassemble-next-line} to set whether to disassemble next
7202source line when execution stops. When run under @sc{gnu} Emacs
d4f3574e 7203mode, the @code{info line} command causes the arrow to point to the
5d161b24 7204line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
7205well as hex.
7206
7207@table @code
7208@kindex info line
7209@item info line @var{linespec}
7210Print the starting and ending addresses of the compiled code for
7211source line @var{linespec}. You can specify source lines in any of
2a25a5ba 7212the ways documented in @ref{Specify Location}.
c906108c
SS
7213@end table
7214
7215For example, we can use @code{info line} to discover the location of
7216the object code for the first line of function
7217@code{m4_changequote}:
7218
d4f3574e
SS
7219@c FIXME: I think this example should also show the addresses in
7220@c symbolic form, as they usually would be displayed.
c906108c 7221@smallexample
96a2c332 7222(@value{GDBP}) info line m4_changequote
c906108c
SS
7223Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
7224@end smallexample
7225
7226@noindent
15387254 7227@cindex code address and its source line
c906108c
SS
7228We can also inquire (using @code{*@var{addr}} as the form for
7229@var{linespec}) what source line covers a particular address:
7230@smallexample
7231(@value{GDBP}) info line *0x63ff
7232Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
7233@end smallexample
7234
7235@cindex @code{$_} and @code{info line}
15387254 7236@cindex @code{x} command, default address
41afff9a 7237@kindex x@r{(examine), and} info line
c906108c
SS
7238After @code{info line}, the default address for the @code{x} command
7239is changed to the starting address of the line, so that @samp{x/i} is
7240sufficient to begin examining the machine code (@pxref{Memory,
79a6e687 7241,Examining Memory}). Also, this address is saved as the value of the
c906108c 7242convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
79a6e687 7243Variables}).
c906108c
SS
7244
7245@table @code
7246@kindex disassemble
7247@cindex assembly instructions
7248@cindex instructions, assembly
7249@cindex machine instructions
7250@cindex listing machine instructions
7251@item disassemble
d14508fe 7252@itemx disassemble /m
9b117ef3 7253@itemx disassemble /r
c906108c 7254This specialized command dumps a range of memory as machine
d14508fe 7255instructions. It can also print mixed source+disassembly by specifying
9b117ef3
HZ
7256the @code{/m} modifier and print the raw instructions in hex as well as
7257in symbolic form by specifying the @code{/r}.
d14508fe 7258The default memory range is the function surrounding the
c906108c
SS
7259program counter of the selected frame. A single argument to this
7260command is a program counter value; @value{GDBN} dumps the function
21a0512e
PP
7261surrounding this value. When two arguments are given, they should
7262be separated by a comma, possibly surrounded by whitespace. The
53a71c06
CR
7263arguments specify a range of addresses to dump, in one of two forms:
7264
7265@table @code
7266@item @var{start},@var{end}
7267the addresses from @var{start} (inclusive) to @var{end} (exclusive)
7268@item @var{start},+@var{length}
7269the addresses from @var{start} (inclusive) to
7270@code{@var{start}+@var{length}} (exclusive).
7271@end table
7272
7273@noindent
7274When 2 arguments are specified, the name of the function is also
7275printed (since there could be several functions in the given range).
21a0512e
PP
7276
7277The argument(s) can be any expression yielding a numeric value, such as
7278@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}.
2b28d209
PP
7279
7280If the range of memory being disassembled contains current program counter,
7281the instruction at that location is shown with a @code{=>} marker.
c906108c
SS
7282@end table
7283
c906108c
SS
7284The following example shows the disassembly of a range of addresses of
7285HP PA-RISC 2.0 code:
7286
7287@smallexample
21a0512e 7288(@value{GDBP}) disas 0x32c4, 0x32e4
c906108c 7289Dump of assembler code from 0x32c4 to 0x32e4:
2b28d209
PP
7290 0x32c4 <main+204>: addil 0,dp
7291 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
7292 0x32cc <main+212>: ldil 0x3000,r31
7293 0x32d0 <main+216>: ble 0x3f8(sr4,r31)
7294 0x32d4 <main+220>: ldo 0(r31),rp
7295 0x32d8 <main+224>: addil -0x800,dp
7296 0x32dc <main+228>: ldo 0x588(r1),r26
7297 0x32e0 <main+232>: ldil 0x3000,r31
c906108c
SS
7298End of assembler dump.
7299@end smallexample
c906108c 7300
2b28d209
PP
7301Here is an example showing mixed source+assembly for Intel x86, when the
7302program is stopped just after function prologue:
d14508fe
DE
7303
7304@smallexample
7305(@value{GDBP}) disas /m main
7306Dump of assembler code for function main:
73075 @{
9c419145
PP
7308 0x08048330 <+0>: push %ebp
7309 0x08048331 <+1>: mov %esp,%ebp
7310 0x08048333 <+3>: sub $0x8,%esp
7311 0x08048336 <+6>: and $0xfffffff0,%esp
7312 0x08048339 <+9>: sub $0x10,%esp
d14508fe
DE
7313
73146 printf ("Hello.\n");
9c419145
PP
7315=> 0x0804833c <+12>: movl $0x8048440,(%esp)
7316 0x08048343 <+19>: call 0x8048284 <puts@@plt>
d14508fe
DE
7317
73187 return 0;
73198 @}
9c419145
PP
7320 0x08048348 <+24>: mov $0x0,%eax
7321 0x0804834d <+29>: leave
7322 0x0804834e <+30>: ret
d14508fe
DE
7323
7324End of assembler dump.
7325@end smallexample
7326
53a71c06
CR
7327Here is another example showing raw instructions in hex for AMD x86-64,
7328
7329@smallexample
7330(gdb) disas /r 0x400281,+10
7331Dump of assembler code from 0x400281 to 0x40028b:
7332 0x0000000000400281: 38 36 cmp %dh,(%rsi)
7333 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax
7334 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx)
7335 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al
7336End of assembler dump.
7337@end smallexample
7338
c906108c
SS
7339Some architectures have more than one commonly-used set of instruction
7340mnemonics or other syntax.
7341
76d17f34
EZ
7342For programs that were dynamically linked and use shared libraries,
7343instructions that call functions or branch to locations in the shared
7344libraries might show a seemingly bogus location---it's actually a
7345location of the relocation table. On some architectures, @value{GDBN}
7346might be able to resolve these to actual function names.
7347
c906108c 7348@table @code
d4f3574e 7349@kindex set disassembly-flavor
d4f3574e
SS
7350@cindex Intel disassembly flavor
7351@cindex AT&T disassembly flavor
7352@item set disassembly-flavor @var{instruction-set}
c906108c
SS
7353Select the instruction set to use when disassembling the
7354program via the @code{disassemble} or @code{x/i} commands.
7355
7356Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
7357can set @var{instruction-set} to either @code{intel} or @code{att}.
7358The default is @code{att}, the AT&T flavor used by default by Unix
7359assemblers for x86-based targets.
9c16f35a
EZ
7360
7361@kindex show disassembly-flavor
7362@item show disassembly-flavor
7363Show the current setting of the disassembly flavor.
c906108c
SS
7364@end table
7365
91440f57
HZ
7366@table @code
7367@kindex set disassemble-next-line
7368@kindex show disassemble-next-line
7369@item set disassemble-next-line
7370@itemx show disassemble-next-line
32ae1842
EZ
7371Control whether or not @value{GDBN} will disassemble the next source
7372line or instruction when execution stops. If ON, @value{GDBN} will
7373display disassembly of the next source line when execution of the
7374program being debugged stops. This is @emph{in addition} to
7375displaying the source line itself, which @value{GDBN} always does if
7376possible. If the next source line cannot be displayed for some reason
7377(e.g., if @value{GDBN} cannot find the source file, or there's no line
7378info in the debug info), @value{GDBN} will display disassembly of the
7379next @emph{instruction} instead of showing the next source line. If
7380AUTO, @value{GDBN} will display disassembly of next instruction only
7381if the source line cannot be displayed. This setting causes
7382@value{GDBN} to display some feedback when you step through a function
7383with no line info or whose source file is unavailable. The default is
7384OFF, which means never display the disassembly of the next line or
7385instruction.
91440f57
HZ
7386@end table
7387
c906108c 7388
6d2ebf8b 7389@node Data
c906108c
SS
7390@chapter Examining Data
7391
7392@cindex printing data
7393@cindex examining data
7394@kindex print
7395@kindex inspect
7396@c "inspect" is not quite a synonym if you are using Epoch, which we do not
7397@c document because it is nonstandard... Under Epoch it displays in a
7398@c different window or something like that.
7399The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
7400command (abbreviated @code{p}), or its synonym @code{inspect}. It
7401evaluates and prints the value of an expression of the language your
7402program is written in (@pxref{Languages, ,Using @value{GDBN} with
78e2826b
TT
7403Different Languages}). It may also print the expression using a
7404Python-based pretty-printer (@pxref{Pretty Printing}).
c906108c
SS
7405
7406@table @code
d4f3574e
SS
7407@item print @var{expr}
7408@itemx print /@var{f} @var{expr}
7409@var{expr} is an expression (in the source language). By default the
7410value of @var{expr} is printed in a format appropriate to its data type;
c906108c 7411you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 7412@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
79a6e687 7413Formats}.
c906108c
SS
7414
7415@item print
7416@itemx print /@var{f}
15387254 7417@cindex reprint the last value
d4f3574e 7418If you omit @var{expr}, @value{GDBN} displays the last value again (from the
79a6e687 7419@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to
c906108c
SS
7420conveniently inspect the same value in an alternative format.
7421@end table
7422
7423A more low-level way of examining data is with the @code{x} command.
7424It examines data in memory at a specified address and prints it in a
79a6e687 7425specified format. @xref{Memory, ,Examining Memory}.
c906108c 7426
7a292a7a 7427If you are interested in information about types, or about how the
d4f3574e
SS
7428fields of a struct or a class are declared, use the @code{ptype @var{exp}}
7429command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 7430Table}.
c906108c 7431
06fc020f
SCR
7432@cindex exploring hierarchical data structures
7433@kindex explore
7434Another way of examining values of expressions and type information is
7435through the Python extension command @code{explore} (available only if
7436the @value{GDBN} build is configured with @code{--with-python}). It
7437offers an interactive way to start at the highest level (or, the most
7438abstract level) of the data type of an expression (or, the data type
7439itself) and explore all the way down to leaf scalar values/fields
7440embedded in the higher level data types.
7441
7442@table @code
7443@item explore @var{arg}
7444@var{arg} is either an expression (in the source language), or a type
7445visible in the current context of the program being debugged.
7446@end table
7447
7448The working of the @code{explore} command can be illustrated with an
7449example. If a data type @code{struct ComplexStruct} is defined in your
7450C program as
7451
7452@smallexample
7453struct SimpleStruct
7454@{
7455 int i;
7456 double d;
7457@};
7458
7459struct ComplexStruct
7460@{
7461 struct SimpleStruct *ss_p;
7462 int arr[10];
7463@};
7464@end smallexample
7465
7466@noindent
7467followed by variable declarations as
7468
7469@smallexample
7470struct SimpleStruct ss = @{ 10, 1.11 @};
7471struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @};
7472@end smallexample
7473
7474@noindent
7475then, the value of the variable @code{cs} can be explored using the
7476@code{explore} command as follows.
7477
7478@smallexample
7479(gdb) explore cs
7480The value of `cs' is a struct/class of type `struct ComplexStruct' with
7481the following fields:
7482
7483 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'>
7484 arr = <Enter 1 to explore this field of type `int [10]'>
7485
7486Enter the field number of choice:
7487@end smallexample
7488
7489@noindent
7490Since the fields of @code{cs} are not scalar values, you are being
7491prompted to chose the field you want to explore. Let's say you choose
7492the field @code{ss_p} by entering @code{0}. Then, since this field is a
7493pointer, you will be asked if it is pointing to a single value. From
7494the declaration of @code{cs} above, it is indeed pointing to a single
7495value, hence you enter @code{y}. If you enter @code{n}, then you will
7496be asked if it were pointing to an array of values, in which case this
7497field will be explored as if it were an array.
7498
7499@smallexample
7500`cs.ss_p' is a pointer to a value of type `struct SimpleStruct'
7501Continue exploring it as a pointer to a single value [y/n]: y
7502The value of `*(cs.ss_p)' is a struct/class of type `struct
7503SimpleStruct' with the following fields:
7504
7505 i = 10 .. (Value of type `int')
7506 d = 1.1100000000000001 .. (Value of type `double')
7507
7508Press enter to return to parent value:
7509@end smallexample
7510
7511@noindent
7512If the field @code{arr} of @code{cs} was chosen for exploration by
7513entering @code{1} earlier, then since it is as array, you will be
7514prompted to enter the index of the element in the array that you want
7515to explore.
7516
7517@smallexample
7518`cs.arr' is an array of `int'.
7519Enter the index of the element you want to explore in `cs.arr': 5
7520
7521`(cs.arr)[5]' is a scalar value of type `int'.
7522
7523(cs.arr)[5] = 4
7524
7525Press enter to return to parent value:
7526@end smallexample
7527
7528In general, at any stage of exploration, you can go deeper towards the
7529leaf values by responding to the prompts appropriately, or hit the
7530return key to return to the enclosing data structure (the @i{higher}
7531level data structure).
7532
7533Similar to exploring values, you can use the @code{explore} command to
7534explore types. Instead of specifying a value (which is typically a
7535variable name or an expression valid in the current context of the
7536program being debugged), you specify a type name. If you consider the
7537same example as above, your can explore the type
7538@code{struct ComplexStruct} by passing the argument
7539@code{struct ComplexStruct} to the @code{explore} command.
7540
7541@smallexample
7542(gdb) explore struct ComplexStruct
7543@end smallexample
7544
7545@noindent
7546By responding to the prompts appropriately in the subsequent interactive
7547session, you can explore the type @code{struct ComplexStruct} in a
7548manner similar to how the value @code{cs} was explored in the above
7549example.
7550
7551The @code{explore} command also has two sub-commands,
7552@code{explore value} and @code{explore type}. The former sub-command is
7553a way to explicitly specify that value exploration of the argument is
7554being invoked, while the latter is a way to explicitly specify that type
7555exploration of the argument is being invoked.
7556
7557@table @code
7558@item explore value @var{expr}
7559@cindex explore value
7560This sub-command of @code{explore} explores the value of the
7561expression @var{expr} (if @var{expr} is an expression valid in the
7562current context of the program being debugged). The behavior of this
7563command is identical to that of the behavior of the @code{explore}
7564command being passed the argument @var{expr}.
7565
7566@item explore type @var{arg}
7567@cindex explore type
7568This sub-command of @code{explore} explores the type of @var{arg} (if
7569@var{arg} is a type visible in the current context of program being
7570debugged), or the type of the value/expression @var{arg} (if @var{arg}
7571is an expression valid in the current context of the program being
7572debugged). If @var{arg} is a type, then the behavior of this command is
7573identical to that of the @code{explore} command being passed the
7574argument @var{arg}. If @var{arg} is an expression, then the behavior of
7575this command will be identical to that of the @code{explore} command
7576being passed the type of @var{arg} as the argument.
7577@end table
7578
c906108c
SS
7579@menu
7580* Expressions:: Expressions
6ba66d6a 7581* Ambiguous Expressions:: Ambiguous Expressions
c906108c
SS
7582* Variables:: Program variables
7583* Arrays:: Artificial arrays
7584* Output Formats:: Output formats
7585* Memory:: Examining memory
7586* Auto Display:: Automatic display
7587* Print Settings:: Print settings
4c374409 7588* Pretty Printing:: Python pretty printing
c906108c
SS
7589* Value History:: Value history
7590* Convenience Vars:: Convenience variables
a72c3253 7591* Convenience Funs:: Convenience functions
c906108c 7592* Registers:: Registers
c906108c 7593* Floating Point Hardware:: Floating point hardware
53c69bd7 7594* Vector Unit:: Vector Unit
721c2651 7595* OS Information:: Auxiliary data provided by operating system
29e57380 7596* Memory Region Attributes:: Memory region attributes
16d9dec6 7597* Dump/Restore Files:: Copy between memory and a file
384ee23f 7598* Core File Generation:: Cause a program dump its core
a0eb71c5
KB
7599* Character Sets:: Debugging programs that use a different
7600 character set than GDB does
09d4efe1 7601* Caching Remote Data:: Data caching for remote targets
08388c79 7602* Searching Memory:: Searching memory for a sequence of bytes
c906108c
SS
7603@end menu
7604
6d2ebf8b 7605@node Expressions
c906108c
SS
7606@section Expressions
7607
7608@cindex expressions
7609@code{print} and many other @value{GDBN} commands accept an expression and
7610compute its value. Any kind of constant, variable or operator defined
7611by the programming language you are using is valid in an expression in
e2e0bcd1
JB
7612@value{GDBN}. This includes conditional expressions, function calls,
7613casts, and string constants. It also includes preprocessor macros, if
7614you compiled your program to include this information; see
7615@ref{Compilation}.
c906108c 7616
15387254 7617@cindex arrays in expressions
d4f3574e
SS
7618@value{GDBN} supports array constants in expressions input by
7619the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
63092375
DJ
7620you can use the command @code{print @{1, 2, 3@}} to create an array
7621of three integers. If you pass an array to a function or assign it
7622to a program variable, @value{GDBN} copies the array to memory that
7623is @code{malloc}ed in the target program.
c906108c 7624
c906108c
SS
7625Because C is so widespread, most of the expressions shown in examples in
7626this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
7627Languages}, for information on how to use expressions in other
7628languages.
7629
7630In this section, we discuss operators that you can use in @value{GDBN}
7631expressions regardless of your programming language.
7632
15387254 7633@cindex casts, in expressions
c906108c
SS
7634Casts are supported in all languages, not just in C, because it is so
7635useful to cast a number into a pointer in order to examine a structure
7636at that address in memory.
7637@c FIXME: casts supported---Mod2 true?
c906108c
SS
7638
7639@value{GDBN} supports these operators, in addition to those common
7640to programming languages:
7641
7642@table @code
7643@item @@
7644@samp{@@} is a binary operator for treating parts of memory as arrays.
79a6e687 7645@xref{Arrays, ,Artificial Arrays}, for more information.
c906108c
SS
7646
7647@item ::
7648@samp{::} allows you to specify a variable in terms of the file or
79a6e687 7649function where it is defined. @xref{Variables, ,Program Variables}.
c906108c
SS
7650
7651@cindex @{@var{type}@}
7652@cindex type casting memory
7653@cindex memory, viewing as typed object
7654@cindex casts, to view memory
7655@item @{@var{type}@} @var{addr}
7656Refers to an object of type @var{type} stored at address @var{addr} in
7657memory. @var{addr} may be any expression whose value is an integer or
7658pointer (but parentheses are required around binary operators, just as in
7659a cast). This construct is allowed regardless of what kind of data is
7660normally supposed to reside at @var{addr}.
7661@end table
7662
6ba66d6a
JB
7663@node Ambiguous Expressions
7664@section Ambiguous Expressions
7665@cindex ambiguous expressions
7666
7667Expressions can sometimes contain some ambiguous elements. For instance,
7668some programming languages (notably Ada, C@t{++} and Objective-C) permit
7669a single function name to be defined several times, for application in
7670different contexts. This is called @dfn{overloading}. Another example
7671involving Ada is generics. A @dfn{generic package} is similar to C@t{++}
7672templates and is typically instantiated several times, resulting in
7673the same function name being defined in different contexts.
7674
7675In some cases and depending on the language, it is possible to adjust
7676the expression to remove the ambiguity. For instance in C@t{++}, you
7677can specify the signature of the function you want to break on, as in
7678@kbd{break @var{function}(@var{types})}. In Ada, using the fully
7679qualified name of your function often makes the expression unambiguous
7680as well.
7681
7682When an ambiguity that needs to be resolved is detected, the debugger
7683has the capability to display a menu of numbered choices for each
7684possibility, and then waits for the selection with the prompt @samp{>}.
7685The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}}
7686aborts the current command. If the command in which the expression was
7687used allows more than one choice to be selected, the next option in the
7688menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible
7689choices.
7690
7691For example, the following session excerpt shows an attempt to set a
7692breakpoint at the overloaded symbol @code{String::after}.
7693We choose three particular definitions of that function name:
7694
7695@c FIXME! This is likely to change to show arg type lists, at least
7696@smallexample
7697@group
7698(@value{GDBP}) b String::after
7699[0] cancel
7700[1] all
7701[2] file:String.cc; line number:867
7702[3] file:String.cc; line number:860
7703[4] file:String.cc; line number:875
7704[5] file:String.cc; line number:853
7705[6] file:String.cc; line number:846
7706[7] file:String.cc; line number:735
7707> 2 4 6
7708Breakpoint 1 at 0xb26c: file String.cc, line 867.
7709Breakpoint 2 at 0xb344: file String.cc, line 875.
7710Breakpoint 3 at 0xafcc: file String.cc, line 846.
7711Multiple breakpoints were set.
7712Use the "delete" command to delete unwanted
7713 breakpoints.
7714(@value{GDBP})
7715@end group
7716@end smallexample
7717
7718@table @code
7719@kindex set multiple-symbols
7720@item set multiple-symbols @var{mode}
7721@cindex multiple-symbols menu
7722
7723This option allows you to adjust the debugger behavior when an expression
7724is ambiguous.
7725
7726By default, @var{mode} is set to @code{all}. If the command with which
7727the expression is used allows more than one choice, then @value{GDBN}
7728automatically selects all possible choices. For instance, inserting
7729a breakpoint on a function using an ambiguous name results in a breakpoint
7730inserted on each possible match. However, if a unique choice must be made,
7731then @value{GDBN} uses the menu to help you disambiguate the expression.
7732For instance, printing the address of an overloaded function will result
7733in the use of the menu.
7734
7735When @var{mode} is set to @code{ask}, the debugger always uses the menu
7736when an ambiguity is detected.
7737
7738Finally, when @var{mode} is set to @code{cancel}, the debugger reports
7739an error due to the ambiguity and the command is aborted.
7740
7741@kindex show multiple-symbols
7742@item show multiple-symbols
7743Show the current value of the @code{multiple-symbols} setting.
7744@end table
7745
6d2ebf8b 7746@node Variables
79a6e687 7747@section Program Variables
c906108c
SS
7748
7749The most common kind of expression to use is the name of a variable
7750in your program.
7751
7752Variables in expressions are understood in the selected stack frame
79a6e687 7753(@pxref{Selection, ,Selecting a Frame}); they must be either:
c906108c
SS
7754
7755@itemize @bullet
7756@item
7757global (or file-static)
7758@end itemize
7759
5d161b24 7760@noindent or
c906108c
SS
7761
7762@itemize @bullet
7763@item
7764visible according to the scope rules of the
7765programming language from the point of execution in that frame
5d161b24 7766@end itemize
c906108c
SS
7767
7768@noindent This means that in the function
7769
474c8240 7770@smallexample
c906108c
SS
7771foo (a)
7772 int a;
7773@{
7774 bar (a);
7775 @{
7776 int b = test ();
7777 bar (b);
7778 @}
7779@}
474c8240 7780@end smallexample
c906108c
SS
7781
7782@noindent
7783you can examine and use the variable @code{a} whenever your program is
7784executing within the function @code{foo}, but you can only use or
7785examine the variable @code{b} while your program is executing inside
7786the block where @code{b} is declared.
7787
7788@cindex variable name conflict
7789There is an exception: you can refer to a variable or function whose
7790scope is a single source file even if the current execution point is not
7791in this file. But it is possible to have more than one such variable or
7792function with the same name (in different source files). If that
7793happens, referring to that name has unpredictable effects. If you wish,
72384ba3 7794you can specify a static variable in a particular function or file by
15387254 7795using the colon-colon (@code{::}) notation:
c906108c 7796
d4f3574e 7797@cindex colon-colon, context for variables/functions
12c27660 7798@ifnotinfo
c906108c 7799@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 7800@cindex @code{::}, context for variables/functions
12c27660 7801@end ifnotinfo
474c8240 7802@smallexample
c906108c
SS
7803@var{file}::@var{variable}
7804@var{function}::@var{variable}
474c8240 7805@end smallexample
c906108c
SS
7806
7807@noindent
7808Here @var{file} or @var{function} is the name of the context for the
7809static @var{variable}. In the case of file names, you can use quotes to
7810make sure @value{GDBN} parses the file name as a single word---for example,
7811to print a global value of @code{x} defined in @file{f2.c}:
7812
474c8240 7813@smallexample
c906108c 7814(@value{GDBP}) p 'f2.c'::x
474c8240 7815@end smallexample
c906108c 7816
72384ba3
PH
7817The @code{::} notation is normally used for referring to
7818static variables, since you typically disambiguate uses of local variables
7819in functions by selecting the appropriate frame and using the
7820simple name of the variable. However, you may also use this notation
7821to refer to local variables in frames enclosing the selected frame:
7822
7823@smallexample
7824void
7825foo (int a)
7826@{
7827 if (a < 10)
7828 bar (a);
7829 else
7830 process (a); /* Stop here */
7831@}
7832
7833int
7834bar (int a)
7835@{
7836 foo (a + 5);
7837@}
7838@end smallexample
7839
7840@noindent
7841For example, if there is a breakpoint at the commented line,
7842here is what you might see
7843when the program stops after executing the call @code{bar(0)}:
7844
7845@smallexample
7846(@value{GDBP}) p a
7847$1 = 10
7848(@value{GDBP}) p bar::a
7849$2 = 5
7850(@value{GDBP}) up 2
7851#2 0x080483d0 in foo (a=5) at foobar.c:12
7852(@value{GDBP}) p a
7853$3 = 5
7854(@value{GDBP}) p bar::a
7855$4 = 0
7856@end smallexample
7857
b37052ae 7858@cindex C@t{++} scope resolution
72384ba3 7859These uses of @samp{::} are very rarely in conflict with the very similar
b37052ae 7860use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
7861scope resolution operator in @value{GDBN} expressions.
7862@c FIXME: Um, so what happens in one of those rare cases where it's in
7863@c conflict?? --mew
c906108c
SS
7864
7865@cindex wrong values
7866@cindex variable values, wrong
15387254
EZ
7867@cindex function entry/exit, wrong values of variables
7868@cindex optimized code, wrong values of variables
c906108c
SS
7869@quotation
7870@emph{Warning:} Occasionally, a local variable may appear to have the
7871wrong value at certain points in a function---just after entry to a new
7872scope, and just before exit.
7873@end quotation
7874You may see this problem when you are stepping by machine instructions.
7875This is because, on most machines, it takes more than one instruction to
7876set up a stack frame (including local variable definitions); if you are
7877stepping by machine instructions, variables may appear to have the wrong
7878values until the stack frame is completely built. On exit, it usually
7879also takes more than one machine instruction to destroy a stack frame;
7880after you begin stepping through that group of instructions, local
7881variable definitions may be gone.
7882
7883This may also happen when the compiler does significant optimizations.
7884To be sure of always seeing accurate values, turn off all optimization
7885when compiling.
7886
d4f3574e
SS
7887@cindex ``No symbol "foo" in current context''
7888Another possible effect of compiler optimizations is to optimize
7889unused variables out of existence, or assign variables to registers (as
7890opposed to memory addresses). Depending on the support for such cases
7891offered by the debug info format used by the compiler, @value{GDBN}
7892might not be able to display values for such local variables. If that
7893happens, @value{GDBN} will print a message like this:
7894
474c8240 7895@smallexample
d4f3574e 7896No symbol "foo" in current context.
474c8240 7897@end smallexample
d4f3574e
SS
7898
7899To solve such problems, either recompile without optimizations, or use a
7900different debug info format, if the compiler supports several such
e0f8f636
TT
7901formats. @xref{Compilation}, for more information on choosing compiler
7902options. @xref{C, ,C and C@t{++}}, for more information about debug
7903info formats that are best suited to C@t{++} programs.
d4f3574e 7904
ab1adacd
EZ
7905If you ask to print an object whose contents are unknown to
7906@value{GDBN}, e.g., because its data type is not completely specified
7907by the debug information, @value{GDBN} will say @samp{<incomplete
7908type>}. @xref{Symbols, incomplete type}, for more about this.
7909
36b11add
JK
7910If you append @kbd{@@entry} string to a function parameter name you get its
7911value at the time the function got called. If the value is not available an
7912error message is printed. Entry values are available only with some compilers.
7913Entry values are normally also printed at the function parameter list according
7914to @ref{set print entry-values}.
7915
7916@smallexample
7917Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29
791829 i++;
7919(gdb) next
792030 e (i);
7921(gdb) print i
7922$1 = 31
7923(gdb) print i@@entry
7924$2 = 30
7925@end smallexample
7926
3a60f64e
JK
7927Strings are identified as arrays of @code{char} values without specified
7928signedness. Arrays of either @code{signed char} or @code{unsigned char} get
7929printed as arrays of 1 byte sized integers. @code{-fsigned-char} or
7930@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN}
7931defines literal string type @code{"char"} as @code{char} without a sign.
7932For program code
7933
7934@smallexample
7935char var0[] = "A";
7936signed char var1[] = "A";
7937@end smallexample
7938
7939You get during debugging
7940@smallexample
7941(gdb) print var0
7942$1 = "A"
7943(gdb) print var1
7944$2 = @{65 'A', 0 '\0'@}
7945@end smallexample
7946
6d2ebf8b 7947@node Arrays
79a6e687 7948@section Artificial Arrays
c906108c
SS
7949
7950@cindex artificial array
15387254 7951@cindex arrays
41afff9a 7952@kindex @@@r{, referencing memory as an array}
c906108c
SS
7953It is often useful to print out several successive objects of the
7954same type in memory; a section of an array, or an array of
7955dynamically determined size for which only a pointer exists in the
7956program.
7957
7958You can do this by referring to a contiguous span of memory as an
7959@dfn{artificial array}, using the binary operator @samp{@@}. The left
7960operand of @samp{@@} should be the first element of the desired array
7961and be an individual object. The right operand should be the desired length
7962of the array. The result is an array value whose elements are all of
7963the type of the left argument. The first element is actually the left
7964argument; the second element comes from bytes of memory immediately
7965following those that hold the first element, and so on. Here is an
7966example. If a program says
7967
474c8240 7968@smallexample
c906108c 7969int *array = (int *) malloc (len * sizeof (int));
474c8240 7970@end smallexample
c906108c
SS
7971
7972@noindent
7973you can print the contents of @code{array} with
7974
474c8240 7975@smallexample
c906108c 7976p *array@@len
474c8240 7977@end smallexample
c906108c
SS
7978
7979The left operand of @samp{@@} must reside in memory. Array values made
7980with @samp{@@} in this way behave just like other arrays in terms of
7981subscripting, and are coerced to pointers when used in expressions.
7982Artificial arrays most often appear in expressions via the value history
79a6e687 7983(@pxref{Value History, ,Value History}), after printing one out.
c906108c
SS
7984
7985Another way to create an artificial array is to use a cast.
7986This re-interprets a value as if it were an array.
7987The value need not be in memory:
474c8240 7988@smallexample
c906108c
SS
7989(@value{GDBP}) p/x (short[2])0x12345678
7990$1 = @{0x1234, 0x5678@}
474c8240 7991@end smallexample
c906108c
SS
7992
7993As a convenience, if you leave the array length out (as in
c3f6f71d 7994@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c 7995the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
474c8240 7996@smallexample
c906108c
SS
7997(@value{GDBP}) p/x (short[])0x12345678
7998$2 = @{0x1234, 0x5678@}
474c8240 7999@end smallexample
c906108c
SS
8000
8001Sometimes the artificial array mechanism is not quite enough; in
8002moderately complex data structures, the elements of interest may not
8003actually be adjacent---for example, if you are interested in the values
8004of pointers in an array. One useful work-around in this situation is
8005to use a convenience variable (@pxref{Convenience Vars, ,Convenience
79a6e687 8006Variables}) as a counter in an expression that prints the first
c906108c
SS
8007interesting value, and then repeat that expression via @key{RET}. For
8008instance, suppose you have an array @code{dtab} of pointers to
8009structures, and you are interested in the values of a field @code{fv}
8010in each structure. Here is an example of what you might type:
8011
474c8240 8012@smallexample
c906108c
SS
8013set $i = 0
8014p dtab[$i++]->fv
8015@key{RET}
8016@key{RET}
8017@dots{}
474c8240 8018@end smallexample
c906108c 8019
6d2ebf8b 8020@node Output Formats
79a6e687 8021@section Output Formats
c906108c
SS
8022
8023@cindex formatted output
8024@cindex output formats
8025By default, @value{GDBN} prints a value according to its data type. Sometimes
8026this is not what you want. For example, you might want to print a number
8027in hex, or a pointer in decimal. Or you might want to view data in memory
8028at a certain address as a character string or as an instruction. To do
8029these things, specify an @dfn{output format} when you print a value.
8030
8031The simplest use of output formats is to say how to print a value
8032already computed. This is done by starting the arguments of the
8033@code{print} command with a slash and a format letter. The format
8034letters supported are:
8035
8036@table @code
8037@item x
8038Regard the bits of the value as an integer, and print the integer in
8039hexadecimal.
8040
8041@item d
8042Print as integer in signed decimal.
8043
8044@item u
8045Print as integer in unsigned decimal.
8046
8047@item o
8048Print as integer in octal.
8049
8050@item t
8051Print as integer in binary. The letter @samp{t} stands for ``two''.
8052@footnote{@samp{b} cannot be used because these format letters are also
8053used with the @code{x} command, where @samp{b} stands for ``byte'';
79a6e687 8054see @ref{Memory,,Examining Memory}.}
c906108c
SS
8055
8056@item a
8057@cindex unknown address, locating
3d67e040 8058@cindex locate address
c906108c
SS
8059Print as an address, both absolute in hexadecimal and as an offset from
8060the nearest preceding symbol. You can use this format used to discover
8061where (in what function) an unknown address is located:
8062
474c8240 8063@smallexample
c906108c
SS
8064(@value{GDBP}) p/a 0x54320
8065$3 = 0x54320 <_initialize_vx+396>
474c8240 8066@end smallexample
c906108c 8067
3d67e040
EZ
8068@noindent
8069The command @code{info symbol 0x54320} yields similar results.
8070@xref{Symbols, info symbol}.
8071
c906108c 8072@item c
51274035
EZ
8073Regard as an integer and print it as a character constant. This
8074prints both the numerical value and its character representation. The
8075character representation is replaced with the octal escape @samp{\nnn}
8076for characters outside the 7-bit @sc{ascii} range.
c906108c 8077
ea37ba09
DJ
8078Without this format, @value{GDBN} displays @code{char},
8079@w{@code{unsigned char}}, and @w{@code{signed char}} data as character
8080constants. Single-byte members of vectors are displayed as integer
8081data.
8082
c906108c
SS
8083@item f
8084Regard the bits of the value as a floating point number and print
8085using typical floating point syntax.
ea37ba09
DJ
8086
8087@item s
8088@cindex printing strings
8089@cindex printing byte arrays
8090Regard as a string, if possible. With this format, pointers to single-byte
8091data are displayed as null-terminated strings and arrays of single-byte data
8092are displayed as fixed-length strings. Other values are displayed in their
8093natural types.
8094
8095Without this format, @value{GDBN} displays pointers to and arrays of
8096@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
8097strings. Single-byte members of a vector are displayed as an integer
8098array.
a6bac58e
TT
8099
8100@item r
8101@cindex raw printing
8102Print using the @samp{raw} formatting. By default, @value{GDBN} will
78e2826b
TT
8103use a Python-based pretty-printer, if one is available (@pxref{Pretty
8104Printing}). This typically results in a higher-level display of the
8105value's contents. The @samp{r} format bypasses any Python
8106pretty-printer which might exist.
c906108c
SS
8107@end table
8108
8109For example, to print the program counter in hex (@pxref{Registers}), type
8110
474c8240 8111@smallexample
c906108c 8112p/x $pc
474c8240 8113@end smallexample
c906108c
SS
8114
8115@noindent
8116Note that no space is required before the slash; this is because command
8117names in @value{GDBN} cannot contain a slash.
8118
8119To reprint the last value in the value history with a different format,
8120you can use the @code{print} command with just a format and no
8121expression. For example, @samp{p/x} reprints the last value in hex.
8122
6d2ebf8b 8123@node Memory
79a6e687 8124@section Examining Memory
c906108c
SS
8125
8126You can use the command @code{x} (for ``examine'') to examine memory in
8127any of several formats, independently of your program's data types.
8128
8129@cindex examining memory
8130@table @code
41afff9a 8131@kindex x @r{(examine memory)}
c906108c
SS
8132@item x/@var{nfu} @var{addr}
8133@itemx x @var{addr}
8134@itemx x
8135Use the @code{x} command to examine memory.
8136@end table
8137
8138@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
8139much memory to display and how to format it; @var{addr} is an
8140expression giving the address where you want to start displaying memory.
8141If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
8142Several commands set convenient defaults for @var{addr}.
8143
8144@table @r
8145@item @var{n}, the repeat count
8146The repeat count is a decimal integer; the default is 1. It specifies
8147how much memory (counting by units @var{u}) to display.
8148@c This really is **decimal**; unaffected by 'set radix' as of GDB
8149@c 4.1.2.
8150
8151@item @var{f}, the display format
51274035
EZ
8152The display format is one of the formats used by @code{print}
8153(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c},
ea37ba09
DJ
8154@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions).
8155The default is @samp{x} (hexadecimal) initially. The default changes
8156each time you use either @code{x} or @code{print}.
c906108c
SS
8157
8158@item @var{u}, the unit size
8159The unit size is any of
8160
8161@table @code
8162@item b
8163Bytes.
8164@item h
8165Halfwords (two bytes).
8166@item w
8167Words (four bytes). This is the initial default.
8168@item g
8169Giant words (eight bytes).
8170@end table
8171
8172Each time you specify a unit size with @code{x}, that size becomes the
9a22f0d0
PM
8173default unit the next time you use @code{x}. For the @samp{i} format,
8174the unit size is ignored and is normally not written. For the @samp{s} format,
8175the unit size defaults to @samp{b}, unless it is explicitly given.
8176Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display
817732-bit strings. The next use of @kbd{x /s} will again display 8-bit strings.
8178Note that the results depend on the programming language of the
8179current compilation unit. If the language is C, the @samp{s}
8180modifier will use the UTF-16 encoding while @samp{w} will use
8181UTF-32. The encoding is set by the programming language and cannot
8182be altered.
c906108c
SS
8183
8184@item @var{addr}, starting display address
8185@var{addr} is the address where you want @value{GDBN} to begin displaying
8186memory. The expression need not have a pointer value (though it may);
8187it is always interpreted as an integer address of a byte of memory.
8188@xref{Expressions, ,Expressions}, for more information on expressions. The default for
8189@var{addr} is usually just after the last address examined---but several
8190other commands also set the default address: @code{info breakpoints} (to
8191the address of the last breakpoint listed), @code{info line} (to the
8192starting address of a line), and @code{print} (if you use it to display
8193a value from memory).
8194@end table
8195
8196For example, @samp{x/3uh 0x54320} is a request to display three halfwords
8197(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
8198starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
8199words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 8200@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
8201
8202Since the letters indicating unit sizes are all distinct from the
8203letters specifying output formats, you do not have to remember whether
8204unit size or format comes first; either order works. The output
8205specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
8206(However, the count @var{n} must come first; @samp{wx4} does not work.)
8207
8208Even though the unit size @var{u} is ignored for the formats @samp{s}
8209and @samp{i}, you might still want to use a count @var{n}; for example,
8210@samp{3i} specifies that you want to see three machine instructions,
a4642986
MR
8211including any operands. For convenience, especially when used with
8212the @code{display} command, the @samp{i} format also prints branch delay
8213slot instructions, if any, beyond the count specified, which immediately
8214follow the last instruction that is within the count. The command
8215@code{disassemble} gives an alternative way of inspecting machine
8216instructions; see @ref{Machine Code,,Source and Machine Code}.
c906108c
SS
8217
8218All the defaults for the arguments to @code{x} are designed to make it
8219easy to continue scanning memory with minimal specifications each time
8220you use @code{x}. For example, after you have inspected three machine
8221instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
8222with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
8223the repeat count @var{n} is used again; the other arguments default as
8224for successive uses of @code{x}.
8225
2b28d209
PP
8226When examining machine instructions, the instruction at current program
8227counter is shown with a @code{=>} marker. For example:
8228
8229@smallexample
8230(@value{GDBP}) x/5i $pc-6
8231 0x804837f <main+11>: mov %esp,%ebp
8232 0x8048381 <main+13>: push %ecx
8233 0x8048382 <main+14>: sub $0x4,%esp
8234=> 0x8048385 <main+17>: movl $0x8048460,(%esp)
8235 0x804838c <main+24>: call 0x80482d4 <puts@@plt>
8236@end smallexample
8237
c906108c
SS
8238@cindex @code{$_}, @code{$__}, and value history
8239The addresses and contents printed by the @code{x} command are not saved
8240in the value history because there is often too much of them and they
8241would get in the way. Instead, @value{GDBN} makes these values available for
8242subsequent use in expressions as values of the convenience variables
8243@code{$_} and @code{$__}. After an @code{x} command, the last address
8244examined is available for use in expressions in the convenience variable
8245@code{$_}. The contents of that address, as examined, are available in
8246the convenience variable @code{$__}.
8247
8248If the @code{x} command has a repeat count, the address and contents saved
8249are from the last memory unit printed; this is not the same as the last
8250address printed if several units were printed on the last line of output.
8251
09d4efe1
EZ
8252@cindex remote memory comparison
8253@cindex verify remote memory image
8254When you are debugging a program running on a remote target machine
ea35711c 8255(@pxref{Remote Debugging}), you may wish to verify the program's image in the
09d4efe1
EZ
8256remote machine's memory against the executable file you downloaded to
8257the target. The @code{compare-sections} command is provided for such
8258situations.
8259
8260@table @code
8261@kindex compare-sections
8262@item compare-sections @r{[}@var{section-name}@r{]}
8263Compare the data of a loadable section @var{section-name} in the
8264executable file of the program being debugged with the same section in
8265the remote machine's memory, and report any mismatches. With no
8266arguments, compares all loadable sections. This command's
8267availability depends on the target's support for the @code{"qCRC"}
8268remote request.
8269@end table
8270
6d2ebf8b 8271@node Auto Display
79a6e687 8272@section Automatic Display
c906108c
SS
8273@cindex automatic display
8274@cindex display of expressions
8275
8276If you find that you want to print the value of an expression frequently
8277(to see how it changes), you might want to add it to the @dfn{automatic
8278display list} so that @value{GDBN} prints its value each time your program stops.
8279Each expression added to the list is given a number to identify it;
8280to remove an expression from the list, you specify that number.
8281The automatic display looks like this:
8282
474c8240 8283@smallexample
c906108c
SS
82842: foo = 38
82853: bar[5] = (struct hack *) 0x3804
474c8240 8286@end smallexample
c906108c
SS
8287
8288@noindent
8289This display shows item numbers, expressions and their current values. As with
8290displays you request manually using @code{x} or @code{print}, you can
8291specify the output format you prefer; in fact, @code{display} decides
ea37ba09
DJ
8292whether to use @code{print} or @code{x} depending your format
8293specification---it uses @code{x} if you specify either the @samp{i}
8294or @samp{s} format, or a unit size; otherwise it uses @code{print}.
c906108c
SS
8295
8296@table @code
8297@kindex display
d4f3574e
SS
8298@item display @var{expr}
8299Add the expression @var{expr} to the list of expressions to display
c906108c
SS
8300each time your program stops. @xref{Expressions, ,Expressions}.
8301
8302@code{display} does not repeat if you press @key{RET} again after using it.
8303
d4f3574e 8304@item display/@var{fmt} @var{expr}
c906108c 8305For @var{fmt} specifying only a display format and not a size or
d4f3574e 8306count, add the expression @var{expr} to the auto-display list but
c906108c 8307arrange to display it each time in the specified format @var{fmt}.
79a6e687 8308@xref{Output Formats,,Output Formats}.
c906108c
SS
8309
8310@item display/@var{fmt} @var{addr}
8311For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
8312number of units, add the expression @var{addr} as a memory address to
8313be examined each time your program stops. Examining means in effect
79a6e687 8314doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}.
c906108c
SS
8315@end table
8316
8317For example, @samp{display/i $pc} can be helpful, to see the machine
8318instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 8319is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
8320
8321@table @code
8322@kindex delete display
8323@kindex undisplay
8324@item undisplay @var{dnums}@dots{}
8325@itemx delete display @var{dnums}@dots{}
c9174737
PA
8326Remove items from the list of expressions to display. Specify the
8327numbers of the displays that you want affected with the command
8328argument @var{dnums}. It can be a single display number, one of the
8329numbers shown in the first field of the @samp{info display} display;
8330or it could be a range of display numbers, as in @code{2-4}.
c906108c
SS
8331
8332@code{undisplay} does not repeat if you press @key{RET} after using it.
8333(Otherwise you would just get the error @samp{No display number @dots{}}.)
8334
8335@kindex disable display
8336@item disable display @var{dnums}@dots{}
8337Disable the display of item numbers @var{dnums}. A disabled display
8338item is not printed automatically, but is not forgotten. It may be
c9174737
PA
8339enabled again later. Specify the numbers of the displays that you
8340want affected with the command argument @var{dnums}. It can be a
8341single display number, one of the numbers shown in the first field of
8342the @samp{info display} display; or it could be a range of display
8343numbers, as in @code{2-4}.
c906108c
SS
8344
8345@kindex enable display
8346@item enable display @var{dnums}@dots{}
8347Enable display of item numbers @var{dnums}. It becomes effective once
8348again in auto display of its expression, until you specify otherwise.
c9174737
PA
8349Specify the numbers of the displays that you want affected with the
8350command argument @var{dnums}. It can be a single display number, one
8351of the numbers shown in the first field of the @samp{info display}
8352display; or it could be a range of display numbers, as in @code{2-4}.
c906108c
SS
8353
8354@item display
8355Display the current values of the expressions on the list, just as is
8356done when your program stops.
8357
8358@kindex info display
8359@item info display
8360Print the list of expressions previously set up to display
8361automatically, each one with its item number, but without showing the
8362values. This includes disabled expressions, which are marked as such.
8363It also includes expressions which would not be displayed right now
8364because they refer to automatic variables not currently available.
8365@end table
8366
15387254 8367@cindex display disabled out of scope
c906108c
SS
8368If a display expression refers to local variables, then it does not make
8369sense outside the lexical context for which it was set up. Such an
8370expression is disabled when execution enters a context where one of its
8371variables is not defined. For example, if you give the command
8372@code{display last_char} while inside a function with an argument
8373@code{last_char}, @value{GDBN} displays this argument while your program
8374continues to stop inside that function. When it stops elsewhere---where
8375there is no variable @code{last_char}---the display is disabled
8376automatically. The next time your program stops where @code{last_char}
8377is meaningful, you can enable the display expression once again.
8378
6d2ebf8b 8379@node Print Settings
79a6e687 8380@section Print Settings
c906108c
SS
8381
8382@cindex format options
8383@cindex print settings
8384@value{GDBN} provides the following ways to control how arrays, structures,
8385and symbols are printed.
8386
8387@noindent
8388These settings are useful for debugging programs in any language:
8389
8390@table @code
4644b6e3 8391@kindex set print
c906108c
SS
8392@item set print address
8393@itemx set print address on
4644b6e3 8394@cindex print/don't print memory addresses
c906108c
SS
8395@value{GDBN} prints memory addresses showing the location of stack
8396traces, structure values, pointer values, breakpoints, and so forth,
8397even when it also displays the contents of those addresses. The default
8398is @code{on}. For example, this is what a stack frame display looks like with
8399@code{set print address on}:
8400
8401@smallexample
8402@group
8403(@value{GDBP}) f
8404#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
8405 at input.c:530
8406530 if (lquote != def_lquote)
8407@end group
8408@end smallexample
8409
8410@item set print address off
8411Do not print addresses when displaying their contents. For example,
8412this is the same stack frame displayed with @code{set print address off}:
8413
8414@smallexample
8415@group
8416(@value{GDBP}) set print addr off
8417(@value{GDBP}) f
8418#0 set_quotes (lq="<<", rq=">>") at input.c:530
8419530 if (lquote != def_lquote)
8420@end group
8421@end smallexample
8422
8423You can use @samp{set print address off} to eliminate all machine
8424dependent displays from the @value{GDBN} interface. For example, with
8425@code{print address off}, you should get the same text for backtraces on
8426all machines---whether or not they involve pointer arguments.
8427
4644b6e3 8428@kindex show print
c906108c
SS
8429@item show print address
8430Show whether or not addresses are to be printed.
8431@end table
8432
8433When @value{GDBN} prints a symbolic address, it normally prints the
8434closest earlier symbol plus an offset. If that symbol does not uniquely
8435identify the address (for example, it is a name whose scope is a single
8436source file), you may need to clarify. One way to do this is with
8437@code{info line}, for example @samp{info line *0x4537}. Alternately,
8438you can set @value{GDBN} to print the source file and line number when
8439it prints a symbolic address:
8440
8441@table @code
c906108c 8442@item set print symbol-filename on
9c16f35a
EZ
8443@cindex source file and line of a symbol
8444@cindex symbol, source file and line
c906108c
SS
8445Tell @value{GDBN} to print the source file name and line number of a
8446symbol in the symbolic form of an address.
8447
8448@item set print symbol-filename off
8449Do not print source file name and line number of a symbol. This is the
8450default.
8451
c906108c
SS
8452@item show print symbol-filename
8453Show whether or not @value{GDBN} will print the source file name and
8454line number of a symbol in the symbolic form of an address.
8455@end table
8456
8457Another situation where it is helpful to show symbol filenames and line
8458numbers is when disassembling code; @value{GDBN} shows you the line
8459number and source file that corresponds to each instruction.
8460
8461Also, you may wish to see the symbolic form only if the address being
8462printed is reasonably close to the closest earlier symbol:
8463
8464@table @code
c906108c 8465@item set print max-symbolic-offset @var{max-offset}
4644b6e3 8466@cindex maximum value for offset of closest symbol
c906108c
SS
8467Tell @value{GDBN} to only display the symbolic form of an address if the
8468offset between the closest earlier symbol and the address is less than
5d161b24 8469@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
8470to always print the symbolic form of an address if any symbol precedes it.
8471
c906108c
SS
8472@item show print max-symbolic-offset
8473Ask how large the maximum offset is that @value{GDBN} prints in a
8474symbolic address.
8475@end table
8476
8477@cindex wild pointer, interpreting
8478@cindex pointer, finding referent
8479If you have a pointer and you are not sure where it points, try
8480@samp{set print symbol-filename on}. Then you can determine the name
8481and source file location of the variable where it points, using
8482@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
8483For example, here @value{GDBN} shows that a variable @code{ptt} points
8484at another variable @code{t}, defined in @file{hi2.c}:
8485
474c8240 8486@smallexample
c906108c
SS
8487(@value{GDBP}) set print symbol-filename on
8488(@value{GDBP}) p/a ptt
8489$4 = 0xe008 <t in hi2.c>
474c8240 8490@end smallexample
c906108c
SS
8491
8492@quotation
8493@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
8494does not show the symbol name and filename of the referent, even with
8495the appropriate @code{set print} options turned on.
8496@end quotation
8497
9cb709b6
TT
8498You can also enable @samp{/a}-like formatting all the time using
8499@samp{set print symbol on}:
8500
8501@table @code
8502@item set print symbol on
8503Tell @value{GDBN} to print the symbol corresponding to an address, if
8504one exists.
8505
8506@item set print symbol off
8507Tell @value{GDBN} not to print the symbol corresponding to an
8508address. In this mode, @value{GDBN} will still print the symbol
8509corresponding to pointers to functions. This is the default.
8510
8511@item show print symbol
8512Show whether @value{GDBN} will display the symbol corresponding to an
8513address.
8514@end table
8515
c906108c
SS
8516Other settings control how different kinds of objects are printed:
8517
8518@table @code
c906108c
SS
8519@item set print array
8520@itemx set print array on
4644b6e3 8521@cindex pretty print arrays
c906108c
SS
8522Pretty print arrays. This format is more convenient to read,
8523but uses more space. The default is off.
8524
8525@item set print array off
8526Return to compressed format for arrays.
8527
c906108c
SS
8528@item show print array
8529Show whether compressed or pretty format is selected for displaying
8530arrays.
8531
3c9c013a
JB
8532@cindex print array indexes
8533@item set print array-indexes
8534@itemx set print array-indexes on
8535Print the index of each element when displaying arrays. May be more
8536convenient to locate a given element in the array or quickly find the
8537index of a given element in that printed array. The default is off.
8538
8539@item set print array-indexes off
8540Stop printing element indexes when displaying arrays.
8541
8542@item show print array-indexes
8543Show whether the index of each element is printed when displaying
8544arrays.
8545
c906108c 8546@item set print elements @var{number-of-elements}
4644b6e3 8547@cindex number of array elements to print
9c16f35a 8548@cindex limit on number of printed array elements
c906108c
SS
8549Set a limit on how many elements of an array @value{GDBN} will print.
8550If @value{GDBN} is printing a large array, it stops printing after it has
8551printed the number of elements set by the @code{set print elements} command.
8552This limit also applies to the display of strings.
d4f3574e 8553When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
8554Setting @var{number-of-elements} to zero means that the printing is unlimited.
8555
c906108c
SS
8556@item show print elements
8557Display the number of elements of a large array that @value{GDBN} will print.
8558If the number is 0, then the printing is unlimited.
8559
b4740add 8560@item set print frame-arguments @var{value}
a0381d3a 8561@kindex set print frame-arguments
b4740add
JB
8562@cindex printing frame argument values
8563@cindex print all frame argument values
8564@cindex print frame argument values for scalars only
8565@cindex do not print frame argument values
8566This command allows to control how the values of arguments are printed
8567when the debugger prints a frame (@pxref{Frames}). The possible
8568values are:
8569
8570@table @code
8571@item all
4f5376b2 8572The values of all arguments are printed.
b4740add
JB
8573
8574@item scalars
8575Print the value of an argument only if it is a scalar. The value of more
8576complex arguments such as arrays, structures, unions, etc, is replaced
4f5376b2
JB
8577by @code{@dots{}}. This is the default. Here is an example where
8578only scalar arguments are shown:
b4740add
JB
8579
8580@smallexample
8581#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green)
8582 at frame-args.c:23
8583@end smallexample
8584
8585@item none
8586None of the argument values are printed. Instead, the value of each argument
8587is replaced by @code{@dots{}}. In this case, the example above now becomes:
8588
8589@smallexample
8590#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
8591 at frame-args.c:23
8592@end smallexample
8593@end table
8594
4f5376b2
JB
8595By default, only scalar arguments are printed. This command can be used
8596to configure the debugger to print the value of all arguments, regardless
8597of their type. However, it is often advantageous to not print the value
8598of more complex parameters. For instance, it reduces the amount of
8599information printed in each frame, making the backtrace more readable.
8600Also, it improves performance when displaying Ada frames, because
8601the computation of large arguments can sometimes be CPU-intensive,
8602especially in large applications. Setting @code{print frame-arguments}
8603to @code{scalars} (the default) or @code{none} avoids this computation,
8604thus speeding up the display of each Ada frame.
b4740add
JB
8605
8606@item show print frame-arguments
8607Show how the value of arguments should be displayed when printing a frame.
8608
36b11add 8609@anchor{set print entry-values}
e18b2753
JK
8610@item set print entry-values @var{value}
8611@kindex set print entry-values
8612Set printing of frame argument values at function entry. In some cases
8613@value{GDBN} can determine the value of function argument which was passed by
8614the function caller, even if the value was modified inside the called function
8615and therefore is different. With optimized code, the current value could be
8616unavailable, but the entry value may still be known.
8617
8618The default value is @code{default} (see below for its description). Older
8619@value{GDBN} behaved as with the setting @code{no}. Compilers not supporting
8620this feature will behave in the @code{default} setting the same way as with the
8621@code{no} setting.
8622
8623This functionality is currently supported only by DWARF 2 debugging format and
8624the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With
8625@value{NGCC}, you need to specify @option{-O -g} during compilation, to get
8626this information.
8627
8628The @var{value} parameter can be one of the following:
8629
8630@table @code
8631@item no
8632Print only actual parameter values, never print values from function entry
8633point.
8634@smallexample
8635#0 equal (val=5)
8636#0 different (val=6)
8637#0 lost (val=<optimized out>)
8638#0 born (val=10)
8639#0 invalid (val=<optimized out>)
8640@end smallexample
8641
8642@item only
8643Print only parameter values from function entry point. The actual parameter
8644values are never printed.
8645@smallexample
8646#0 equal (val@@entry=5)
8647#0 different (val@@entry=5)
8648#0 lost (val@@entry=5)
8649#0 born (val@@entry=<optimized out>)
8650#0 invalid (val@@entry=<optimized out>)
8651@end smallexample
8652
8653@item preferred
8654Print only parameter values from function entry point. If value from function
8655entry point is not known while the actual value is known, print the actual
8656value for such parameter.
8657@smallexample
8658#0 equal (val@@entry=5)
8659#0 different (val@@entry=5)
8660#0 lost (val@@entry=5)
8661#0 born (val=10)
8662#0 invalid (val@@entry=<optimized out>)
8663@end smallexample
8664
8665@item if-needed
8666Print actual parameter values. If actual parameter value is not known while
8667value from function entry point is known, print the entry point value for such
8668parameter.
8669@smallexample
8670#0 equal (val=5)
8671#0 different (val=6)
8672#0 lost (val@@entry=5)
8673#0 born (val=10)
8674#0 invalid (val=<optimized out>)
8675@end smallexample
8676
8677@item both
8678Always print both the actual parameter value and its value from function entry
8679point, even if values of one or both are not available due to compiler
8680optimizations.
8681@smallexample
8682#0 equal (val=5, val@@entry=5)
8683#0 different (val=6, val@@entry=5)
8684#0 lost (val=<optimized out>, val@@entry=5)
8685#0 born (val=10, val@@entry=<optimized out>)
8686#0 invalid (val=<optimized out>, val@@entry=<optimized out>)
8687@end smallexample
8688
8689@item compact
8690Print the actual parameter value if it is known and also its value from
8691function entry point if it is known. If neither is known, print for the actual
8692value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both
8693values are known and identical, print the shortened
8694@code{param=param@@entry=VALUE} notation.
8695@smallexample
8696#0 equal (val=val@@entry=5)
8697#0 different (val=6, val@@entry=5)
8698#0 lost (val@@entry=5)
8699#0 born (val=10)
8700#0 invalid (val=<optimized out>)
8701@end smallexample
8702
8703@item default
8704Always print the actual parameter value. Print also its value from function
8705entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and
8706if both values are known and identical, print the shortened
8707@code{param=param@@entry=VALUE} notation.
8708@smallexample
8709#0 equal (val=val@@entry=5)
8710#0 different (val=6, val@@entry=5)
8711#0 lost (val=<optimized out>, val@@entry=5)
8712#0 born (val=10)
8713#0 invalid (val=<optimized out>)
8714@end smallexample
8715@end table
8716
8717For analysis messages on possible failures of frame argument values at function
8718entry resolution see @ref{set debug entry-values}.
8719
8720@item show print entry-values
8721Show the method being used for printing of frame argument values at function
8722entry.
8723
9c16f35a
EZ
8724@item set print repeats
8725@cindex repeated array elements
8726Set the threshold for suppressing display of repeated array
d3e8051b 8727elements. When the number of consecutive identical elements of an
9c16f35a
EZ
8728array exceeds the threshold, @value{GDBN} prints the string
8729@code{"<repeats @var{n} times>"}, where @var{n} is the number of
8730identical repetitions, instead of displaying the identical elements
8731themselves. Setting the threshold to zero will cause all elements to
8732be individually printed. The default threshold is 10.
8733
8734@item show print repeats
8735Display the current threshold for printing repeated identical
8736elements.
8737
c906108c 8738@item set print null-stop
4644b6e3 8739@cindex @sc{null} elements in arrays
c906108c 8740Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 8741@sc{null} is encountered. This is useful when large arrays actually
c906108c 8742contain only short strings.
d4f3574e 8743The default is off.
c906108c 8744
9c16f35a
EZ
8745@item show print null-stop
8746Show whether @value{GDBN} stops printing an array on the first
8747@sc{null} character.
8748
c906108c 8749@item set print pretty on
9c16f35a
EZ
8750@cindex print structures in indented form
8751@cindex indentation in structure display
5d161b24 8752Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
8753per line, like this:
8754
8755@smallexample
8756@group
8757$1 = @{
8758 next = 0x0,
8759 flags = @{
8760 sweet = 1,
8761 sour = 1
8762 @},
8763 meat = 0x54 "Pork"
8764@}
8765@end group
8766@end smallexample
8767
8768@item set print pretty off
8769Cause @value{GDBN} to print structures in a compact format, like this:
8770
8771@smallexample
8772@group
8773$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
8774meat = 0x54 "Pork"@}
8775@end group
8776@end smallexample
8777
8778@noindent
8779This is the default format.
8780
c906108c
SS
8781@item show print pretty
8782Show which format @value{GDBN} is using to print structures.
8783
c906108c 8784@item set print sevenbit-strings on
4644b6e3
EZ
8785@cindex eight-bit characters in strings
8786@cindex octal escapes in strings
c906108c
SS
8787Print using only seven-bit characters; if this option is set,
8788@value{GDBN} displays any eight-bit characters (in strings or
8789character values) using the notation @code{\}@var{nnn}. This setting is
8790best if you are working in English (@sc{ascii}) and you use the
8791high-order bit of characters as a marker or ``meta'' bit.
8792
8793@item set print sevenbit-strings off
8794Print full eight-bit characters. This allows the use of more
8795international character sets, and is the default.
8796
c906108c
SS
8797@item show print sevenbit-strings
8798Show whether or not @value{GDBN} is printing only seven-bit characters.
8799
c906108c 8800@item set print union on
4644b6e3 8801@cindex unions in structures, printing
9c16f35a
EZ
8802Tell @value{GDBN} to print unions which are contained in structures
8803and other unions. This is the default setting.
c906108c
SS
8804
8805@item set print union off
9c16f35a
EZ
8806Tell @value{GDBN} not to print unions which are contained in
8807structures and other unions. @value{GDBN} will print @code{"@{...@}"}
8808instead.
c906108c 8809
c906108c
SS
8810@item show print union
8811Ask @value{GDBN} whether or not it will print unions which are contained in
9c16f35a 8812structures and other unions.
c906108c
SS
8813
8814For example, given the declarations
8815
8816@smallexample
8817typedef enum @{Tree, Bug@} Species;
8818typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 8819typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
8820 Bug_forms;
8821
8822struct thing @{
8823 Species it;
8824 union @{
8825 Tree_forms tree;
8826 Bug_forms bug;
8827 @} form;
8828@};
8829
8830struct thing foo = @{Tree, @{Acorn@}@};
8831@end smallexample
8832
8833@noindent
8834with @code{set print union on} in effect @samp{p foo} would print
8835
8836@smallexample
8837$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
8838@end smallexample
8839
8840@noindent
8841and with @code{set print union off} in effect it would print
8842
8843@smallexample
8844$1 = @{it = Tree, form = @{...@}@}
8845@end smallexample
9c16f35a
EZ
8846
8847@noindent
8848@code{set print union} affects programs written in C-like languages
8849and in Pascal.
c906108c
SS
8850@end table
8851
c906108c
SS
8852@need 1000
8853@noindent
b37052ae 8854These settings are of interest when debugging C@t{++} programs:
c906108c
SS
8855
8856@table @code
4644b6e3 8857@cindex demangling C@t{++} names
c906108c
SS
8858@item set print demangle
8859@itemx set print demangle on
b37052ae 8860Print C@t{++} names in their source form rather than in the encoded
c906108c 8861(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 8862linkage. The default is on.
c906108c 8863
c906108c 8864@item show print demangle
b37052ae 8865Show whether C@t{++} names are printed in mangled or demangled form.
c906108c 8866
c906108c
SS
8867@item set print asm-demangle
8868@itemx set print asm-demangle on
b37052ae 8869Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
8870in assembler code printouts such as instruction disassemblies.
8871The default is off.
8872
c906108c 8873@item show print asm-demangle
b37052ae 8874Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
8875or demangled form.
8876
b37052ae
EZ
8877@cindex C@t{++} symbol decoding style
8878@cindex symbol decoding style, C@t{++}
a8f24a35 8879@kindex set demangle-style
c906108c
SS
8880@item set demangle-style @var{style}
8881Choose among several encoding schemes used by different compilers to
b37052ae 8882represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
8883
8884@table @code
8885@item auto
8886Allow @value{GDBN} to choose a decoding style by inspecting your program.
8887
8888@item gnu
b37052ae 8889Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c 8890This is the default.
c906108c
SS
8891
8892@item hp
b37052ae 8893Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
8894
8895@item lucid
b37052ae 8896Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
8897
8898@item arm
b37052ae 8899Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
8900@strong{Warning:} this setting alone is not sufficient to allow
8901debugging @code{cfront}-generated executables. @value{GDBN} would
8902require further enhancement to permit that.
8903
8904@end table
8905If you omit @var{style}, you will see a list of possible formats.
8906
c906108c 8907@item show demangle-style
b37052ae 8908Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c 8909
c906108c
SS
8910@item set print object
8911@itemx set print object on
4644b6e3 8912@cindex derived type of an object, printing
9c16f35a 8913@cindex display derived types
c906108c
SS
8914When displaying a pointer to an object, identify the @emph{actual}
8915(derived) type of the object rather than the @emph{declared} type, using
625c0d47
TT
8916the virtual function table. Note that the virtual function table is
8917required---this feature can only work for objects that have run-time
8918type identification; a single virtual method in the object's declared
8264ba82
AG
8919type is sufficient. Note that this setting is also taken into account when
8920working with variable objects via MI (@pxref{GDB/MI}).
c906108c
SS
8921
8922@item set print object off
8923Display only the declared type of objects, without reference to the
8924virtual function table. This is the default setting.
8925
c906108c
SS
8926@item show print object
8927Show whether actual, or declared, object types are displayed.
8928
c906108c
SS
8929@item set print static-members
8930@itemx set print static-members on
4644b6e3 8931@cindex static members of C@t{++} objects
b37052ae 8932Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
8933
8934@item set print static-members off
b37052ae 8935Do not print static members when displaying a C@t{++} object.
c906108c 8936
c906108c 8937@item show print static-members
9c16f35a
EZ
8938Show whether C@t{++} static members are printed or not.
8939
8940@item set print pascal_static-members
8941@itemx set print pascal_static-members on
d3e8051b
EZ
8942@cindex static members of Pascal objects
8943@cindex Pascal objects, static members display
9c16f35a
EZ
8944Print static members when displaying a Pascal object. The default is on.
8945
8946@item set print pascal_static-members off
8947Do not print static members when displaying a Pascal object.
8948
8949@item show print pascal_static-members
8950Show whether Pascal static members are printed or not.
c906108c
SS
8951
8952@c These don't work with HP ANSI C++ yet.
c906108c
SS
8953@item set print vtbl
8954@itemx set print vtbl on
4644b6e3 8955@cindex pretty print C@t{++} virtual function tables
9c16f35a
EZ
8956@cindex virtual functions (C@t{++}) display
8957@cindex VTBL display
b37052ae 8958Pretty print C@t{++} virtual function tables. The default is off.
c906108c 8959(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 8960ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
8961
8962@item set print vtbl off
b37052ae 8963Do not pretty print C@t{++} virtual function tables.
c906108c 8964
c906108c 8965@item show print vtbl
b37052ae 8966Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 8967@end table
c906108c 8968
4c374409
JK
8969@node Pretty Printing
8970@section Pretty Printing
8971
8972@value{GDBN} provides a mechanism to allow pretty-printing of values using
8973Python code. It greatly simplifies the display of complex objects. This
8974mechanism works for both MI and the CLI.
8975
7b51bc51
DE
8976@menu
8977* Pretty-Printer Introduction:: Introduction to pretty-printers
8978* Pretty-Printer Example:: An example pretty-printer
8979* Pretty-Printer Commands:: Pretty-printer commands
8980@end menu
8981
8982@node Pretty-Printer Introduction
8983@subsection Pretty-Printer Introduction
8984
8985When @value{GDBN} prints a value, it first sees if there is a pretty-printer
8986registered for the value. If there is then @value{GDBN} invokes the
8987pretty-printer to print the value. Otherwise the value is printed normally.
8988
8989Pretty-printers are normally named. This makes them easy to manage.
8990The @samp{info pretty-printer} command will list all the installed
8991pretty-printers with their names.
8992If a pretty-printer can handle multiple data types, then its
8993@dfn{subprinters} are the printers for the individual data types.
8994Each such subprinter has its own name.
4e04c971 8995The format of the name is @var{printer-name};@var{subprinter-name}.
7b51bc51
DE
8996
8997Pretty-printers are installed by @dfn{registering} them with @value{GDBN}.
8998Typically they are automatically loaded and registered when the corresponding
8999debug information is loaded, thus making them available without having to
9000do anything special.
9001
9002There are three places where a pretty-printer can be registered.
9003
9004@itemize @bullet
9005@item
9006Pretty-printers registered globally are available when debugging
9007all inferiors.
9008
9009@item
9010Pretty-printers registered with a program space are available only
9011when debugging that program.
9012@xref{Progspaces In Python}, for more details on program spaces in Python.
9013
9014@item
9015Pretty-printers registered with an objfile are loaded and unloaded
9016with the corresponding objfile (e.g., shared library).
9017@xref{Objfiles In Python}, for more details on objfiles in Python.
9018@end itemize
9019
9020@xref{Selecting Pretty-Printers}, for further information on how
9021pretty-printers are selected,
9022
9023@xref{Writing a Pretty-Printer}, for implementing pretty printers
9024for new types.
9025
9026@node Pretty-Printer Example
9027@subsection Pretty-Printer Example
9028
9029Here is how a C@t{++} @code{std::string} looks without a pretty-printer:
4c374409
JK
9030
9031@smallexample
9032(@value{GDBP}) print s
9033$1 = @{
9034 static npos = 4294967295,
9035 _M_dataplus = @{
9036 <std::allocator<char>> = @{
9037 <__gnu_cxx::new_allocator<char>> = @{
9038 <No data fields>@}, <No data fields>
9039 @},
9040 members of std::basic_string<char, std::char_traits<char>,
9041 std::allocator<char> >::_Alloc_hider:
9042 _M_p = 0x804a014 "abcd"
9043 @}
9044@}
9045@end smallexample
9046
9047With a pretty-printer for @code{std::string} only the contents are printed:
9048
9049@smallexample
9050(@value{GDBP}) print s
9051$2 = "abcd"
9052@end smallexample
9053
7b51bc51
DE
9054@node Pretty-Printer Commands
9055@subsection Pretty-Printer Commands
9056@cindex pretty-printer commands
9057
9058@table @code
9059@kindex info pretty-printer
9060@item info pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9061Print the list of installed pretty-printers.
9062This includes disabled pretty-printers, which are marked as such.
9063
9064@var{object-regexp} is a regular expression matching the objects
9065whose pretty-printers to list.
9066Objects can be @code{global}, the program space's file
9067(@pxref{Progspaces In Python}),
9068and the object files within that program space (@pxref{Objfiles In Python}).
9069@xref{Selecting Pretty-Printers}, for details on how @value{GDBN}
9070looks up a printer from these three objects.
9071
9072@var{name-regexp} is a regular expression matching the name of the printers
9073to list.
9074
9075@kindex disable pretty-printer
9076@item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9077Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
9078A disabled pretty-printer is not forgotten, it may be enabled again later.
9079
9080@kindex enable pretty-printer
9081@item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9082Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
9083@end table
9084
9085Example:
9086
9087Suppose we have three pretty-printers installed: one from library1.so
9088named @code{foo} that prints objects of type @code{foo}, and
9089another from library2.so named @code{bar} that prints two types of objects,
9090@code{bar1} and @code{bar2}.
9091
9092@smallexample
9093(gdb) info pretty-printer
9094library1.so:
9095 foo
9096library2.so:
9097 bar
9098 bar1
9099 bar2
9100(gdb) info pretty-printer library2
9101library2.so:
9102 bar
9103 bar1
9104 bar2
9105(gdb) disable pretty-printer library1
91061 printer disabled
91072 of 3 printers enabled
9108(gdb) info pretty-printer
9109library1.so:
9110 foo [disabled]
9111library2.so:
9112 bar
9113 bar1
9114 bar2
9115(gdb) disable pretty-printer library2 bar:bar1
91161 printer disabled
91171 of 3 printers enabled
9118(gdb) info pretty-printer library2
9119library1.so:
9120 foo [disabled]
9121library2.so:
9122 bar
9123 bar1 [disabled]
9124 bar2
9125(gdb) disable pretty-printer library2 bar
91261 printer disabled
91270 of 3 printers enabled
9128(gdb) info pretty-printer library2
9129library1.so:
9130 foo [disabled]
9131library2.so:
9132 bar [disabled]
9133 bar1 [disabled]
9134 bar2
9135@end smallexample
9136
9137Note that for @code{bar} the entire printer can be disabled,
9138as can each individual subprinter.
4c374409 9139
6d2ebf8b 9140@node Value History
79a6e687 9141@section Value History
c906108c
SS
9142
9143@cindex value history
9c16f35a 9144@cindex history of values printed by @value{GDBN}
5d161b24
DB
9145Values printed by the @code{print} command are saved in the @value{GDBN}
9146@dfn{value history}. This allows you to refer to them in other expressions.
9147Values are kept until the symbol table is re-read or discarded
9148(for example with the @code{file} or @code{symbol-file} commands).
9149When the symbol table changes, the value history is discarded,
9150since the values may contain pointers back to the types defined in the
c906108c
SS
9151symbol table.
9152
9153@cindex @code{$}
9154@cindex @code{$$}
9155@cindex history number
9156The values printed are given @dfn{history numbers} by which you can
9157refer to them. These are successive integers starting with one.
9158@code{print} shows you the history number assigned to a value by
9159printing @samp{$@var{num} = } before the value; here @var{num} is the
9160history number.
9161
9162To refer to any previous value, use @samp{$} followed by the value's
9163history number. The way @code{print} labels its output is designed to
9164remind you of this. Just @code{$} refers to the most recent value in
9165the history, and @code{$$} refers to the value before that.
9166@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
9167is the value just prior to @code{$$}, @code{$$1} is equivalent to
9168@code{$$}, and @code{$$0} is equivalent to @code{$}.
9169
9170For example, suppose you have just printed a pointer to a structure and
9171want to see the contents of the structure. It suffices to type
9172
474c8240 9173@smallexample
c906108c 9174p *$
474c8240 9175@end smallexample
c906108c
SS
9176
9177If you have a chain of structures where the component @code{next} points
9178to the next one, you can print the contents of the next one with this:
9179
474c8240 9180@smallexample
c906108c 9181p *$.next
474c8240 9182@end smallexample
c906108c
SS
9183
9184@noindent
9185You can print successive links in the chain by repeating this
9186command---which you can do by just typing @key{RET}.
9187
9188Note that the history records values, not expressions. If the value of
9189@code{x} is 4 and you type these commands:
9190
474c8240 9191@smallexample
c906108c
SS
9192print x
9193set x=5
474c8240 9194@end smallexample
c906108c
SS
9195
9196@noindent
9197then the value recorded in the value history by the @code{print} command
9198remains 4 even though the value of @code{x} has changed.
9199
9200@table @code
9201@kindex show values
9202@item show values
9203Print the last ten values in the value history, with their item numbers.
9204This is like @samp{p@ $$9} repeated ten times, except that @code{show
9205values} does not change the history.
9206
9207@item show values @var{n}
9208Print ten history values centered on history item number @var{n}.
9209
9210@item show values +
9211Print ten history values just after the values last printed. If no more
9212values are available, @code{show values +} produces no display.
9213@end table
9214
9215Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
9216same effect as @samp{show values +}.
9217
6d2ebf8b 9218@node Convenience Vars
79a6e687 9219@section Convenience Variables
c906108c
SS
9220
9221@cindex convenience variables
9c16f35a 9222@cindex user-defined variables
c906108c
SS
9223@value{GDBN} provides @dfn{convenience variables} that you can use within
9224@value{GDBN} to hold on to a value and refer to it later. These variables
9225exist entirely within @value{GDBN}; they are not part of your program, and
9226setting a convenience variable has no direct effect on further execution
9227of your program. That is why you can use them freely.
9228
9229Convenience variables are prefixed with @samp{$}. Any name preceded by
9230@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 9231the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c 9232(Value history references, in contrast, are @emph{numbers} preceded
79a6e687 9233by @samp{$}. @xref{Value History, ,Value History}.)
c906108c
SS
9234
9235You can save a value in a convenience variable with an assignment
9236expression, just as you would set a variable in your program.
9237For example:
9238
474c8240 9239@smallexample
c906108c 9240set $foo = *object_ptr
474c8240 9241@end smallexample
c906108c
SS
9242
9243@noindent
9244would save in @code{$foo} the value contained in the object pointed to by
9245@code{object_ptr}.
9246
9247Using a convenience variable for the first time creates it, but its
9248value is @code{void} until you assign a new value. You can alter the
9249value with another assignment at any time.
9250
9251Convenience variables have no fixed types. You can assign a convenience
9252variable any type of value, including structures and arrays, even if
9253that variable already has a value of a different type. The convenience
9254variable, when used as an expression, has the type of its current value.
9255
9256@table @code
9257@kindex show convenience
f47f77df 9258@cindex show all user variables and functions
c906108c 9259@item show convenience
f47f77df
DE
9260Print a list of convenience variables used so far, and their values,
9261as well as a list of the convenience functions.
d4f3574e 9262Abbreviated @code{show conv}.
53e5f3cf
AS
9263
9264@kindex init-if-undefined
9265@cindex convenience variables, initializing
9266@item init-if-undefined $@var{variable} = @var{expression}
9267Set a convenience variable if it has not already been set. This is useful
9268for user-defined commands that keep some state. It is similar, in concept,
9269to using local static variables with initializers in C (except that
9270convenience variables are global). It can also be used to allow users to
9271override default values used in a command script.
9272
9273If the variable is already defined then the expression is not evaluated so
9274any side-effects do not occur.
c906108c
SS
9275@end table
9276
9277One of the ways to use a convenience variable is as a counter to be
9278incremented or a pointer to be advanced. For example, to print
9279a field from successive elements of an array of structures:
9280
474c8240 9281@smallexample
c906108c
SS
9282set $i = 0
9283print bar[$i++]->contents
474c8240 9284@end smallexample
c906108c 9285
d4f3574e
SS
9286@noindent
9287Repeat that command by typing @key{RET}.
c906108c
SS
9288
9289Some convenience variables are created automatically by @value{GDBN} and given
9290values likely to be useful.
9291
9292@table @code
41afff9a 9293@vindex $_@r{, convenience variable}
c906108c
SS
9294@item $_
9295The variable @code{$_} is automatically set by the @code{x} command to
79a6e687 9296the last address examined (@pxref{Memory, ,Examining Memory}). Other
c906108c
SS
9297commands which provide a default address for @code{x} to examine also
9298set @code{$_} to that address; these commands include @code{info line}
9299and @code{info breakpoint}. The type of @code{$_} is @code{void *}
9300except when set by the @code{x} command, in which case it is a pointer
9301to the type of @code{$__}.
9302
41afff9a 9303@vindex $__@r{, convenience variable}
c906108c
SS
9304@item $__
9305The variable @code{$__} is automatically set by the @code{x} command
9306to the value found in the last address examined. Its type is chosen
9307to match the format in which the data was printed.
9308
9309@item $_exitcode
41afff9a 9310@vindex $_exitcode@r{, convenience variable}
c906108c
SS
9311The variable @code{$_exitcode} is automatically set to the exit code when
9312the program being debugged terminates.
4aa995e1 9313
62e5f89c
SDJ
9314@item $_probe_argc
9315@itemx $_probe_arg0@dots{}$_probe_arg11
9316Arguments to a static probe. @xref{Static Probe Points}.
9317
0fb4aa4b
PA
9318@item $_sdata
9319@vindex $_sdata@r{, inspect, convenience variable}
9320The variable @code{$_sdata} contains extra collected static tracepoint
9321data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that
9322@code{$_sdata} could be empty, if not inspecting a trace buffer, or
9323if extra static tracepoint data has not been collected.
9324
4aa995e1
PA
9325@item $_siginfo
9326@vindex $_siginfo@r{, convenience variable}
ec7e75e7
PP
9327The variable @code{$_siginfo} contains extra signal information
9328(@pxref{extra signal information}). Note that @code{$_siginfo}
9329could be empty, if the application has not yet received any signals.
9330For example, it will be empty before you execute the @code{run} command.
711e434b
PM
9331
9332@item $_tlb
9333@vindex $_tlb@r{, convenience variable}
9334The variable @code{$_tlb} is automatically set when debugging
9335applications running on MS-Windows in native mode or connected to
9336gdbserver that supports the @code{qGetTIBAddr} request.
9337@xref{General Query Packets}.
9338This variable contains the address of the thread information block.
9339
c906108c
SS
9340@end table
9341
53a5351d
JM
9342On HP-UX systems, if you refer to a function or variable name that
9343begins with a dollar sign, @value{GDBN} searches for a user or system
9344name first, before it searches for a convenience variable.
c906108c 9345
a72c3253
DE
9346@node Convenience Funs
9347@section Convenience Functions
9348
bc3b79fd
TJB
9349@cindex convenience functions
9350@value{GDBN} also supplies some @dfn{convenience functions}. These
9351have a syntax similar to convenience variables. A convenience
9352function can be used in an expression just like an ordinary function;
9353however, a convenience function is implemented internally to
9354@value{GDBN}.
9355
a72c3253
DE
9356These functions require @value{GDBN} to be configured with
9357@code{Python} support.
9358
9359@table @code
9360
9361@item $_memeq(@var{buf1}, @var{buf2}, @var{length})
9362@findex $_memeq@r{, convenience function}
9363Returns one if the @var{length} bytes at the addresses given by
9364@var{buf1} and @var{buf2} are equal.
9365Otherwise it returns zero.
9366
9367@item $_regex(@var{str}, @var{regex})
9368@findex $_regex@r{, convenience function}
9369Returns one if the string @var{str} matches the regular expression
9370@var{regex}. Otherwise it returns zero.
9371The syntax of the regular expression is that specified by @code{Python}'s
9372regular expression support.
9373
9374@item $_streq(@var{str1}, @var{str2})
9375@findex $_streq@r{, convenience function}
9376Returns one if the strings @var{str1} and @var{str2} are equal.
9377Otherwise it returns zero.
9378
9379@item $_strlen(@var{str})
9380@findex $_strlen@r{, convenience function}
9381Returns the length of string @var{str}.
9382
9383@end table
9384
9385@value{GDBN} provides the ability to list and get help on
9386convenience functions.
9387
bc3b79fd
TJB
9388@table @code
9389@item help function
9390@kindex help function
9391@cindex show all convenience functions
9392Print a list of all convenience functions.
9393@end table
9394
6d2ebf8b 9395@node Registers
c906108c
SS
9396@section Registers
9397
9398@cindex registers
9399You can refer to machine register contents, in expressions, as variables
9400with names starting with @samp{$}. The names of registers are different
9401for each machine; use @code{info registers} to see the names used on
9402your machine.
9403
9404@table @code
9405@kindex info registers
9406@item info registers
9407Print the names and values of all registers except floating-point
c85508ee 9408and vector registers (in the selected stack frame).
c906108c
SS
9409
9410@kindex info all-registers
9411@cindex floating point registers
9412@item info all-registers
9413Print the names and values of all registers, including floating-point
c85508ee 9414and vector registers (in the selected stack frame).
c906108c
SS
9415
9416@item info registers @var{regname} @dots{}
9417Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
9418As discussed in detail below, register values are normally relative to
9419the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
9420the machine you are using, with or without the initial @samp{$}.
9421@end table
9422
e09f16f9
EZ
9423@cindex stack pointer register
9424@cindex program counter register
9425@cindex process status register
9426@cindex frame pointer register
9427@cindex standard registers
c906108c
SS
9428@value{GDBN} has four ``standard'' register names that are available (in
9429expressions) on most machines---whenever they do not conflict with an
9430architecture's canonical mnemonics for registers. The register names
9431@code{$pc} and @code{$sp} are used for the program counter register and
9432the stack pointer. @code{$fp} is used for a register that contains a
9433pointer to the current stack frame, and @code{$ps} is used for a
9434register that contains the processor status. For example,
9435you could print the program counter in hex with
9436
474c8240 9437@smallexample
c906108c 9438p/x $pc
474c8240 9439@end smallexample
c906108c
SS
9440
9441@noindent
9442or print the instruction to be executed next with
9443
474c8240 9444@smallexample
c906108c 9445x/i $pc
474c8240 9446@end smallexample
c906108c
SS
9447
9448@noindent
9449or add four to the stack pointer@footnote{This is a way of removing
9450one word from the stack, on machines where stacks grow downward in
9451memory (most machines, nowadays). This assumes that the innermost
9452stack frame is selected; setting @code{$sp} is not allowed when other
9453stack frames are selected. To pop entire frames off the stack,
9454regardless of machine architecture, use @code{return};
79a6e687 9455see @ref{Returning, ,Returning from a Function}.} with
c906108c 9456
474c8240 9457@smallexample
c906108c 9458set $sp += 4
474c8240 9459@end smallexample
c906108c
SS
9460
9461Whenever possible, these four standard register names are available on
9462your machine even though the machine has different canonical mnemonics,
9463so long as there is no conflict. The @code{info registers} command
9464shows the canonical names. For example, on the SPARC, @code{info
9465registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
9466can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
9467is an alias for the @sc{eflags} register.
c906108c
SS
9468
9469@value{GDBN} always considers the contents of an ordinary register as an
9470integer when the register is examined in this way. Some machines have
9471special registers which can hold nothing but floating point; these
9472registers are considered to have floating point values. There is no way
9473to refer to the contents of an ordinary register as floating point value
9474(although you can @emph{print} it as a floating point value with
9475@samp{print/f $@var{regname}}).
9476
9477Some registers have distinct ``raw'' and ``virtual'' data formats. This
9478means that the data format in which the register contents are saved by
9479the operating system is not the same one that your program normally
9480sees. For example, the registers of the 68881 floating point
9481coprocessor are always saved in ``extended'' (raw) format, but all C
9482programs expect to work with ``double'' (virtual) format. In such
5d161b24 9483cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
9484that makes sense for your program), but the @code{info registers} command
9485prints the data in both formats.
9486
36b80e65
EZ
9487@cindex SSE registers (x86)
9488@cindex MMX registers (x86)
9489Some machines have special registers whose contents can be interpreted
9490in several different ways. For example, modern x86-based machines
9491have SSE and MMX registers that can hold several values packed
9492together in several different formats. @value{GDBN} refers to such
9493registers in @code{struct} notation:
9494
9495@smallexample
9496(@value{GDBP}) print $xmm1
9497$1 = @{
9498 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@},
9499 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@},
9500 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
9501 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@},
9502 v4_int32 = @{0, 20657912, 11, 13@},
9503 v2_int64 = @{88725056443645952, 55834574859@},
9504 uint128 = 0x0000000d0000000b013b36f800000000
9505@}
9506@end smallexample
9507
9508@noindent
9509To set values of such registers, you need to tell @value{GDBN} which
9510view of the register you wish to change, as if you were assigning
9511value to a @code{struct} member:
9512
9513@smallexample
9514 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
9515@end smallexample
9516
c906108c 9517Normally, register values are relative to the selected stack frame
79a6e687 9518(@pxref{Selection, ,Selecting a Frame}). This means that you get the
c906108c
SS
9519value that the register would contain if all stack frames farther in
9520were exited and their saved registers restored. In order to see the
9521true contents of hardware registers, you must select the innermost
9522frame (with @samp{frame 0}).
9523
9524However, @value{GDBN} must deduce where registers are saved, from the machine
9525code generated by your compiler. If some registers are not saved, or if
9526@value{GDBN} is unable to locate the saved registers, the selected stack
9527frame makes no difference.
9528
6d2ebf8b 9529@node Floating Point Hardware
79a6e687 9530@section Floating Point Hardware
c906108c
SS
9531@cindex floating point
9532
9533Depending on the configuration, @value{GDBN} may be able to give
9534you more information about the status of the floating point hardware.
9535
9536@table @code
9537@kindex info float
9538@item info float
9539Display hardware-dependent information about the floating
9540point unit. The exact contents and layout vary depending on the
9541floating point chip. Currently, @samp{info float} is supported on
9542the ARM and x86 machines.
9543@end table
c906108c 9544
e76f1f2e
AC
9545@node Vector Unit
9546@section Vector Unit
9547@cindex vector unit
9548
9549Depending on the configuration, @value{GDBN} may be able to give you
9550more information about the status of the vector unit.
9551
9552@table @code
9553@kindex info vector
9554@item info vector
9555Display information about the vector unit. The exact contents and
9556layout vary depending on the hardware.
9557@end table
9558
721c2651 9559@node OS Information
79a6e687 9560@section Operating System Auxiliary Information
721c2651
EZ
9561@cindex OS information
9562
9563@value{GDBN} provides interfaces to useful OS facilities that can help
9564you debug your program.
9565
b383017d
RM
9566@cindex auxiliary vector
9567@cindex vector, auxiliary
b383017d
RM
9568Some operating systems supply an @dfn{auxiliary vector} to programs at
9569startup. This is akin to the arguments and environment that you
9570specify for a program, but contains a system-dependent variety of
9571binary values that tell system libraries important details about the
9572hardware, operating system, and process. Each value's purpose is
9573identified by an integer tag; the meanings are well-known but system-specific.
9574Depending on the configuration and operating system facilities,
9c16f35a
EZ
9575@value{GDBN} may be able to show you this information. For remote
9576targets, this functionality may further depend on the remote stub's
427c3a89
DJ
9577support of the @samp{qXfer:auxv:read} packet, see
9578@ref{qXfer auxiliary vector read}.
b383017d
RM
9579
9580@table @code
9581@kindex info auxv
9582@item info auxv
9583Display the auxiliary vector of the inferior, which can be either a
e4937fc1 9584live process or a core dump file. @value{GDBN} prints each tag value
b383017d
RM
9585numerically, and also shows names and text descriptions for recognized
9586tags. Some values in the vector are numbers, some bit masks, and some
e4937fc1 9587pointers to strings or other data. @value{GDBN} displays each value in the
b383017d
RM
9588most appropriate form for a recognized tag, and in hexadecimal for
9589an unrecognized tag.
9590@end table
9591
85d4a676
SS
9592On some targets, @value{GDBN} can access operating system-specific
9593information and show it to you. The types of information available
9594will differ depending on the type of operating system running on the
9595target. The mechanism used to fetch the data is described in
9596@ref{Operating System Information}. For remote targets, this
9597functionality depends on the remote stub's support of the
07e059b5
VP
9598@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}.
9599
9600@table @code
a61408f8 9601@kindex info os
85d4a676
SS
9602@item info os @var{infotype}
9603
9604Display OS information of the requested type.
a61408f8 9605
85d4a676
SS
9606On @sc{gnu}/Linux, the following values of @var{infotype} are valid:
9607
9608@anchor{linux info os infotypes}
9609@table @code
07e059b5 9610@kindex info os processes
85d4a676 9611@item processes
07e059b5 9612Display the list of processes on the target. For each process,
85d4a676
SS
9613@value{GDBN} prints the process identifier, the name of the user, the
9614command corresponding to the process, and the list of processor cores
9615that the process is currently running on. (To understand what these
9616properties mean, for this and the following info types, please consult
9617the general @sc{gnu}/Linux documentation.)
9618
9619@kindex info os procgroups
9620@item procgroups
9621Display the list of process groups on the target. For each process,
9622@value{GDBN} prints the identifier of the process group that it belongs
9623to, the command corresponding to the process group leader, the process
9624identifier, and the command line of the process. The list is sorted
9625first by the process group identifier, then by the process identifier,
9626so that processes belonging to the same process group are grouped together
9627and the process group leader is listed first.
9628
9629@kindex info os threads
9630@item threads
9631Display the list of threads running on the target. For each thread,
9632@value{GDBN} prints the identifier of the process that the thread
9633belongs to, the command of the process, the thread identifier, and the
9634processor core that it is currently running on. The main thread of a
9635process is not listed.
9636
9637@kindex info os files
9638@item files
9639Display the list of open file descriptors on the target. For each
9640file descriptor, @value{GDBN} prints the identifier of the process
9641owning the descriptor, the command of the owning process, the value
9642of the descriptor, and the target of the descriptor.
9643
9644@kindex info os sockets
9645@item sockets
9646Display the list of Internet-domain sockets on the target. For each
9647socket, @value{GDBN} prints the address and port of the local and
9648remote endpoints, the current state of the connection, the creator of
9649the socket, the IP address family of the socket, and the type of the
9650connection.
9651
9652@kindex info os shm
9653@item shm
9654Display the list of all System V shared-memory regions on the target.
9655For each shared-memory region, @value{GDBN} prints the region key,
9656the shared-memory identifier, the access permissions, the size of the
9657region, the process that created the region, the process that last
9658attached to or detached from the region, the current number of live
9659attaches to the region, and the times at which the region was last
9660attached to, detach from, and changed.
9661
9662@kindex info os semaphores
9663@item semaphores
9664Display the list of all System V semaphore sets on the target. For each
9665semaphore set, @value{GDBN} prints the semaphore set key, the semaphore
9666set identifier, the access permissions, the number of semaphores in the
9667set, the user and group of the owner and creator of the semaphore set,
9668and the times at which the semaphore set was operated upon and changed.
9669
9670@kindex info os msg
9671@item msg
9672Display the list of all System V message queues on the target. For each
9673message queue, @value{GDBN} prints the message queue key, the message
9674queue identifier, the access permissions, the current number of bytes
9675on the queue, the current number of messages on the queue, the processes
9676that last sent and received a message on the queue, the user and group
9677of the owner and creator of the message queue, the times at which a
9678message was last sent and received on the queue, and the time at which
9679the message queue was last changed.
9680
9681@kindex info os modules
9682@item modules
9683Display the list of all loaded kernel modules on the target. For each
9684module, @value{GDBN} prints the module name, the size of the module in
9685bytes, the number of times the module is used, the dependencies of the
9686module, the status of the module, and the address of the loaded module
9687in memory.
9688@end table
9689
9690@item info os
9691If @var{infotype} is omitted, then list the possible values for
9692@var{infotype} and the kind of OS information available for each
9693@var{infotype}. If the target does not return a list of possible
9694types, this command will report an error.
07e059b5 9695@end table
721c2651 9696
29e57380 9697@node Memory Region Attributes
79a6e687 9698@section Memory Region Attributes
29e57380
C
9699@cindex memory region attributes
9700
b383017d 9701@dfn{Memory region attributes} allow you to describe special handling
fd79ecee
DJ
9702required by regions of your target's memory. @value{GDBN} uses
9703attributes to determine whether to allow certain types of memory
9704accesses; whether to use specific width accesses; and whether to cache
9705target memory. By default the description of memory regions is
9706fetched from the target (if the current target supports this), but the
9707user can override the fetched regions.
29e57380
C
9708
9709Defined memory regions can be individually enabled and disabled. When a
9710memory region is disabled, @value{GDBN} uses the default attributes when
9711accessing memory in that region. Similarly, if no memory regions have
9712been defined, @value{GDBN} uses the default attributes when accessing
9713all memory.
9714
b383017d 9715When a memory region is defined, it is given a number to identify it;
29e57380
C
9716to enable, disable, or remove a memory region, you specify that number.
9717
9718@table @code
9719@kindex mem
bfac230e 9720@item mem @var{lower} @var{upper} @var{attributes}@dots{}
09d4efe1
EZ
9721Define a memory region bounded by @var{lower} and @var{upper} with
9722attributes @var{attributes}@dots{}, and add it to the list of regions
9723monitored by @value{GDBN}. Note that @var{upper} == 0 is a special
d3e8051b 9724case: it is treated as the target's maximum memory address.
bfac230e 9725(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
29e57380 9726
fd79ecee
DJ
9727@item mem auto
9728Discard any user changes to the memory regions and use target-supplied
9729regions, if available, or no regions if the target does not support.
9730
29e57380
C
9731@kindex delete mem
9732@item delete mem @var{nums}@dots{}
09d4efe1
EZ
9733Remove memory regions @var{nums}@dots{} from the list of regions
9734monitored by @value{GDBN}.
29e57380
C
9735
9736@kindex disable mem
9737@item disable mem @var{nums}@dots{}
09d4efe1 9738Disable monitoring of memory regions @var{nums}@dots{}.
b383017d 9739A disabled memory region is not forgotten.
29e57380
C
9740It may be enabled again later.
9741
9742@kindex enable mem
9743@item enable mem @var{nums}@dots{}
09d4efe1 9744Enable monitoring of memory regions @var{nums}@dots{}.
29e57380
C
9745
9746@kindex info mem
9747@item info mem
9748Print a table of all defined memory regions, with the following columns
09d4efe1 9749for each region:
29e57380
C
9750
9751@table @emph
9752@item Memory Region Number
9753@item Enabled or Disabled.
b383017d 9754Enabled memory regions are marked with @samp{y}.
29e57380
C
9755Disabled memory regions are marked with @samp{n}.
9756
9757@item Lo Address
9758The address defining the inclusive lower bound of the memory region.
9759
9760@item Hi Address
9761The address defining the exclusive upper bound of the memory region.
9762
9763@item Attributes
9764The list of attributes set for this memory region.
9765@end table
9766@end table
9767
9768
9769@subsection Attributes
9770
b383017d 9771@subsubsection Memory Access Mode
29e57380
C
9772The access mode attributes set whether @value{GDBN} may make read or
9773write accesses to a memory region.
9774
9775While these attributes prevent @value{GDBN} from performing invalid
9776memory accesses, they do nothing to prevent the target system, I/O DMA,
359df76b 9777etc.@: from accessing memory.
29e57380
C
9778
9779@table @code
9780@item ro
9781Memory is read only.
9782@item wo
9783Memory is write only.
9784@item rw
6ca652b0 9785Memory is read/write. This is the default.
29e57380
C
9786@end table
9787
9788@subsubsection Memory Access Size
d3e8051b 9789The access size attribute tells @value{GDBN} to use specific sized
29e57380
C
9790accesses in the memory region. Often memory mapped device registers
9791require specific sized accesses. If no access size attribute is
9792specified, @value{GDBN} may use accesses of any size.
9793
9794@table @code
9795@item 8
9796Use 8 bit memory accesses.
9797@item 16
9798Use 16 bit memory accesses.
9799@item 32
9800Use 32 bit memory accesses.
9801@item 64
9802Use 64 bit memory accesses.
9803@end table
9804
9805@c @subsubsection Hardware/Software Breakpoints
9806@c The hardware/software breakpoint attributes set whether @value{GDBN}
9807@c will use hardware or software breakpoints for the internal breakpoints
9808@c used by the step, next, finish, until, etc. commands.
9809@c
9810@c @table @code
9811@c @item hwbreak
b383017d 9812@c Always use hardware breakpoints
29e57380
C
9813@c @item swbreak (default)
9814@c @end table
9815
9816@subsubsection Data Cache
9817The data cache attributes set whether @value{GDBN} will cache target
9818memory. While this generally improves performance by reducing debug
9819protocol overhead, it can lead to incorrect results because @value{GDBN}
9820does not know about volatile variables or memory mapped device
9821registers.
9822
9823@table @code
9824@item cache
b383017d 9825Enable @value{GDBN} to cache target memory.
6ca652b0
EZ
9826@item nocache
9827Disable @value{GDBN} from caching target memory. This is the default.
29e57380
C
9828@end table
9829
4b5752d0
VP
9830@subsection Memory Access Checking
9831@value{GDBN} can be instructed to refuse accesses to memory that is
9832not explicitly described. This can be useful if accessing such
9833regions has undesired effects for a specific target, or to provide
9834better error checking. The following commands control this behaviour.
9835
9836@table @code
9837@kindex set mem inaccessible-by-default
9838@item set mem inaccessible-by-default [on|off]
9839If @code{on} is specified, make @value{GDBN} treat memory not
9840explicitly described by the memory ranges as non-existent and refuse accesses
9841to such memory. The checks are only performed if there's at least one
9842memory range defined. If @code{off} is specified, make @value{GDBN}
9843treat the memory not explicitly described by the memory ranges as RAM.
56cf5405 9844The default value is @code{on}.
4b5752d0
VP
9845@kindex show mem inaccessible-by-default
9846@item show mem inaccessible-by-default
9847Show the current handling of accesses to unknown memory.
9848@end table
9849
9850
29e57380 9851@c @subsubsection Memory Write Verification
b383017d 9852@c The memory write verification attributes set whether @value{GDBN}
29e57380
C
9853@c will re-reads data after each write to verify the write was successful.
9854@c
9855@c @table @code
9856@c @item verify
9857@c @item noverify (default)
9858@c @end table
9859
16d9dec6 9860@node Dump/Restore Files
79a6e687 9861@section Copy Between Memory and a File
16d9dec6
MS
9862@cindex dump/restore files
9863@cindex append data to a file
9864@cindex dump data to a file
9865@cindex restore data from a file
16d9dec6 9866
df5215a6
JB
9867You can use the commands @code{dump}, @code{append}, and
9868@code{restore} to copy data between target memory and a file. The
9869@code{dump} and @code{append} commands write data to a file, and the
9870@code{restore} command reads data from a file back into the inferior's
9871memory. Files may be in binary, Motorola S-record, Intel hex, or
9872Tektronix Hex format; however, @value{GDBN} can only append to binary
9873files.
9874
9875@table @code
9876
9877@kindex dump
9878@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
9879@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
9880Dump the contents of memory from @var{start_addr} to @var{end_addr},
9881or the value of @var{expr}, to @var{filename} in the given format.
16d9dec6 9882
df5215a6 9883The @var{format} parameter may be any one of:
16d9dec6 9884@table @code
df5215a6
JB
9885@item binary
9886Raw binary form.
9887@item ihex
9888Intel hex format.
9889@item srec
9890Motorola S-record format.
9891@item tekhex
9892Tektronix Hex format.
9893@end table
9894
9895@value{GDBN} uses the same definitions of these formats as the
9896@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
9897@var{format} is omitted, @value{GDBN} dumps the data in raw binary
9898form.
9899
9900@kindex append
9901@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
9902@itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
9903Append the contents of memory from @var{start_addr} to @var{end_addr},
09d4efe1 9904or the value of @var{expr}, to the file @var{filename}, in raw binary form.
df5215a6
JB
9905(@value{GDBN} can only append data to files in raw binary form.)
9906
9907@kindex restore
9908@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
9909Restore the contents of file @var{filename} into memory. The
9910@code{restore} command can automatically recognize any known @sc{bfd}
9911file format, except for raw binary. To restore a raw binary file you
9912must specify the optional keyword @code{binary} after the filename.
16d9dec6 9913
b383017d 9914If @var{bias} is non-zero, its value will be added to the addresses
16d9dec6
MS
9915contained in the file. Binary files always start at address zero, so
9916they will be restored at address @var{bias}. Other bfd files have
9917a built-in location; they will be restored at offset @var{bias}
9918from that location.
9919
9920If @var{start} and/or @var{end} are non-zero, then only data between
9921file offset @var{start} and file offset @var{end} will be restored.
b383017d 9922These offsets are relative to the addresses in the file, before
16d9dec6
MS
9923the @var{bias} argument is applied.
9924
9925@end table
9926
384ee23f
EZ
9927@node Core File Generation
9928@section How to Produce a Core File from Your Program
9929@cindex dump core from inferior
9930
9931A @dfn{core file} or @dfn{core dump} is a file that records the memory
9932image of a running process and its process status (register values
9933etc.). Its primary use is post-mortem debugging of a program that
9934crashed while it ran outside a debugger. A program that crashes
9935automatically produces a core file, unless this feature is disabled by
9936the user. @xref{Files}, for information on invoking @value{GDBN} in
9937the post-mortem debugging mode.
9938
9939Occasionally, you may wish to produce a core file of the program you
9940are debugging in order to preserve a snapshot of its state.
9941@value{GDBN} has a special command for that.
9942
9943@table @code
9944@kindex gcore
9945@kindex generate-core-file
9946@item generate-core-file [@var{file}]
9947@itemx gcore [@var{file}]
9948Produce a core dump of the inferior process. The optional argument
9949@var{file} specifies the file name where to put the core dump. If not
9950specified, the file name defaults to @file{core.@var{pid}}, where
9951@var{pid} is the inferior process ID.
9952
9953Note that this command is implemented only for some systems (as of
9954this writing, @sc{gnu}/Linux, FreeBSD, Solaris, Unixware, and S390).
9955@end table
9956
a0eb71c5
KB
9957@node Character Sets
9958@section Character Sets
9959@cindex character sets
9960@cindex charset
9961@cindex translating between character sets
9962@cindex host character set
9963@cindex target character set
9964
9965If the program you are debugging uses a different character set to
9966represent characters and strings than the one @value{GDBN} uses itself,
9967@value{GDBN} can automatically translate between the character sets for
9968you. The character set @value{GDBN} uses we call the @dfn{host
9969character set}; the one the inferior program uses we call the
9970@dfn{target character set}.
9971
9972For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
9973uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
ea35711c 9974remote protocol (@pxref{Remote Debugging}) to debug a program
a0eb71c5
KB
9975running on an IBM mainframe, which uses the @sc{ebcdic} character set,
9976then the host character set is Latin-1, and the target character set is
9977@sc{ebcdic}. If you give @value{GDBN} the command @code{set
e33d66ec 9978target-charset EBCDIC-US}, then @value{GDBN} translates between
a0eb71c5
KB
9979@sc{ebcdic} and Latin 1 as you print character or string values, or use
9980character and string literals in expressions.
9981
9982@value{GDBN} has no way to automatically recognize which character set
9983the inferior program uses; you must tell it, using the @code{set
9984target-charset} command, described below.
9985
9986Here are the commands for controlling @value{GDBN}'s character set
9987support:
9988
9989@table @code
9990@item set target-charset @var{charset}
9991@kindex set target-charset
10af6951
EZ
9992Set the current target character set to @var{charset}. To display the
9993list of supported target character sets, type
9994@kbd{@w{set target-charset @key{TAB}@key{TAB}}}.
a0eb71c5 9995
a0eb71c5
KB
9996@item set host-charset @var{charset}
9997@kindex set host-charset
9998Set the current host character set to @var{charset}.
9999
10000By default, @value{GDBN} uses a host character set appropriate to the
10001system it is running on; you can override that default using the
732f6a93
TT
10002@code{set host-charset} command. On some systems, @value{GDBN} cannot
10003automatically determine the appropriate host character set. In this
10004case, @value{GDBN} uses @samp{UTF-8}.
a0eb71c5
KB
10005
10006@value{GDBN} can only use certain character sets as its host character
c1b6b909 10007set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}},
10af6951 10008@value{GDBN} will list the host character sets it supports.
a0eb71c5
KB
10009
10010@item set charset @var{charset}
10011@kindex set charset
e33d66ec 10012Set the current host and target character sets to @var{charset}. As
10af6951
EZ
10013above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}},
10014@value{GDBN} will list the names of the character sets that can be used
e33d66ec
EZ
10015for both host and target.
10016
a0eb71c5 10017@item show charset
a0eb71c5 10018@kindex show charset
10af6951 10019Show the names of the current host and target character sets.
e33d66ec 10020
10af6951 10021@item show host-charset
a0eb71c5 10022@kindex show host-charset
10af6951 10023Show the name of the current host character set.
e33d66ec 10024
10af6951 10025@item show target-charset
a0eb71c5 10026@kindex show target-charset
10af6951 10027Show the name of the current target character set.
a0eb71c5 10028
10af6951
EZ
10029@item set target-wide-charset @var{charset}
10030@kindex set target-wide-charset
10031Set the current target's wide character set to @var{charset}. This is
10032the character set used by the target's @code{wchar_t} type. To
10033display the list of supported wide character sets, type
10034@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}.
10035
10036@item show target-wide-charset
10037@kindex show target-wide-charset
10038Show the name of the current target's wide character set.
a0eb71c5
KB
10039@end table
10040
a0eb71c5
KB
10041Here is an example of @value{GDBN}'s character set support in action.
10042Assume that the following source code has been placed in the file
10043@file{charset-test.c}:
10044
10045@smallexample
10046#include <stdio.h>
10047
10048char ascii_hello[]
10049 = @{72, 101, 108, 108, 111, 44, 32, 119,
10050 111, 114, 108, 100, 33, 10, 0@};
10051char ibm1047_hello[]
10052 = @{200, 133, 147, 147, 150, 107, 64, 166,
10053 150, 153, 147, 132, 90, 37, 0@};
10054
10055main ()
10056@{
10057 printf ("Hello, world!\n");
10058@}
10998722 10059@end smallexample
a0eb71c5
KB
10060
10061In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
10062containing the string @samp{Hello, world!} followed by a newline,
10063encoded in the @sc{ascii} and @sc{ibm1047} character sets.
10064
10065We compile the program, and invoke the debugger on it:
10066
10067@smallexample
10068$ gcc -g charset-test.c -o charset-test
10069$ gdb -nw charset-test
10070GNU gdb 2001-12-19-cvs
10071Copyright 2001 Free Software Foundation, Inc.
10072@dots{}
f7dc1244 10073(@value{GDBP})
10998722 10074@end smallexample
a0eb71c5
KB
10075
10076We can use the @code{show charset} command to see what character sets
10077@value{GDBN} is currently using to interpret and display characters and
10078strings:
10079
10080@smallexample
f7dc1244 10081(@value{GDBP}) show charset
e33d66ec 10082The current host and target character set is `ISO-8859-1'.
f7dc1244 10083(@value{GDBP})
10998722 10084@end smallexample
a0eb71c5
KB
10085
10086For the sake of printing this manual, let's use @sc{ascii} as our
10087initial character set:
10088@smallexample
f7dc1244
EZ
10089(@value{GDBP}) set charset ASCII
10090(@value{GDBP}) show charset
e33d66ec 10091The current host and target character set is `ASCII'.
f7dc1244 10092(@value{GDBP})
10998722 10093@end smallexample
a0eb71c5
KB
10094
10095Let's assume that @sc{ascii} is indeed the correct character set for our
10096host system --- in other words, let's assume that if @value{GDBN} prints
10097characters using the @sc{ascii} character set, our terminal will display
10098them properly. Since our current target character set is also
10099@sc{ascii}, the contents of @code{ascii_hello} print legibly:
10100
10101@smallexample
f7dc1244 10102(@value{GDBP}) print ascii_hello
a0eb71c5 10103$1 = 0x401698 "Hello, world!\n"
f7dc1244 10104(@value{GDBP}) print ascii_hello[0]
a0eb71c5 10105$2 = 72 'H'
f7dc1244 10106(@value{GDBP})
10998722 10107@end smallexample
a0eb71c5
KB
10108
10109@value{GDBN} uses the target character set for character and string
10110literals you use in expressions:
10111
10112@smallexample
f7dc1244 10113(@value{GDBP}) print '+'
a0eb71c5 10114$3 = 43 '+'
f7dc1244 10115(@value{GDBP})
10998722 10116@end smallexample
a0eb71c5
KB
10117
10118The @sc{ascii} character set uses the number 43 to encode the @samp{+}
10119character.
10120
10121@value{GDBN} relies on the user to tell it which character set the
10122target program uses. If we print @code{ibm1047_hello} while our target
10123character set is still @sc{ascii}, we get jibberish:
10124
10125@smallexample
f7dc1244 10126(@value{GDBP}) print ibm1047_hello
a0eb71c5 10127$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
f7dc1244 10128(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 10129$5 = 200 '\310'
f7dc1244 10130(@value{GDBP})
10998722 10131@end smallexample
a0eb71c5 10132
e33d66ec 10133If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
a0eb71c5
KB
10134@value{GDBN} tells us the character sets it supports:
10135
10136@smallexample
f7dc1244 10137(@value{GDBP}) set target-charset
b383017d 10138ASCII EBCDIC-US IBM1047 ISO-8859-1
f7dc1244 10139(@value{GDBP}) set target-charset
10998722 10140@end smallexample
a0eb71c5
KB
10141
10142We can select @sc{ibm1047} as our target character set, and examine the
10143program's strings again. Now the @sc{ascii} string is wrong, but
10144@value{GDBN} translates the contents of @code{ibm1047_hello} from the
10145target character set, @sc{ibm1047}, to the host character set,
10146@sc{ascii}, and they display correctly:
10147
10148@smallexample
f7dc1244
EZ
10149(@value{GDBP}) set target-charset IBM1047
10150(@value{GDBP}) show charset
e33d66ec
EZ
10151The current host character set is `ASCII'.
10152The current target character set is `IBM1047'.
f7dc1244 10153(@value{GDBP}) print ascii_hello
a0eb71c5 10154$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
f7dc1244 10155(@value{GDBP}) print ascii_hello[0]
a0eb71c5 10156$7 = 72 '\110'
f7dc1244 10157(@value{GDBP}) print ibm1047_hello
a0eb71c5 10158$8 = 0x4016a8 "Hello, world!\n"
f7dc1244 10159(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 10160$9 = 200 'H'
f7dc1244 10161(@value{GDBP})
10998722 10162@end smallexample
a0eb71c5
KB
10163
10164As above, @value{GDBN} uses the target character set for character and
10165string literals you use in expressions:
10166
10167@smallexample
f7dc1244 10168(@value{GDBP}) print '+'
a0eb71c5 10169$10 = 78 '+'
f7dc1244 10170(@value{GDBP})
10998722 10171@end smallexample
a0eb71c5 10172
e33d66ec 10173The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
a0eb71c5
KB
10174character.
10175
09d4efe1
EZ
10176@node Caching Remote Data
10177@section Caching Data of Remote Targets
10178@cindex caching data of remote targets
10179
4e5d721f 10180@value{GDBN} caches data exchanged between the debugger and a
ea35711c 10181remote target (@pxref{Remote Debugging}). Such caching generally improves
09d4efe1 10182performance, because it reduces the overhead of the remote protocol by
4e5d721f
DE
10183bundling memory reads and writes into large chunks. Unfortunately, simply
10184caching everything would lead to incorrect results, since @value{GDBN}
10185does not necessarily know anything about volatile values, memory-mapped I/O
29b090c0
DE
10186addresses, etc. Furthermore, in non-stop mode (@pxref{Non-Stop Mode})
10187memory can be changed @emph{while} a gdb command is executing.
10188Therefore, by default, @value{GDBN} only caches data
10189known to be on the stack@footnote{In non-stop mode, it is moderately
10190rare for a running thread to modify the stack of a stopped thread
10191in a way that would interfere with a backtrace, and caching of
10192stack reads provides a significant speed up of remote backtraces.}.
10193Other regions of memory can be explicitly marked as
4e5d721f 10194cacheable; see @pxref{Memory Region Attributes}.
09d4efe1
EZ
10195
10196@table @code
10197@kindex set remotecache
10198@item set remotecache on
10199@itemx set remotecache off
4e5d721f
DE
10200This option no longer does anything; it exists for compatibility
10201with old scripts.
09d4efe1
EZ
10202
10203@kindex show remotecache
10204@item show remotecache
4e5d721f
DE
10205Show the current state of the obsolete remotecache flag.
10206
10207@kindex set stack-cache
10208@item set stack-cache on
10209@itemx set stack-cache off
10210Enable or disable caching of stack accesses. When @code{ON}, use
10211caching. By default, this option is @code{ON}.
10212
10213@kindex show stack-cache
10214@item show stack-cache
10215Show the current state of data caching for memory accesses.
09d4efe1
EZ
10216
10217@kindex info dcache
4e5d721f 10218@item info dcache @r{[}line@r{]}
09d4efe1 10219Print the information about the data cache performance. The
4e5d721f
DE
10220information displayed includes the dcache width and depth, and for
10221each cache line, its number, address, and how many times it was
10222referenced. This command is useful for debugging the data cache
10223operation.
10224
10225If a line number is specified, the contents of that line will be
10226printed in hex.
1a532630
PP
10227
10228@item set dcache size @var{size}
10229@cindex dcache size
10230@kindex set dcache size
10231Set maximum number of entries in dcache (dcache depth above).
10232
10233@item set dcache line-size @var{line-size}
10234@cindex dcache line-size
10235@kindex set dcache line-size
10236Set number of bytes each dcache entry caches (dcache width above).
10237Must be a power of 2.
10238
10239@item show dcache size
10240@kindex show dcache size
10241Show maximum number of dcache entries. See also @ref{Caching Remote Data, info dcache}.
10242
10243@item show dcache line-size
10244@kindex show dcache line-size
10245Show default size of dcache lines. See also @ref{Caching Remote Data, info dcache}.
10246
09d4efe1
EZ
10247@end table
10248
08388c79
DE
10249@node Searching Memory
10250@section Search Memory
10251@cindex searching memory
10252
10253Memory can be searched for a particular sequence of bytes with the
10254@code{find} command.
10255
10256@table @code
10257@kindex find
10258@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
10259@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
10260Search memory for the sequence of bytes specified by @var{val1}, @var{val2},
10261etc. The search begins at address @var{start_addr} and continues for either
10262@var{len} bytes or through to @var{end_addr} inclusive.
10263@end table
10264
10265@var{s} and @var{n} are optional parameters.
10266They may be specified in either order, apart or together.
10267
10268@table @r
10269@item @var{s}, search query size
10270The size of each search query value.
10271
10272@table @code
10273@item b
10274bytes
10275@item h
10276halfwords (two bytes)
10277@item w
10278words (four bytes)
10279@item g
10280giant words (eight bytes)
10281@end table
10282
10283All values are interpreted in the current language.
10284This means, for example, that if the current source language is C/C@t{++}
10285then searching for the string ``hello'' includes the trailing '\0'.
10286
10287If the value size is not specified, it is taken from the
10288value's type in the current language.
10289This is useful when one wants to specify the search
10290pattern as a mixture of types.
10291Note that this means, for example, that in the case of C-like languages
10292a search for an untyped 0x42 will search for @samp{(int) 0x42}
10293which is typically four bytes.
10294
10295@item @var{n}, maximum number of finds
10296The maximum number of matches to print. The default is to print all finds.
10297@end table
10298
10299You can use strings as search values. Quote them with double-quotes
10300 (@code{"}).
10301The string value is copied into the search pattern byte by byte,
10302regardless of the endianness of the target and the size specification.
10303
10304The address of each match found is printed as well as a count of the
10305number of matches found.
10306
10307The address of the last value found is stored in convenience variable
10308@samp{$_}.
10309A count of the number of matches is stored in @samp{$numfound}.
10310
10311For example, if stopped at the @code{printf} in this function:
10312
10313@smallexample
10314void
10315hello ()
10316@{
10317 static char hello[] = "hello-hello";
10318 static struct @{ char c; short s; int i; @}
10319 __attribute__ ((packed)) mixed
10320 = @{ 'c', 0x1234, 0x87654321 @};
10321 printf ("%s\n", hello);
10322@}
10323@end smallexample
10324
10325@noindent
10326you get during debugging:
10327
10328@smallexample
10329(gdb) find &hello[0], +sizeof(hello), "hello"
103300x804956d <hello.1620+6>
103311 pattern found
10332(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o'
103330x8049567 <hello.1620>
103340x804956d <hello.1620+6>
103352 patterns found
10336(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l'
103370x8049567 <hello.1620>
103381 pattern found
10339(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
103400x8049560 <mixed.1625>
103411 pattern found
10342(gdb) print $numfound
10343$1 = 1
10344(gdb) print $_
10345$2 = (void *) 0x8049560
10346@end smallexample
a0eb71c5 10347
edb3359d
DJ
10348@node Optimized Code
10349@chapter Debugging Optimized Code
10350@cindex optimized code, debugging
10351@cindex debugging optimized code
10352
10353Almost all compilers support optimization. With optimization
10354disabled, the compiler generates assembly code that corresponds
10355directly to your source code, in a simplistic way. As the compiler
10356applies more powerful optimizations, the generated assembly code
10357diverges from your original source code. With help from debugging
10358information generated by the compiler, @value{GDBN} can map from
10359the running program back to constructs from your original source.
10360
10361@value{GDBN} is more accurate with optimization disabled. If you
10362can recompile without optimization, it is easier to follow the
10363progress of your program during debugging. But, there are many cases
10364where you may need to debug an optimized version.
10365
10366When you debug a program compiled with @samp{-g -O}, remember that the
10367optimizer has rearranged your code; the debugger shows you what is
10368really there. Do not be too surprised when the execution path does not
10369exactly match your source file! An extreme example: if you define a
10370variable, but never use it, @value{GDBN} never sees that
10371variable---because the compiler optimizes it out of existence.
10372
10373Some things do not work as well with @samp{-g -O} as with just
10374@samp{-g}, particularly on machines with instruction scheduling. If in
10375doubt, recompile with @samp{-g} alone, and if this fixes the problem,
10376please report it to us as a bug (including a test case!).
10377@xref{Variables}, for more information about debugging optimized code.
10378
10379@menu
10380* Inline Functions:: How @value{GDBN} presents inlining
111c6489 10381* Tail Call Frames:: @value{GDBN} analysis of jumps to functions
edb3359d
DJ
10382@end menu
10383
10384@node Inline Functions
10385@section Inline Functions
10386@cindex inline functions, debugging
10387
10388@dfn{Inlining} is an optimization that inserts a copy of the function
10389body directly at each call site, instead of jumping to a shared
10390routine. @value{GDBN} displays inlined functions just like
10391non-inlined functions. They appear in backtraces. You can view their
10392arguments and local variables, step into them with @code{step}, skip
10393them with @code{next}, and escape from them with @code{finish}.
10394You can check whether a function was inlined by using the
10395@code{info frame} command.
10396
10397For @value{GDBN} to support inlined functions, the compiler must
10398record information about inlining in the debug information ---
10399@value{NGCC} using the @sc{dwarf 2} format does this, and several
10400other compilers do also. @value{GDBN} only supports inlined functions
10401when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1
10402do not emit two required attributes (@samp{DW_AT_call_file} and
10403@samp{DW_AT_call_line}); @value{GDBN} does not display inlined
10404function calls with earlier versions of @value{NGCC}. It instead
10405displays the arguments and local variables of inlined functions as
10406local variables in the caller.
10407
10408The body of an inlined function is directly included at its call site;
10409unlike a non-inlined function, there are no instructions devoted to
10410the call. @value{GDBN} still pretends that the call site and the
10411start of the inlined function are different instructions. Stepping to
10412the call site shows the call site, and then stepping again shows
10413the first line of the inlined function, even though no additional
10414instructions are executed.
10415
10416This makes source-level debugging much clearer; you can see both the
10417context of the call and then the effect of the call. Only stepping by
10418a single instruction using @code{stepi} or @code{nexti} does not do
10419this; single instruction steps always show the inlined body.
10420
10421There are some ways that @value{GDBN} does not pretend that inlined
10422function calls are the same as normal calls:
10423
10424@itemize @bullet
edb3359d
DJ
10425@item
10426Setting breakpoints at the call site of an inlined function may not
10427work, because the call site does not contain any code. @value{GDBN}
10428may incorrectly move the breakpoint to the next line of the enclosing
10429function, after the call. This limitation will be removed in a future
10430version of @value{GDBN}; until then, set a breakpoint on an earlier line
10431or inside the inlined function instead.
10432
10433@item
10434@value{GDBN} cannot locate the return value of inlined calls after
10435using the @code{finish} command. This is a limitation of compiler-generated
10436debugging information; after @code{finish}, you can step to the next line
10437and print a variable where your program stored the return value.
10438
10439@end itemize
10440
111c6489
JK
10441@node Tail Call Frames
10442@section Tail Call Frames
10443@cindex tail call frames, debugging
10444
10445Function @code{B} can call function @code{C} in its very last statement. In
10446unoptimized compilation the call of @code{C} is immediately followed by return
10447instruction at the end of @code{B} code. Optimizing compiler may replace the
10448call and return in function @code{B} into one jump to function @code{C}
10449instead. Such use of a jump instruction is called @dfn{tail call}.
10450
10451During execution of function @code{C}, there will be no indication in the
10452function call stack frames that it was tail-called from @code{B}. If function
10453@code{A} regularly calls function @code{B} which tail-calls function @code{C},
10454then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in
10455some cases @value{GDBN} can determine that @code{C} was tail-called from
10456@code{B}, and it will then create fictitious call frame for that, with the
10457return address set up as if @code{B} called @code{C} normally.
10458
10459This functionality is currently supported only by DWARF 2 debugging format and
10460the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With
10461@value{NGCC}, you need to specify @option{-O -g} during compilation, to get
10462this information.
10463
10464@kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame
10465kind by text @code{tail call frame} such as in this sample @value{GDBN} output:
10466
10467@smallexample
10468(gdb) x/i $pc - 2
10469 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)>
10470(gdb) info frame
10471Stack level 1, frame at 0x7fffffffda30:
10472 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5
10473 tail call frame, caller of frame at 0x7fffffffda30
10474 source language c++.
10475 Arglist at unknown address.
10476 Locals at unknown address, Previous frame's sp is 0x7fffffffda30
10477@end smallexample
10478
10479The detection of all the possible code path executions can find them ambiguous.
10480There is no execution history stored (possible @ref{Reverse Execution} is never
10481used for this purpose) and the last known caller could have reached the known
10482callee by multiple different jump sequences. In such case @value{GDBN} still
10483tries to show at least all the unambiguous top tail callers and all the
10484unambiguous bottom tail calees, if any.
10485
10486@table @code
e18b2753 10487@anchor{set debug entry-values}
111c6489
JK
10488@item set debug entry-values
10489@kindex set debug entry-values
10490When set to on, enables printing of analysis messages for both frame argument
10491values at function entry and tail calls. It will show all the possible valid
10492tail calls code paths it has considered. It will also print the intersection
10493of them with the final unambiguous (possibly partial or even empty) code path
10494result.
10495
10496@item show debug entry-values
10497@kindex show debug entry-values
10498Show the current state of analysis messages printing for both frame argument
10499values at function entry and tail calls.
10500@end table
10501
10502The analysis messages for tail calls can for example show why the virtual tail
10503call frame for function @code{c} has not been recognized (due to the indirect
10504reference by variable @code{x}):
10505
10506@smallexample
10507static void __attribute__((noinline, noclone)) c (void);
10508void (*x) (void) = c;
10509static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
10510static void __attribute__((noinline, noclone)) c (void) @{ a (); @}
10511int main (void) @{ x (); return 0; @}
10512
10513Breakpoint 1, DW_OP_GNU_entry_value resolving cannot find
10514DW_TAG_GNU_call_site 0x40039a in main
10515a () at t.c:3
105163 static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
10517(gdb) bt
10518#0 a () at t.c:3
10519#1 0x000000000040039a in main () at t.c:5
10520@end smallexample
10521
10522Another possibility is an ambiguous virtual tail call frames resolution:
10523
10524@smallexample
10525int i;
10526static void __attribute__((noinline, noclone)) f (void) @{ i++; @}
10527static void __attribute__((noinline, noclone)) e (void) @{ f (); @}
10528static void __attribute__((noinline, noclone)) d (void) @{ f (); @}
10529static void __attribute__((noinline, noclone)) c (void) @{ d (); @}
10530static void __attribute__((noinline, noclone)) b (void)
10531@{ if (i) c (); else e (); @}
10532static void __attribute__((noinline, noclone)) a (void) @{ b (); @}
10533int main (void) @{ a (); return 0; @}
10534
10535tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d)
10536tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e)
10537tailcall: reduced: 0x4004d2(a) |
10538(gdb) bt
10539#0 f () at t.c:2
10540#1 0x00000000004004d2 in a () at t.c:8
10541#2 0x0000000000400395 in main () at t.c:9
10542@end smallexample
10543
5048e516
JK
10544@set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f}
10545@set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f}
10546
10547@c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK.
10548@ifset HAVE_MAKEINFO_CLICK
10549@set ARROW @click{}
10550@set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}}
10551@set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}}
10552@end ifset
10553@ifclear HAVE_MAKEINFO_CLICK
10554@set ARROW ->
10555@set CALLSEQ1B @value{CALLSEQ1A}
10556@set CALLSEQ2B @value{CALLSEQ2A}
10557@end ifclear
10558
10559Frames #0 and #2 are real, #1 is a virtual tail call frame.
10560The code can have possible execution paths @value{CALLSEQ1B} or
10561@value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state.
111c6489
JK
10562
10563@code{initial:} state shows some random possible calling sequence @value{GDBN}
10564has found. It then finds another possible calling sequcen - that one is
10565prefixed by @code{compare:}. The non-ambiguous intersection of these two is
10566printed as the @code{reduced:} calling sequence. That one could have many
10567futher @code{compare:} and @code{reduced:} statements as long as there remain
10568any non-ambiguous sequence entries.
10569
10570For the frame of function @code{b} in both cases there are different possible
10571@code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is
10572also ambigous. The only non-ambiguous frame is the one for function @code{a},
10573therefore this one is displayed to the user while the ambiguous frames are
10574omitted.
edb3359d 10575
e18b2753
JK
10576There can be also reasons why printing of frame argument values at function
10577entry may fail:
10578
10579@smallexample
10580int v;
10581static void __attribute__((noinline, noclone)) c (int i) @{ v++; @}
10582static void __attribute__((noinline, noclone)) a (int i);
10583static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @}
10584static void __attribute__((noinline, noclone)) a (int i)
10585@{ if (i) b (i - 1); else c (0); @}
10586int main (void) @{ a (5); return 0; @}
10587
10588(gdb) bt
10589#0 c (i=i@@entry=0) at t.c:2
10590#1 0x0000000000400428 in a (DW_OP_GNU_entry_value resolving has found
10591function "a" at 0x400420 can call itself via tail calls
10592i=<optimized out>) at t.c:6
10593#2 0x000000000040036e in main () at t.c:7
10594@end smallexample
10595
10596@value{GDBN} cannot find out from the inferior state if and how many times did
10597function @code{a} call itself (via function @code{b}) as these calls would be
10598tail calls. Such tail calls would modify thue @code{i} variable, therefore
10599@value{GDBN} cannot be sure the value it knows would be right - @value{GDBN}
10600prints @code{<optimized out>} instead.
10601
e2e0bcd1
JB
10602@node Macros
10603@chapter C Preprocessor Macros
10604
49efadf5 10605Some languages, such as C and C@t{++}, provide a way to define and invoke
e2e0bcd1
JB
10606``preprocessor macros'' which expand into strings of tokens.
10607@value{GDBN} can evaluate expressions containing macro invocations, show
10608the result of macro expansion, and show a macro's definition, including
10609where it was defined.
10610
10611You may need to compile your program specially to provide @value{GDBN}
10612with information about preprocessor macros. Most compilers do not
10613include macros in their debugging information, even when you compile
10614with the @option{-g} flag. @xref{Compilation}.
10615
10616A program may define a macro at one point, remove that definition later,
10617and then provide a different definition after that. Thus, at different
10618points in the program, a macro may have different definitions, or have
10619no definition at all. If there is a current stack frame, @value{GDBN}
10620uses the macros in scope at that frame's source code line. Otherwise,
10621@value{GDBN} uses the macros in scope at the current listing location;
10622see @ref{List}.
10623
e2e0bcd1
JB
10624Whenever @value{GDBN} evaluates an expression, it always expands any
10625macro invocations present in the expression. @value{GDBN} also provides
10626the following commands for working with macros explicitly.
10627
10628@table @code
10629
10630@kindex macro expand
10631@cindex macro expansion, showing the results of preprocessor
10632@cindex preprocessor macro expansion, showing the results of
10633@cindex expanding preprocessor macros
10634@item macro expand @var{expression}
10635@itemx macro exp @var{expression}
10636Show the results of expanding all preprocessor macro invocations in
10637@var{expression}. Since @value{GDBN} simply expands macros, but does
10638not parse the result, @var{expression} need not be a valid expression;
10639it can be any string of tokens.
10640
09d4efe1 10641@kindex macro exp1
e2e0bcd1
JB
10642@item macro expand-once @var{expression}
10643@itemx macro exp1 @var{expression}
4644b6e3 10644@cindex expand macro once
e2e0bcd1
JB
10645@i{(This command is not yet implemented.)} Show the results of
10646expanding those preprocessor macro invocations that appear explicitly in
10647@var{expression}. Macro invocations appearing in that expansion are
10648left unchanged. This command allows you to see the effect of a
10649particular macro more clearly, without being confused by further
10650expansions. Since @value{GDBN} simply expands macros, but does not
10651parse the result, @var{expression} need not be a valid expression; it
10652can be any string of tokens.
10653
475b0867 10654@kindex info macro
e2e0bcd1 10655@cindex macro definition, showing
9b158ba0 10656@cindex definition of a macro, showing
10657@cindex macros, from debug info
71eba9c2 10658@item info macro [-a|-all] [--] @var{macro}
10659Show the current definition or all definitions of the named @var{macro},
10660and describe the source location or compiler command-line where that
10661definition was established. The optional double dash is to signify the end of
10662argument processing and the beginning of @var{macro} for non C-like macros where
10663the macro may begin with a hyphen.
e2e0bcd1 10664
9b158ba0 10665@kindex info macros
10666@item info macros @var{linespec}
10667Show all macro definitions that are in effect at the location specified
10668by @var{linespec}, and describe the source location or compiler
10669command-line where those definitions were established.
10670
e2e0bcd1
JB
10671@kindex macro define
10672@cindex user-defined macros
10673@cindex defining macros interactively
10674@cindex macros, user-defined
10675@item macro define @var{macro} @var{replacement-list}
10676@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
d7d9f01e
TT
10677Introduce a definition for a preprocessor macro named @var{macro},
10678invocations of which are replaced by the tokens given in
10679@var{replacement-list}. The first form of this command defines an
10680``object-like'' macro, which takes no arguments; the second form
10681defines a ``function-like'' macro, which takes the arguments given in
10682@var{arglist}.
10683
10684A definition introduced by this command is in scope in every
10685expression evaluated in @value{GDBN}, until it is removed with the
10686@code{macro undef} command, described below. The definition overrides
10687all definitions for @var{macro} present in the program being debugged,
10688as well as any previous user-supplied definition.
e2e0bcd1
JB
10689
10690@kindex macro undef
10691@item macro undef @var{macro}
d7d9f01e
TT
10692Remove any user-supplied definition for the macro named @var{macro}.
10693This command only affects definitions provided with the @code{macro
10694define} command, described above; it cannot remove definitions present
10695in the program being debugged.
e2e0bcd1 10696
09d4efe1
EZ
10697@kindex macro list
10698@item macro list
d7d9f01e 10699List all the macros defined using the @code{macro define} command.
e2e0bcd1
JB
10700@end table
10701
10702@cindex macros, example of debugging with
10703Here is a transcript showing the above commands in action. First, we
10704show our source files:
10705
10706@smallexample
10707$ cat sample.c
10708#include <stdio.h>
10709#include "sample.h"
10710
10711#define M 42
10712#define ADD(x) (M + x)
10713
10714main ()
10715@{
10716#define N 28
10717 printf ("Hello, world!\n");
10718#undef N
10719 printf ("We're so creative.\n");
10720#define N 1729
10721 printf ("Goodbye, world!\n");
10722@}
10723$ cat sample.h
10724#define Q <
10725$
10726@end smallexample
10727
e0f8f636
TT
10728Now, we compile the program using the @sc{gnu} C compiler,
10729@value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the
10730minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3}
10731and @option{-gdwarf-4}; we recommend always choosing the most recent
10732version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler
10733includes information about preprocessor macros in the debugging
e2e0bcd1
JB
10734information.
10735
10736@smallexample
10737$ gcc -gdwarf-2 -g3 sample.c -o sample
10738$
10739@end smallexample
10740
10741Now, we start @value{GDBN} on our sample program:
10742
10743@smallexample
10744$ gdb -nw sample
10745GNU gdb 2002-05-06-cvs
10746Copyright 2002 Free Software Foundation, Inc.
10747GDB is free software, @dots{}
f7dc1244 10748(@value{GDBP})
e2e0bcd1
JB
10749@end smallexample
10750
10751We can expand macros and examine their definitions, even when the
10752program is not running. @value{GDBN} uses the current listing position
10753to decide which macro definitions are in scope:
10754
10755@smallexample
f7dc1244 10756(@value{GDBP}) list main
e2e0bcd1
JB
107573
107584 #define M 42
107595 #define ADD(x) (M + x)
107606
107617 main ()
107628 @{
107639 #define N 28
1076410 printf ("Hello, world!\n");
1076511 #undef N
1076612 printf ("We're so creative.\n");
f7dc1244 10767(@value{GDBP}) info macro ADD
e2e0bcd1
JB
10768Defined at /home/jimb/gdb/macros/play/sample.c:5
10769#define ADD(x) (M + x)
f7dc1244 10770(@value{GDBP}) info macro Q
e2e0bcd1
JB
10771Defined at /home/jimb/gdb/macros/play/sample.h:1
10772 included at /home/jimb/gdb/macros/play/sample.c:2
10773#define Q <
f7dc1244 10774(@value{GDBP}) macro expand ADD(1)
e2e0bcd1 10775expands to: (42 + 1)
f7dc1244 10776(@value{GDBP}) macro expand-once ADD(1)
e2e0bcd1 10777expands to: once (M + 1)
f7dc1244 10778(@value{GDBP})
e2e0bcd1
JB
10779@end smallexample
10780
d7d9f01e 10781In the example above, note that @code{macro expand-once} expands only
e2e0bcd1
JB
10782the macro invocation explicit in the original text --- the invocation of
10783@code{ADD} --- but does not expand the invocation of the macro @code{M},
10784which was introduced by @code{ADD}.
10785
3f94c067
BW
10786Once the program is running, @value{GDBN} uses the macro definitions in
10787force at the source line of the current stack frame:
e2e0bcd1
JB
10788
10789@smallexample
f7dc1244 10790(@value{GDBP}) break main
e2e0bcd1 10791Breakpoint 1 at 0x8048370: file sample.c, line 10.
f7dc1244 10792(@value{GDBP}) run
b383017d 10793Starting program: /home/jimb/gdb/macros/play/sample
e2e0bcd1
JB
10794
10795Breakpoint 1, main () at sample.c:10
1079610 printf ("Hello, world!\n");
f7dc1244 10797(@value{GDBP})
e2e0bcd1
JB
10798@end smallexample
10799
10800At line 10, the definition of the macro @code{N} at line 9 is in force:
10801
10802@smallexample
f7dc1244 10803(@value{GDBP}) info macro N
e2e0bcd1
JB
10804Defined at /home/jimb/gdb/macros/play/sample.c:9
10805#define N 28
f7dc1244 10806(@value{GDBP}) macro expand N Q M
e2e0bcd1 10807expands to: 28 < 42
f7dc1244 10808(@value{GDBP}) print N Q M
e2e0bcd1 10809$1 = 1
f7dc1244 10810(@value{GDBP})
e2e0bcd1
JB
10811@end smallexample
10812
10813As we step over directives that remove @code{N}'s definition, and then
10814give it a new definition, @value{GDBN} finds the definition (or lack
10815thereof) in force at each point:
10816
10817@smallexample
f7dc1244 10818(@value{GDBP}) next
e2e0bcd1
JB
10819Hello, world!
1082012 printf ("We're so creative.\n");
f7dc1244 10821(@value{GDBP}) info macro N
e2e0bcd1
JB
10822The symbol `N' has no definition as a C/C++ preprocessor macro
10823at /home/jimb/gdb/macros/play/sample.c:12
f7dc1244 10824(@value{GDBP}) next
e2e0bcd1
JB
10825We're so creative.
1082614 printf ("Goodbye, world!\n");
f7dc1244 10827(@value{GDBP}) info macro N
e2e0bcd1
JB
10828Defined at /home/jimb/gdb/macros/play/sample.c:13
10829#define N 1729
f7dc1244 10830(@value{GDBP}) macro expand N Q M
e2e0bcd1 10831expands to: 1729 < 42
f7dc1244 10832(@value{GDBP}) print N Q M
e2e0bcd1 10833$2 = 0
f7dc1244 10834(@value{GDBP})
e2e0bcd1
JB
10835@end smallexample
10836
484086b7
JK
10837In addition to source files, macros can be defined on the compilation command
10838line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in
10839such a way, @value{GDBN} displays the location of their definition as line zero
10840of the source file submitted to the compiler.
10841
10842@smallexample
10843(@value{GDBP}) info macro __STDC__
10844Defined at /home/jimb/gdb/macros/play/sample.c:0
10845-D__STDC__=1
10846(@value{GDBP})
10847@end smallexample
10848
e2e0bcd1 10849
b37052ae
EZ
10850@node Tracepoints
10851@chapter Tracepoints
10852@c This chapter is based on the documentation written by Michael
10853@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
10854
10855@cindex tracepoints
10856In some applications, it is not feasible for the debugger to interrupt
10857the program's execution long enough for the developer to learn
10858anything helpful about its behavior. If the program's correctness
10859depends on its real-time behavior, delays introduced by a debugger
10860might cause the program to change its behavior drastically, or perhaps
10861fail, even when the code itself is correct. It is useful to be able
10862to observe the program's behavior without interrupting it.
10863
10864Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
10865specify locations in the program, called @dfn{tracepoints}, and
10866arbitrary expressions to evaluate when those tracepoints are reached.
10867Later, using the @code{tfind} command, you can examine the values
10868those expressions had when the program hit the tracepoints. The
10869expressions may also denote objects in memory---structures or arrays,
10870for example---whose values @value{GDBN} should record; while visiting
10871a particular tracepoint, you may inspect those objects as if they were
10872in memory at that moment. However, because @value{GDBN} records these
10873values without interacting with you, it can do so quickly and
10874unobtrusively, hopefully not disturbing the program's behavior.
10875
10876The tracepoint facility is currently available only for remote
9d29849a
JB
10877targets. @xref{Targets}. In addition, your remote target must know
10878how to collect trace data. This functionality is implemented in the
10879remote stub; however, none of the stubs distributed with @value{GDBN}
10880support tracepoints as of this writing. The format of the remote
10881packets used to implement tracepoints are described in @ref{Tracepoint
10882Packets}.
b37052ae 10883
00bf0b85
SS
10884It is also possible to get trace data from a file, in a manner reminiscent
10885of corefiles; you specify the filename, and use @code{tfind} to search
10886through the file. @xref{Trace Files}, for more details.
10887
b37052ae
EZ
10888This chapter describes the tracepoint commands and features.
10889
10890@menu
b383017d
RM
10891* Set Tracepoints::
10892* Analyze Collected Data::
10893* Tracepoint Variables::
00bf0b85 10894* Trace Files::
b37052ae
EZ
10895@end menu
10896
10897@node Set Tracepoints
10898@section Commands to Set Tracepoints
10899
10900Before running such a @dfn{trace experiment}, an arbitrary number of
1042e4c0
SS
10901tracepoints can be set. A tracepoint is actually a special type of
10902breakpoint (@pxref{Set Breaks}), so you can manipulate it using
10903standard breakpoint commands. For instance, as with breakpoints,
10904tracepoint numbers are successive integers starting from one, and many
10905of the commands associated with tracepoints take the tracepoint number
10906as their argument, to identify which tracepoint to work on.
b37052ae
EZ
10907
10908For each tracepoint, you can specify, in advance, some arbitrary set
10909of data that you want the target to collect in the trace buffer when
10910it hits that tracepoint. The collected data can include registers,
10911local variables, or global data. Later, you can use @value{GDBN}
10912commands to examine the values these data had at the time the
10913tracepoint was hit.
10914
7d13fe92
SS
10915Tracepoints do not support every breakpoint feature. Ignore counts on
10916tracepoints have no effect, and tracepoints cannot run @value{GDBN}
10917commands when they are hit. Tracepoints may not be thread-specific
10918either.
1042e4c0 10919
7a697b8d
SS
10920@cindex fast tracepoints
10921Some targets may support @dfn{fast tracepoints}, which are inserted in
10922a different way (such as with a jump instead of a trap), that is
10923faster but possibly restricted in where they may be installed.
10924
0fb4aa4b
PA
10925@cindex static tracepoints
10926@cindex markers, static tracepoints
10927@cindex probing markers, static tracepoints
10928Regular and fast tracepoints are dynamic tracing facilities, meaning
10929that they can be used to insert tracepoints at (almost) any location
10930in the target. Some targets may also support controlling @dfn{static
10931tracepoints} from @value{GDBN}. With static tracing, a set of
10932instrumentation points, also known as @dfn{markers}, are embedded in
10933the target program, and can be activated or deactivated by name or
10934address. These are usually placed at locations which facilitate
10935investigating what the target is actually doing. @value{GDBN}'s
10936support for static tracing includes being able to list instrumentation
10937points, and attach them with @value{GDBN} defined high level
10938tracepoints that expose the whole range of convenience of
8786b2bd 10939@value{GDBN}'s tracepoints support. Namely, support for collecting
0fb4aa4b
PA
10940registers values and values of global or local (to the instrumentation
10941point) variables; tracepoint conditions and trace state variables.
10942The act of installing a @value{GDBN} static tracepoint on an
10943instrumentation point, or marker, is referred to as @dfn{probing} a
10944static tracepoint marker.
10945
fa593d66
PA
10946@code{gdbserver} supports tracepoints on some target systems.
10947@xref{Server,,Tracepoints support in @code{gdbserver}}.
10948
b37052ae
EZ
10949This section describes commands to set tracepoints and associated
10950conditions and actions.
10951
10952@menu
b383017d
RM
10953* Create and Delete Tracepoints::
10954* Enable and Disable Tracepoints::
10955* Tracepoint Passcounts::
782b2b07 10956* Tracepoint Conditions::
f61e138d 10957* Trace State Variables::
b383017d
RM
10958* Tracepoint Actions::
10959* Listing Tracepoints::
0fb4aa4b 10960* Listing Static Tracepoint Markers::
79a6e687 10961* Starting and Stopping Trace Experiments::
c9429232 10962* Tracepoint Restrictions::
b37052ae
EZ
10963@end menu
10964
10965@node Create and Delete Tracepoints
10966@subsection Create and Delete Tracepoints
10967
10968@table @code
10969@cindex set tracepoint
10970@kindex trace
1042e4c0 10971@item trace @var{location}
b37052ae 10972The @code{trace} command is very similar to the @code{break} command.
1042e4c0
SS
10973Its argument @var{location} can be a source line, a function name, or
10974an address in the target program. @xref{Specify Location}. The
10975@code{trace} command defines a tracepoint, which is a point in the
10976target program where the debugger will briefly stop, collect some
10977data, and then allow the program to continue. Setting a tracepoint or
1e4d1764
YQ
10978changing its actions takes effect immediately if the remote stub
10979supports the @samp{InstallInTrace} feature (@pxref{install tracepoint
10980in tracing}).
10981If remote stub doesn't support the @samp{InstallInTrace} feature, all
10982these changes don't take effect until the next @code{tstart}
1042e4c0 10983command, and once a trace experiment is running, further changes will
bfccc43c
YQ
10984not have any effect until the next trace experiment starts. In addition,
10985@value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose
10986address is not yet resolved. (This is similar to pending breakpoints.)
10987Pending tracepoints are not downloaded to the target and not installed
10988until they are resolved. The resolution of pending tracepoints requires
10989@value{GDBN} support---when debugging with the remote target, and
10990@value{GDBN} disconnects from the remote stub (@pxref{disconnected
10991tracing}), pending tracepoints can not be resolved (and downloaded to
10992the remote stub) while @value{GDBN} is disconnected.
b37052ae
EZ
10993
10994Here are some examples of using the @code{trace} command:
10995
10996@smallexample
10997(@value{GDBP}) @b{trace foo.c:121} // a source file and line number
10998
10999(@value{GDBP}) @b{trace +2} // 2 lines forward
11000
11001(@value{GDBP}) @b{trace my_function} // first source line of function
11002
11003(@value{GDBP}) @b{trace *my_function} // EXACT start address of function
11004
11005(@value{GDBP}) @b{trace *0x2117c4} // an address
11006@end smallexample
11007
11008@noindent
11009You can abbreviate @code{trace} as @code{tr}.
11010
782b2b07
SS
11011@item trace @var{location} if @var{cond}
11012Set a tracepoint with condition @var{cond}; evaluate the expression
11013@var{cond} each time the tracepoint is reached, and collect data only
11014if the value is nonzero---that is, if @var{cond} evaluates as true.
11015@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more
11016information on tracepoint conditions.
11017
7a697b8d
SS
11018@item ftrace @var{location} [ if @var{cond} ]
11019@cindex set fast tracepoint
74c761c1 11020@cindex fast tracepoints, setting
7a697b8d
SS
11021@kindex ftrace
11022The @code{ftrace} command sets a fast tracepoint. For targets that
11023support them, fast tracepoints will use a more efficient but possibly
11024less general technique to trigger data collection, such as a jump
11025instruction instead of a trap, or some sort of hardware support. It
11026may not be possible to create a fast tracepoint at the desired
11027location, in which case the command will exit with an explanatory
11028message.
11029
11030@value{GDBN} handles arguments to @code{ftrace} exactly as for
11031@code{trace}.
11032
405f8e94
SS
11033On 32-bit x86-architecture systems, fast tracepoints normally need to
11034be placed at an instruction that is 5 bytes or longer, but can be
11035placed at 4-byte instructions if the low 64K of memory of the target
11036program is available to install trampolines. Some Unix-type systems,
11037such as @sc{gnu}/Linux, exclude low addresses from the program's
11038address space; but for instance with the Linux kernel it is possible
11039to let @value{GDBN} use this area by doing a @command{sysctl} command
11040to set the @code{mmap_min_addr} kernel parameter, as in
11041
11042@example
11043sudo sysctl -w vm.mmap_min_addr=32768
11044@end example
11045
11046@noindent
11047which sets the low address to 32K, which leaves plenty of room for
11048trampolines. The minimum address should be set to a page boundary.
11049
0fb4aa4b 11050@item strace @var{location} [ if @var{cond} ]
74c761c1
PA
11051@cindex set static tracepoint
11052@cindex static tracepoints, setting
11053@cindex probe static tracepoint marker
0fb4aa4b
PA
11054@kindex strace
11055The @code{strace} command sets a static tracepoint. For targets that
11056support it, setting a static tracepoint probes a static
11057instrumentation point, or marker, found at @var{location}. It may not
11058be possible to set a static tracepoint at the desired location, in
11059which case the command will exit with an explanatory message.
11060
11061@value{GDBN} handles arguments to @code{strace} exactly as for
11062@code{trace}, with the addition that the user can also specify
11063@code{-m @var{marker}} as @var{location}. This probes the marker
11064identified by the @var{marker} string identifier. This identifier
11065depends on the static tracepoint backend library your program is
11066using. You can find all the marker identifiers in the @samp{ID} field
11067of the @code{info static-tracepoint-markers} command output.
11068@xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint
11069Markers}. For example, in the following small program using the UST
11070tracing engine:
11071
11072@smallexample
11073main ()
11074@{
11075 trace_mark(ust, bar33, "str %s", "FOOBAZ");
11076@}
11077@end smallexample
11078
11079@noindent
11080the marker id is composed of joining the first two arguments to the
11081@code{trace_mark} call with a slash, which translates to:
11082
11083@smallexample
11084(@value{GDBP}) info static-tracepoint-markers
11085Cnt Enb ID Address What
110861 n ust/bar33 0x0000000000400ddc in main at stexample.c:22
11087 Data: "str %s"
11088[etc...]
11089@end smallexample
11090
11091@noindent
11092so you may probe the marker above with:
11093
11094@smallexample
11095(@value{GDBP}) strace -m ust/bar33
11096@end smallexample
11097
11098Static tracepoints accept an extra collect action --- @code{collect
11099$_sdata}. This collects arbitrary user data passed in the probe point
11100call to the tracing library. In the UST example above, you'll see
11101that the third argument to @code{trace_mark} is a printf-like format
11102string. The user data is then the result of running that formating
11103string against the following arguments. Note that @code{info
11104static-tracepoint-markers} command output lists that format string in
11105the @samp{Data:} field.
11106
11107You can inspect this data when analyzing the trace buffer, by printing
11108the $_sdata variable like any other variable available to
11109@value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}.
11110
b37052ae
EZ
11111@vindex $tpnum
11112@cindex last tracepoint number
11113@cindex recent tracepoint number
11114@cindex tracepoint number
11115The convenience variable @code{$tpnum} records the tracepoint number
11116of the most recently set tracepoint.
11117
11118@kindex delete tracepoint
11119@cindex tracepoint deletion
11120@item delete tracepoint @r{[}@var{num}@r{]}
11121Permanently delete one or more tracepoints. With no argument, the
1042e4c0
SS
11122default is to delete all tracepoints. Note that the regular
11123@code{delete} command can remove tracepoints also.
b37052ae
EZ
11124
11125Examples:
11126
11127@smallexample
11128(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
11129
11130(@value{GDBP}) @b{delete trace} // remove all tracepoints
11131@end smallexample
11132
11133@noindent
11134You can abbreviate this command as @code{del tr}.
11135@end table
11136
11137@node Enable and Disable Tracepoints
11138@subsection Enable and Disable Tracepoints
11139
1042e4c0
SS
11140These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}.
11141
b37052ae
EZ
11142@table @code
11143@kindex disable tracepoint
11144@item disable tracepoint @r{[}@var{num}@r{]}
11145Disable tracepoint @var{num}, or all tracepoints if no argument
11146@var{num} is given. A disabled tracepoint will have no effect during
d248b706 11147a trace experiment, but it is not forgotten. You can re-enable
b37052ae 11148a disabled tracepoint using the @code{enable tracepoint} command.
d248b706
KY
11149If the command is issued during a trace experiment and the debug target
11150has support for disabling tracepoints during a trace experiment, then the
11151change will be effective immediately. Otherwise, it will be applied to the
11152next trace experiment.
b37052ae
EZ
11153
11154@kindex enable tracepoint
11155@item enable tracepoint @r{[}@var{num}@r{]}
d248b706
KY
11156Enable tracepoint @var{num}, or all tracepoints. If this command is
11157issued during a trace experiment and the debug target supports enabling
11158tracepoints during a trace experiment, then the enabled tracepoints will
11159become effective immediately. Otherwise, they will become effective the
11160next time a trace experiment is run.
b37052ae
EZ
11161@end table
11162
11163@node Tracepoint Passcounts
11164@subsection Tracepoint Passcounts
11165
11166@table @code
11167@kindex passcount
11168@cindex tracepoint pass count
11169@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
11170Set the @dfn{passcount} of a tracepoint. The passcount is a way to
11171automatically stop a trace experiment. If a tracepoint's passcount is
11172@var{n}, then the trace experiment will be automatically stopped on
11173the @var{n}'th time that tracepoint is hit. If the tracepoint number
11174@var{num} is not specified, the @code{passcount} command sets the
11175passcount of the most recently defined tracepoint. If no passcount is
11176given, the trace experiment will run until stopped explicitly by the
11177user.
11178
11179Examples:
11180
11181@smallexample
b383017d 11182(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
6826cf00 11183@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
b37052ae
EZ
11184
11185(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
6826cf00 11186@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
b37052ae
EZ
11187(@value{GDBP}) @b{trace foo}
11188(@value{GDBP}) @b{pass 3}
11189(@value{GDBP}) @b{trace bar}
11190(@value{GDBP}) @b{pass 2}
11191(@value{GDBP}) @b{trace baz}
11192(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
6826cf00
EZ
11193@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
11194@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
11195@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
b37052ae
EZ
11196@end smallexample
11197@end table
11198
782b2b07
SS
11199@node Tracepoint Conditions
11200@subsection Tracepoint Conditions
11201@cindex conditional tracepoints
11202@cindex tracepoint conditions
11203
11204The simplest sort of tracepoint collects data every time your program
11205reaches a specified place. You can also specify a @dfn{condition} for
11206a tracepoint. A condition is just a Boolean expression in your
11207programming language (@pxref{Expressions, ,Expressions}). A
11208tracepoint with a condition evaluates the expression each time your
11209program reaches it, and data collection happens only if the condition
11210is true.
11211
11212Tracepoint conditions can be specified when a tracepoint is set, by
11213using @samp{if} in the arguments to the @code{trace} command.
11214@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can
11215also be set or changed at any time with the @code{condition} command,
11216just as with breakpoints.
11217
11218Unlike breakpoint conditions, @value{GDBN} does not actually evaluate
11219the conditional expression itself. Instead, @value{GDBN} encodes the
6dcd5565 11220expression into an agent expression (@pxref{Agent Expressions})
782b2b07
SS
11221suitable for execution on the target, independently of @value{GDBN}.
11222Global variables become raw memory locations, locals become stack
11223accesses, and so forth.
11224
11225For instance, suppose you have a function that is usually called
11226frequently, but should not be called after an error has occurred. You
11227could use the following tracepoint command to collect data about calls
11228of that function that happen while the error code is propagating
11229through the program; an unconditional tracepoint could end up
11230collecting thousands of useless trace frames that you would have to
11231search through.
11232
11233@smallexample
11234(@value{GDBP}) @kbd{trace normal_operation if errcode > 0}
11235@end smallexample
11236
f61e138d
SS
11237@node Trace State Variables
11238@subsection Trace State Variables
11239@cindex trace state variables
11240
11241A @dfn{trace state variable} is a special type of variable that is
11242created and managed by target-side code. The syntax is the same as
11243that for GDB's convenience variables (a string prefixed with ``$''),
11244but they are stored on the target. They must be created explicitly,
11245using a @code{tvariable} command. They are always 64-bit signed
11246integers.
11247
11248Trace state variables are remembered by @value{GDBN}, and downloaded
11249to the target along with tracepoint information when the trace
11250experiment starts. There are no intrinsic limits on the number of
11251trace state variables, beyond memory limitations of the target.
11252
11253@cindex convenience variables, and trace state variables
11254Although trace state variables are managed by the target, you can use
11255them in print commands and expressions as if they were convenience
11256variables; @value{GDBN} will get the current value from the target
11257while the trace experiment is running. Trace state variables share
11258the same namespace as other ``$'' variables, which means that you
11259cannot have trace state variables with names like @code{$23} or
11260@code{$pc}, nor can you have a trace state variable and a convenience
11261variable with the same name.
11262
11263@table @code
11264
11265@item tvariable $@var{name} [ = @var{expression} ]
11266@kindex tvariable
11267The @code{tvariable} command creates a new trace state variable named
11268@code{$@var{name}}, and optionally gives it an initial value of
11269@var{expression}. @var{expression} is evaluated when this command is
11270entered; the result will be converted to an integer if possible,
11271otherwise @value{GDBN} will report an error. A subsequent
11272@code{tvariable} command specifying the same name does not create a
11273variable, but instead assigns the supplied initial value to the
11274existing variable of that name, overwriting any previous initial
11275value. The default initial value is 0.
11276
11277@item info tvariables
11278@kindex info tvariables
11279List all the trace state variables along with their initial values.
11280Their current values may also be displayed, if the trace experiment is
11281currently running.
11282
11283@item delete tvariable @r{[} $@var{name} @dots{} @r{]}
11284@kindex delete tvariable
11285Delete the given trace state variables, or all of them if no arguments
11286are specified.
11287
11288@end table
11289
b37052ae
EZ
11290@node Tracepoint Actions
11291@subsection Tracepoint Action Lists
11292
11293@table @code
11294@kindex actions
11295@cindex tracepoint actions
11296@item actions @r{[}@var{num}@r{]}
11297This command will prompt for a list of actions to be taken when the
11298tracepoint is hit. If the tracepoint number @var{num} is not
11299specified, this command sets the actions for the one that was most
11300recently defined (so that you can define a tracepoint and then say
11301@code{actions} without bothering about its number). You specify the
11302actions themselves on the following lines, one action at a time, and
11303terminate the actions list with a line containing just @code{end}. So
7d13fe92 11304far, the only defined actions are @code{collect}, @code{teval}, and
b37052ae
EZ
11305@code{while-stepping}.
11306
5a9351ae
SS
11307@code{actions} is actually equivalent to @code{commands} (@pxref{Break
11308Commands, ,Breakpoint Command Lists}), except that only the defined
11309actions are allowed; any other @value{GDBN} command is rejected.
11310
b37052ae
EZ
11311@cindex remove actions from a tracepoint
11312To remove all actions from a tracepoint, type @samp{actions @var{num}}
11313and follow it immediately with @samp{end}.
11314
11315@smallexample
11316(@value{GDBP}) @b{collect @var{data}} // collect some data
11317
6826cf00 11318(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
b37052ae 11319
6826cf00 11320(@value{GDBP}) @b{end} // signals the end of actions.
b37052ae
EZ
11321@end smallexample
11322
11323In the following example, the action list begins with @code{collect}
11324commands indicating the things to be collected when the tracepoint is
11325hit. Then, in order to single-step and collect additional data
11326following the tracepoint, a @code{while-stepping} command is used,
7d13fe92
SS
11327followed by the list of things to be collected after each step in a
11328sequence of single steps. The @code{while-stepping} command is
11329terminated by its own separate @code{end} command. Lastly, the action
11330list is terminated by an @code{end} command.
b37052ae
EZ
11331
11332@smallexample
11333(@value{GDBP}) @b{trace foo}
11334(@value{GDBP}) @b{actions}
11335Enter actions for tracepoint 1, one per line:
11336> collect bar,baz
11337> collect $regs
11338> while-stepping 12
5a9351ae 11339 > collect $pc, arr[i]
b37052ae
EZ
11340 > end
11341end
11342@end smallexample
11343
11344@kindex collect @r{(tracepoints)}
3065dfb6 11345@item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{}
b37052ae
EZ
11346Collect values of the given expressions when the tracepoint is hit.
11347This command accepts a comma-separated list of any valid expressions.
11348In addition to global, static, or local variables, the following
11349special arguments are supported:
11350
11351@table @code
11352@item $regs
0fb4aa4b 11353Collect all registers.
b37052ae
EZ
11354
11355@item $args
0fb4aa4b 11356Collect all function arguments.
b37052ae
EZ
11357
11358@item $locals
0fb4aa4b
PA
11359Collect all local variables.
11360
6710bf39
SS
11361@item $_ret
11362Collect the return address. This is helpful if you want to see more
11363of a backtrace.
11364
62e5f89c
SDJ
11365@item $_probe_argc
11366Collects the number of arguments from the static probe at which the
11367tracepoint is located.
11368@xref{Static Probe Points}.
11369
11370@item $_probe_arg@var{n}
11371@var{n} is an integer between 0 and 11. Collects the @var{n}th argument
11372from the static probe at which the tracepoint is located.
11373@xref{Static Probe Points}.
11374
0fb4aa4b
PA
11375@item $_sdata
11376@vindex $_sdata@r{, collect}
11377Collect static tracepoint marker specific data. Only available for
11378static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action
11379Lists}. On the UST static tracepoints library backend, an
11380instrumentation point resembles a @code{printf} function call. The
11381tracing library is able to collect user specified data formatted to a
11382character string using the format provided by the programmer that
11383instrumented the program. Other backends have similar mechanisms.
11384Here's an example of a UST marker call:
11385
11386@smallexample
11387 const char master_name[] = "$your_name";
11388 trace_mark(channel1, marker1, "hello %s", master_name)
11389@end smallexample
11390
11391In this case, collecting @code{$_sdata} collects the string
11392@samp{hello $yourname}. When analyzing the trace buffer, you can
11393inspect @samp{$_sdata} like any other variable available to
11394@value{GDBN}.
b37052ae
EZ
11395@end table
11396
11397You can give several consecutive @code{collect} commands, each one
11398with a single argument, or one @code{collect} command with several
5a9351ae 11399arguments separated by commas; the effect is the same.
b37052ae 11400
3065dfb6
SS
11401The optional @var{mods} changes the usual handling of the arguments.
11402@code{s} requests that pointers to chars be handled as strings, in
11403particular collecting the contents of the memory being pointed at, up
11404to the first zero. The upper bound is by default the value of the
11405@code{print elements} variable; if @code{s} is followed by a decimal
11406number, that is the upper bound instead. So for instance
11407@samp{collect/s25 mystr} collects as many as 25 characters at
11408@samp{mystr}.
11409
f5c37c66
EZ
11410The command @code{info scope} (@pxref{Symbols, info scope}) is
11411particularly useful for figuring out what data to collect.
11412
6da95a67
SS
11413@kindex teval @r{(tracepoints)}
11414@item teval @var{expr1}, @var{expr2}, @dots{}
11415Evaluate the given expressions when the tracepoint is hit. This
11416command accepts a comma-separated list of expressions. The results
11417are discarded, so this is mainly useful for assigning values to trace
11418state variables (@pxref{Trace State Variables}) without adding those
11419values to the trace buffer, as would be the case if the @code{collect}
11420action were used.
11421
b37052ae
EZ
11422@kindex while-stepping @r{(tracepoints)}
11423@item while-stepping @var{n}
c9429232 11424Perform @var{n} single-step instruction traces after the tracepoint,
7d13fe92 11425collecting new data after each step. The @code{while-stepping}
c9429232
SS
11426command is followed by the list of what to collect while stepping
11427(followed by its own @code{end} command):
b37052ae
EZ
11428
11429@smallexample
11430> while-stepping 12
11431 > collect $regs, myglobal
11432 > end
11433>
11434@end smallexample
11435
11436@noindent
7d13fe92
SS
11437Note that @code{$pc} is not automatically collected by
11438@code{while-stepping}; you need to explicitly collect that register if
11439you need it. You may abbreviate @code{while-stepping} as @code{ws} or
b37052ae 11440@code{stepping}.
236f1d4d
SS
11441
11442@item set default-collect @var{expr1}, @var{expr2}, @dots{}
11443@kindex set default-collect
11444@cindex default collection action
11445This variable is a list of expressions to collect at each tracepoint
11446hit. It is effectively an additional @code{collect} action prepended
11447to every tracepoint action list. The expressions are parsed
11448individually for each tracepoint, so for instance a variable named
11449@code{xyz} may be interpreted as a global for one tracepoint, and a
11450local for another, as appropriate to the tracepoint's location.
11451
11452@item show default-collect
11453@kindex show default-collect
11454Show the list of expressions that are collected by default at each
11455tracepoint hit.
11456
b37052ae
EZ
11457@end table
11458
11459@node Listing Tracepoints
11460@subsection Listing Tracepoints
11461
11462@table @code
e5a67952
MS
11463@kindex info tracepoints @r{[}@var{n}@dots{}@r{]}
11464@kindex info tp @r{[}@var{n}@dots{}@r{]}
b37052ae 11465@cindex information about tracepoints
e5a67952 11466@item info tracepoints @r{[}@var{num}@dots{}@r{]}
1042e4c0
SS
11467Display information about the tracepoint @var{num}. If you don't
11468specify a tracepoint number, displays information about all the
11469tracepoints defined so far. The format is similar to that used for
11470@code{info breakpoints}; in fact, @code{info tracepoints} is the same
11471command, simply restricting itself to tracepoints.
11472
11473A tracepoint's listing may include additional information specific to
11474tracing:
b37052ae
EZ
11475
11476@itemize @bullet
11477@item
b37052ae 11478its passcount as given by the @code{passcount @var{n}} command
b37052ae
EZ
11479@end itemize
11480
11481@smallexample
11482(@value{GDBP}) @b{info trace}
1042e4c0
SS
11483Num Type Disp Enb Address What
114841 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7
5a9351ae
SS
11485 while-stepping 20
11486 collect globfoo, $regs
11487 end
11488 collect globfoo2
11489 end
1042e4c0 11490 pass count 1200
b37052ae
EZ
11491(@value{GDBP})
11492@end smallexample
11493
11494@noindent
11495This command can be abbreviated @code{info tp}.
11496@end table
11497
0fb4aa4b
PA
11498@node Listing Static Tracepoint Markers
11499@subsection Listing Static Tracepoint Markers
11500
11501@table @code
11502@kindex info static-tracepoint-markers
11503@cindex information about static tracepoint markers
11504@item info static-tracepoint-markers
11505Display information about all static tracepoint markers defined in the
11506program.
11507
11508For each marker, the following columns are printed:
11509
11510@table @emph
11511@item Count
11512An incrementing counter, output to help readability. This is not a
11513stable identifier.
11514@item ID
11515The marker ID, as reported by the target.
11516@item Enabled or Disabled
11517Probed markers are tagged with @samp{y}. @samp{n} identifies marks
11518that are not enabled.
11519@item Address
11520Where the marker is in your program, as a memory address.
11521@item What
11522Where the marker is in the source for your program, as a file and line
11523number. If the debug information included in the program does not
11524allow @value{GDBN} to locate the source of the marker, this column
11525will be left blank.
11526@end table
11527
11528@noindent
11529In addition, the following information may be printed for each marker:
11530
11531@table @emph
11532@item Data
11533User data passed to the tracing library by the marker call. In the
11534UST backend, this is the format string passed as argument to the
11535marker call.
11536@item Static tracepoints probing the marker
11537The list of static tracepoints attached to the marker.
11538@end table
11539
11540@smallexample
11541(@value{GDBP}) info static-tracepoint-markers
11542Cnt ID Enb Address What
115431 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25
11544 Data: number1 %d number2 %d
11545 Probed by static tracepoints: #2
115462 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24
11547 Data: str %s
11548(@value{GDBP})
11549@end smallexample
11550@end table
11551
79a6e687
BW
11552@node Starting and Stopping Trace Experiments
11553@subsection Starting and Stopping Trace Experiments
b37052ae
EZ
11554
11555@table @code
f196051f 11556@kindex tstart [ @var{notes} ]
b37052ae
EZ
11557@cindex start a new trace experiment
11558@cindex collected data discarded
11559@item tstart
f196051f
SS
11560This command starts the trace experiment, and begins collecting data.
11561It has the side effect of discarding all the data collected in the
11562trace buffer during the previous trace experiment. If any arguments
11563are supplied, they are taken as a note and stored with the trace
11564experiment's state. The notes may be arbitrary text, and are
11565especially useful with disconnected tracing in a multi-user context;
11566the notes can explain what the trace is doing, supply user contact
11567information, and so forth.
11568
11569@kindex tstop [ @var{notes} ]
b37052ae
EZ
11570@cindex stop a running trace experiment
11571@item tstop
f196051f
SS
11572This command stops the trace experiment. If any arguments are
11573supplied, they are recorded with the experiment as a note. This is
11574useful if you are stopping a trace started by someone else, for
11575instance if the trace is interfering with the system's behavior and
11576needs to be stopped quickly.
b37052ae 11577
68c71a2e 11578@strong{Note}: a trace experiment and data collection may stop
b37052ae
EZ
11579automatically if any tracepoint's passcount is reached
11580(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
11581
11582@kindex tstatus
11583@cindex status of trace data collection
11584@cindex trace experiment, status of
11585@item tstatus
11586This command displays the status of the current trace data
11587collection.
11588@end table
11589
11590Here is an example of the commands we described so far:
11591
11592@smallexample
11593(@value{GDBP}) @b{trace gdb_c_test}
11594(@value{GDBP}) @b{actions}
11595Enter actions for tracepoint #1, one per line.
11596> collect $regs,$locals,$args
11597> while-stepping 11
11598 > collect $regs
11599 > end
11600> end
11601(@value{GDBP}) @b{tstart}
11602 [time passes @dots{}]
11603(@value{GDBP}) @b{tstop}
11604@end smallexample
11605
03f2bd59 11606@anchor{disconnected tracing}
d5551862
SS
11607@cindex disconnected tracing
11608You can choose to continue running the trace experiment even if
11609@value{GDBN} disconnects from the target, voluntarily or
11610involuntarily. For commands such as @code{detach}, the debugger will
11611ask what you want to do with the trace. But for unexpected
11612terminations (@value{GDBN} crash, network outage), it would be
11613unfortunate to lose hard-won trace data, so the variable
11614@code{disconnected-tracing} lets you decide whether the trace should
11615continue running without @value{GDBN}.
11616
11617@table @code
11618@item set disconnected-tracing on
11619@itemx set disconnected-tracing off
11620@kindex set disconnected-tracing
11621Choose whether a tracing run should continue to run if @value{GDBN}
11622has disconnected from the target. Note that @code{detach} or
11623@code{quit} will ask you directly what to do about a running trace no
11624matter what this variable's setting, so the variable is mainly useful
11625for handling unexpected situations, such as loss of the network.
11626
11627@item show disconnected-tracing
11628@kindex show disconnected-tracing
11629Show the current choice for disconnected tracing.
11630
11631@end table
11632
11633When you reconnect to the target, the trace experiment may or may not
11634still be running; it might have filled the trace buffer in the
11635meantime, or stopped for one of the other reasons. If it is running,
11636it will continue after reconnection.
11637
11638Upon reconnection, the target will upload information about the
11639tracepoints in effect. @value{GDBN} will then compare that
11640information to the set of tracepoints currently defined, and attempt
11641to match them up, allowing for the possibility that the numbers may
11642have changed due to creation and deletion in the meantime. If one of
11643the target's tracepoints does not match any in @value{GDBN}, the
11644debugger will create a new tracepoint, so that you have a number with
11645which to specify that tracepoint. This matching-up process is
11646necessarily heuristic, and it may result in useless tracepoints being
11647created; you may simply delete them if they are of no use.
b37052ae 11648
4daf5ac0
SS
11649@cindex circular trace buffer
11650If your target agent supports a @dfn{circular trace buffer}, then you
11651can run a trace experiment indefinitely without filling the trace
11652buffer; when space runs out, the agent deletes already-collected trace
11653frames, oldest first, until there is enough room to continue
11654collecting. This is especially useful if your tracepoints are being
11655hit too often, and your trace gets terminated prematurely because the
11656buffer is full. To ask for a circular trace buffer, simply set
81896e36 11657@samp{circular-trace-buffer} to on. You can set this at any time,
4daf5ac0
SS
11658including during tracing; if the agent can do it, it will change
11659buffer handling on the fly, otherwise it will not take effect until
11660the next run.
11661
11662@table @code
11663@item set circular-trace-buffer on
11664@itemx set circular-trace-buffer off
11665@kindex set circular-trace-buffer
11666Choose whether a tracing run should use a linear or circular buffer
11667for trace data. A linear buffer will not lose any trace data, but may
11668fill up prematurely, while a circular buffer will discard old trace
11669data, but it will have always room for the latest tracepoint hits.
11670
11671@item show circular-trace-buffer
11672@kindex show circular-trace-buffer
11673Show the current choice for the trace buffer. Note that this may not
11674match the agent's current buffer handling, nor is it guaranteed to
11675match the setting that might have been in effect during a past run,
11676for instance if you are looking at frames from a trace file.
11677
11678@end table
11679
f196051f
SS
11680@table @code
11681@item set trace-user @var{text}
11682@kindex set trace-user
11683
11684@item show trace-user
11685@kindex show trace-user
11686
11687@item set trace-notes @var{text}
11688@kindex set trace-notes
11689Set the trace run's notes.
11690
11691@item show trace-notes
11692@kindex show trace-notes
11693Show the trace run's notes.
11694
11695@item set trace-stop-notes @var{text}
11696@kindex set trace-stop-notes
11697Set the trace run's stop notes. The handling of the note is as for
11698@code{tstop} arguments; the set command is convenient way to fix a
11699stop note that is mistaken or incomplete.
11700
11701@item show trace-stop-notes
11702@kindex show trace-stop-notes
11703Show the trace run's stop notes.
11704
11705@end table
11706
c9429232
SS
11707@node Tracepoint Restrictions
11708@subsection Tracepoint Restrictions
11709
11710@cindex tracepoint restrictions
11711There are a number of restrictions on the use of tracepoints. As
11712described above, tracepoint data gathering occurs on the target
11713without interaction from @value{GDBN}. Thus the full capabilities of
11714the debugger are not available during data gathering, and then at data
11715examination time, you will be limited by only having what was
11716collected. The following items describe some common problems, but it
11717is not exhaustive, and you may run into additional difficulties not
11718mentioned here.
11719
11720@itemize @bullet
11721
11722@item
11723Tracepoint expressions are intended to gather objects (lvalues). Thus
11724the full flexibility of GDB's expression evaluator is not available.
11725You cannot call functions, cast objects to aggregate types, access
11726convenience variables or modify values (except by assignment to trace
11727state variables). Some language features may implicitly call
11728functions (for instance Objective-C fields with accessors), and therefore
11729cannot be collected either.
11730
11731@item
11732Collection of local variables, either individually or in bulk with
11733@code{$locals} or @code{$args}, during @code{while-stepping} may
11734behave erratically. The stepping action may enter a new scope (for
11735instance by stepping into a function), or the location of the variable
11736may change (for instance it is loaded into a register). The
11737tracepoint data recorded uses the location information for the
11738variables that is correct for the tracepoint location. When the
11739tracepoint is created, it is not possible, in general, to determine
11740where the steps of a @code{while-stepping} sequence will advance the
11741program---particularly if a conditional branch is stepped.
11742
11743@item
11744Collection of an incompletely-initialized or partially-destroyed object
11745may result in something that @value{GDBN} cannot display, or displays
11746in a misleading way.
11747
11748@item
11749When @value{GDBN} displays a pointer to character it automatically
11750dereferences the pointer to also display characters of the string
11751being pointed to. However, collecting the pointer during tracing does
11752not automatically collect the string. You need to explicitly
11753dereference the pointer and provide size information if you want to
11754collect not only the pointer, but the memory pointed to. For example,
11755@code{*ptr@@50} can be used to collect the 50 element array pointed to
11756by @code{ptr}.
11757
11758@item
11759It is not possible to collect a complete stack backtrace at a
11760tracepoint. Instead, you may collect the registers and a few hundred
d99f7e48 11761bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300}
c9429232
SS
11762(adjust to use the name of the actual stack pointer register on your
11763target architecture, and the amount of stack you wish to capture).
11764Then the @code{backtrace} command will show a partial backtrace when
11765using a trace frame. The number of stack frames that can be examined
11766depends on the sizes of the frames in the collected stack. Note that
11767if you ask for a block so large that it goes past the bottom of the
11768stack, the target agent may report an error trying to read from an
11769invalid address.
11770
af54718e
SS
11771@item
11772If you do not collect registers at a tracepoint, @value{GDBN} can
11773infer that the value of @code{$pc} must be the same as the address of
11774the tracepoint and use that when you are looking at a trace frame
11775for that tracepoint. However, this cannot work if the tracepoint has
11776multiple locations (for instance if it was set in a function that was
11777inlined), or if it has a @code{while-stepping} loop. In those cases
11778@value{GDBN} will warn you that it can't infer @code{$pc}, and default
11779it to zero.
11780
c9429232
SS
11781@end itemize
11782
b37052ae 11783@node Analyze Collected Data
79a6e687 11784@section Using the Collected Data
b37052ae
EZ
11785
11786After the tracepoint experiment ends, you use @value{GDBN} commands
11787for examining the trace data. The basic idea is that each tracepoint
11788collects a trace @dfn{snapshot} every time it is hit and another
11789snapshot every time it single-steps. All these snapshots are
11790consecutively numbered from zero and go into a buffer, and you can
11791examine them later. The way you examine them is to @dfn{focus} on a
11792specific trace snapshot. When the remote stub is focused on a trace
11793snapshot, it will respond to all @value{GDBN} requests for memory and
11794registers by reading from the buffer which belongs to that snapshot,
11795rather than from @emph{real} memory or registers of the program being
11796debugged. This means that @strong{all} @value{GDBN} commands
11797(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
11798behave as if we were currently debugging the program state as it was
11799when the tracepoint occurred. Any requests for data that are not in
11800the buffer will fail.
11801
11802@menu
11803* tfind:: How to select a trace snapshot
11804* tdump:: How to display all data for a snapshot
6149aea9 11805* save tracepoints:: How to save tracepoints for a future run
b37052ae
EZ
11806@end menu
11807
11808@node tfind
11809@subsection @code{tfind @var{n}}
11810
11811@kindex tfind
11812@cindex select trace snapshot
11813@cindex find trace snapshot
11814The basic command for selecting a trace snapshot from the buffer is
11815@code{tfind @var{n}}, which finds trace snapshot number @var{n},
11816counting from zero. If no argument @var{n} is given, the next
11817snapshot is selected.
11818
11819Here are the various forms of using the @code{tfind} command.
11820
11821@table @code
11822@item tfind start
11823Find the first snapshot in the buffer. This is a synonym for
11824@code{tfind 0} (since 0 is the number of the first snapshot).
11825
11826@item tfind none
11827Stop debugging trace snapshots, resume @emph{live} debugging.
11828
11829@item tfind end
11830Same as @samp{tfind none}.
11831
11832@item tfind
11833No argument means find the next trace snapshot.
11834
11835@item tfind -
11836Find the previous trace snapshot before the current one. This permits
11837retracing earlier steps.
11838
11839@item tfind tracepoint @var{num}
11840Find the next snapshot associated with tracepoint @var{num}. Search
11841proceeds forward from the last examined trace snapshot. If no
11842argument @var{num} is given, it means find the next snapshot collected
11843for the same tracepoint as the current snapshot.
11844
11845@item tfind pc @var{addr}
11846Find the next snapshot associated with the value @var{addr} of the
11847program counter. Search proceeds forward from the last examined trace
11848snapshot. If no argument @var{addr} is given, it means find the next
11849snapshot with the same value of PC as the current snapshot.
11850
11851@item tfind outside @var{addr1}, @var{addr2}
11852Find the next snapshot whose PC is outside the given range of
081dfbf7 11853addresses (exclusive).
b37052ae
EZ
11854
11855@item tfind range @var{addr1}, @var{addr2}
11856Find the next snapshot whose PC is between @var{addr1} and
081dfbf7 11857@var{addr2} (inclusive).
b37052ae
EZ
11858
11859@item tfind line @r{[}@var{file}:@r{]}@var{n}
11860Find the next snapshot associated with the source line @var{n}. If
11861the optional argument @var{file} is given, refer to line @var{n} in
11862that source file. Search proceeds forward from the last examined
11863trace snapshot. If no argument @var{n} is given, it means find the
11864next line other than the one currently being examined; thus saying
11865@code{tfind line} repeatedly can appear to have the same effect as
11866stepping from line to line in a @emph{live} debugging session.
11867@end table
11868
11869The default arguments for the @code{tfind} commands are specifically
11870designed to make it easy to scan through the trace buffer. For
11871instance, @code{tfind} with no argument selects the next trace
11872snapshot, and @code{tfind -} with no argument selects the previous
11873trace snapshot. So, by giving one @code{tfind} command, and then
11874simply hitting @key{RET} repeatedly you can examine all the trace
11875snapshots in order. Or, by saying @code{tfind -} and then hitting
11876@key{RET} repeatedly you can examine the snapshots in reverse order.
11877The @code{tfind line} command with no argument selects the snapshot
11878for the next source line executed. The @code{tfind pc} command with
11879no argument selects the next snapshot with the same program counter
11880(PC) as the current frame. The @code{tfind tracepoint} command with
11881no argument selects the next trace snapshot collected by the same
11882tracepoint as the current one.
11883
11884In addition to letting you scan through the trace buffer manually,
11885these commands make it easy to construct @value{GDBN} scripts that
11886scan through the trace buffer and print out whatever collected data
11887you are interested in. Thus, if we want to examine the PC, FP, and SP
11888registers from each trace frame in the buffer, we can say this:
11889
11890@smallexample
11891(@value{GDBP}) @b{tfind start}
11892(@value{GDBP}) @b{while ($trace_frame != -1)}
11893> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
11894 $trace_frame, $pc, $sp, $fp
11895> tfind
11896> end
11897
11898Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
11899Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
11900Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
11901Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
11902Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
11903Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
11904Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
11905Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
11906Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
11907Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
11908Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
11909@end smallexample
11910
11911Or, if we want to examine the variable @code{X} at each source line in
11912the buffer:
11913
11914@smallexample
11915(@value{GDBP}) @b{tfind start}
11916(@value{GDBP}) @b{while ($trace_frame != -1)}
11917> printf "Frame %d, X == %d\n", $trace_frame, X
11918> tfind line
11919> end
11920
11921Frame 0, X = 1
11922Frame 7, X = 2
11923Frame 13, X = 255
11924@end smallexample
11925
11926@node tdump
11927@subsection @code{tdump}
11928@kindex tdump
11929@cindex dump all data collected at tracepoint
11930@cindex tracepoint data, display
11931
11932This command takes no arguments. It prints all the data collected at
11933the current trace snapshot.
11934
11935@smallexample
11936(@value{GDBP}) @b{trace 444}
11937(@value{GDBP}) @b{actions}
11938Enter actions for tracepoint #2, one per line:
11939> collect $regs, $locals, $args, gdb_long_test
11940> end
11941
11942(@value{GDBP}) @b{tstart}
11943
11944(@value{GDBP}) @b{tfind line 444}
11945#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
11946at gdb_test.c:444
11947444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
11948
11949(@value{GDBP}) @b{tdump}
11950Data collected at tracepoint 2, trace frame 1:
11951d0 0xc4aa0085 -995491707
11952d1 0x18 24
11953d2 0x80 128
11954d3 0x33 51
11955d4 0x71aea3d 119204413
11956d5 0x22 34
11957d6 0xe0 224
11958d7 0x380035 3670069
11959a0 0x19e24a 1696330
11960a1 0x3000668 50333288
11961a2 0x100 256
11962a3 0x322000 3284992
11963a4 0x3000698 50333336
11964a5 0x1ad3cc 1758156
11965fp 0x30bf3c 0x30bf3c
11966sp 0x30bf34 0x30bf34
11967ps 0x0 0
11968pc 0x20b2c8 0x20b2c8
11969fpcontrol 0x0 0
11970fpstatus 0x0 0
11971fpiaddr 0x0 0
11972p = 0x20e5b4 "gdb-test"
11973p1 = (void *) 0x11
11974p2 = (void *) 0x22
11975p3 = (void *) 0x33
11976p4 = (void *) 0x44
11977p5 = (void *) 0x55
11978p6 = (void *) 0x66
11979gdb_long_test = 17 '\021'
11980
11981(@value{GDBP})
11982@end smallexample
11983
af54718e
SS
11984@code{tdump} works by scanning the tracepoint's current collection
11985actions and printing the value of each expression listed. So
11986@code{tdump} can fail, if after a run, you change the tracepoint's
11987actions to mention variables that were not collected during the run.
11988
11989Also, for tracepoints with @code{while-stepping} loops, @code{tdump}
11990uses the collected value of @code{$pc} to distinguish between trace
11991frames that were collected at the tracepoint hit, and frames that were
11992collected while stepping. This allows it to correctly choose whether
11993to display the basic list of collections, or the collections from the
11994body of the while-stepping loop. However, if @code{$pc} was not collected,
11995then @code{tdump} will always attempt to dump using the basic collection
11996list, and may fail if a while-stepping frame does not include all the
11997same data that is collected at the tracepoint hit.
11998@c This is getting pretty arcane, example would be good.
11999
6149aea9
PA
12000@node save tracepoints
12001@subsection @code{save tracepoints @var{filename}}
12002@kindex save tracepoints
b37052ae
EZ
12003@kindex save-tracepoints
12004@cindex save tracepoints for future sessions
12005
12006This command saves all current tracepoint definitions together with
12007their actions and passcounts, into a file @file{@var{filename}}
12008suitable for use in a later debugging session. To read the saved
12009tracepoint definitions, use the @code{source} command (@pxref{Command
6149aea9
PA
12010Files}). The @w{@code{save-tracepoints}} command is a deprecated
12011alias for @w{@code{save tracepoints}}
b37052ae
EZ
12012
12013@node Tracepoint Variables
12014@section Convenience Variables for Tracepoints
12015@cindex tracepoint variables
12016@cindex convenience variables for tracepoints
12017
12018@table @code
12019@vindex $trace_frame
12020@item (int) $trace_frame
12021The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
12022snapshot is selected.
12023
12024@vindex $tracepoint
12025@item (int) $tracepoint
12026The tracepoint for the current trace snapshot.
12027
12028@vindex $trace_line
12029@item (int) $trace_line
12030The line number for the current trace snapshot.
12031
12032@vindex $trace_file
12033@item (char []) $trace_file
12034The source file for the current trace snapshot.
12035
12036@vindex $trace_func
12037@item (char []) $trace_func
12038The name of the function containing @code{$tracepoint}.
12039@end table
12040
12041Note: @code{$trace_file} is not suitable for use in @code{printf},
12042use @code{output} instead.
12043
12044Here's a simple example of using these convenience variables for
12045stepping through all the trace snapshots and printing some of their
f61e138d
SS
12046data. Note that these are not the same as trace state variables,
12047which are managed by the target.
b37052ae
EZ
12048
12049@smallexample
12050(@value{GDBP}) @b{tfind start}
12051
12052(@value{GDBP}) @b{while $trace_frame != -1}
12053> output $trace_file
12054> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
12055> tfind
12056> end
12057@end smallexample
12058
00bf0b85
SS
12059@node Trace Files
12060@section Using Trace Files
12061@cindex trace files
12062
12063In some situations, the target running a trace experiment may no
12064longer be available; perhaps it crashed, or the hardware was needed
12065for a different activity. To handle these cases, you can arrange to
12066dump the trace data into a file, and later use that file as a source
12067of trace data, via the @code{target tfile} command.
12068
12069@table @code
12070
12071@kindex tsave
12072@item tsave [ -r ] @var{filename}
12073Save the trace data to @var{filename}. By default, this command
12074assumes that @var{filename} refers to the host filesystem, so if
12075necessary @value{GDBN} will copy raw trace data up from the target and
12076then save it. If the target supports it, you can also supply the
12077optional argument @code{-r} (``remote'') to direct the target to save
12078the data directly into @var{filename} in its own filesystem, which may be
12079more efficient if the trace buffer is very large. (Note, however, that
12080@code{target tfile} can only read from files accessible to the host.)
12081
12082@kindex target tfile
12083@kindex tfile
12084@item target tfile @var{filename}
12085Use the file named @var{filename} as a source of trace data. Commands
12086that examine data work as they do with a live target, but it is not
12087possible to run any new trace experiments. @code{tstatus} will report
12088the state of the trace run at the moment the data was saved, as well
12089as the current trace frame you are examining. @var{filename} must be
12090on a filesystem accessible to the host.
12091
12092@end table
12093
df0cd8c5
JB
12094@node Overlays
12095@chapter Debugging Programs That Use Overlays
12096@cindex overlays
12097
12098If your program is too large to fit completely in your target system's
12099memory, you can sometimes use @dfn{overlays} to work around this
12100problem. @value{GDBN} provides some support for debugging programs that
12101use overlays.
12102
12103@menu
12104* How Overlays Work:: A general explanation of overlays.
12105* Overlay Commands:: Managing overlays in @value{GDBN}.
12106* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
12107 mapped by asking the inferior.
12108* Overlay Sample Program:: A sample program using overlays.
12109@end menu
12110
12111@node How Overlays Work
12112@section How Overlays Work
12113@cindex mapped overlays
12114@cindex unmapped overlays
12115@cindex load address, overlay's
12116@cindex mapped address
12117@cindex overlay area
12118
12119Suppose you have a computer whose instruction address space is only 64
12120kilobytes long, but which has much more memory which can be accessed by
12121other means: special instructions, segment registers, or memory
12122management hardware, for example. Suppose further that you want to
12123adapt a program which is larger than 64 kilobytes to run on this system.
12124
12125One solution is to identify modules of your program which are relatively
12126independent, and need not call each other directly; call these modules
12127@dfn{overlays}. Separate the overlays from the main program, and place
12128their machine code in the larger memory. Place your main program in
12129instruction memory, but leave at least enough space there to hold the
12130largest overlay as well.
12131
12132Now, to call a function located in an overlay, you must first copy that
12133overlay's machine code from the large memory into the space set aside
12134for it in the instruction memory, and then jump to its entry point
12135there.
12136
c928edc0
AC
12137@c NB: In the below the mapped area's size is greater or equal to the
12138@c size of all overlays. This is intentional to remind the developer
12139@c that overlays don't necessarily need to be the same size.
12140
474c8240 12141@smallexample
df0cd8c5 12142@group
c928edc0
AC
12143 Data Instruction Larger
12144Address Space Address Space Address Space
12145+-----------+ +-----------+ +-----------+
12146| | | | | |
12147+-----------+ +-----------+ +-----------+<-- overlay 1
12148| program | | main | .----| overlay 1 | load address
12149| variables | | program | | +-----------+
12150| and heap | | | | | |
12151+-----------+ | | | +-----------+<-- overlay 2
12152| | +-----------+ | | | load address
12153+-----------+ | | | .-| overlay 2 |
12154 | | | | | |
12155 mapped --->+-----------+ | | +-----------+
12156 address | | | | | |
12157 | overlay | <-' | | |
12158 | area | <---' +-----------+<-- overlay 3
12159 | | <---. | | load address
12160 +-----------+ `--| overlay 3 |
12161 | | | |
12162 +-----------+ | |
12163 +-----------+
12164 | |
12165 +-----------+
12166
12167 @anchor{A code overlay}A code overlay
df0cd8c5 12168@end group
474c8240 12169@end smallexample
df0cd8c5 12170
c928edc0
AC
12171The diagram (@pxref{A code overlay}) shows a system with separate data
12172and instruction address spaces. To map an overlay, the program copies
12173its code from the larger address space to the instruction address space.
12174Since the overlays shown here all use the same mapped address, only one
12175may be mapped at a time. For a system with a single address space for
12176data and instructions, the diagram would be similar, except that the
12177program variables and heap would share an address space with the main
12178program and the overlay area.
df0cd8c5
JB
12179
12180An overlay loaded into instruction memory and ready for use is called a
12181@dfn{mapped} overlay; its @dfn{mapped address} is its address in the
12182instruction memory. An overlay not present (or only partially present)
12183in instruction memory is called @dfn{unmapped}; its @dfn{load address}
12184is its address in the larger memory. The mapped address is also called
12185the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
12186called the @dfn{load memory address}, or @dfn{LMA}.
12187
12188Unfortunately, overlays are not a completely transparent way to adapt a
12189program to limited instruction memory. They introduce a new set of
12190global constraints you must keep in mind as you design your program:
12191
12192@itemize @bullet
12193
12194@item
12195Before calling or returning to a function in an overlay, your program
12196must make sure that overlay is actually mapped. Otherwise, the call or
12197return will transfer control to the right address, but in the wrong
12198overlay, and your program will probably crash.
12199
12200@item
12201If the process of mapping an overlay is expensive on your system, you
12202will need to choose your overlays carefully to minimize their effect on
12203your program's performance.
12204
12205@item
12206The executable file you load onto your system must contain each
12207overlay's instructions, appearing at the overlay's load address, not its
12208mapped address. However, each overlay's instructions must be relocated
12209and its symbols defined as if the overlay were at its mapped address.
12210You can use GNU linker scripts to specify different load and relocation
12211addresses for pieces of your program; see @ref{Overlay Description,,,
12212ld.info, Using ld: the GNU linker}.
12213
12214@item
12215The procedure for loading executable files onto your system must be able
12216to load their contents into the larger address space as well as the
12217instruction and data spaces.
12218
12219@end itemize
12220
12221The overlay system described above is rather simple, and could be
12222improved in many ways:
12223
12224@itemize @bullet
12225
12226@item
12227If your system has suitable bank switch registers or memory management
12228hardware, you could use those facilities to make an overlay's load area
12229contents simply appear at their mapped address in instruction space.
12230This would probably be faster than copying the overlay to its mapped
12231area in the usual way.
12232
12233@item
12234If your overlays are small enough, you could set aside more than one
12235overlay area, and have more than one overlay mapped at a time.
12236
12237@item
12238You can use overlays to manage data, as well as instructions. In
12239general, data overlays are even less transparent to your design than
12240code overlays: whereas code overlays only require care when you call or
12241return to functions, data overlays require care every time you access
12242the data. Also, if you change the contents of a data overlay, you
12243must copy its contents back out to its load address before you can copy a
12244different data overlay into the same mapped area.
12245
12246@end itemize
12247
12248
12249@node Overlay Commands
12250@section Overlay Commands
12251
12252To use @value{GDBN}'s overlay support, each overlay in your program must
12253correspond to a separate section of the executable file. The section's
12254virtual memory address and load memory address must be the overlay's
12255mapped and load addresses. Identifying overlays with sections allows
12256@value{GDBN} to determine the appropriate address of a function or
12257variable, depending on whether the overlay is mapped or not.
12258
12259@value{GDBN}'s overlay commands all start with the word @code{overlay};
12260you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
12261
12262@table @code
12263@item overlay off
4644b6e3 12264@kindex overlay
df0cd8c5
JB
12265Disable @value{GDBN}'s overlay support. When overlay support is
12266disabled, @value{GDBN} assumes that all functions and variables are
12267always present at their mapped addresses. By default, @value{GDBN}'s
12268overlay support is disabled.
12269
12270@item overlay manual
df0cd8c5
JB
12271@cindex manual overlay debugging
12272Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
12273relies on you to tell it which overlays are mapped, and which are not,
12274using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
12275commands described below.
12276
12277@item overlay map-overlay @var{overlay}
12278@itemx overlay map @var{overlay}
df0cd8c5
JB
12279@cindex map an overlay
12280Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
12281be the name of the object file section containing the overlay. When an
12282overlay is mapped, @value{GDBN} assumes it can find the overlay's
12283functions and variables at their mapped addresses. @value{GDBN} assumes
12284that any other overlays whose mapped ranges overlap that of
12285@var{overlay} are now unmapped.
12286
12287@item overlay unmap-overlay @var{overlay}
12288@itemx overlay unmap @var{overlay}
df0cd8c5
JB
12289@cindex unmap an overlay
12290Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
12291must be the name of the object file section containing the overlay.
12292When an overlay is unmapped, @value{GDBN} assumes it can find the
12293overlay's functions and variables at their load addresses.
12294
12295@item overlay auto
df0cd8c5
JB
12296Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
12297consults a data structure the overlay manager maintains in the inferior
12298to see which overlays are mapped. For details, see @ref{Automatic
12299Overlay Debugging}.
12300
12301@item overlay load-target
12302@itemx overlay load
df0cd8c5
JB
12303@cindex reloading the overlay table
12304Re-read the overlay table from the inferior. Normally, @value{GDBN}
12305re-reads the table @value{GDBN} automatically each time the inferior
12306stops, so this command should only be necessary if you have changed the
12307overlay mapping yourself using @value{GDBN}. This command is only
12308useful when using automatic overlay debugging.
12309
12310@item overlay list-overlays
12311@itemx overlay list
12312@cindex listing mapped overlays
12313Display a list of the overlays currently mapped, along with their mapped
12314addresses, load addresses, and sizes.
12315
12316@end table
12317
12318Normally, when @value{GDBN} prints a code address, it includes the name
12319of the function the address falls in:
12320
474c8240 12321@smallexample
f7dc1244 12322(@value{GDBP}) print main
df0cd8c5 12323$3 = @{int ()@} 0x11a0 <main>
474c8240 12324@end smallexample
df0cd8c5
JB
12325@noindent
12326When overlay debugging is enabled, @value{GDBN} recognizes code in
12327unmapped overlays, and prints the names of unmapped functions with
12328asterisks around them. For example, if @code{foo} is a function in an
12329unmapped overlay, @value{GDBN} prints it this way:
12330
474c8240 12331@smallexample
f7dc1244 12332(@value{GDBP}) overlay list
df0cd8c5 12333No sections are mapped.
f7dc1244 12334(@value{GDBP}) print foo
df0cd8c5 12335$5 = @{int (int)@} 0x100000 <*foo*>
474c8240 12336@end smallexample
df0cd8c5
JB
12337@noindent
12338When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
12339name normally:
12340
474c8240 12341@smallexample
f7dc1244 12342(@value{GDBP}) overlay list
b383017d 12343Section .ov.foo.text, loaded at 0x100000 - 0x100034,
df0cd8c5 12344 mapped at 0x1016 - 0x104a
f7dc1244 12345(@value{GDBP}) print foo
df0cd8c5 12346$6 = @{int (int)@} 0x1016 <foo>
474c8240 12347@end smallexample
df0cd8c5
JB
12348
12349When overlay debugging is enabled, @value{GDBN} can find the correct
12350address for functions and variables in an overlay, whether or not the
12351overlay is mapped. This allows most @value{GDBN} commands, like
12352@code{break} and @code{disassemble}, to work normally, even on unmapped
12353code. However, @value{GDBN}'s breakpoint support has some limitations:
12354
12355@itemize @bullet
12356@item
12357@cindex breakpoints in overlays
12358@cindex overlays, setting breakpoints in
12359You can set breakpoints in functions in unmapped overlays, as long as
12360@value{GDBN} can write to the overlay at its load address.
12361@item
12362@value{GDBN} can not set hardware or simulator-based breakpoints in
12363unmapped overlays. However, if you set a breakpoint at the end of your
12364overlay manager (and tell @value{GDBN} which overlays are now mapped, if
12365you are using manual overlay management), @value{GDBN} will re-set its
12366breakpoints properly.
12367@end itemize
12368
12369
12370@node Automatic Overlay Debugging
12371@section Automatic Overlay Debugging
12372@cindex automatic overlay debugging
12373
12374@value{GDBN} can automatically track which overlays are mapped and which
12375are not, given some simple co-operation from the overlay manager in the
12376inferior. If you enable automatic overlay debugging with the
12377@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
12378looks in the inferior's memory for certain variables describing the
12379current state of the overlays.
12380
12381Here are the variables your overlay manager must define to support
12382@value{GDBN}'s automatic overlay debugging:
12383
12384@table @asis
12385
12386@item @code{_ovly_table}:
12387This variable must be an array of the following structures:
12388
474c8240 12389@smallexample
df0cd8c5
JB
12390struct
12391@{
12392 /* The overlay's mapped address. */
12393 unsigned long vma;
12394
12395 /* The size of the overlay, in bytes. */
12396 unsigned long size;
12397
12398 /* The overlay's load address. */
12399 unsigned long lma;
12400
12401 /* Non-zero if the overlay is currently mapped;
12402 zero otherwise. */
12403 unsigned long mapped;
12404@}
474c8240 12405@end smallexample
df0cd8c5
JB
12406
12407@item @code{_novlys}:
12408This variable must be a four-byte signed integer, holding the total
12409number of elements in @code{_ovly_table}.
12410
12411@end table
12412
12413To decide whether a particular overlay is mapped or not, @value{GDBN}
12414looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
12415@code{lma} members equal the VMA and LMA of the overlay's section in the
12416executable file. When @value{GDBN} finds a matching entry, it consults
12417the entry's @code{mapped} member to determine whether the overlay is
12418currently mapped.
12419
81d46470 12420In addition, your overlay manager may define a function called
def71bfa 12421@code{_ovly_debug_event}. If this function is defined, @value{GDBN}
81d46470
MS
12422will silently set a breakpoint there. If the overlay manager then
12423calls this function whenever it has changed the overlay table, this
12424will enable @value{GDBN} to accurately keep track of which overlays
12425are in program memory, and update any breakpoints that may be set
b383017d 12426in overlays. This will allow breakpoints to work even if the
81d46470
MS
12427overlays are kept in ROM or other non-writable memory while they
12428are not being executed.
df0cd8c5
JB
12429
12430@node Overlay Sample Program
12431@section Overlay Sample Program
12432@cindex overlay example program
12433
12434When linking a program which uses overlays, you must place the overlays
12435at their load addresses, while relocating them to run at their mapped
12436addresses. To do this, you must write a linker script (@pxref{Overlay
12437Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
12438since linker scripts are specific to a particular host system, target
12439architecture, and target memory layout, this manual cannot provide
12440portable sample code demonstrating @value{GDBN}'s overlay support.
12441
12442However, the @value{GDBN} source distribution does contain an overlaid
12443program, with linker scripts for a few systems, as part of its test
12444suite. The program consists of the following files from
12445@file{gdb/testsuite/gdb.base}:
12446
12447@table @file
12448@item overlays.c
12449The main program file.
12450@item ovlymgr.c
12451A simple overlay manager, used by @file{overlays.c}.
12452@item foo.c
12453@itemx bar.c
12454@itemx baz.c
12455@itemx grbx.c
12456Overlay modules, loaded and used by @file{overlays.c}.
12457@item d10v.ld
12458@itemx m32r.ld
12459Linker scripts for linking the test program on the @code{d10v-elf}
12460and @code{m32r-elf} targets.
12461@end table
12462
12463You can build the test program using the @code{d10v-elf} GCC
12464cross-compiler like this:
12465
474c8240 12466@smallexample
df0cd8c5
JB
12467$ d10v-elf-gcc -g -c overlays.c
12468$ d10v-elf-gcc -g -c ovlymgr.c
12469$ d10v-elf-gcc -g -c foo.c
12470$ d10v-elf-gcc -g -c bar.c
12471$ d10v-elf-gcc -g -c baz.c
12472$ d10v-elf-gcc -g -c grbx.c
12473$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
12474 baz.o grbx.o -Wl,-Td10v.ld -o overlays
474c8240 12475@end smallexample
df0cd8c5
JB
12476
12477The build process is identical for any other architecture, except that
12478you must substitute the appropriate compiler and linker script for the
12479target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
12480
12481
6d2ebf8b 12482@node Languages
c906108c
SS
12483@chapter Using @value{GDBN} with Different Languages
12484@cindex languages
12485
c906108c
SS
12486Although programming languages generally have common aspects, they are
12487rarely expressed in the same manner. For instance, in ANSI C,
12488dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
12489Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 12490represented (and displayed) differently. Hex numbers in C appear as
c906108c 12491@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
12492
12493@cindex working language
12494Language-specific information is built into @value{GDBN} for some languages,
12495allowing you to express operations like the above in your program's
12496native language, and allowing @value{GDBN} to output values in a manner
12497consistent with the syntax of your program's native language. The
12498language you use to build expressions is called the @dfn{working
12499language}.
12500
12501@menu
12502* Setting:: Switching between source languages
12503* Show:: Displaying the language
c906108c 12504* Checks:: Type and range checks
79a6e687
BW
12505* Supported Languages:: Supported languages
12506* Unsupported Languages:: Unsupported languages
c906108c
SS
12507@end menu
12508
6d2ebf8b 12509@node Setting
79a6e687 12510@section Switching Between Source Languages
c906108c
SS
12511
12512There are two ways to control the working language---either have @value{GDBN}
12513set it automatically, or select it manually yourself. You can use the
12514@code{set language} command for either purpose. On startup, @value{GDBN}
12515defaults to setting the language automatically. The working language is
12516used to determine how expressions you type are interpreted, how values
12517are printed, etc.
12518
12519In addition to the working language, every source file that
12520@value{GDBN} knows about has its own working language. For some object
12521file formats, the compiler might indicate which language a particular
12522source file is in. However, most of the time @value{GDBN} infers the
12523language from the name of the file. The language of a source file
b37052ae 12524controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 12525show each frame appropriately for its own language. There is no way to
d4f3574e
SS
12526set the language of a source file from within @value{GDBN}, but you can
12527set the language associated with a filename extension. @xref{Show, ,
79a6e687 12528Displaying the Language}.
c906108c
SS
12529
12530This is most commonly a problem when you use a program, such
5d161b24 12531as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
12532another language. In that case, make the
12533program use @code{#line} directives in its C output; that way
12534@value{GDBN} will know the correct language of the source code of the original
12535program, and will display that source code, not the generated C code.
12536
12537@menu
12538* Filenames:: Filename extensions and languages.
12539* Manually:: Setting the working language manually
12540* Automatically:: Having @value{GDBN} infer the source language
12541@end menu
12542
6d2ebf8b 12543@node Filenames
79a6e687 12544@subsection List of Filename Extensions and Languages
c906108c
SS
12545
12546If a source file name ends in one of the following extensions, then
12547@value{GDBN} infers that its language is the one indicated.
12548
12549@table @file
e07c999f
PH
12550@item .ada
12551@itemx .ads
12552@itemx .adb
12553@itemx .a
12554Ada source file.
c906108c
SS
12555
12556@item .c
12557C source file
12558
12559@item .C
12560@itemx .cc
12561@itemx .cp
12562@itemx .cpp
12563@itemx .cxx
12564@itemx .c++
b37052ae 12565C@t{++} source file
c906108c 12566
6aecb9c2
JB
12567@item .d
12568D source file
12569
b37303ee
AF
12570@item .m
12571Objective-C source file
12572
c906108c
SS
12573@item .f
12574@itemx .F
12575Fortran source file
12576
c906108c
SS
12577@item .mod
12578Modula-2 source file
c906108c
SS
12579
12580@item .s
12581@itemx .S
12582Assembler source file. This actually behaves almost like C, but
12583@value{GDBN} does not skip over function prologues when stepping.
12584@end table
12585
12586In addition, you may set the language associated with a filename
79a6e687 12587extension. @xref{Show, , Displaying the Language}.
c906108c 12588
6d2ebf8b 12589@node Manually
79a6e687 12590@subsection Setting the Working Language
c906108c
SS
12591
12592If you allow @value{GDBN} to set the language automatically,
12593expressions are interpreted the same way in your debugging session and
12594your program.
12595
12596@kindex set language
12597If you wish, you may set the language manually. To do this, issue the
12598command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 12599a language, such as
c906108c 12600@code{c} or @code{modula-2}.
c906108c
SS
12601For a list of the supported languages, type @samp{set language}.
12602
c906108c
SS
12603Setting the language manually prevents @value{GDBN} from updating the working
12604language automatically. This can lead to confusion if you try
12605to debug a program when the working language is not the same as the
12606source language, when an expression is acceptable to both
12607languages---but means different things. For instance, if the current
12608source file were written in C, and @value{GDBN} was parsing Modula-2, a
12609command such as:
12610
474c8240 12611@smallexample
c906108c 12612print a = b + c
474c8240 12613@end smallexample
c906108c
SS
12614
12615@noindent
12616might not have the effect you intended. In C, this means to add
12617@code{b} and @code{c} and place the result in @code{a}. The result
12618printed would be the value of @code{a}. In Modula-2, this means to compare
12619@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 12620
6d2ebf8b 12621@node Automatically
79a6e687 12622@subsection Having @value{GDBN} Infer the Source Language
c906108c
SS
12623
12624To have @value{GDBN} set the working language automatically, use
12625@samp{set language local} or @samp{set language auto}. @value{GDBN}
12626then infers the working language. That is, when your program stops in a
12627frame (usually by encountering a breakpoint), @value{GDBN} sets the
12628working language to the language recorded for the function in that
12629frame. If the language for a frame is unknown (that is, if the function
12630or block corresponding to the frame was defined in a source file that
12631does not have a recognized extension), the current working language is
12632not changed, and @value{GDBN} issues a warning.
12633
12634This may not seem necessary for most programs, which are written
12635entirely in one source language. However, program modules and libraries
12636written in one source language can be used by a main program written in
12637a different source language. Using @samp{set language auto} in this
12638case frees you from having to set the working language manually.
12639
6d2ebf8b 12640@node Show
79a6e687 12641@section Displaying the Language
c906108c
SS
12642
12643The following commands help you find out which language is the
12644working language, and also what language source files were written in.
12645
c906108c
SS
12646@table @code
12647@item show language
9c16f35a 12648@kindex show language
c906108c
SS
12649Display the current working language. This is the
12650language you can use with commands such as @code{print} to
12651build and compute expressions that may involve variables in your program.
12652
12653@item info frame
4644b6e3 12654@kindex info frame@r{, show the source language}
5d161b24 12655Display the source language for this frame. This language becomes the
c906108c 12656working language if you use an identifier from this frame.
79a6e687 12657@xref{Frame Info, ,Information about a Frame}, to identify the other
c906108c
SS
12658information listed here.
12659
12660@item info source
4644b6e3 12661@kindex info source@r{, show the source language}
c906108c 12662Display the source language of this source file.
5d161b24 12663@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
12664information listed here.
12665@end table
12666
12667In unusual circumstances, you may have source files with extensions
12668not in the standard list. You can then set the extension associated
12669with a language explicitly:
12670
c906108c 12671@table @code
09d4efe1 12672@item set extension-language @var{ext} @var{language}
9c16f35a 12673@kindex set extension-language
09d4efe1
EZ
12674Tell @value{GDBN} that source files with extension @var{ext} are to be
12675assumed as written in the source language @var{language}.
c906108c
SS
12676
12677@item info extensions
9c16f35a 12678@kindex info extensions
c906108c
SS
12679List all the filename extensions and the associated languages.
12680@end table
12681
6d2ebf8b 12682@node Checks
79a6e687 12683@section Type and Range Checking
c906108c 12684
c906108c
SS
12685Some languages are designed to guard you against making seemingly common
12686errors through a series of compile- and run-time checks. These include
a451cb65 12687checking the type of arguments to functions and operators and making
c906108c
SS
12688sure mathematical overflows are caught at run time. Checks such as
12689these help to ensure a program's correctness once it has been compiled
a451cb65 12690by eliminating type mismatches and providing active checks for range
c906108c
SS
12691errors when your program is running.
12692
a451cb65
KS
12693By default @value{GDBN} checks for these errors according to the
12694rules of the current source language. Although @value{GDBN} does not check
12695the statements in your program, it can check expressions entered directly
12696into @value{GDBN} for evaluation via the @code{print} command, for example.
c906108c
SS
12697
12698@menu
12699* Type Checking:: An overview of type checking
12700* Range Checking:: An overview of range checking
12701@end menu
12702
12703@cindex type checking
12704@cindex checks, type
6d2ebf8b 12705@node Type Checking
79a6e687 12706@subsection An Overview of Type Checking
c906108c 12707
a451cb65 12708Some languages, such as C and C@t{++}, are strongly typed, meaning that the
c906108c
SS
12709arguments to operators and functions have to be of the correct type,
12710otherwise an error occurs. These checks prevent type mismatch
12711errors from ever causing any run-time problems. For example,
12712
12713@smallexample
a451cb65
KS
12714int klass::my_method(char *b) @{ return b ? 1 : 2; @}
12715
12716(@value{GDBP}) print obj.my_method (0)
12717$1 = 2
c906108c 12718@exdent but
a451cb65
KS
12719(@value{GDBP}) print obj.my_method (0x1234)
12720Cannot resolve method klass::my_method to any overloaded instance
c906108c
SS
12721@end smallexample
12722
a451cb65
KS
12723The second example fails because in C@t{++} the integer constant
12724@samp{0x1234} is not type-compatible with the pointer parameter type.
c906108c 12725
a451cb65
KS
12726For the expressions you use in @value{GDBN} commands, you can tell
12727@value{GDBN} to not enforce strict type checking or
5d161b24 12728to treat any mismatches as errors and abandon the expression;
a451cb65
KS
12729When type checking is disabled, @value{GDBN} successfully evaluates
12730expressions like the second example above.
c906108c 12731
a451cb65 12732Even if type checking is off, there may be other reasons
5d161b24
DB
12733related to type that prevent @value{GDBN} from evaluating an expression.
12734For instance, @value{GDBN} does not know how to add an @code{int} and
12735a @code{struct foo}. These particular type errors have nothing to do
a451cb65
KS
12736with the language in use and usually arise from expressions which make
12737little sense to evaluate anyway.
c906108c 12738
a451cb65 12739@value{GDBN} provides some additional commands for controlling type checking:
c906108c 12740
c906108c
SS
12741@kindex set check type
12742@kindex show check type
12743@table @code
c906108c
SS
12744@item set check type on
12745@itemx set check type off
a451cb65 12746Set strict type checking on or off. If any type mismatches occur in
d4f3574e 12747evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
12748message and aborts evaluation of the expression.
12749
a451cb65
KS
12750@item show check type
12751Show the current setting of type checking and whether @value{GDBN}
12752is enforcing strict type checking rules.
c906108c
SS
12753@end table
12754
12755@cindex range checking
12756@cindex checks, range
6d2ebf8b 12757@node Range Checking
79a6e687 12758@subsection An Overview of Range Checking
c906108c
SS
12759
12760In some languages (such as Modula-2), it is an error to exceed the
12761bounds of a type; this is enforced with run-time checks. Such range
12762checking is meant to ensure program correctness by making sure
12763computations do not overflow, or indices on an array element access do
12764not exceed the bounds of the array.
12765
12766For expressions you use in @value{GDBN} commands, you can tell
12767@value{GDBN} to treat range errors in one of three ways: ignore them,
12768always treat them as errors and abandon the expression, or issue
12769warnings but evaluate the expression anyway.
12770
12771A range error can result from numerical overflow, from exceeding an
12772array index bound, or when you type a constant that is not a member
12773of any type. Some languages, however, do not treat overflows as an
12774error. In many implementations of C, mathematical overflow causes the
12775result to ``wrap around'' to lower values---for example, if @var{m} is
12776the largest integer value, and @var{s} is the smallest, then
12777
474c8240 12778@smallexample
c906108c 12779@var{m} + 1 @result{} @var{s}
474c8240 12780@end smallexample
c906108c
SS
12781
12782This, too, is specific to individual languages, and in some cases
79a6e687
BW
12783specific to individual compilers or machines. @xref{Supported Languages, ,
12784Supported Languages}, for further details on specific languages.
c906108c
SS
12785
12786@value{GDBN} provides some additional commands for controlling the range checker:
12787
c906108c
SS
12788@kindex set check range
12789@kindex show check range
12790@table @code
12791@item set check range auto
12792Set range checking on or off based on the current working language.
79a6e687 12793@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
12794each language.
12795
12796@item set check range on
12797@itemx set check range off
12798Set range checking on or off, overriding the default setting for the
12799current working language. A warning is issued if the setting does not
c3f6f71d
JM
12800match the language default. If a range error occurs and range checking is on,
12801then a message is printed and evaluation of the expression is aborted.
c906108c
SS
12802
12803@item set check range warn
12804Output messages when the @value{GDBN} range checker detects a range error,
12805but attempt to evaluate the expression anyway. Evaluating the
12806expression may still be impossible for other reasons, such as accessing
12807memory that the process does not own (a typical example from many Unix
12808systems).
12809
12810@item show range
12811Show the current setting of the range checker, and whether or not it is
12812being set automatically by @value{GDBN}.
12813@end table
c906108c 12814
79a6e687
BW
12815@node Supported Languages
12816@section Supported Languages
c906108c 12817
a766d390
DE
12818@value{GDBN} supports C, C@t{++}, D, Go, Objective-C, Fortran, Java,
12819OpenCL C, Pascal, assembly, Modula-2, and Ada.
cce74817 12820@c This is false ...
c906108c
SS
12821Some @value{GDBN} features may be used in expressions regardless of the
12822language you use: the @value{GDBN} @code{@@} and @code{::} operators,
12823and the @samp{@{type@}addr} construct (@pxref{Expressions,
12824,Expressions}) can be used with the constructs of any supported
12825language.
12826
12827The following sections detail to what degree each source language is
12828supported by @value{GDBN}. These sections are not meant to be language
12829tutorials or references, but serve only as a reference guide to what the
12830@value{GDBN} expression parser accepts, and what input and output
12831formats should look like for different languages. There are many good
12832books written on each of these languages; please look to these for a
12833language reference or tutorial.
12834
c906108c 12835@menu
b37303ee 12836* C:: C and C@t{++}
6aecb9c2 12837* D:: D
a766d390 12838* Go:: Go
b383017d 12839* Objective-C:: Objective-C
f4b8a18d 12840* OpenCL C:: OpenCL C
09d4efe1 12841* Fortran:: Fortran
9c16f35a 12842* Pascal:: Pascal
b37303ee 12843* Modula-2:: Modula-2
e07c999f 12844* Ada:: Ada
c906108c
SS
12845@end menu
12846
6d2ebf8b 12847@node C
b37052ae 12848@subsection C and C@t{++}
7a292a7a 12849
b37052ae
EZ
12850@cindex C and C@t{++}
12851@cindex expressions in C or C@t{++}
c906108c 12852
b37052ae 12853Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
12854to both languages. Whenever this is the case, we discuss those languages
12855together.
12856
41afff9a
EZ
12857@cindex C@t{++}
12858@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
12859@cindex @sc{gnu} C@t{++}
12860The C@t{++} debugging facilities are jointly implemented by the C@t{++}
12861compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
12862effectively, you must compile your C@t{++} programs with a supported
12863C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
12864compiler (@code{aCC}).
12865
c906108c 12866@menu
b37052ae
EZ
12867* C Operators:: C and C@t{++} operators
12868* C Constants:: C and C@t{++} constants
79a6e687 12869* C Plus Plus Expressions:: C@t{++} expressions
b37052ae
EZ
12870* C Defaults:: Default settings for C and C@t{++}
12871* C Checks:: C and C@t{++} type and range checks
c906108c 12872* Debugging C:: @value{GDBN} and C
79a6e687 12873* Debugging C Plus Plus:: @value{GDBN} features for C@t{++}
febe4383 12874* Decimal Floating Point:: Numbers in Decimal Floating Point format
c906108c 12875@end menu
c906108c 12876
6d2ebf8b 12877@node C Operators
79a6e687 12878@subsubsection C and C@t{++} Operators
7a292a7a 12879
b37052ae 12880@cindex C and C@t{++} operators
c906108c
SS
12881
12882Operators must be defined on values of specific types. For instance,
12883@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 12884often defined on groups of types.
c906108c 12885
b37052ae 12886For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
12887
12888@itemize @bullet
53a5351d 12889
c906108c 12890@item
c906108c 12891@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 12892specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
12893
12894@item
d4f3574e
SS
12895@emph{Floating-point types} include @code{float}, @code{double}, and
12896@code{long double} (if supported by the target platform).
c906108c
SS
12897
12898@item
53a5351d 12899@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
12900
12901@item
12902@emph{Scalar types} include all of the above.
53a5351d 12903
c906108c
SS
12904@end itemize
12905
12906@noindent
12907The following operators are supported. They are listed here
12908in order of increasing precedence:
12909
12910@table @code
12911@item ,
12912The comma or sequencing operator. Expressions in a comma-separated list
12913are evaluated from left to right, with the result of the entire
12914expression being the last expression evaluated.
12915
12916@item =
12917Assignment. The value of an assignment expression is the value
12918assigned. Defined on scalar types.
12919
12920@item @var{op}=
12921Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
12922and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 12923@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
12924@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
12925@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
12926
12927@item ?:
12928The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
12929of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
12930integral type.
12931
12932@item ||
12933Logical @sc{or}. Defined on integral types.
12934
12935@item &&
12936Logical @sc{and}. Defined on integral types.
12937
12938@item |
12939Bitwise @sc{or}. Defined on integral types.
12940
12941@item ^
12942Bitwise exclusive-@sc{or}. Defined on integral types.
12943
12944@item &
12945Bitwise @sc{and}. Defined on integral types.
12946
12947@item ==@r{, }!=
12948Equality and inequality. Defined on scalar types. The value of these
12949expressions is 0 for false and non-zero for true.
12950
12951@item <@r{, }>@r{, }<=@r{, }>=
12952Less than, greater than, less than or equal, greater than or equal.
12953Defined on scalar types. The value of these expressions is 0 for false
12954and non-zero for true.
12955
12956@item <<@r{, }>>
12957left shift, and right shift. Defined on integral types.
12958
12959@item @@
12960The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
12961
12962@item +@r{, }-
12963Addition and subtraction. Defined on integral types, floating-point types and
12964pointer types.
12965
12966@item *@r{, }/@r{, }%
12967Multiplication, division, and modulus. Multiplication and division are
12968defined on integral and floating-point types. Modulus is defined on
12969integral types.
12970
12971@item ++@r{, }--
12972Increment and decrement. When appearing before a variable, the
12973operation is performed before the variable is used in an expression;
12974when appearing after it, the variable's value is used before the
12975operation takes place.
12976
12977@item *
12978Pointer dereferencing. Defined on pointer types. Same precedence as
12979@code{++}.
12980
12981@item &
12982Address operator. Defined on variables. Same precedence as @code{++}.
12983
b37052ae
EZ
12984For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
12985allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
b17828ca 12986to examine the address
b37052ae 12987where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 12988stored.
c906108c
SS
12989
12990@item -
12991Negative. Defined on integral and floating-point types. Same
12992precedence as @code{++}.
12993
12994@item !
12995Logical negation. Defined on integral types. Same precedence as
12996@code{++}.
12997
12998@item ~
12999Bitwise complement operator. Defined on integral types. Same precedence as
13000@code{++}.
13001
13002
13003@item .@r{, }->
13004Structure member, and pointer-to-structure member. For convenience,
13005@value{GDBN} regards the two as equivalent, choosing whether to dereference a
13006pointer based on the stored type information.
13007Defined on @code{struct} and @code{union} data.
13008
c906108c
SS
13009@item .*@r{, }->*
13010Dereferences of pointers to members.
c906108c
SS
13011
13012@item []
13013Array indexing. @code{@var{a}[@var{i}]} is defined as
13014@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
13015
13016@item ()
13017Function parameter list. Same precedence as @code{->}.
13018
c906108c 13019@item ::
b37052ae 13020C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 13021and @code{class} types.
c906108c
SS
13022
13023@item ::
7a292a7a
SS
13024Doubled colons also represent the @value{GDBN} scope operator
13025(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
13026above.
c906108c
SS
13027@end table
13028
c906108c
SS
13029If an operator is redefined in the user code, @value{GDBN} usually
13030attempts to invoke the redefined version instead of using the operator's
13031predefined meaning.
c906108c 13032
6d2ebf8b 13033@node C Constants
79a6e687 13034@subsubsection C and C@t{++} Constants
c906108c 13035
b37052ae 13036@cindex C and C@t{++} constants
c906108c 13037
b37052ae 13038@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 13039following ways:
c906108c
SS
13040
13041@itemize @bullet
13042@item
13043Integer constants are a sequence of digits. Octal constants are
6ca652b0
EZ
13044specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
13045by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
c906108c
SS
13046@samp{l}, specifying that the constant should be treated as a
13047@code{long} value.
13048
13049@item
13050Floating point constants are a sequence of digits, followed by a decimal
13051point, followed by a sequence of digits, and optionally followed by an
13052exponent. An exponent is of the form:
13053@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
13054sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
13055A floating-point constant may also end with a letter @samp{f} or
13056@samp{F}, specifying that the constant should be treated as being of
13057the @code{float} (as opposed to the default @code{double}) type; or with
13058a letter @samp{l} or @samp{L}, which specifies a @code{long double}
13059constant.
c906108c
SS
13060
13061@item
13062Enumerated constants consist of enumerated identifiers, or their
13063integral equivalents.
13064
13065@item
13066Character constants are a single character surrounded by single quotes
13067(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 13068(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
13069be represented by a letter or by @dfn{escape sequences}, which are of
13070the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
13071of the character's ordinal value; or of the form @samp{\@var{x}}, where
13072@samp{@var{x}} is a predefined special character---for example,
13073@samp{\n} for newline.
13074
e0f8f636
TT
13075Wide character constants can be written by prefixing a character
13076constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide
13077form of @samp{x}. The target wide character set is used when
13078computing the value of this constant (@pxref{Character Sets}).
13079
c906108c 13080@item
96a2c332
SS
13081String constants are a sequence of character constants surrounded by
13082double quotes (@code{"}). Any valid character constant (as described
13083above) may appear. Double quotes within the string must be preceded by
13084a backslash, so for instance @samp{"a\"b'c"} is a string of five
13085characters.
c906108c 13086
e0f8f636
TT
13087Wide string constants can be written by prefixing a string constant
13088with @samp{L}, as in C. The target wide character set is used when
13089computing the value of this constant (@pxref{Character Sets}).
13090
c906108c
SS
13091@item
13092Pointer constants are an integral value. You can also write pointers
13093to constants using the C operator @samp{&}.
13094
13095@item
13096Array constants are comma-separated lists surrounded by braces @samp{@{}
13097and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
13098integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
13099and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
13100@end itemize
13101
79a6e687
BW
13102@node C Plus Plus Expressions
13103@subsubsection C@t{++} Expressions
b37052ae
EZ
13104
13105@cindex expressions in C@t{++}
13106@value{GDBN} expression handling can interpret most C@t{++} expressions.
13107
0179ffac
DC
13108@cindex debugging C@t{++} programs
13109@cindex C@t{++} compilers
13110@cindex debug formats and C@t{++}
13111@cindex @value{NGCC} and C@t{++}
c906108c 13112@quotation
e0f8f636
TT
13113@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use
13114the proper compiler and the proper debug format. Currently,
13115@value{GDBN} works best when debugging C@t{++} code that is compiled
13116with the most recent version of @value{NGCC} possible. The DWARF
13117debugging format is preferred; @value{NGCC} defaults to this on most
13118popular platforms. Other compilers and/or debug formats are likely to
13119work badly or not at all when using @value{GDBN} to debug C@t{++}
13120code. @xref{Compilation}.
c906108c 13121@end quotation
c906108c
SS
13122
13123@enumerate
13124
13125@cindex member functions
13126@item
13127Member function calls are allowed; you can use expressions like
13128
474c8240 13129@smallexample
c906108c 13130count = aml->GetOriginal(x, y)
474c8240 13131@end smallexample
c906108c 13132
41afff9a 13133@vindex this@r{, inside C@t{++} member functions}
b37052ae 13134@cindex namespace in C@t{++}
c906108c
SS
13135@item
13136While a member function is active (in the selected stack frame), your
13137expressions have the same namespace available as the member function;
13138that is, @value{GDBN} allows implicit references to the class instance
e0f8f636
TT
13139pointer @code{this} following the same rules as C@t{++}. @code{using}
13140declarations in the current scope are also respected by @value{GDBN}.
c906108c 13141
c906108c 13142@cindex call overloaded functions
d4f3574e 13143@cindex overloaded functions, calling
b37052ae 13144@cindex type conversions in C@t{++}
c906108c
SS
13145@item
13146You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 13147call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
13148perform overload resolution involving user-defined type conversions,
13149calls to constructors, or instantiations of templates that do not exist
13150in the program. It also cannot handle ellipsis argument lists or
13151default arguments.
13152
13153It does perform integral conversions and promotions, floating-point
13154promotions, arithmetic conversions, pointer conversions, conversions of
13155class objects to base classes, and standard conversions such as those of
13156functions or arrays to pointers; it requires an exact match on the
13157number of function arguments.
13158
13159Overload resolution is always performed, unless you have specified
79a6e687
BW
13160@code{set overload-resolution off}. @xref{Debugging C Plus Plus,
13161,@value{GDBN} Features for C@t{++}}.
c906108c 13162
d4f3574e 13163You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
13164explicit function signature to call an overloaded function, as in
13165@smallexample
13166p 'foo(char,int)'('x', 13)
13167@end smallexample
d4f3574e 13168
c906108c 13169The @value{GDBN} command-completion facility can simplify this;
79a6e687 13170see @ref{Completion, ,Command Completion}.
c906108c 13171
c906108c
SS
13172@cindex reference declarations
13173@item
b37052ae
EZ
13174@value{GDBN} understands variables declared as C@t{++} references; you can use
13175them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
13176dereferenced.
13177
13178In the parameter list shown when @value{GDBN} displays a frame, the values of
13179reference variables are not displayed (unlike other variables); this
13180avoids clutter, since references are often used for large structures.
13181The @emph{address} of a reference variable is always shown, unless
13182you have specified @samp{set print address off}.
13183
13184@item
b37052ae 13185@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
13186expressions can use it just as expressions in your program do. Since
13187one scope may be defined in another, you can use @code{::} repeatedly if
13188necessary, for example in an expression like
13189@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 13190resolving name scope by reference to source files, in both C and C@t{++}
79a6e687 13191debugging (@pxref{Variables, ,Program Variables}).
c906108c 13192
e0f8f636
TT
13193@item
13194@value{GDBN} performs argument-dependent lookup, following the C@t{++}
13195specification.
13196@end enumerate
c906108c 13197
6d2ebf8b 13198@node C Defaults
79a6e687 13199@subsubsection C and C@t{++} Defaults
7a292a7a 13200
b37052ae 13201@cindex C and C@t{++} defaults
c906108c 13202
a451cb65
KS
13203If you allow @value{GDBN} to set range checking automatically, it
13204defaults to @code{off} whenever the working language changes to
b37052ae 13205C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 13206selects the working language.
c906108c
SS
13207
13208If you allow @value{GDBN} to set the language automatically, it
13209recognizes source files whose names end with @file{.c}, @file{.C}, or
13210@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
b37052ae 13211these files, it sets the working language to C or C@t{++}.
79a6e687 13212@xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
c906108c
SS
13213for further details.
13214
6d2ebf8b 13215@node C Checks
79a6e687 13216@subsubsection C and C@t{++} Type and Range Checks
7a292a7a 13217
b37052ae 13218@cindex C and C@t{++} checks
c906108c 13219
a451cb65
KS
13220By default, when @value{GDBN} parses C or C@t{++} expressions, strict type
13221checking is used. However, if you turn type checking off, @value{GDBN}
13222will allow certain non-standard conversions, such as promoting integer
13223constants to pointers.
c906108c
SS
13224
13225Range checking, if turned on, is done on mathematical operations. Array
13226indices are not checked, since they are often used to index a pointer
13227that is not itself an array.
c906108c 13228
6d2ebf8b 13229@node Debugging C
c906108c 13230@subsubsection @value{GDBN} and C
c906108c
SS
13231
13232The @code{set print union} and @code{show print union} commands apply to
13233the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
13234inside a @code{struct} or @code{class} is also printed. Otherwise, it
13235appears as @samp{@{...@}}.
c906108c
SS
13236
13237The @code{@@} operator aids in the debugging of dynamic arrays, formed
13238with pointers and a memory allocation function. @xref{Expressions,
13239,Expressions}.
13240
79a6e687
BW
13241@node Debugging C Plus Plus
13242@subsubsection @value{GDBN} Features for C@t{++}
c906108c 13243
b37052ae 13244@cindex commands for C@t{++}
7a292a7a 13245
b37052ae
EZ
13246Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
13247designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
13248
13249@table @code
13250@cindex break in overloaded functions
13251@item @r{breakpoint menus}
13252When you want a breakpoint in a function whose name is overloaded,
6ba66d6a
JB
13253@value{GDBN} has the capability to display a menu of possible breakpoint
13254locations to help you specify which function definition you want.
13255@xref{Ambiguous Expressions,,Ambiguous Expressions}.
c906108c 13256
b37052ae 13257@cindex overloading in C@t{++}
c906108c
SS
13258@item rbreak @var{regex}
13259Setting breakpoints using regular expressions is helpful for setting
13260breakpoints on overloaded functions that are not members of any special
13261classes.
79a6e687 13262@xref{Set Breaks, ,Setting Breakpoints}.
c906108c 13263
b37052ae 13264@cindex C@t{++} exception handling
c906108c
SS
13265@item catch throw
13266@itemx catch catch
b37052ae 13267Debug C@t{++} exception handling using these commands. @xref{Set
79a6e687 13268Catchpoints, , Setting Catchpoints}.
c906108c
SS
13269
13270@cindex inheritance
13271@item ptype @var{typename}
13272Print inheritance relationships as well as other information for type
13273@var{typename}.
13274@xref{Symbols, ,Examining the Symbol Table}.
13275
c4aeac85
TT
13276@item info vtbl @var{expression}.
13277The @code{info vtbl} command can be used to display the virtual
13278method tables of the object computed by @var{expression}. This shows
13279one entry per virtual table; there may be multiple virtual tables when
13280multiple inheritance is in use.
13281
b37052ae 13282@cindex C@t{++} symbol display
c906108c
SS
13283@item set print demangle
13284@itemx show print demangle
13285@itemx set print asm-demangle
13286@itemx show print asm-demangle
b37052ae
EZ
13287Control whether C@t{++} symbols display in their source form, both when
13288displaying code as C@t{++} source and when displaying disassemblies.
79a6e687 13289@xref{Print Settings, ,Print Settings}.
c906108c
SS
13290
13291@item set print object
13292@itemx show print object
13293Choose whether to print derived (actual) or declared types of objects.
79a6e687 13294@xref{Print Settings, ,Print Settings}.
c906108c
SS
13295
13296@item set print vtbl
13297@itemx show print vtbl
13298Control the format for printing virtual function tables.
79a6e687 13299@xref{Print Settings, ,Print Settings}.
c906108c 13300(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 13301ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
13302
13303@kindex set overload-resolution
d4f3574e 13304@cindex overloaded functions, overload resolution
c906108c 13305@item set overload-resolution on
b37052ae 13306Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
13307is on. For overloaded functions, @value{GDBN} evaluates the arguments
13308and searches for a function whose signature matches the argument types,
79a6e687
BW
13309using the standard C@t{++} conversion rules (see @ref{C Plus Plus
13310Expressions, ,C@t{++} Expressions}, for details).
13311If it cannot find a match, it emits a message.
c906108c
SS
13312
13313@item set overload-resolution off
b37052ae 13314Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
13315overloaded functions that are not class member functions, @value{GDBN}
13316chooses the first function of the specified name that it finds in the
13317symbol table, whether or not its arguments are of the correct type. For
13318overloaded functions that are class member functions, @value{GDBN}
13319searches for a function whose signature @emph{exactly} matches the
13320argument types.
c906108c 13321
9c16f35a
EZ
13322@kindex show overload-resolution
13323@item show overload-resolution
13324Show the current setting of overload resolution.
13325
c906108c
SS
13326@item @r{Overloaded symbol names}
13327You can specify a particular definition of an overloaded symbol, using
b37052ae 13328the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
13329@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
13330also use the @value{GDBN} command-line word completion facilities to list the
13331available choices, or to finish the type list for you.
79a6e687 13332@xref{Completion,, Command Completion}, for details on how to do this.
c906108c 13333@end table
c906108c 13334
febe4383
TJB
13335@node Decimal Floating Point
13336@subsubsection Decimal Floating Point format
13337@cindex decimal floating point format
13338
13339@value{GDBN} can examine, set and perform computations with numbers in
13340decimal floating point format, which in the C language correspond to the
13341@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as
13342specified by the extension to support decimal floating-point arithmetic.
13343
13344There are two encodings in use, depending on the architecture: BID (Binary
13345Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for
99e008fe 13346PowerPC. @value{GDBN} will use the appropriate encoding for the configured
febe4383
TJB
13347target.
13348
13349Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN}
13350to manipulate decimal floating point numbers, it is not possible to convert
13351(using a cast, for example) integers wider than 32-bit to decimal float.
13352
13353In addition, in order to imitate @value{GDBN}'s behaviour with binary floating
13354point computations, error checking in decimal float operations ignores
13355underflow, overflow and divide by zero exceptions.
13356
4acd40f3 13357In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers
99e008fe
EZ
13358to inspect @code{_Decimal128} values stored in floating point registers.
13359See @ref{PowerPC,,PowerPC} for more details.
4acd40f3 13360
6aecb9c2
JB
13361@node D
13362@subsection D
13363
13364@cindex D
13365@value{GDBN} can be used to debug programs written in D and compiled with
13366GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D
13367specific feature --- dynamic arrays.
13368
a766d390
DE
13369@node Go
13370@subsection Go
13371
13372@cindex Go (programming language)
13373@value{GDBN} can be used to debug programs written in Go and compiled with
13374@file{gccgo} or @file{6g} compilers.
13375
13376Here is a summary of the Go-specific features and restrictions:
13377
13378@table @code
13379@cindex current Go package
13380@item The current Go package
13381The name of the current package does not need to be specified when
13382specifying global variables and functions.
13383
13384For example, given the program:
13385
13386@example
13387package main
13388var myglob = "Shall we?"
13389func main () @{
13390 // ...
13391@}
13392@end example
13393
13394When stopped inside @code{main} either of these work:
13395
13396@example
13397(gdb) p myglob
13398(gdb) p main.myglob
13399@end example
13400
13401@cindex builtin Go types
13402@item Builtin Go types
13403The @code{string} type is recognized by @value{GDBN} and is printed
13404as a string.
13405
13406@cindex builtin Go functions
13407@item Builtin Go functions
13408The @value{GDBN} expression parser recognizes the @code{unsafe.Sizeof}
13409function and handles it internally.
a766d390
DE
13410
13411@cindex restrictions on Go expressions
13412@item Restrictions on Go expressions
13413All Go operators are supported except @code{&^}.
13414The Go @code{_} ``blank identifier'' is not supported.
13415Automatic dereferencing of pointers is not supported.
50f042b9 13416@end table
a766d390 13417
b37303ee
AF
13418@node Objective-C
13419@subsection Objective-C
13420
13421@cindex Objective-C
13422This section provides information about some commands and command
721c2651
EZ
13423options that are useful for debugging Objective-C code. See also
13424@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a
13425few more commands specific to Objective-C support.
b37303ee
AF
13426
13427@menu
b383017d
RM
13428* Method Names in Commands::
13429* The Print Command with Objective-C::
b37303ee
AF
13430@end menu
13431
c8f4133a 13432@node Method Names in Commands
b37303ee
AF
13433@subsubsection Method Names in Commands
13434
13435The following commands have been extended to accept Objective-C method
13436names as line specifications:
13437
13438@kindex clear@r{, and Objective-C}
13439@kindex break@r{, and Objective-C}
13440@kindex info line@r{, and Objective-C}
13441@kindex jump@r{, and Objective-C}
13442@kindex list@r{, and Objective-C}
13443@itemize
13444@item @code{clear}
13445@item @code{break}
13446@item @code{info line}
13447@item @code{jump}
13448@item @code{list}
13449@end itemize
13450
13451A fully qualified Objective-C method name is specified as
13452
13453@smallexample
13454-[@var{Class} @var{methodName}]
13455@end smallexample
13456
c552b3bb
JM
13457where the minus sign is used to indicate an instance method and a
13458plus sign (not shown) is used to indicate a class method. The class
13459name @var{Class} and method name @var{methodName} are enclosed in
13460brackets, similar to the way messages are specified in Objective-C
13461source code. For example, to set a breakpoint at the @code{create}
13462instance method of class @code{Fruit} in the program currently being
13463debugged, enter:
b37303ee
AF
13464
13465@smallexample
13466break -[Fruit create]
13467@end smallexample
13468
13469To list ten program lines around the @code{initialize} class method,
13470enter:
13471
13472@smallexample
13473list +[NSText initialize]
13474@end smallexample
13475
c552b3bb
JM
13476In the current version of @value{GDBN}, the plus or minus sign is
13477required. In future versions of @value{GDBN}, the plus or minus
13478sign will be optional, but you can use it to narrow the search. It
13479is also possible to specify just a method name:
b37303ee
AF
13480
13481@smallexample
13482break create
13483@end smallexample
13484
13485You must specify the complete method name, including any colons. If
13486your program's source files contain more than one @code{create} method,
13487you'll be presented with a numbered list of classes that implement that
13488method. Indicate your choice by number, or type @samp{0} to exit if
13489none apply.
13490
13491As another example, to clear a breakpoint established at the
13492@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
13493
13494@smallexample
13495clear -[NSWindow makeKeyAndOrderFront:]
13496@end smallexample
13497
13498@node The Print Command with Objective-C
13499@subsubsection The Print Command With Objective-C
721c2651 13500@cindex Objective-C, print objects
c552b3bb
JM
13501@kindex print-object
13502@kindex po @r{(@code{print-object})}
b37303ee 13503
c552b3bb 13504The print command has also been extended to accept methods. For example:
b37303ee
AF
13505
13506@smallexample
c552b3bb 13507print -[@var{object} hash]
b37303ee
AF
13508@end smallexample
13509
13510@cindex print an Objective-C object description
c552b3bb
JM
13511@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
13512@noindent
13513will tell @value{GDBN} to send the @code{hash} message to @var{object}
13514and print the result. Also, an additional command has been added,
13515@code{print-object} or @code{po} for short, which is meant to print
13516the description of an object. However, this command may only work
13517with certain Objective-C libraries that have a particular hook
13518function, @code{_NSPrintForDebugger}, defined.
b37303ee 13519
f4b8a18d
KW
13520@node OpenCL C
13521@subsection OpenCL C
13522
13523@cindex OpenCL C
13524This section provides information about @value{GDBN}s OpenCL C support.
13525
13526@menu
13527* OpenCL C Datatypes::
13528* OpenCL C Expressions::
13529* OpenCL C Operators::
13530@end menu
13531
13532@node OpenCL C Datatypes
13533@subsubsection OpenCL C Datatypes
13534
13535@cindex OpenCL C Datatypes
13536@value{GDBN} supports the builtin scalar and vector datatypes specified
13537by OpenCL 1.1. In addition the half- and double-precision floating point
13538data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL
13539extensions are also known to @value{GDBN}.
13540
13541@node OpenCL C Expressions
13542@subsubsection OpenCL C Expressions
13543
13544@cindex OpenCL C Expressions
13545@value{GDBN} supports accesses to vector components including the access as
13546lvalue where possible. Since OpenCL C is based on C99 most C expressions
13547supported by @value{GDBN} can be used as well.
13548
13549@node OpenCL C Operators
13550@subsubsection OpenCL C Operators
13551
13552@cindex OpenCL C Operators
13553@value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and
13554vector data types.
13555
09d4efe1
EZ
13556@node Fortran
13557@subsection Fortran
13558@cindex Fortran-specific support in @value{GDBN}
13559
814e32d7
WZ
13560@value{GDBN} can be used to debug programs written in Fortran, but it
13561currently supports only the features of Fortran 77 language.
13562
13563@cindex trailing underscore, in Fortran symbols
13564Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
13565among them) append an underscore to the names of variables and
13566functions. When you debug programs compiled by those compilers, you
13567will need to refer to variables and functions with a trailing
13568underscore.
13569
13570@menu
13571* Fortran Operators:: Fortran operators and expressions
13572* Fortran Defaults:: Default settings for Fortran
79a6e687 13573* Special Fortran Commands:: Special @value{GDBN} commands for Fortran
814e32d7
WZ
13574@end menu
13575
13576@node Fortran Operators
79a6e687 13577@subsubsection Fortran Operators and Expressions
814e32d7
WZ
13578
13579@cindex Fortran operators and expressions
13580
13581Operators must be defined on values of specific types. For instance,
13582@code{+} is defined on numbers, but not on characters or other non-
ff2587ec 13583arithmetic types. Operators are often defined on groups of types.
814e32d7
WZ
13584
13585@table @code
13586@item **
99e008fe 13587The exponentiation operator. It raises the first operand to the power
814e32d7
WZ
13588of the second one.
13589
13590@item :
13591The range operator. Normally used in the form of array(low:high) to
13592represent a section of array.
68837c9d
MD
13593
13594@item %
13595The access component operator. Normally used to access elements in derived
13596types. Also suitable for unions. As unions aren't part of regular Fortran,
13597this can only happen when accessing a register that uses a gdbarch-defined
13598union type.
814e32d7
WZ
13599@end table
13600
13601@node Fortran Defaults
13602@subsubsection Fortran Defaults
13603
13604@cindex Fortran Defaults
13605
13606Fortran symbols are usually case-insensitive, so @value{GDBN} by
13607default uses case-insensitive matches for Fortran symbols. You can
13608change that with the @samp{set case-insensitive} command, see
13609@ref{Symbols}, for the details.
13610
79a6e687
BW
13611@node Special Fortran Commands
13612@subsubsection Special Fortran Commands
814e32d7
WZ
13613
13614@cindex Special Fortran commands
13615
db2e3e2e
BW
13616@value{GDBN} has some commands to support Fortran-specific features,
13617such as displaying common blocks.
814e32d7 13618
09d4efe1
EZ
13619@table @code
13620@cindex @code{COMMON} blocks, Fortran
13621@kindex info common
13622@item info common @r{[}@var{common-name}@r{]}
13623This command prints the values contained in the Fortran @code{COMMON}
13624block whose name is @var{common-name}. With no argument, the names of
d52fb0e9 13625all @code{COMMON} blocks visible at the current program location are
09d4efe1
EZ
13626printed.
13627@end table
13628
9c16f35a
EZ
13629@node Pascal
13630@subsection Pascal
13631
13632@cindex Pascal support in @value{GDBN}, limitations
13633Debugging Pascal programs which use sets, subranges, file variables, or
13634nested functions does not currently work. @value{GDBN} does not support
13635entering expressions, printing values, or similar features using Pascal
13636syntax.
13637
13638The Pascal-specific command @code{set print pascal_static-members}
13639controls whether static members of Pascal objects are displayed.
13640@xref{Print Settings, pascal_static-members}.
13641
09d4efe1 13642@node Modula-2
c906108c 13643@subsection Modula-2
7a292a7a 13644
d4f3574e 13645@cindex Modula-2, @value{GDBN} support
c906108c
SS
13646
13647The extensions made to @value{GDBN} to support Modula-2 only support
13648output from the @sc{gnu} Modula-2 compiler (which is currently being
13649developed). Other Modula-2 compilers are not currently supported, and
13650attempting to debug executables produced by them is most likely
13651to give an error as @value{GDBN} reads in the executable's symbol
13652table.
13653
13654@cindex expressions in Modula-2
13655@menu
13656* M2 Operators:: Built-in operators
13657* Built-In Func/Proc:: Built-in functions and procedures
13658* M2 Constants:: Modula-2 constants
72019c9c 13659* M2 Types:: Modula-2 types
c906108c
SS
13660* M2 Defaults:: Default settings for Modula-2
13661* Deviations:: Deviations from standard Modula-2
13662* M2 Checks:: Modula-2 type and range checks
13663* M2 Scope:: The scope operators @code{::} and @code{.}
13664* GDB/M2:: @value{GDBN} and Modula-2
13665@end menu
13666
6d2ebf8b 13667@node M2 Operators
c906108c
SS
13668@subsubsection Operators
13669@cindex Modula-2 operators
13670
13671Operators must be defined on values of specific types. For instance,
13672@code{+} is defined on numbers, but not on structures. Operators are
13673often defined on groups of types. For the purposes of Modula-2, the
13674following definitions hold:
13675
13676@itemize @bullet
13677
13678@item
13679@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
13680their subranges.
13681
13682@item
13683@emph{Character types} consist of @code{CHAR} and its subranges.
13684
13685@item
13686@emph{Floating-point types} consist of @code{REAL}.
13687
13688@item
13689@emph{Pointer types} consist of anything declared as @code{POINTER TO
13690@var{type}}.
13691
13692@item
13693@emph{Scalar types} consist of all of the above.
13694
13695@item
13696@emph{Set types} consist of @code{SET} and @code{BITSET} types.
13697
13698@item
13699@emph{Boolean types} consist of @code{BOOLEAN}.
13700@end itemize
13701
13702@noindent
13703The following operators are supported, and appear in order of
13704increasing precedence:
13705
13706@table @code
13707@item ,
13708Function argument or array index separator.
13709
13710@item :=
13711Assignment. The value of @var{var} @code{:=} @var{value} is
13712@var{value}.
13713
13714@item <@r{, }>
13715Less than, greater than on integral, floating-point, or enumerated
13716types.
13717
13718@item <=@r{, }>=
96a2c332 13719Less than or equal to, greater than or equal to
c906108c
SS
13720on integral, floating-point and enumerated types, or set inclusion on
13721set types. Same precedence as @code{<}.
13722
13723@item =@r{, }<>@r{, }#
13724Equality and two ways of expressing inequality, valid on scalar types.
13725Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
13726available for inequality, since @code{#} conflicts with the script
13727comment character.
13728
13729@item IN
13730Set membership. Defined on set types and the types of their members.
13731Same precedence as @code{<}.
13732
13733@item OR
13734Boolean disjunction. Defined on boolean types.
13735
13736@item AND@r{, }&
d4f3574e 13737Boolean conjunction. Defined on boolean types.
c906108c
SS
13738
13739@item @@
13740The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
13741
13742@item +@r{, }-
13743Addition and subtraction on integral and floating-point types, or union
13744and difference on set types.
13745
13746@item *
13747Multiplication on integral and floating-point types, or set intersection
13748on set types.
13749
13750@item /
13751Division on floating-point types, or symmetric set difference on set
13752types. Same precedence as @code{*}.
13753
13754@item DIV@r{, }MOD
13755Integer division and remainder. Defined on integral types. Same
13756precedence as @code{*}.
13757
13758@item -
99e008fe 13759Negative. Defined on @code{INTEGER} and @code{REAL} data.
c906108c
SS
13760
13761@item ^
13762Pointer dereferencing. Defined on pointer types.
13763
13764@item NOT
13765Boolean negation. Defined on boolean types. Same precedence as
13766@code{^}.
13767
13768@item .
13769@code{RECORD} field selector. Defined on @code{RECORD} data. Same
13770precedence as @code{^}.
13771
13772@item []
13773Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
13774
13775@item ()
13776Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
13777as @code{^}.
13778
13779@item ::@r{, }.
13780@value{GDBN} and Modula-2 scope operators.
13781@end table
13782
13783@quotation
72019c9c 13784@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN}
c906108c
SS
13785treats the use of the operator @code{IN}, or the use of operators
13786@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
13787@code{<=}, and @code{>=} on sets as an error.
13788@end quotation
13789
cb51c4e0 13790
6d2ebf8b 13791@node Built-In Func/Proc
79a6e687 13792@subsubsection Built-in Functions and Procedures
cb51c4e0 13793@cindex Modula-2 built-ins
c906108c
SS
13794
13795Modula-2 also makes available several built-in procedures and functions.
13796In describing these, the following metavariables are used:
13797
13798@table @var
13799
13800@item a
13801represents an @code{ARRAY} variable.
13802
13803@item c
13804represents a @code{CHAR} constant or variable.
13805
13806@item i
13807represents a variable or constant of integral type.
13808
13809@item m
13810represents an identifier that belongs to a set. Generally used in the
13811same function with the metavariable @var{s}. The type of @var{s} should
13812be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
13813
13814@item n
13815represents a variable or constant of integral or floating-point type.
13816
13817@item r
13818represents a variable or constant of floating-point type.
13819
13820@item t
13821represents a type.
13822
13823@item v
13824represents a variable.
13825
13826@item x
13827represents a variable or constant of one of many types. See the
13828explanation of the function for details.
13829@end table
13830
13831All Modula-2 built-in procedures also return a result, described below.
13832
13833@table @code
13834@item ABS(@var{n})
13835Returns the absolute value of @var{n}.
13836
13837@item CAP(@var{c})
13838If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 13839equivalent, otherwise it returns its argument.
c906108c
SS
13840
13841@item CHR(@var{i})
13842Returns the character whose ordinal value is @var{i}.
13843
13844@item DEC(@var{v})
c3f6f71d 13845Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
13846
13847@item DEC(@var{v},@var{i})
13848Decrements the value in the variable @var{v} by @var{i}. Returns the
13849new value.
13850
13851@item EXCL(@var{m},@var{s})
13852Removes the element @var{m} from the set @var{s}. Returns the new
13853set.
13854
13855@item FLOAT(@var{i})
13856Returns the floating point equivalent of the integer @var{i}.
13857
13858@item HIGH(@var{a})
13859Returns the index of the last member of @var{a}.
13860
13861@item INC(@var{v})
c3f6f71d 13862Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
13863
13864@item INC(@var{v},@var{i})
13865Increments the value in the variable @var{v} by @var{i}. Returns the
13866new value.
13867
13868@item INCL(@var{m},@var{s})
13869Adds the element @var{m} to the set @var{s} if it is not already
13870there. Returns the new set.
13871
13872@item MAX(@var{t})
13873Returns the maximum value of the type @var{t}.
13874
13875@item MIN(@var{t})
13876Returns the minimum value of the type @var{t}.
13877
13878@item ODD(@var{i})
13879Returns boolean TRUE if @var{i} is an odd number.
13880
13881@item ORD(@var{x})
13882Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
13883value of a character is its @sc{ascii} value (on machines supporting the
13884@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
13885integral, character and enumerated types.
13886
13887@item SIZE(@var{x})
13888Returns the size of its argument. @var{x} can be a variable or a type.
13889
13890@item TRUNC(@var{r})
13891Returns the integral part of @var{r}.
13892
844781a1
GM
13893@item TSIZE(@var{x})
13894Returns the size of its argument. @var{x} can be a variable or a type.
13895
c906108c
SS
13896@item VAL(@var{t},@var{i})
13897Returns the member of the type @var{t} whose ordinal value is @var{i}.
13898@end table
13899
13900@quotation
13901@emph{Warning:} Sets and their operations are not yet supported, so
13902@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
13903an error.
13904@end quotation
13905
13906@cindex Modula-2 constants
6d2ebf8b 13907@node M2 Constants
c906108c
SS
13908@subsubsection Constants
13909
13910@value{GDBN} allows you to express the constants of Modula-2 in the following
13911ways:
13912
13913@itemize @bullet
13914
13915@item
13916Integer constants are simply a sequence of digits. When used in an
13917expression, a constant is interpreted to be type-compatible with the
13918rest of the expression. Hexadecimal integers are specified by a
13919trailing @samp{H}, and octal integers by a trailing @samp{B}.
13920
13921@item
13922Floating point constants appear as a sequence of digits, followed by a
13923decimal point and another sequence of digits. An optional exponent can
13924then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
13925@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
13926digits of the floating point constant must be valid decimal (base 10)
13927digits.
13928
13929@item
13930Character constants consist of a single character enclosed by a pair of
13931like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 13932also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
13933followed by a @samp{C}.
13934
13935@item
13936String constants consist of a sequence of characters enclosed by a
13937pair of like quotes, either single (@code{'}) or double (@code{"}).
13938Escape sequences in the style of C are also allowed. @xref{C
79a6e687 13939Constants, ,C and C@t{++} Constants}, for a brief explanation of escape
c906108c
SS
13940sequences.
13941
13942@item
13943Enumerated constants consist of an enumerated identifier.
13944
13945@item
13946Boolean constants consist of the identifiers @code{TRUE} and
13947@code{FALSE}.
13948
13949@item
13950Pointer constants consist of integral values only.
13951
13952@item
13953Set constants are not yet supported.
13954@end itemize
13955
72019c9c
GM
13956@node M2 Types
13957@subsubsection Modula-2 Types
13958@cindex Modula-2 types
13959
13960Currently @value{GDBN} can print the following data types in Modula-2
13961syntax: array types, record types, set types, pointer types, procedure
13962types, enumerated types, subrange types and base types. You can also
13963print the contents of variables declared using these type.
13964This section gives a number of simple source code examples together with
13965sample @value{GDBN} sessions.
13966
13967The first example contains the following section of code:
13968
13969@smallexample
13970VAR
13971 s: SET OF CHAR ;
13972 r: [20..40] ;
13973@end smallexample
13974
13975@noindent
13976and you can request @value{GDBN} to interrogate the type and value of
13977@code{r} and @code{s}.
13978
13979@smallexample
13980(@value{GDBP}) print s
13981@{'A'..'C', 'Z'@}
13982(@value{GDBP}) ptype s
13983SET OF CHAR
13984(@value{GDBP}) print r
1398521
13986(@value{GDBP}) ptype r
13987[20..40]
13988@end smallexample
13989
13990@noindent
13991Likewise if your source code declares @code{s} as:
13992
13993@smallexample
13994VAR
13995 s: SET ['A'..'Z'] ;
13996@end smallexample
13997
13998@noindent
13999then you may query the type of @code{s} by:
14000
14001@smallexample
14002(@value{GDBP}) ptype s
14003type = SET ['A'..'Z']
14004@end smallexample
14005
14006@noindent
14007Note that at present you cannot interactively manipulate set
14008expressions using the debugger.
14009
14010The following example shows how you might declare an array in Modula-2
14011and how you can interact with @value{GDBN} to print its type and contents:
14012
14013@smallexample
14014VAR
14015 s: ARRAY [-10..10] OF CHAR ;
14016@end smallexample
14017
14018@smallexample
14019(@value{GDBP}) ptype s
14020ARRAY [-10..10] OF CHAR
14021@end smallexample
14022
14023Note that the array handling is not yet complete and although the type
14024is printed correctly, expression handling still assumes that all
14025arrays have a lower bound of zero and not @code{-10} as in the example
844781a1 14026above.
72019c9c
GM
14027
14028Here are some more type related Modula-2 examples:
14029
14030@smallexample
14031TYPE
14032 colour = (blue, red, yellow, green) ;
14033 t = [blue..yellow] ;
14034VAR
14035 s: t ;
14036BEGIN
14037 s := blue ;
14038@end smallexample
14039
14040@noindent
14041The @value{GDBN} interaction shows how you can query the data type
14042and value of a variable.
14043
14044@smallexample
14045(@value{GDBP}) print s
14046$1 = blue
14047(@value{GDBP}) ptype t
14048type = [blue..yellow]
14049@end smallexample
14050
14051@noindent
14052In this example a Modula-2 array is declared and its contents
14053displayed. Observe that the contents are written in the same way as
14054their @code{C} counterparts.
14055
14056@smallexample
14057VAR
14058 s: ARRAY [1..5] OF CARDINAL ;
14059BEGIN
14060 s[1] := 1 ;
14061@end smallexample
14062
14063@smallexample
14064(@value{GDBP}) print s
14065$1 = @{1, 0, 0, 0, 0@}
14066(@value{GDBP}) ptype s
14067type = ARRAY [1..5] OF CARDINAL
14068@end smallexample
14069
14070The Modula-2 language interface to @value{GDBN} also understands
14071pointer types as shown in this example:
14072
14073@smallexample
14074VAR
14075 s: POINTER TO ARRAY [1..5] OF CARDINAL ;
14076BEGIN
14077 NEW(s) ;
14078 s^[1] := 1 ;
14079@end smallexample
14080
14081@noindent
14082and you can request that @value{GDBN} describes the type of @code{s}.
14083
14084@smallexample
14085(@value{GDBP}) ptype s
14086type = POINTER TO ARRAY [1..5] OF CARDINAL
14087@end smallexample
14088
14089@value{GDBN} handles compound types as we can see in this example.
14090Here we combine array types, record types, pointer types and subrange
14091types:
14092
14093@smallexample
14094TYPE
14095 foo = RECORD
14096 f1: CARDINAL ;
14097 f2: CHAR ;
14098 f3: myarray ;
14099 END ;
14100
14101 myarray = ARRAY myrange OF CARDINAL ;
14102 myrange = [-2..2] ;
14103VAR
14104 s: POINTER TO ARRAY myrange OF foo ;
14105@end smallexample
14106
14107@noindent
14108and you can ask @value{GDBN} to describe the type of @code{s} as shown
14109below.
14110
14111@smallexample
14112(@value{GDBP}) ptype s
14113type = POINTER TO ARRAY [-2..2] OF foo = RECORD
14114 f1 : CARDINAL;
14115 f2 : CHAR;
14116 f3 : ARRAY [-2..2] OF CARDINAL;
14117END
14118@end smallexample
14119
6d2ebf8b 14120@node M2 Defaults
79a6e687 14121@subsubsection Modula-2 Defaults
c906108c
SS
14122@cindex Modula-2 defaults
14123
14124If type and range checking are set automatically by @value{GDBN}, they
14125both default to @code{on} whenever the working language changes to
d4f3574e 14126Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
14127selected the working language.
14128
14129If you allow @value{GDBN} to set the language automatically, then entering
14130code compiled from a file whose name ends with @file{.mod} sets the
79a6e687
BW
14131working language to Modula-2. @xref{Automatically, ,Having @value{GDBN}
14132Infer the Source Language}, for further details.
c906108c 14133
6d2ebf8b 14134@node Deviations
79a6e687 14135@subsubsection Deviations from Standard Modula-2
c906108c
SS
14136@cindex Modula-2, deviations from
14137
14138A few changes have been made to make Modula-2 programs easier to debug.
14139This is done primarily via loosening its type strictness:
14140
14141@itemize @bullet
14142@item
14143Unlike in standard Modula-2, pointer constants can be formed by
14144integers. This allows you to modify pointer variables during
14145debugging. (In standard Modula-2, the actual address contained in a
14146pointer variable is hidden from you; it can only be modified
14147through direct assignment to another pointer variable or expression that
14148returned a pointer.)
14149
14150@item
14151C escape sequences can be used in strings and characters to represent
14152non-printable characters. @value{GDBN} prints out strings with these
14153escape sequences embedded. Single non-printable characters are
14154printed using the @samp{CHR(@var{nnn})} format.
14155
14156@item
14157The assignment operator (@code{:=}) returns the value of its right-hand
14158argument.
14159
14160@item
14161All built-in procedures both modify @emph{and} return their argument.
14162@end itemize
14163
6d2ebf8b 14164@node M2 Checks
79a6e687 14165@subsubsection Modula-2 Type and Range Checks
c906108c
SS
14166@cindex Modula-2 checks
14167
14168@quotation
14169@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
14170range checking.
14171@end quotation
14172@c FIXME remove warning when type/range checks added
14173
14174@value{GDBN} considers two Modula-2 variables type equivalent if:
14175
14176@itemize @bullet
14177@item
14178They are of types that have been declared equivalent via a @code{TYPE
14179@var{t1} = @var{t2}} statement
14180
14181@item
14182They have been declared on the same line. (Note: This is true of the
14183@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
14184@end itemize
14185
14186As long as type checking is enabled, any attempt to combine variables
14187whose types are not equivalent is an error.
14188
14189Range checking is done on all mathematical operations, assignment, array
14190index bounds, and all built-in functions and procedures.
14191
6d2ebf8b 14192@node M2 Scope
79a6e687 14193@subsubsection The Scope Operators @code{::} and @code{.}
c906108c 14194@cindex scope
41afff9a 14195@cindex @code{.}, Modula-2 scope operator
c906108c
SS
14196@cindex colon, doubled as scope operator
14197@ifinfo
41afff9a 14198@vindex colon-colon@r{, in Modula-2}
c906108c
SS
14199@c Info cannot handle :: but TeX can.
14200@end ifinfo
a67ec3f4 14201@ifnotinfo
41afff9a 14202@vindex ::@r{, in Modula-2}
a67ec3f4 14203@end ifnotinfo
c906108c
SS
14204
14205There are a few subtle differences between the Modula-2 scope operator
14206(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
14207similar syntax:
14208
474c8240 14209@smallexample
c906108c
SS
14210
14211@var{module} . @var{id}
14212@var{scope} :: @var{id}
474c8240 14213@end smallexample
c906108c
SS
14214
14215@noindent
14216where @var{scope} is the name of a module or a procedure,
14217@var{module} the name of a module, and @var{id} is any declared
14218identifier within your program, except another module.
14219
14220Using the @code{::} operator makes @value{GDBN} search the scope
14221specified by @var{scope} for the identifier @var{id}. If it is not
14222found in the specified scope, then @value{GDBN} searches all scopes
14223enclosing the one specified by @var{scope}.
14224
14225Using the @code{.} operator makes @value{GDBN} search the current scope for
14226the identifier specified by @var{id} that was imported from the
14227definition module specified by @var{module}. With this operator, it is
14228an error if the identifier @var{id} was not imported from definition
14229module @var{module}, or if @var{id} is not an identifier in
14230@var{module}.
14231
6d2ebf8b 14232@node GDB/M2
c906108c
SS
14233@subsubsection @value{GDBN} and Modula-2
14234
14235Some @value{GDBN} commands have little use when debugging Modula-2 programs.
14236Five subcommands of @code{set print} and @code{show print} apply
b37052ae 14237specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 14238@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 14239apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
14240analogue in Modula-2.
14241
14242The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 14243with any language, is not useful with Modula-2. Its
c906108c 14244intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 14245created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 14246address can be specified by an integral constant, the construct
d4f3574e 14247@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
14248
14249@cindex @code{#} in Modula-2
14250In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
14251interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 14252
e07c999f
PH
14253@node Ada
14254@subsection Ada
14255@cindex Ada
14256
14257The extensions made to @value{GDBN} for Ada only support
14258output from the @sc{gnu} Ada (GNAT) compiler.
14259Other Ada compilers are not currently supported, and
14260attempting to debug executables produced by them is most likely
14261to be difficult.
14262
14263
14264@cindex expressions in Ada
14265@menu
14266* Ada Mode Intro:: General remarks on the Ada syntax
14267 and semantics supported by Ada mode
14268 in @value{GDBN}.
14269* Omissions from Ada:: Restrictions on the Ada expression syntax.
14270* Additions to Ada:: Extensions of the Ada expression syntax.
14271* Stopping Before Main Program:: Debugging the program during elaboration.
20924a55
JB
14272* Ada Tasks:: Listing and setting breakpoints in tasks.
14273* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files
6e1bb179
JB
14274* Ravenscar Profile:: Tasking Support when using the Ravenscar
14275 Profile
e07c999f
PH
14276* Ada Glitches:: Known peculiarities of Ada mode.
14277@end menu
14278
14279@node Ada Mode Intro
14280@subsubsection Introduction
14281@cindex Ada mode, general
14282
14283The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression
14284syntax, with some extensions.
14285The philosophy behind the design of this subset is
14286
14287@itemize @bullet
14288@item
14289That @value{GDBN} should provide basic literals and access to operations for
14290arithmetic, dereferencing, field selection, indexing, and subprogram calls,
14291leaving more sophisticated computations to subprograms written into the
14292program (which therefore may be called from @value{GDBN}).
14293
14294@item
14295That type safety and strict adherence to Ada language restrictions
14296are not particularly important to the @value{GDBN} user.
14297
14298@item
14299That brevity is important to the @value{GDBN} user.
14300@end itemize
14301
f3a2dd1a
JB
14302Thus, for brevity, the debugger acts as if all names declared in
14303user-written packages are directly visible, even if they are not visible
14304according to Ada rules, thus making it unnecessary to fully qualify most
14305names with their packages, regardless of context. Where this causes
14306ambiguity, @value{GDBN} asks the user's intent.
e07c999f
PH
14307
14308The debugger will start in Ada mode if it detects an Ada main program.
14309As for other languages, it will enter Ada mode when stopped in a program that
14310was translated from an Ada source file.
14311
14312While in Ada mode, you may use `@t{--}' for comments. This is useful
14313mostly for documenting command files. The standard @value{GDBN} comment
14314(@samp{#}) still works at the beginning of a line in Ada mode, but not in the
14315middle (to allow based literals).
14316
14317The debugger supports limited overloading. Given a subprogram call in which
14318the function symbol has multiple definitions, it will use the number of
14319actual parameters and some information about their types to attempt to narrow
14320the set of definitions. It also makes very limited use of context, preferring
14321procedures to functions in the context of the @code{call} command, and
14322functions to procedures elsewhere.
14323
14324@node Omissions from Ada
14325@subsubsection Omissions from Ada
14326@cindex Ada, omissions from
14327
14328Here are the notable omissions from the subset:
14329
14330@itemize @bullet
14331@item
14332Only a subset of the attributes are supported:
14333
14334@itemize @minus
14335@item
14336@t{'First}, @t{'Last}, and @t{'Length}
14337 on array objects (not on types and subtypes).
14338
14339@item
14340@t{'Min} and @t{'Max}.
14341
14342@item
14343@t{'Pos} and @t{'Val}.
14344
14345@item
14346@t{'Tag}.
14347
14348@item
14349@t{'Range} on array objects (not subtypes), but only as the right
14350operand of the membership (@code{in}) operator.
14351
14352@item
14353@t{'Access}, @t{'Unchecked_Access}, and
14354@t{'Unrestricted_Access} (a GNAT extension).
14355
14356@item
14357@t{'Address}.
14358@end itemize
14359
14360@item
14361The names in
14362@code{Characters.Latin_1} are not available and
14363concatenation is not implemented. Thus, escape characters in strings are
14364not currently available.
14365
14366@item
14367Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise
14368equality of representations. They will generally work correctly
14369for strings and arrays whose elements have integer or enumeration types.
14370They may not work correctly for arrays whose element
14371types have user-defined equality, for arrays of real values
14372(in particular, IEEE-conformant floating point, because of negative
14373zeroes and NaNs), and for arrays whose elements contain unused bits with
14374indeterminate values.
14375
14376@item
14377The other component-by-component array operations (@code{and}, @code{or},
14378@code{xor}, @code{not}, and relational tests other than equality)
14379are not implemented.
14380
14381@item
860701dc
PH
14382@cindex array aggregates (Ada)
14383@cindex record aggregates (Ada)
14384@cindex aggregates (Ada)
14385There is limited support for array and record aggregates. They are
14386permitted only on the right sides of assignments, as in these examples:
14387
14388@smallexample
077e0a52
JB
14389(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6)
14390(@value{GDBP}) set An_Array := (1, others => 0)
14391(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
14392(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
14393(@value{GDBP}) set A_Record := (1, "Peter", True);
14394(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True)
860701dc
PH
14395@end smallexample
14396
14397Changing a
14398discriminant's value by assigning an aggregate has an
14399undefined effect if that discriminant is used within the record.
14400However, you can first modify discriminants by directly assigning to
14401them (which normally would not be allowed in Ada), and then performing an
14402aggregate assignment. For example, given a variable @code{A_Rec}
14403declared to have a type such as:
14404
14405@smallexample
14406type Rec (Len : Small_Integer := 0) is record
14407 Id : Integer;
14408 Vals : IntArray (1 .. Len);
14409end record;
14410@end smallexample
14411
14412you can assign a value with a different size of @code{Vals} with two
14413assignments:
14414
14415@smallexample
077e0a52
JB
14416(@value{GDBP}) set A_Rec.Len := 4
14417(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
860701dc
PH
14418@end smallexample
14419
14420As this example also illustrates, @value{GDBN} is very loose about the usual
14421rules concerning aggregates. You may leave out some of the
14422components of an array or record aggregate (such as the @code{Len}
14423component in the assignment to @code{A_Rec} above); they will retain their
14424original values upon assignment. You may freely use dynamic values as
14425indices in component associations. You may even use overlapping or
14426redundant component associations, although which component values are
14427assigned in such cases is not defined.
e07c999f
PH
14428
14429@item
14430Calls to dispatching subprograms are not implemented.
14431
14432@item
14433The overloading algorithm is much more limited (i.e., less selective)
ae21e955
BW
14434than that of real Ada. It makes only limited use of the context in
14435which a subexpression appears to resolve its meaning, and it is much
14436looser in its rules for allowing type matches. As a result, some
14437function calls will be ambiguous, and the user will be asked to choose
14438the proper resolution.
e07c999f
PH
14439
14440@item
14441The @code{new} operator is not implemented.
14442
14443@item
14444Entry calls are not implemented.
14445
14446@item
14447Aside from printing, arithmetic operations on the native VAX floating-point
14448formats are not supported.
14449
14450@item
14451It is not possible to slice a packed array.
158c7665
PH
14452
14453@item
14454The names @code{True} and @code{False}, when not part of a qualified name,
14455are interpreted as if implicitly prefixed by @code{Standard}, regardless of
14456context.
14457Should your program
14458redefine these names in a package or procedure (at best a dubious practice),
14459you will have to use fully qualified names to access their new definitions.
e07c999f
PH
14460@end itemize
14461
14462@node Additions to Ada
14463@subsubsection Additions to Ada
14464@cindex Ada, deviations from
14465
14466As it does for other languages, @value{GDBN} makes certain generic
14467extensions to Ada (@pxref{Expressions}):
14468
14469@itemize @bullet
14470@item
ae21e955
BW
14471If the expression @var{E} is a variable residing in memory (typically
14472a local variable or array element) and @var{N} is a positive integer,
14473then @code{@var{E}@@@var{N}} displays the values of @var{E} and the
14474@var{N}-1 adjacent variables following it in memory as an array. In
14475Ada, this operator is generally not necessary, since its prime use is
14476in displaying parts of an array, and slicing will usually do this in
14477Ada. However, there are occasional uses when debugging programs in
14478which certain debugging information has been optimized away.
e07c999f
PH
14479
14480@item
ae21e955
BW
14481@code{@var{B}::@var{var}} means ``the variable named @var{var} that
14482appears in function or file @var{B}.'' When @var{B} is a file name,
14483you must typically surround it in single quotes.
e07c999f
PH
14484
14485@item
14486The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type
14487@var{type} that appears at address @var{addr}.''
14488
14489@item
14490A name starting with @samp{$} is a convenience variable
14491(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}).
14492@end itemize
14493
ae21e955
BW
14494In addition, @value{GDBN} provides a few other shortcuts and outright
14495additions specific to Ada:
e07c999f
PH
14496
14497@itemize @bullet
14498@item
14499The assignment statement is allowed as an expression, returning
14500its right-hand operand as its value. Thus, you may enter
14501
14502@smallexample
077e0a52
JB
14503(@value{GDBP}) set x := y + 3
14504(@value{GDBP}) print A(tmp := y + 1)
e07c999f
PH
14505@end smallexample
14506
14507@item
14508The semicolon is allowed as an ``operator,'' returning as its value
14509the value of its right-hand operand.
14510This allows, for example,
14511complex conditional breaks:
14512
14513@smallexample
077e0a52
JB
14514(@value{GDBP}) break f
14515(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100)
e07c999f
PH
14516@end smallexample
14517
14518@item
14519Rather than use catenation and symbolic character names to introduce special
14520characters into strings, one may instead use a special bracket notation,
14521which is also used to print strings. A sequence of characters of the form
14522@samp{["@var{XX}"]} within a string or character literal denotes the
14523(single) character whose numeric encoding is @var{XX} in hexadecimal. The
14524sequence of characters @samp{["""]} also denotes a single quotation mark
14525in strings. For example,
14526@smallexample
14527 "One line.["0a"]Next line.["0a"]"
14528@end smallexample
14529@noindent
ae21e955
BW
14530contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF})
14531after each period.
e07c999f
PH
14532
14533@item
14534The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and
14535@t{'Max} is optional (and is ignored in any case). For example, it is valid
14536to write
14537
14538@smallexample
077e0a52 14539(@value{GDBP}) print 'max(x, y)
e07c999f
PH
14540@end smallexample
14541
14542@item
14543When printing arrays, @value{GDBN} uses positional notation when the
14544array has a lower bound of 1, and uses a modified named notation otherwise.
ae21e955
BW
14545For example, a one-dimensional array of three integers with a lower bound
14546of 3 might print as
e07c999f
PH
14547
14548@smallexample
14549(3 => 10, 17, 1)
14550@end smallexample
14551
14552@noindent
14553That is, in contrast to valid Ada, only the first component has a @code{=>}
14554clause.
14555
14556@item
14557You may abbreviate attributes in expressions with any unique,
14558multi-character subsequence of
14559their names (an exact match gets preference).
14560For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh}
14561in place of @t{a'length}.
14562
14563@item
14564@cindex quoting Ada internal identifiers
14565Since Ada is case-insensitive, the debugger normally maps identifiers you type
14566to lower case. The GNAT compiler uses upper-case characters for
14567some of its internal identifiers, which are normally of no interest to users.
14568For the rare occasions when you actually have to look at them,
14569enclose them in angle brackets to avoid the lower-case mapping.
14570For example,
14571@smallexample
077e0a52 14572(@value{GDBP}) print <JMPBUF_SAVE>[0]
e07c999f
PH
14573@end smallexample
14574
14575@item
14576Printing an object of class-wide type or dereferencing an
14577access-to-class-wide value will display all the components of the object's
14578specific type (as indicated by its run-time tag). Likewise, component
14579selection on such a value will operate on the specific type of the
14580object.
14581
14582@end itemize
14583
14584@node Stopping Before Main Program
14585@subsubsection Stopping at the Very Beginning
14586
14587@cindex breakpointing Ada elaboration code
14588It is sometimes necessary to debug the program during elaboration, and
14589before reaching the main procedure.
14590As defined in the Ada Reference
14591Manual, the elaboration code is invoked from a procedure called
14592@code{adainit}. To run your program up to the beginning of
14593elaboration, simply use the following two commands:
14594@code{tbreak adainit} and @code{run}.
14595
20924a55
JB
14596@node Ada Tasks
14597@subsubsection Extensions for Ada Tasks
14598@cindex Ada, tasking
14599
14600Support for Ada tasks is analogous to that for threads (@pxref{Threads}).
14601@value{GDBN} provides the following task-related commands:
14602
14603@table @code
14604@kindex info tasks
14605@item info tasks
14606This command shows a list of current Ada tasks, as in the following example:
14607
14608
14609@smallexample
14610@iftex
14611@leftskip=0.5cm
14612@end iftex
14613(@value{GDBP}) info tasks
14614 ID TID P-ID Pri State Name
14615 1 8088000 0 15 Child Activation Wait main_task
14616 2 80a4000 1 15 Accept Statement b
14617 3 809a800 1 15 Child Activation Wait a
32cd1edc 14618* 4 80ae800 3 15 Runnable c
20924a55
JB
14619
14620@end smallexample
14621
14622@noindent
14623In this listing, the asterisk before the last task indicates it to be the
14624task currently being inspected.
14625
14626@table @asis
14627@item ID
14628Represents @value{GDBN}'s internal task number.
14629
14630@item TID
14631The Ada task ID.
14632
14633@item P-ID
14634The parent's task ID (@value{GDBN}'s internal task number).
14635
14636@item Pri
14637The base priority of the task.
14638
14639@item State
14640Current state of the task.
14641
14642@table @code
14643@item Unactivated
14644The task has been created but has not been activated. It cannot be
14645executing.
14646
20924a55
JB
14647@item Runnable
14648The task is not blocked for any reason known to Ada. (It may be waiting
14649for a mutex, though.) It is conceptually "executing" in normal mode.
14650
14651@item Terminated
14652The task is terminated, in the sense of ARM 9.3 (5). Any dependents
14653that were waiting on terminate alternatives have been awakened and have
14654terminated themselves.
14655
14656@item Child Activation Wait
14657The task is waiting for created tasks to complete activation.
14658
14659@item Accept Statement
14660The task is waiting on an accept or selective wait statement.
14661
14662@item Waiting on entry call
14663The task is waiting on an entry call.
14664
14665@item Async Select Wait
14666The task is waiting to start the abortable part of an asynchronous
14667select statement.
14668
14669@item Delay Sleep
14670The task is waiting on a select statement with only a delay
14671alternative open.
14672
14673@item Child Termination Wait
14674The task is sleeping having completed a master within itself, and is
14675waiting for the tasks dependent on that master to become terminated or
14676waiting on a terminate Phase.
14677
14678@item Wait Child in Term Alt
14679The task is sleeping waiting for tasks on terminate alternatives to
14680finish terminating.
14681
14682@item Accepting RV with @var{taskno}
14683The task is accepting a rendez-vous with the task @var{taskno}.
14684@end table
14685
14686@item Name
14687Name of the task in the program.
14688
14689@end table
14690
14691@kindex info task @var{taskno}
14692@item info task @var{taskno}
14693This command shows detailled informations on the specified task, as in
14694the following example:
14695@smallexample
14696@iftex
14697@leftskip=0.5cm
14698@end iftex
14699(@value{GDBP}) info tasks
14700 ID TID P-ID Pri State Name
14701 1 8077880 0 15 Child Activation Wait main_task
32cd1edc 14702* 2 807c468 1 15 Runnable task_1
20924a55
JB
14703(@value{GDBP}) info task 2
14704Ada Task: 0x807c468
14705Name: task_1
14706Thread: 0x807f378
14707Parent: 1 (main_task)
14708Base Priority: 15
14709State: Runnable
14710@end smallexample
14711
14712@item task
14713@kindex task@r{ (Ada)}
14714@cindex current Ada task ID
14715This command prints the ID of the current task.
14716
14717@smallexample
14718@iftex
14719@leftskip=0.5cm
14720@end iftex
14721(@value{GDBP}) info tasks
14722 ID TID P-ID Pri State Name
14723 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 14724* 2 807c458 1 15 Runnable t
20924a55
JB
14725(@value{GDBP}) task
14726[Current task is 2]
14727@end smallexample
14728
14729@item task @var{taskno}
14730@cindex Ada task switching
14731This command is like the @code{thread @var{threadno}}
14732command (@pxref{Threads}). It switches the context of debugging
14733from the current task to the given task.
14734
14735@smallexample
14736@iftex
14737@leftskip=0.5cm
14738@end iftex
14739(@value{GDBP}) info tasks
14740 ID TID P-ID Pri State Name
14741 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 14742* 2 807c458 1 15 Runnable t
20924a55
JB
14743(@value{GDBP}) task 1
14744[Switching to task 1]
14745#0 0x8067726 in pthread_cond_wait ()
14746(@value{GDBP}) bt
14747#0 0x8067726 in pthread_cond_wait ()
14748#1 0x8056714 in system.os_interface.pthread_cond_wait ()
14749#2 0x805cb63 in system.task_primitives.operations.sleep ()
14750#3 0x806153e in system.tasking.stages.activate_tasks ()
14751#4 0x804aacc in un () at un.adb:5
14752@end smallexample
14753
45ac276d
JB
14754@item break @var{linespec} task @var{taskno}
14755@itemx break @var{linespec} task @var{taskno} if @dots{}
14756@cindex breakpoints and tasks, in Ada
14757@cindex task breakpoints, in Ada
14758@kindex break @dots{} task @var{taskno}@r{ (Ada)}
14759These commands are like the @code{break @dots{} thread @dots{}}
14760command (@pxref{Thread Stops}).
14761@var{linespec} specifies source lines, as described
14762in @ref{Specify Location}.
14763
14764Use the qualifier @samp{task @var{taskno}} with a breakpoint command
14765to specify that you only want @value{GDBN} to stop the program when a
14766particular Ada task reaches this breakpoint. @var{taskno} is one of the
14767numeric task identifiers assigned by @value{GDBN}, shown in the first
14768column of the @samp{info tasks} display.
14769
14770If you do not specify @samp{task @var{taskno}} when you set a
14771breakpoint, the breakpoint applies to @emph{all} tasks of your
14772program.
14773
14774You can use the @code{task} qualifier on conditional breakpoints as
14775well; in this case, place @samp{task @var{taskno}} before the
14776breakpoint condition (before the @code{if}).
14777
14778For example,
14779
14780@smallexample
14781@iftex
14782@leftskip=0.5cm
14783@end iftex
14784(@value{GDBP}) info tasks
14785 ID TID P-ID Pri State Name
14786 1 140022020 0 15 Child Activation Wait main_task
14787 2 140045060 1 15 Accept/Select Wait t2
14788 3 140044840 1 15 Runnable t1
14789* 4 140056040 1 15 Runnable t3
14790(@value{GDBP}) b 15 task 2
14791Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15.
14792(@value{GDBP}) cont
14793Continuing.
14794task # 1 running
14795task # 2 running
14796
14797Breakpoint 5, test_task_debug () at test_task_debug.adb:15
1479815 flush;
14799(@value{GDBP}) info tasks
14800 ID TID P-ID Pri State Name
14801 1 140022020 0 15 Child Activation Wait main_task
14802* 2 140045060 1 15 Runnable t2
14803 3 140044840 1 15 Runnable t1
14804 4 140056040 1 15 Delay Sleep t3
14805@end smallexample
20924a55
JB
14806@end table
14807
14808@node Ada Tasks and Core Files
14809@subsubsection Tasking Support when Debugging Core Files
14810@cindex Ada tasking and core file debugging
14811
14812When inspecting a core file, as opposed to debugging a live program,
14813tasking support may be limited or even unavailable, depending on
14814the platform being used.
14815For instance, on x86-linux, the list of tasks is available, but task
14816switching is not supported. On Tru64, however, task switching will work
14817as usual.
14818
14819On certain platforms, including Tru64, the debugger needs to perform some
14820memory writes in order to provide Ada tasking support. When inspecting
14821a core file, this means that the core file must be opened with read-write
14822privileges, using the command @samp{"set write on"} (@pxref{Patching}).
14823Under these circumstances, you should make a backup copy of the core
14824file before inspecting it with @value{GDBN}.
14825
6e1bb179
JB
14826@node Ravenscar Profile
14827@subsubsection Tasking Support when using the Ravenscar Profile
14828@cindex Ravenscar Profile
14829
14830The @dfn{Ravenscar Profile} is a subset of the Ada tasking features,
14831specifically designed for systems with safety-critical real-time
14832requirements.
14833
14834@table @code
14835@kindex set ravenscar task-switching on
14836@cindex task switching with program using Ravenscar Profile
14837@item set ravenscar task-switching on
14838Allows task switching when debugging a program that uses the Ravenscar
14839Profile. This is the default.
14840
14841@kindex set ravenscar task-switching off
14842@item set ravenscar task-switching off
14843Turn off task switching when debugging a program that uses the Ravenscar
14844Profile. This is mostly intended to disable the code that adds support
14845for the Ravenscar Profile, in case a bug in either @value{GDBN} or in
14846the Ravenscar runtime is preventing @value{GDBN} from working properly.
14847To be effective, this command should be run before the program is started.
14848
14849@kindex show ravenscar task-switching
14850@item show ravenscar task-switching
14851Show whether it is possible to switch from task to task in a program
14852using the Ravenscar Profile.
14853
14854@end table
14855
e07c999f
PH
14856@node Ada Glitches
14857@subsubsection Known Peculiarities of Ada Mode
14858@cindex Ada, problems
14859
14860Besides the omissions listed previously (@pxref{Omissions from Ada}),
14861we know of several problems with and limitations of Ada mode in
14862@value{GDBN},
14863some of which will be fixed with planned future releases of the debugger
14864and the GNU Ada compiler.
14865
14866@itemize @bullet
e07c999f
PH
14867@item
14868Static constants that the compiler chooses not to materialize as objects in
14869storage are invisible to the debugger.
14870
14871@item
14872Named parameter associations in function argument lists are ignored (the
14873argument lists are treated as positional).
14874
14875@item
14876Many useful library packages are currently invisible to the debugger.
14877
14878@item
14879Fixed-point arithmetic, conversions, input, and output is carried out using
14880floating-point arithmetic, and may give results that only approximate those on
14881the host machine.
14882
e07c999f
PH
14883@item
14884The GNAT compiler never generates the prefix @code{Standard} for any of
14885the standard symbols defined by the Ada language. @value{GDBN} knows about
14886this: it will strip the prefix from names when you use it, and will never
14887look for a name you have so qualified among local symbols, nor match against
14888symbols in other packages or subprograms. If you have
14889defined entities anywhere in your program other than parameters and
14890local variables whose simple names match names in @code{Standard},
14891GNAT's lack of qualification here can cause confusion. When this happens,
14892you can usually resolve the confusion
14893by qualifying the problematic names with package
14894@code{Standard} explicitly.
14895@end itemize
14896
95433b34
JB
14897Older versions of the compiler sometimes generate erroneous debugging
14898information, resulting in the debugger incorrectly printing the value
14899of affected entities. In some cases, the debugger is able to work
14900around an issue automatically. In other cases, the debugger is able
14901to work around the issue, but the work-around has to be specifically
14902enabled.
14903
14904@kindex set ada trust-PAD-over-XVS
14905@kindex show ada trust-PAD-over-XVS
14906@table @code
14907
14908@item set ada trust-PAD-over-XVS on
14909Configure GDB to strictly follow the GNAT encoding when computing the
14910value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS}
14911types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for
14912a complete description of the encoding used by the GNAT compiler).
14913This is the default.
14914
14915@item set ada trust-PAD-over-XVS off
14916This is related to the encoding using by the GNAT compiler. If @value{GDBN}
14917sometimes prints the wrong value for certain entities, changing @code{ada
14918trust-PAD-over-XVS} to @code{off} activates a work-around which may fix
14919the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to
14920@code{off}, but this incurs a slight performance penalty, so it is
14921recommended to leave this setting to @code{on} unless necessary.
14922
14923@end table
14924
79a6e687
BW
14925@node Unsupported Languages
14926@section Unsupported Languages
4e562065
JB
14927
14928@cindex unsupported languages
14929@cindex minimal language
14930In addition to the other fully-supported programming languages,
14931@value{GDBN} also provides a pseudo-language, called @code{minimal}.
14932It does not represent a real programming language, but provides a set
14933of capabilities close to what the C or assembly languages provide.
14934This should allow most simple operations to be performed while debugging
14935an application that uses a language currently not supported by @value{GDBN}.
14936
14937If the language is set to @code{auto}, @value{GDBN} will automatically
14938select this language if the current frame corresponds to an unsupported
14939language.
14940
6d2ebf8b 14941@node Symbols
c906108c
SS
14942@chapter Examining the Symbol Table
14943
d4f3574e 14944The commands described in this chapter allow you to inquire about the
c906108c
SS
14945symbols (names of variables, functions and types) defined in your
14946program. This information is inherent in the text of your program and
14947does not change as your program executes. @value{GDBN} finds it in your
14948program's symbol table, in the file indicated when you started @value{GDBN}
79a6e687
BW
14949(@pxref{File Options, ,Choosing Files}), or by one of the
14950file-management commands (@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
14951
14952@cindex symbol names
14953@cindex names of symbols
14954@cindex quoting names
14955Occasionally, you may need to refer to symbols that contain unusual
14956characters, which @value{GDBN} ordinarily treats as word delimiters. The
14957most frequent case is in referring to static variables in other
79a6e687 14958source files (@pxref{Variables,,Program Variables}). File names
c906108c
SS
14959are recorded in object files as debugging symbols, but @value{GDBN} would
14960ordinarily parse a typical file name, like @file{foo.c}, as the three words
14961@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
14962@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
14963
474c8240 14964@smallexample
c906108c 14965p 'foo.c'::x
474c8240 14966@end smallexample
c906108c
SS
14967
14968@noindent
14969looks up the value of @code{x} in the scope of the file @file{foo.c}.
14970
14971@table @code
a8f24a35
EZ
14972@cindex case-insensitive symbol names
14973@cindex case sensitivity in symbol names
14974@kindex set case-sensitive
14975@item set case-sensitive on
14976@itemx set case-sensitive off
14977@itemx set case-sensitive auto
14978Normally, when @value{GDBN} looks up symbols, it matches their names
14979with case sensitivity determined by the current source language.
14980Occasionally, you may wish to control that. The command @code{set
14981case-sensitive} lets you do that by specifying @code{on} for
14982case-sensitive matches or @code{off} for case-insensitive ones. If
14983you specify @code{auto}, case sensitivity is reset to the default
14984suitable for the source language. The default is case-sensitive
14985matches for all languages except for Fortran, for which the default is
14986case-insensitive matches.
14987
9c16f35a
EZ
14988@kindex show case-sensitive
14989@item show case-sensitive
a8f24a35
EZ
14990This command shows the current setting of case sensitivity for symbols
14991lookups.
14992
53342f27
TT
14993@kindex set print type methods
14994@item set print type methods
14995@itemx set print type methods on
14996@itemx set print type methods off
14997Normally, when @value{GDBN} prints a class, it displays any methods
14998declared in that class. You can control this behavior either by
14999passing the appropriate flag to @code{ptype}, or using @command{set
15000print type methods}. Specifying @code{on} will cause @value{GDBN} to
15001display the methods; this is the default. Specifying @code{off} will
15002cause @value{GDBN} to omit the methods.
15003
15004@kindex show print type methods
15005@item show print type methods
15006This command shows the current setting of method display when printing
15007classes.
15008
15009@kindex set print type typedefs
15010@item set print type typedefs
15011@itemx set print type typedefs on
15012@itemx set print type typedefs off
15013
15014Normally, when @value{GDBN} prints a class, it displays any typedefs
15015defined in that class. You can control this behavior either by
15016passing the appropriate flag to @code{ptype}, or using @command{set
15017print type typedefs}. Specifying @code{on} will cause @value{GDBN} to
15018display the typedef definitions; this is the default. Specifying
15019@code{off} will cause @value{GDBN} to omit the typedef definitions.
15020Note that this controls whether the typedef definition itself is
15021printed, not whether typedef names are substituted when printing other
15022types.
15023
15024@kindex show print type typedefs
15025@item show print type typedefs
15026This command shows the current setting of typedef display when
15027printing classes.
15028
c906108c 15029@kindex info address
b37052ae 15030@cindex address of a symbol
c906108c
SS
15031@item info address @var{symbol}
15032Describe where the data for @var{symbol} is stored. For a register
15033variable, this says which register it is kept in. For a non-register
15034local variable, this prints the stack-frame offset at which the variable
15035is always stored.
15036
15037Note the contrast with @samp{print &@var{symbol}}, which does not work
15038at all for a register variable, and for a stack local variable prints
15039the exact address of the current instantiation of the variable.
15040
3d67e040 15041@kindex info symbol
b37052ae 15042@cindex symbol from address
9c16f35a 15043@cindex closest symbol and offset for an address
3d67e040
EZ
15044@item info symbol @var{addr}
15045Print the name of a symbol which is stored at the address @var{addr}.
15046If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
15047nearest symbol and an offset from it:
15048
474c8240 15049@smallexample
3d67e040
EZ
15050(@value{GDBP}) info symbol 0x54320
15051_initialize_vx + 396 in section .text
474c8240 15052@end smallexample
3d67e040
EZ
15053
15054@noindent
15055This is the opposite of the @code{info address} command. You can use
15056it to find out the name of a variable or a function given its address.
15057
c14c28ba
PP
15058For dynamically linked executables, the name of executable or shared
15059library containing the symbol is also printed:
15060
15061@smallexample
15062(@value{GDBP}) info symbol 0x400225
15063_start + 5 in section .text of /tmp/a.out
15064(@value{GDBP}) info symbol 0x2aaaac2811cf
15065__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6
15066@end smallexample
15067
c906108c 15068@kindex whatis
53342f27 15069@item whatis[/@var{flags}] [@var{arg}]
177bc839
JK
15070Print the data type of @var{arg}, which can be either an expression
15071or a name of a data type. With no argument, print the data type of
15072@code{$}, the last value in the value history.
15073
15074If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it
15075is not actually evaluated, and any side-effecting operations (such as
15076assignments or function calls) inside it do not take place.
15077
15078If @var{arg} is a variable or an expression, @code{whatis} prints its
15079literal type as it is used in the source code. If the type was
15080defined using a @code{typedef}, @code{whatis} will @emph{not} print
15081the data type underlying the @code{typedef}. If the type of the
15082variable or the expression is a compound data type, such as
15083@code{struct} or @code{class}, @code{whatis} never prints their
15084fields or methods. It just prints the @code{struct}/@code{class}
15085name (a.k.a.@: its @dfn{tag}). If you want to see the members of
15086such a compound data type, use @code{ptype}.
15087
15088If @var{arg} is a type name that was defined using @code{typedef},
15089@code{whatis} @dfn{unrolls} only one level of that @code{typedef}.
15090Unrolling means that @code{whatis} will show the underlying type used
15091in the @code{typedef} declaration of @var{arg}. However, if that
15092underlying type is also a @code{typedef}, @code{whatis} will not
15093unroll it.
15094
15095For C code, the type names may also have the form @samp{class
15096@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
15097@var{union-tag}} or @samp{enum @var{enum-tag}}.
c906108c 15098
53342f27
TT
15099@var{flags} can be used to modify how the type is displayed.
15100Available flags are:
15101
15102@table @code
15103@item r
15104Display in ``raw'' form. Normally, @value{GDBN} substitutes template
15105parameters and typedefs defined in a class when printing the class'
15106members. The @code{/r} flag disables this.
15107
15108@item m
15109Do not print methods defined in the class.
15110
15111@item M
15112Print methods defined in the class. This is the default, but the flag
15113exists in case you change the default with @command{set print type methods}.
15114
15115@item t
15116Do not print typedefs defined in the class. Note that this controls
15117whether the typedef definition itself is printed, not whether typedef
15118names are substituted when printing other types.
15119
15120@item T
15121Print typedefs defined in the class. This is the default, but the flag
15122exists in case you change the default with @command{set print type typedefs}.
15123@end table
15124
c906108c 15125@kindex ptype
53342f27 15126@item ptype[/@var{flags}] [@var{arg}]
62f3a2ba
FF
15127@code{ptype} accepts the same arguments as @code{whatis}, but prints a
15128detailed description of the type, instead of just the name of the type.
15129@xref{Expressions, ,Expressions}.
c906108c 15130
177bc839
JK
15131Contrary to @code{whatis}, @code{ptype} always unrolls any
15132@code{typedef}s in its argument declaration, whether the argument is
15133a variable, expression, or a data type. This means that @code{ptype}
15134of a variable or an expression will not print literally its type as
15135present in the source code---use @code{whatis} for that. @code{typedef}s at
15136the pointer or reference targets are also unrolled. Only @code{typedef}s of
15137fields, methods and inner @code{class typedef}s of @code{struct}s,
15138@code{class}es and @code{union}s are not unrolled even with @code{ptype}.
15139
c906108c
SS
15140For example, for this variable declaration:
15141
474c8240 15142@smallexample
177bc839
JK
15143typedef double real_t;
15144struct complex @{ real_t real; double imag; @};
15145typedef struct complex complex_t;
15146complex_t var;
15147real_t *real_pointer_var;
474c8240 15148@end smallexample
c906108c
SS
15149
15150@noindent
15151the two commands give this output:
15152
474c8240 15153@smallexample
c906108c 15154@group
177bc839
JK
15155(@value{GDBP}) whatis var
15156type = complex_t
15157(@value{GDBP}) ptype var
15158type = struct complex @{
15159 real_t real;
15160 double imag;
15161@}
15162(@value{GDBP}) whatis complex_t
15163type = struct complex
15164(@value{GDBP}) whatis struct complex
c906108c 15165type = struct complex
177bc839 15166(@value{GDBP}) ptype struct complex
c906108c 15167type = struct complex @{
177bc839 15168 real_t real;
c906108c
SS
15169 double imag;
15170@}
177bc839
JK
15171(@value{GDBP}) whatis real_pointer_var
15172type = real_t *
15173(@value{GDBP}) ptype real_pointer_var
15174type = double *
c906108c 15175@end group
474c8240 15176@end smallexample
c906108c
SS
15177
15178@noindent
15179As with @code{whatis}, using @code{ptype} without an argument refers to
15180the type of @code{$}, the last value in the value history.
15181
ab1adacd
EZ
15182@cindex incomplete type
15183Sometimes, programs use opaque data types or incomplete specifications
15184of complex data structure. If the debug information included in the
15185program does not allow @value{GDBN} to display a full declaration of
15186the data type, it will say @samp{<incomplete type>}. For example,
15187given these declarations:
15188
15189@smallexample
15190 struct foo;
15191 struct foo *fooptr;
15192@end smallexample
15193
15194@noindent
15195but no definition for @code{struct foo} itself, @value{GDBN} will say:
15196
15197@smallexample
ddb50cd7 15198 (@value{GDBP}) ptype foo
ab1adacd
EZ
15199 $1 = <incomplete type>
15200@end smallexample
15201
15202@noindent
15203``Incomplete type'' is C terminology for data types that are not
15204completely specified.
15205
c906108c
SS
15206@kindex info types
15207@item info types @var{regexp}
15208@itemx info types
09d4efe1
EZ
15209Print a brief description of all types whose names match the regular
15210expression @var{regexp} (or all types in your program, if you supply
15211no argument). Each complete typename is matched as though it were a
15212complete line; thus, @samp{i type value} gives information on all
15213types in your program whose names include the string @code{value}, but
15214@samp{i type ^value$} gives information only on types whose complete
15215name is @code{value}.
c906108c
SS
15216
15217This command differs from @code{ptype} in two ways: first, like
15218@code{whatis}, it does not print a detailed description; second, it
15219lists all source files where a type is defined.
15220
18a9fc12
TT
15221@kindex info type-printers
15222@item info type-printers
15223Versions of @value{GDBN} that ship with Python scripting enabled may
15224have ``type printers'' available. When using @command{ptype} or
15225@command{whatis}, these printers are consulted when the name of a type
15226is needed. @xref{Type Printing API}, for more information on writing
15227type printers.
15228
15229@code{info type-printers} displays all the available type printers.
15230
15231@kindex enable type-printer
15232@kindex disable type-printer
15233@item enable type-printer @var{name}@dots{}
15234@item disable type-printer @var{name}@dots{}
15235These commands can be used to enable or disable type printers.
15236
b37052ae
EZ
15237@kindex info scope
15238@cindex local variables
09d4efe1 15239@item info scope @var{location}
b37052ae 15240List all the variables local to a particular scope. This command
09d4efe1
EZ
15241accepts a @var{location} argument---a function name, a source line, or
15242an address preceded by a @samp{*}, and prints all the variables local
2a25a5ba
EZ
15243to the scope defined by that location. (@xref{Specify Location}, for
15244details about supported forms of @var{location}.) For example:
b37052ae
EZ
15245
15246@smallexample
15247(@value{GDBP}) @b{info scope command_line_handler}
15248Scope for command_line_handler:
15249Symbol rl is an argument at stack/frame offset 8, length 4.
15250Symbol linebuffer is in static storage at address 0x150a18, length 4.
15251Symbol linelength is in static storage at address 0x150a1c, length 4.
15252Symbol p is a local variable in register $esi, length 4.
15253Symbol p1 is a local variable in register $ebx, length 4.
15254Symbol nline is a local variable in register $edx, length 4.
15255Symbol repeat is a local variable at frame offset -8, length 4.
15256@end smallexample
15257
f5c37c66
EZ
15258@noindent
15259This command is especially useful for determining what data to collect
15260during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
15261collect}.
15262
c906108c
SS
15263@kindex info source
15264@item info source
919d772c
JB
15265Show information about the current source file---that is, the source file for
15266the function containing the current point of execution:
15267@itemize @bullet
15268@item
15269the name of the source file, and the directory containing it,
15270@item
15271the directory it was compiled in,
15272@item
15273its length, in lines,
15274@item
15275which programming language it is written in,
15276@item
15277whether the executable includes debugging information for that file, and
15278if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
15279@item
15280whether the debugging information includes information about
15281preprocessor macros.
15282@end itemize
15283
c906108c
SS
15284
15285@kindex info sources
15286@item info sources
15287Print the names of all source files in your program for which there is
15288debugging information, organized into two lists: files whose symbols
15289have already been read, and files whose symbols will be read when needed.
15290
15291@kindex info functions
15292@item info functions
15293Print the names and data types of all defined functions.
15294
15295@item info functions @var{regexp}
15296Print the names and data types of all defined functions
15297whose names contain a match for regular expression @var{regexp}.
15298Thus, @samp{info fun step} finds all functions whose names
15299include @code{step}; @samp{info fun ^step} finds those whose names
b383017d 15300start with @code{step}. If a function name contains characters
c1468174 15301that conflict with the regular expression language (e.g.@:
1c5dfdad 15302@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
15303
15304@kindex info variables
15305@item info variables
0fe7935b 15306Print the names and data types of all variables that are defined
6ca652b0 15307outside of functions (i.e.@: excluding local variables).
c906108c
SS
15308
15309@item info variables @var{regexp}
15310Print the names and data types of all variables (except for local
15311variables) whose names contain a match for regular expression
15312@var{regexp}.
15313
b37303ee 15314@kindex info classes
721c2651 15315@cindex Objective-C, classes and selectors
b37303ee
AF
15316@item info classes
15317@itemx info classes @var{regexp}
15318Display all Objective-C classes in your program, or
15319(with the @var{regexp} argument) all those matching a particular regular
15320expression.
15321
15322@kindex info selectors
15323@item info selectors
15324@itemx info selectors @var{regexp}
15325Display all Objective-C selectors in your program, or
15326(with the @var{regexp} argument) all those matching a particular regular
15327expression.
15328
c906108c
SS
15329@ignore
15330This was never implemented.
15331@kindex info methods
15332@item info methods
15333@itemx info methods @var{regexp}
15334The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
15335methods within C@t{++} program, or (with the @var{regexp} argument) a
15336specific set of methods found in the various C@t{++} classes. Many
15337C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
15338from the @code{ptype} command can be overwhelming and hard to use. The
15339@code{info-methods} command filters the methods, printing only those
15340which match the regular-expression @var{regexp}.
15341@end ignore
15342
9c16f35a 15343@cindex opaque data types
c906108c
SS
15344@kindex set opaque-type-resolution
15345@item set opaque-type-resolution on
15346Tell @value{GDBN} to resolve opaque types. An opaque type is a type
15347declared as a pointer to a @code{struct}, @code{class}, or
15348@code{union}---for example, @code{struct MyType *}---that is used in one
15349source file although the full declaration of @code{struct MyType} is in
15350another source file. The default is on.
15351
15352A change in the setting of this subcommand will not take effect until
15353the next time symbols for a file are loaded.
15354
15355@item set opaque-type-resolution off
15356Tell @value{GDBN} not to resolve opaque types. In this case, the type
15357is printed as follows:
15358@smallexample
15359@{<no data fields>@}
15360@end smallexample
15361
15362@kindex show opaque-type-resolution
15363@item show opaque-type-resolution
15364Show whether opaque types are resolved or not.
c906108c
SS
15365
15366@kindex maint print symbols
15367@cindex symbol dump
15368@kindex maint print psymbols
15369@cindex partial symbol dump
15370@item maint print symbols @var{filename}
15371@itemx maint print psymbols @var{filename}
15372@itemx maint print msymbols @var{filename}
15373Write a dump of debugging symbol data into the file @var{filename}.
15374These commands are used to debug the @value{GDBN} symbol-reading code. Only
15375symbols with debugging data are included. If you use @samp{maint print
15376symbols}, @value{GDBN} includes all the symbols for which it has already
15377collected full details: that is, @var{filename} reflects symbols for
15378only those files whose symbols @value{GDBN} has read. You can use the
15379command @code{info sources} to find out which files these are. If you
15380use @samp{maint print psymbols} instead, the dump shows information about
15381symbols that @value{GDBN} only knows partially---that is, symbols defined in
15382files that @value{GDBN} has skimmed, but not yet read completely. Finally,
15383@samp{maint print msymbols} dumps just the minimal symbol information
15384required for each object file from which @value{GDBN} has read some symbols.
79a6e687 15385@xref{Files, ,Commands to Specify Files}, for a discussion of how
c906108c 15386@value{GDBN} reads symbols (in the description of @code{symbol-file}).
44ea7b70 15387
5e7b2f39
JB
15388@kindex maint info symtabs
15389@kindex maint info psymtabs
44ea7b70
JB
15390@cindex listing @value{GDBN}'s internal symbol tables
15391@cindex symbol tables, listing @value{GDBN}'s internal
15392@cindex full symbol tables, listing @value{GDBN}'s internal
15393@cindex partial symbol tables, listing @value{GDBN}'s internal
5e7b2f39
JB
15394@item maint info symtabs @r{[} @var{regexp} @r{]}
15395@itemx maint info psymtabs @r{[} @var{regexp} @r{]}
44ea7b70
JB
15396
15397List the @code{struct symtab} or @code{struct partial_symtab}
15398structures whose names match @var{regexp}. If @var{regexp} is not
15399given, list them all. The output includes expressions which you can
15400copy into a @value{GDBN} debugging this one to examine a particular
15401structure in more detail. For example:
15402
15403@smallexample
5e7b2f39 15404(@value{GDBP}) maint info psymtabs dwarf2read
44ea7b70
JB
15405@{ objfile /home/gnu/build/gdb/gdb
15406 ((struct objfile *) 0x82e69d0)
b383017d 15407 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
15408 ((struct partial_symtab *) 0x8474b10)
15409 readin no
15410 fullname (null)
15411 text addresses 0x814d3c8 -- 0x8158074
15412 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
15413 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
15414 dependencies (none)
15415 @}
15416@}
5e7b2f39 15417(@value{GDBP}) maint info symtabs
44ea7b70
JB
15418(@value{GDBP})
15419@end smallexample
15420@noindent
15421We see that there is one partial symbol table whose filename contains
15422the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
15423and we see that @value{GDBN} has not read in any symtabs yet at all.
15424If we set a breakpoint on a function, that will cause @value{GDBN} to
15425read the symtab for the compilation unit containing that function:
15426
15427@smallexample
15428(@value{GDBP}) break dwarf2_psymtab_to_symtab
15429Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
15430line 1574.
5e7b2f39 15431(@value{GDBP}) maint info symtabs
b383017d 15432@{ objfile /home/gnu/build/gdb/gdb
44ea7b70 15433 ((struct objfile *) 0x82e69d0)
b383017d 15434 @{ symtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
15435 ((struct symtab *) 0x86c1f38)
15436 dirname (null)
15437 fullname (null)
15438 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
1b39d5c0 15439 linetable ((struct linetable *) 0x8370fa0)
44ea7b70
JB
15440 debugformat DWARF 2
15441 @}
15442@}
b383017d 15443(@value{GDBP})
44ea7b70 15444@end smallexample
c906108c
SS
15445@end table
15446
44ea7b70 15447
6d2ebf8b 15448@node Altering
c906108c
SS
15449@chapter Altering Execution
15450
15451Once you think you have found an error in your program, you might want to
15452find out for certain whether correcting the apparent error would lead to
15453correct results in the rest of the run. You can find the answer by
15454experiment, using the @value{GDBN} features for altering execution of the
15455program.
15456
15457For example, you can store new values into variables or memory
7a292a7a
SS
15458locations, give your program a signal, restart it at a different
15459address, or even return prematurely from a function.
c906108c
SS
15460
15461@menu
15462* Assignment:: Assignment to variables
15463* Jumping:: Continuing at a different address
c906108c 15464* Signaling:: Giving your program a signal
c906108c
SS
15465* Returning:: Returning from a function
15466* Calling:: Calling your program's functions
15467* Patching:: Patching your program
15468@end menu
15469
6d2ebf8b 15470@node Assignment
79a6e687 15471@section Assignment to Variables
c906108c
SS
15472
15473@cindex assignment
15474@cindex setting variables
15475To alter the value of a variable, evaluate an assignment expression.
15476@xref{Expressions, ,Expressions}. For example,
15477
474c8240 15478@smallexample
c906108c 15479print x=4
474c8240 15480@end smallexample
c906108c
SS
15481
15482@noindent
15483stores the value 4 into the variable @code{x}, and then prints the
5d161b24 15484value of the assignment expression (which is 4).
c906108c
SS
15485@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
15486information on operators in supported languages.
c906108c
SS
15487
15488@kindex set variable
15489@cindex variables, setting
15490If you are not interested in seeing the value of the assignment, use the
15491@code{set} command instead of the @code{print} command. @code{set} is
15492really the same as @code{print} except that the expression's value is
15493not printed and is not put in the value history (@pxref{Value History,
79a6e687 15494,Value History}). The expression is evaluated only for its effects.
c906108c 15495
c906108c
SS
15496If the beginning of the argument string of the @code{set} command
15497appears identical to a @code{set} subcommand, use the @code{set
15498variable} command instead of just @code{set}. This command is identical
15499to @code{set} except for its lack of subcommands. For example, if your
15500program has a variable @code{width}, you get an error if you try to set
15501a new value with just @samp{set width=13}, because @value{GDBN} has the
15502command @code{set width}:
15503
474c8240 15504@smallexample
c906108c
SS
15505(@value{GDBP}) whatis width
15506type = double
15507(@value{GDBP}) p width
15508$4 = 13
15509(@value{GDBP}) set width=47
15510Invalid syntax in expression.
474c8240 15511@end smallexample
c906108c
SS
15512
15513@noindent
15514The invalid expression, of course, is @samp{=47}. In
15515order to actually set the program's variable @code{width}, use
15516
474c8240 15517@smallexample
c906108c 15518(@value{GDBP}) set var width=47
474c8240 15519@end smallexample
53a5351d 15520
c906108c
SS
15521Because the @code{set} command has many subcommands that can conflict
15522with the names of program variables, it is a good idea to use the
15523@code{set variable} command instead of just @code{set}. For example, if
15524your program has a variable @code{g}, you run into problems if you try
15525to set a new value with just @samp{set g=4}, because @value{GDBN} has
15526the command @code{set gnutarget}, abbreviated @code{set g}:
15527
474c8240 15528@smallexample
c906108c
SS
15529@group
15530(@value{GDBP}) whatis g
15531type = double
15532(@value{GDBP}) p g
15533$1 = 1
15534(@value{GDBP}) set g=4
2df3850c 15535(@value{GDBP}) p g
c906108c
SS
15536$2 = 1
15537(@value{GDBP}) r
15538The program being debugged has been started already.
15539Start it from the beginning? (y or n) y
15540Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
15541"/home/smith/cc_progs/a.out": can't open to read symbols:
15542 Invalid bfd target.
c906108c
SS
15543(@value{GDBP}) show g
15544The current BFD target is "=4".
15545@end group
474c8240 15546@end smallexample
c906108c
SS
15547
15548@noindent
15549The program variable @code{g} did not change, and you silently set the
15550@code{gnutarget} to an invalid value. In order to set the variable
15551@code{g}, use
15552
474c8240 15553@smallexample
c906108c 15554(@value{GDBP}) set var g=4
474c8240 15555@end smallexample
c906108c
SS
15556
15557@value{GDBN} allows more implicit conversions in assignments than C; you can
15558freely store an integer value into a pointer variable or vice versa,
15559and you can convert any structure to any other structure that is the
15560same length or shorter.
15561@comment FIXME: how do structs align/pad in these conversions?
15562@comment /doc@cygnus.com 18dec1990
15563
15564To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
15565construct to generate a value of specified type at a specified address
15566(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
15567to memory location @code{0x83040} as an integer (which implies a certain size
15568and representation in memory), and
15569
474c8240 15570@smallexample
c906108c 15571set @{int@}0x83040 = 4
474c8240 15572@end smallexample
c906108c
SS
15573
15574@noindent
15575stores the value 4 into that memory location.
15576
6d2ebf8b 15577@node Jumping
79a6e687 15578@section Continuing at a Different Address
c906108c
SS
15579
15580Ordinarily, when you continue your program, you do so at the place where
15581it stopped, with the @code{continue} command. You can instead continue at
15582an address of your own choosing, with the following commands:
15583
15584@table @code
15585@kindex jump
c1d780c2 15586@kindex j @r{(@code{jump})}
c906108c 15587@item jump @var{linespec}
c1d780c2 15588@itemx j @var{linespec}
2a25a5ba 15589@itemx jump @var{location}
c1d780c2 15590@itemx j @var{location}
2a25a5ba
EZ
15591Resume execution at line @var{linespec} or at address given by
15592@var{location}. Execution stops again immediately if there is a
15593breakpoint there. @xref{Specify Location}, for a description of the
15594different forms of @var{linespec} and @var{location}. It is common
15595practice to use the @code{tbreak} command in conjunction with
15596@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}.
c906108c
SS
15597
15598The @code{jump} command does not change the current stack frame, or
15599the stack pointer, or the contents of any memory location or any
15600register other than the program counter. If line @var{linespec} is in
15601a different function from the one currently executing, the results may
15602be bizarre if the two functions expect different patterns of arguments or
15603of local variables. For this reason, the @code{jump} command requests
15604confirmation if the specified line is not in the function currently
15605executing. However, even bizarre results are predictable if you are
15606well acquainted with the machine-language code of your program.
c906108c
SS
15607@end table
15608
c906108c 15609@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
15610On many systems, you can get much the same effect as the @code{jump}
15611command by storing a new value into the register @code{$pc}. The
15612difference is that this does not start your program running; it only
15613changes the address of where it @emph{will} run when you continue. For
15614example,
c906108c 15615
474c8240 15616@smallexample
c906108c 15617set $pc = 0x485
474c8240 15618@end smallexample
c906108c
SS
15619
15620@noindent
15621makes the next @code{continue} command or stepping command execute at
15622address @code{0x485}, rather than at the address where your program stopped.
79a6e687 15623@xref{Continuing and Stepping, ,Continuing and Stepping}.
c906108c
SS
15624
15625The most common occasion to use the @code{jump} command is to back
15626up---perhaps with more breakpoints set---over a portion of a program
15627that has already executed, in order to examine its execution in more
15628detail.
15629
c906108c 15630@c @group
6d2ebf8b 15631@node Signaling
79a6e687 15632@section Giving your Program a Signal
9c16f35a 15633@cindex deliver a signal to a program
c906108c
SS
15634
15635@table @code
15636@kindex signal
15637@item signal @var{signal}
15638Resume execution where your program stopped, but immediately give it the
15639signal @var{signal}. @var{signal} can be the name or the number of a
15640signal. For example, on many systems @code{signal 2} and @code{signal
15641SIGINT} are both ways of sending an interrupt signal.
15642
15643Alternatively, if @var{signal} is zero, continue execution without
15644giving a signal. This is useful when your program stopped on account of
ae606bee 15645a signal and would ordinarily see the signal when resumed with the
c906108c
SS
15646@code{continue} command; @samp{signal 0} causes it to resume without a
15647signal.
15648
15649@code{signal} does not repeat when you press @key{RET} a second time
15650after executing the command.
15651@end table
15652@c @end group
15653
15654Invoking the @code{signal} command is not the same as invoking the
15655@code{kill} utility from the shell. Sending a signal with @code{kill}
15656causes @value{GDBN} to decide what to do with the signal depending on
15657the signal handling tables (@pxref{Signals}). The @code{signal} command
15658passes the signal directly to your program.
15659
c906108c 15660
6d2ebf8b 15661@node Returning
79a6e687 15662@section Returning from a Function
c906108c
SS
15663
15664@table @code
15665@cindex returning from a function
15666@kindex return
15667@item return
15668@itemx return @var{expression}
15669You can cancel execution of a function call with the @code{return}
15670command. If you give an
15671@var{expression} argument, its value is used as the function's return
15672value.
15673@end table
15674
15675When you use @code{return}, @value{GDBN} discards the selected stack frame
15676(and all frames within it). You can think of this as making the
15677discarded frame return prematurely. If you wish to specify a value to
15678be returned, give that value as the argument to @code{return}.
15679
15680This pops the selected stack frame (@pxref{Selection, ,Selecting a
79a6e687 15681Frame}), and any other frames inside of it, leaving its caller as the
c906108c
SS
15682innermost remaining frame. That frame becomes selected. The
15683specified value is stored in the registers used for returning values
15684of functions.
15685
15686The @code{return} command does not resume execution; it leaves the
15687program stopped in the state that would exist if the function had just
15688returned. In contrast, the @code{finish} command (@pxref{Continuing
79a6e687 15689and Stepping, ,Continuing and Stepping}) resumes execution until the
c906108c
SS
15690selected stack frame returns naturally.
15691
61ff14c6
JK
15692@value{GDBN} needs to know how the @var{expression} argument should be set for
15693the inferior. The concrete registers assignment depends on the OS ABI and the
15694type being returned by the selected stack frame. For example it is common for
15695OS ABI to return floating point values in FPU registers while integer values in
15696CPU registers. Still some ABIs return even floating point values in CPU
15697registers. Larger integer widths (such as @code{long long int}) also have
15698specific placement rules. @value{GDBN} already knows the OS ABI from its
15699current target so it needs to find out also the type being returned to make the
15700assignment into the right register(s).
15701
15702Normally, the selected stack frame has debug info. @value{GDBN} will always
15703use the debug info instead of the implicit type of @var{expression} when the
15704debug info is available. For example, if you type @kbd{return -1}, and the
15705function in the current stack frame is declared to return a @code{long long
15706int}, @value{GDBN} transparently converts the implicit @code{int} value of -1
15707into a @code{long long int}:
15708
15709@smallexample
15710Breakpoint 1, func () at gdb.base/return-nodebug.c:29
1571129 return 31;
15712(@value{GDBP}) return -1
15713Make func return now? (y or n) y
15714#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43
1571543 printf ("result=%lld\n", func ());
15716(@value{GDBP})
15717@end smallexample
15718
15719However, if the selected stack frame does not have a debug info, e.g., if the
15720function was compiled without debug info, @value{GDBN} has to find out the type
15721to return from user. Specifying a different type by mistake may set the value
15722in different inferior registers than the caller code expects. For example,
15723typing @kbd{return -1} with its implicit type @code{int} would set only a part
15724of a @code{long long int} result for a debug info less function (on 32-bit
15725architectures). Therefore the user is required to specify the return type by
15726an appropriate cast explicitly:
15727
15728@smallexample
15729Breakpoint 2, 0x0040050b in func ()
15730(@value{GDBP}) return -1
15731Return value type not available for selected stack frame.
15732Please use an explicit cast of the value to return.
15733(@value{GDBP}) return (long long int) -1
15734Make selected stack frame return now? (y or n) y
15735#0 0x00400526 in main ()
15736(@value{GDBP})
15737@end smallexample
15738
6d2ebf8b 15739@node Calling
79a6e687 15740@section Calling Program Functions
c906108c 15741
f8568604 15742@table @code
c906108c 15743@cindex calling functions
f8568604
EZ
15744@cindex inferior functions, calling
15745@item print @var{expr}
d3e8051b 15746Evaluate the expression @var{expr} and display the resulting value.
f8568604
EZ
15747@var{expr} may include calls to functions in the program being
15748debugged.
15749
c906108c 15750@kindex call
c906108c
SS
15751@item call @var{expr}
15752Evaluate the expression @var{expr} without displaying @code{void}
15753returned values.
c906108c
SS
15754
15755You can use this variant of the @code{print} command if you want to
f8568604
EZ
15756execute a function from your program that does not return anything
15757(a.k.a.@: @dfn{a void function}), but without cluttering the output
15758with @code{void} returned values that @value{GDBN} will otherwise
15759print. If the result is not void, it is printed and saved in the
15760value history.
15761@end table
15762
9c16f35a
EZ
15763It is possible for the function you call via the @code{print} or
15764@code{call} command to generate a signal (e.g., if there's a bug in
15765the function, or if you passed it incorrect arguments). What happens
15766in that case is controlled by the @code{set unwindonsignal} command.
15767
7cd1089b
PM
15768Similarly, with a C@t{++} program it is possible for the function you
15769call via the @code{print} or @code{call} command to generate an
15770exception that is not handled due to the constraints of the dummy
15771frame. In this case, any exception that is raised in the frame, but has
15772an out-of-frame exception handler will not be found. GDB builds a
15773dummy-frame for the inferior function call, and the unwinder cannot
15774seek for exception handlers outside of this dummy-frame. What happens
15775in that case is controlled by the
15776@code{set unwind-on-terminating-exception} command.
15777
9c16f35a
EZ
15778@table @code
15779@item set unwindonsignal
15780@kindex set unwindonsignal
15781@cindex unwind stack in called functions
15782@cindex call dummy stack unwinding
15783Set unwinding of the stack if a signal is received while in a function
15784that @value{GDBN} called in the program being debugged. If set to on,
15785@value{GDBN} unwinds the stack it created for the call and restores
15786the context to what it was before the call. If set to off (the
15787default), @value{GDBN} stops in the frame where the signal was
15788received.
15789
15790@item show unwindonsignal
15791@kindex show unwindonsignal
15792Show the current setting of stack unwinding in the functions called by
15793@value{GDBN}.
7cd1089b
PM
15794
15795@item set unwind-on-terminating-exception
15796@kindex set unwind-on-terminating-exception
15797@cindex unwind stack in called functions with unhandled exceptions
15798@cindex call dummy stack unwinding on unhandled exception.
15799Set unwinding of the stack if a C@t{++} exception is raised, but left
15800unhandled while in a function that @value{GDBN} called in the program being
15801debugged. If set to on (the default), @value{GDBN} unwinds the stack
15802it created for the call and restores the context to what it was before
15803the call. If set to off, @value{GDBN} the exception is delivered to
15804the default C@t{++} exception handler and the inferior terminated.
15805
15806@item show unwind-on-terminating-exception
15807@kindex show unwind-on-terminating-exception
15808Show the current setting of stack unwinding in the functions called by
15809@value{GDBN}.
15810
9c16f35a
EZ
15811@end table
15812
f8568604
EZ
15813@cindex weak alias functions
15814Sometimes, a function you wish to call is actually a @dfn{weak alias}
15815for another function. In such case, @value{GDBN} might not pick up
15816the type information, including the types of the function arguments,
15817which causes @value{GDBN} to call the inferior function incorrectly.
15818As a result, the called function will function erroneously and may
15819even crash. A solution to that is to use the name of the aliased
15820function instead.
c906108c 15821
6d2ebf8b 15822@node Patching
79a6e687 15823@section Patching Programs
7a292a7a 15824
c906108c
SS
15825@cindex patching binaries
15826@cindex writing into executables
c906108c 15827@cindex writing into corefiles
c906108c 15828
7a292a7a
SS
15829By default, @value{GDBN} opens the file containing your program's
15830executable code (or the corefile) read-only. This prevents accidental
15831alterations to machine code; but it also prevents you from intentionally
15832patching your program's binary.
c906108c
SS
15833
15834If you'd like to be able to patch the binary, you can specify that
15835explicitly with the @code{set write} command. For example, you might
15836want to turn on internal debugging flags, or even to make emergency
15837repairs.
15838
15839@table @code
15840@kindex set write
15841@item set write on
15842@itemx set write off
7a292a7a 15843If you specify @samp{set write on}, @value{GDBN} opens executable and
20924a55 15844core files for both reading and writing; if you specify @kbd{set write
c906108c
SS
15845off} (the default), @value{GDBN} opens them read-only.
15846
15847If you have already loaded a file, you must load it again (using the
7a292a7a
SS
15848@code{exec-file} or @code{core-file} command) after changing @code{set
15849write}, for your new setting to take effect.
c906108c
SS
15850
15851@item show write
15852@kindex show write
7a292a7a
SS
15853Display whether executable files and core files are opened for writing
15854as well as reading.
c906108c
SS
15855@end table
15856
6d2ebf8b 15857@node GDB Files
c906108c
SS
15858@chapter @value{GDBN} Files
15859
7a292a7a
SS
15860@value{GDBN} needs to know the file name of the program to be debugged,
15861both in order to read its symbol table and in order to start your
15862program. To debug a core dump of a previous run, you must also tell
15863@value{GDBN} the name of the core dump file.
c906108c
SS
15864
15865@menu
15866* Files:: Commands to specify files
5b5d99cf 15867* Separate Debug Files:: Debugging information in separate files
9291a0cd 15868* Index Files:: Index files speed up GDB
c906108c 15869* Symbol Errors:: Errors reading symbol files
b14b1491 15870* Data Files:: GDB data files
c906108c
SS
15871@end menu
15872
6d2ebf8b 15873@node Files
79a6e687 15874@section Commands to Specify Files
c906108c 15875
7a292a7a 15876@cindex symbol table
c906108c 15877@cindex core dump file
7a292a7a
SS
15878
15879You may want to specify executable and core dump file names. The usual
15880way to do this is at start-up time, using the arguments to
15881@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
15882Out of @value{GDBN}}).
c906108c
SS
15883
15884Occasionally it is necessary to change to a different file during a
397ca115
EZ
15885@value{GDBN} session. Or you may run @value{GDBN} and forget to
15886specify a file you want to use. Or you are debugging a remote target
79a6e687
BW
15887via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver}
15888Program}). In these situations the @value{GDBN} commands to specify
0869d01b 15889new files are useful.
c906108c
SS
15890
15891@table @code
15892@cindex executable file
15893@kindex file
15894@item file @var{filename}
15895Use @var{filename} as the program to be debugged. It is read for its
15896symbols and for the contents of pure memory. It is also the program
15897executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
15898directory and the file is not found in the @value{GDBN} working directory,
15899@value{GDBN} uses the environment variable @code{PATH} as a list of
15900directories to search, just as the shell does when looking for a program
15901to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
15902and your program, using the @code{path} command.
15903
fc8be69e
EZ
15904@cindex unlinked object files
15905@cindex patching object files
15906You can load unlinked object @file{.o} files into @value{GDBN} using
15907the @code{file} command. You will not be able to ``run'' an object
15908file, but you can disassemble functions and inspect variables. Also,
15909if the underlying BFD functionality supports it, you could use
15910@kbd{gdb -write} to patch object files using this technique. Note
15911that @value{GDBN} can neither interpret nor modify relocations in this
15912case, so branches and some initialized variables will appear to go to
15913the wrong place. But this feature is still handy from time to time.
15914
c906108c
SS
15915@item file
15916@code{file} with no argument makes @value{GDBN} discard any information it
15917has on both executable file and the symbol table.
15918
15919@kindex exec-file
15920@item exec-file @r{[} @var{filename} @r{]}
15921Specify that the program to be run (but not the symbol table) is found
15922in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
15923if necessary to locate your program. Omitting @var{filename} means to
15924discard information on the executable file.
15925
15926@kindex symbol-file
15927@item symbol-file @r{[} @var{filename} @r{]}
15928Read symbol table information from file @var{filename}. @code{PATH} is
15929searched when necessary. Use the @code{file} command to get both symbol
15930table and program to run from the same file.
15931
15932@code{symbol-file} with no argument clears out @value{GDBN} information on your
15933program's symbol table.
15934
ae5a43e0
DJ
15935The @code{symbol-file} command causes @value{GDBN} to forget the contents of
15936some breakpoints and auto-display expressions. This is because they may
15937contain pointers to the internal data recording symbols and data types,
15938which are part of the old symbol table data being discarded inside
15939@value{GDBN}.
c906108c
SS
15940
15941@code{symbol-file} does not repeat if you press @key{RET} again after
15942executing it once.
15943
15944When @value{GDBN} is configured for a particular environment, it
15945understands debugging information in whatever format is the standard
15946generated for that environment; you may use either a @sc{gnu} compiler, or
15947other compilers that adhere to the local conventions.
c906108c 15948Best results are usually obtained from @sc{gnu} compilers; for example,
e22ea452 15949using @code{@value{NGCC}} you can generate debugging information for
c906108c 15950optimized code.
c906108c
SS
15951
15952For most kinds of object files, with the exception of old SVR3 systems
15953using COFF, the @code{symbol-file} command does not normally read the
15954symbol table in full right away. Instead, it scans the symbol table
15955quickly to find which source files and which symbols are present. The
15956details are read later, one source file at a time, as they are needed.
15957
15958The purpose of this two-stage reading strategy is to make @value{GDBN}
15959start up faster. For the most part, it is invisible except for
15960occasional pauses while the symbol table details for a particular source
15961file are being read. (The @code{set verbose} command can turn these
15962pauses into messages if desired. @xref{Messages/Warnings, ,Optional
79a6e687 15963Warnings and Messages}.)
c906108c 15964
c906108c
SS
15965We have not implemented the two-stage strategy for COFF yet. When the
15966symbol table is stored in COFF format, @code{symbol-file} reads the
15967symbol table data in full right away. Note that ``stabs-in-COFF''
15968still does the two-stage strategy, since the debug info is actually
15969in stabs format.
15970
15971@kindex readnow
15972@cindex reading symbols immediately
15973@cindex symbols, reading immediately
6ac33a4e
TT
15974@item symbol-file @r{[} -readnow @r{]} @var{filename}
15975@itemx file @r{[} -readnow @r{]} @var{filename}
c906108c
SS
15976You can override the @value{GDBN} two-stage strategy for reading symbol
15977tables by using the @samp{-readnow} option with any of the commands that
15978load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 15979entire symbol table available.
c906108c 15980
c906108c
SS
15981@c FIXME: for now no mention of directories, since this seems to be in
15982@c flux. 13mar1992 status is that in theory GDB would look either in
15983@c current dir or in same dir as myprog; but issues like competing
15984@c GDB's, or clutter in system dirs, mean that in practice right now
15985@c only current dir is used. FFish says maybe a special GDB hierarchy
15986@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
15987@c files.
15988
c906108c 15989@kindex core-file
09d4efe1 15990@item core-file @r{[}@var{filename}@r{]}
4644b6e3 15991@itemx core
c906108c
SS
15992Specify the whereabouts of a core dump file to be used as the ``contents
15993of memory''. Traditionally, core files contain only some parts of the
15994address space of the process that generated them; @value{GDBN} can access the
15995executable file itself for other parts.
15996
15997@code{core-file} with no argument specifies that no core file is
15998to be used.
15999
16000Note that the core file is ignored when your program is actually running
7a292a7a
SS
16001under @value{GDBN}. So, if you have been running your program and you
16002wish to debug a core file instead, you must kill the subprocess in which
16003the program is running. To do this, use the @code{kill} command
79a6e687 16004(@pxref{Kill Process, ,Killing the Child Process}).
c906108c 16005
c906108c
SS
16006@kindex add-symbol-file
16007@cindex dynamic linking
16008@item add-symbol-file @var{filename} @var{address}
a94ab193 16009@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]}
24bdad53 16010@itemx add-symbol-file @var{filename} @var{address} -s @var{section} @var{address} @dots{}
96a2c332
SS
16011The @code{add-symbol-file} command reads additional symbol table
16012information from the file @var{filename}. You would use this command
16013when @var{filename} has been dynamically loaded (by some other means)
16014into the program that is running. @var{address} should be the memory
16015address at which the file has been loaded; @value{GDBN} cannot figure
d167840f 16016this out for itself. You can additionally specify an arbitrary number
24bdad53 16017of @samp{-s @var{section} @var{address}} pairs, to give an explicit
d167840f
EZ
16018section name and base address for that section. You can specify any
16019@var{address} as an expression.
c906108c
SS
16020
16021The symbol table of the file @var{filename} is added to the symbol table
16022originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
16023@code{add-symbol-file} command any number of times; the new symbol data
16024thus read keeps adding to the old. To discard all old symbol data
16025instead, use the @code{symbol-file} command without any arguments.
c906108c 16026
17d9d558
JB
16027@cindex relocatable object files, reading symbols from
16028@cindex object files, relocatable, reading symbols from
16029@cindex reading symbols from relocatable object files
16030@cindex symbols, reading from relocatable object files
16031@cindex @file{.o} files, reading symbols from
16032Although @var{filename} is typically a shared library file, an
16033executable file, or some other object file which has been fully
16034relocated for loading into a process, you can also load symbolic
16035information from relocatable @file{.o} files, as long as:
16036
16037@itemize @bullet
16038@item
16039the file's symbolic information refers only to linker symbols defined in
16040that file, not to symbols defined by other object files,
16041@item
16042every section the file's symbolic information refers to has actually
16043been loaded into the inferior, as it appears in the file, and
16044@item
16045you can determine the address at which every section was loaded, and
16046provide these to the @code{add-symbol-file} command.
16047@end itemize
16048
16049@noindent
16050Some embedded operating systems, like Sun Chorus and VxWorks, can load
16051relocatable files into an already running program; such systems
16052typically make the requirements above easy to meet. However, it's
16053important to recognize that many native systems use complex link
49efadf5 16054procedures (@code{.linkonce} section factoring and C@t{++} constructor table
17d9d558
JB
16055assembly, for example) that make the requirements difficult to meet. In
16056general, one cannot assume that using @code{add-symbol-file} to read a
16057relocatable object file's symbolic information will have the same effect
16058as linking the relocatable object file into the program in the normal
16059way.
16060
c906108c
SS
16061@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
16062
c45da7e6
EZ
16063@kindex add-symbol-file-from-memory
16064@cindex @code{syscall DSO}
16065@cindex load symbols from memory
16066@item add-symbol-file-from-memory @var{address}
16067Load symbols from the given @var{address} in a dynamically loaded
16068object file whose image is mapped directly into the inferior's memory.
16069For example, the Linux kernel maps a @code{syscall DSO} into each
16070process's address space; this DSO provides kernel-specific code for
16071some system calls. The argument can be any expression whose
16072evaluation yields the address of the file's shared object file header.
16073For this command to work, you must have used @code{symbol-file} or
16074@code{exec-file} commands in advance.
16075
09d4efe1
EZ
16076@kindex add-shared-symbol-files
16077@kindex assf
16078@item add-shared-symbol-files @var{library-file}
16079@itemx assf @var{library-file}
16080The @code{add-shared-symbol-files} command can currently be used only
16081in the Cygwin build of @value{GDBN} on MS-Windows OS, where it is an
16082alias for the @code{dll-symbols} command (@pxref{Cygwin Native}).
16083@value{GDBN} automatically looks for shared libraries, however if
16084@value{GDBN} does not find yours, you can invoke
16085@code{add-shared-symbol-files}. It takes one argument: the shared
16086library's file name. @code{assf} is a shorthand alias for
16087@code{add-shared-symbol-files}.
c906108c 16088
c906108c 16089@kindex section
09d4efe1
EZ
16090@item section @var{section} @var{addr}
16091The @code{section} command changes the base address of the named
16092@var{section} of the exec file to @var{addr}. This can be used if the
16093exec file does not contain section addresses, (such as in the
16094@code{a.out} format), or when the addresses specified in the file
16095itself are wrong. Each section must be changed separately. The
16096@code{info files} command, described below, lists all the sections and
16097their addresses.
c906108c
SS
16098
16099@kindex info files
16100@kindex info target
16101@item info files
16102@itemx info target
7a292a7a
SS
16103@code{info files} and @code{info target} are synonymous; both print the
16104current target (@pxref{Targets, ,Specifying a Debugging Target}),
16105including the names of the executable and core dump files currently in
16106use by @value{GDBN}, and the files from which symbols were loaded. The
16107command @code{help target} lists all possible targets rather than
16108current ones.
16109
fe95c787
MS
16110@kindex maint info sections
16111@item maint info sections
16112Another command that can give you extra information about program sections
16113is @code{maint info sections}. In addition to the section information
16114displayed by @code{info files}, this command displays the flags and file
16115offset of each section in the executable and core dump files. In addition,
16116@code{maint info sections} provides the following command options (which
16117may be arbitrarily combined):
16118
16119@table @code
16120@item ALLOBJ
16121Display sections for all loaded object files, including shared libraries.
16122@item @var{sections}
6600abed 16123Display info only for named @var{sections}.
fe95c787
MS
16124@item @var{section-flags}
16125Display info only for sections for which @var{section-flags} are true.
16126The section flags that @value{GDBN} currently knows about are:
16127@table @code
16128@item ALLOC
16129Section will have space allocated in the process when loaded.
16130Set for all sections except those containing debug information.
16131@item LOAD
16132Section will be loaded from the file into the child process memory.
16133Set for pre-initialized code and data, clear for @code{.bss} sections.
16134@item RELOC
16135Section needs to be relocated before loading.
16136@item READONLY
16137Section cannot be modified by the child process.
16138@item CODE
16139Section contains executable code only.
6600abed 16140@item DATA
fe95c787
MS
16141Section contains data only (no executable code).
16142@item ROM
16143Section will reside in ROM.
16144@item CONSTRUCTOR
16145Section contains data for constructor/destructor lists.
16146@item HAS_CONTENTS
16147Section is not empty.
16148@item NEVER_LOAD
16149An instruction to the linker to not output the section.
16150@item COFF_SHARED_LIBRARY
16151A notification to the linker that the section contains
16152COFF shared library information.
16153@item IS_COMMON
16154Section contains common symbols.
16155@end table
16156@end table
6763aef9 16157@kindex set trust-readonly-sections
9c16f35a 16158@cindex read-only sections
6763aef9
MS
16159@item set trust-readonly-sections on
16160Tell @value{GDBN} that readonly sections in your object file
6ca652b0 16161really are read-only (i.e.@: that their contents will not change).
6763aef9
MS
16162In that case, @value{GDBN} can fetch values from these sections
16163out of the object file, rather than from the target program.
16164For some targets (notably embedded ones), this can be a significant
16165enhancement to debugging performance.
16166
16167The default is off.
16168
16169@item set trust-readonly-sections off
15110bc3 16170Tell @value{GDBN} not to trust readonly sections. This means that
6763aef9
MS
16171the contents of the section might change while the program is running,
16172and must therefore be fetched from the target when needed.
9c16f35a
EZ
16173
16174@item show trust-readonly-sections
16175Show the current setting of trusting readonly sections.
c906108c
SS
16176@end table
16177
16178All file-specifying commands allow both absolute and relative file names
16179as arguments. @value{GDBN} always converts the file name to an absolute file
16180name and remembers it that way.
16181
c906108c 16182@cindex shared libraries
9cceb671
DJ
16183@anchor{Shared Libraries}
16184@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix,
9c16f35a 16185and IBM RS/6000 AIX shared libraries.
53a5351d 16186
9cceb671
DJ
16187On MS-Windows @value{GDBN} must be linked with the Expat library to support
16188shared libraries. @xref{Expat}.
16189
c906108c
SS
16190@value{GDBN} automatically loads symbol definitions from shared libraries
16191when you use the @code{run} command, or when you examine a core file.
16192(Before you issue the @code{run} command, @value{GDBN} does not understand
16193references to a function in a shared library, however---unless you are
16194debugging a core file).
53a5351d
JM
16195
16196On HP-UX, if the program loads a library explicitly, @value{GDBN}
16197automatically loads the symbols at the time of the @code{shl_load} call.
16198
c906108c
SS
16199@c FIXME: some @value{GDBN} release may permit some refs to undef
16200@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
16201@c FIXME...lib; check this from time to time when updating manual
16202
b7209cb4
FF
16203There are times, however, when you may wish to not automatically load
16204symbol definitions from shared libraries, such as when they are
16205particularly large or there are many of them.
16206
16207To control the automatic loading of shared library symbols, use the
16208commands:
16209
16210@table @code
16211@kindex set auto-solib-add
16212@item set auto-solib-add @var{mode}
16213If @var{mode} is @code{on}, symbols from all shared object libraries
16214will be loaded automatically when the inferior begins execution, you
16215attach to an independently started inferior, or when the dynamic linker
16216informs @value{GDBN} that a new library has been loaded. If @var{mode}
16217is @code{off}, symbols must be loaded manually, using the
16218@code{sharedlibrary} command. The default value is @code{on}.
16219
dcaf7c2c
EZ
16220@cindex memory used for symbol tables
16221If your program uses lots of shared libraries with debug info that
16222takes large amounts of memory, you can decrease the @value{GDBN}
16223memory footprint by preventing it from automatically loading the
16224symbols from shared libraries. To that end, type @kbd{set
16225auto-solib-add off} before running the inferior, then load each
16226library whose debug symbols you do need with @kbd{sharedlibrary
d3e8051b 16227@var{regexp}}, where @var{regexp} is a regular expression that matches
dcaf7c2c
EZ
16228the libraries whose symbols you want to be loaded.
16229
b7209cb4
FF
16230@kindex show auto-solib-add
16231@item show auto-solib-add
16232Display the current autoloading mode.
16233@end table
16234
c45da7e6 16235@cindex load shared library
b7209cb4
FF
16236To explicitly load shared library symbols, use the @code{sharedlibrary}
16237command:
16238
c906108c
SS
16239@table @code
16240@kindex info sharedlibrary
16241@kindex info share
55333a84
DE
16242@item info share @var{regex}
16243@itemx info sharedlibrary @var{regex}
16244Print the names of the shared libraries which are currently loaded
16245that match @var{regex}. If @var{regex} is omitted then print
16246all shared libraries that are loaded.
c906108c
SS
16247
16248@kindex sharedlibrary
16249@kindex share
16250@item sharedlibrary @var{regex}
16251@itemx share @var{regex}
c906108c
SS
16252Load shared object library symbols for files matching a
16253Unix regular expression.
16254As with files loaded automatically, it only loads shared libraries
16255required by your program for a core file or after typing @code{run}. If
16256@var{regex} is omitted all shared libraries required by your program are
16257loaded.
c45da7e6
EZ
16258
16259@item nosharedlibrary
16260@kindex nosharedlibrary
16261@cindex unload symbols from shared libraries
16262Unload all shared object library symbols. This discards all symbols
16263that have been loaded from all shared libraries. Symbols from shared
16264libraries that were loaded by explicit user requests are not
16265discarded.
c906108c
SS
16266@end table
16267
721c2651 16268Sometimes you may wish that @value{GDBN} stops and gives you control
edcc5120
TT
16269when any of shared library events happen. The best way to do this is
16270to use @code{catch load} and @code{catch unload} (@pxref{Set
16271Catchpoints}).
16272
16273@value{GDBN} also supports the the @code{set stop-on-solib-events}
16274command for this. This command exists for historical reasons. It is
16275less useful than setting a catchpoint, because it does not allow for
16276conditions or commands as a catchpoint does.
721c2651
EZ
16277
16278@table @code
16279@item set stop-on-solib-events
16280@kindex set stop-on-solib-events
16281This command controls whether @value{GDBN} should give you control
16282when the dynamic linker notifies it about some shared library event.
16283The most common event of interest is loading or unloading of a new
16284shared library.
16285
16286@item show stop-on-solib-events
16287@kindex show stop-on-solib-events
16288Show whether @value{GDBN} stops and gives you control when shared
16289library events happen.
16290@end table
16291
f5ebfba0 16292Shared libraries are also supported in many cross or remote debugging
f1838a98
UW
16293configurations. @value{GDBN} needs to have access to the target's libraries;
16294this can be accomplished either by providing copies of the libraries
16295on the host system, or by asking @value{GDBN} to automatically retrieve the
16296libraries from the target. If copies of the target libraries are
16297provided, they need to be the same as the target libraries, although the
f5ebfba0
DJ
16298copies on the target can be stripped as long as the copies on the host are
16299not.
16300
59b7b46f
EZ
16301@cindex where to look for shared libraries
16302For remote debugging, you need to tell @value{GDBN} where the target
16303libraries are, so that it can load the correct copies---otherwise, it
16304may try to load the host's libraries. @value{GDBN} has two variables
16305to specify the search directories for target libraries.
f5ebfba0
DJ
16306
16307@table @code
59b7b46f 16308@cindex prefix for shared library file names
f822c95b 16309@cindex system root, alternate
f5ebfba0 16310@kindex set solib-absolute-prefix
f822c95b
DJ
16311@kindex set sysroot
16312@item set sysroot @var{path}
16313Use @var{path} as the system root for the program being debugged. Any
16314absolute shared library paths will be prefixed with @var{path}; many
16315runtime loaders store the absolute paths to the shared library in the
16316target program's memory. If you use @code{set sysroot} to find shared
16317libraries, they need to be laid out in the same way that they are on
16318the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy
16319under @var{path}.
16320
f1838a98
UW
16321If @var{path} starts with the sequence @file{remote:}, @value{GDBN} will
16322retrieve the target libraries from the remote system. This is only
16323supported when using a remote target that supports the @code{remote get}
16324command (@pxref{File Transfer,,Sending files to a remote system}).
16325The part of @var{path} following the initial @file{remote:}
16326(if present) is used as system root prefix on the remote file system.
16327@footnote{If you want to specify a local system root using a directory
16328that happens to be named @file{remote:}, you need to use some equivalent
16329variant of the name like @file{./remote:}.}
16330
ab38a727
PA
16331For targets with an MS-DOS based filesystem, such as MS-Windows and
16332SymbianOS, @value{GDBN} tries prefixing a few variants of the target
16333absolute file name with @var{path}. But first, on Unix hosts,
16334@value{GDBN} converts all backslash directory separators into forward
16335slashes, because the backslash is not a directory separator on Unix:
16336
16337@smallexample
16338 c:\foo\bar.dll @result{} c:/foo/bar.dll
16339@end smallexample
16340
16341Then, @value{GDBN} attempts prefixing the target file name with
16342@var{path}, and looks for the resulting file name in the host file
16343system:
16344
16345@smallexample
16346 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll
16347@end smallexample
16348
16349If that does not find the shared library, @value{GDBN} tries removing
16350the @samp{:} character from the drive spec, both for convenience, and,
16351for the case of the host file system not supporting file names with
16352colons:
16353
16354@smallexample
16355 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll
16356@end smallexample
16357
16358This makes it possible to have a system root that mirrors a target
16359with more than one drive. E.g., you may want to setup your local
16360copies of the target system shared libraries like so (note @samp{c} vs
16361@samp{z}):
16362
16363@smallexample
16364 @file{/path/to/sysroot/c/sys/bin/foo.dll}
16365 @file{/path/to/sysroot/c/sys/bin/bar.dll}
16366 @file{/path/to/sysroot/z/sys/bin/bar.dll}
16367@end smallexample
16368
16369@noindent
16370and point the system root at @file{/path/to/sysroot}, so that
16371@value{GDBN} can find the correct copies of both
16372@file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}.
16373
16374If that still does not find the shared library, @value{GDBN} tries
16375removing the whole drive spec from the target file name:
16376
16377@smallexample
16378 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll
16379@end smallexample
16380
16381This last lookup makes it possible to not care about the drive name,
16382if you don't want or need to.
16383
f822c95b
DJ
16384The @code{set solib-absolute-prefix} command is an alias for @code{set
16385sysroot}.
16386
16387@cindex default system root
59b7b46f 16388@cindex @samp{--with-sysroot}
f822c95b
DJ
16389You can set the default system root by using the configure-time
16390@samp{--with-sysroot} option. If the system root is inside
16391@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
16392@samp{--exec-prefix}), then the default system root will be updated
16393automatically if the installed @value{GDBN} is moved to a new
16394location.
16395
16396@kindex show sysroot
16397@item show sysroot
f5ebfba0
DJ
16398Display the current shared library prefix.
16399
16400@kindex set solib-search-path
16401@item set solib-search-path @var{path}
f822c95b
DJ
16402If this variable is set, @var{path} is a colon-separated list of
16403directories to search for shared libraries. @samp{solib-search-path}
16404is used after @samp{sysroot} fails to locate the library, or if the
16405path to the library is relative instead of absolute. If you want to
16406use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set
d3e8051b 16407@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from
f822c95b 16408finding your host's libraries. @samp{sysroot} is preferred; setting
d3e8051b 16409it to a nonexistent directory may interfere with automatic loading
f822c95b 16410of shared library symbols.
f5ebfba0
DJ
16411
16412@kindex show solib-search-path
16413@item show solib-search-path
16414Display the current shared library search path.
ab38a727
PA
16415
16416@cindex DOS file-name semantics of file names.
16417@kindex set target-file-system-kind (unix|dos-based|auto)
16418@kindex show target-file-system-kind
16419@item set target-file-system-kind @var{kind}
16420Set assumed file system kind for target reported file names.
16421
16422Shared library file names as reported by the target system may not
16423make sense as is on the system @value{GDBN} is running on. For
16424example, when remote debugging a target that has MS-DOS based file
16425system semantics, from a Unix host, the target may be reporting to
16426@value{GDBN} a list of loaded shared libraries with file names such as
16427@file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of
16428drive letters, so the @samp{c:\} prefix is not normally understood as
16429indicating an absolute file name, and neither is the backslash
16430normally considered a directory separator character. In that case,
16431the native file system would interpret this whole absolute file name
16432as a relative file name with no directory components. This would make
16433it impossible to point @value{GDBN} at a copy of the remote target's
16434shared libraries on the host using @code{set sysroot}, and impractical
16435with @code{set solib-search-path}. Setting
16436@code{target-file-system-kind} to @code{dos-based} tells @value{GDBN}
16437to interpret such file names similarly to how the target would, and to
16438map them to file names valid on @value{GDBN}'s native file system
16439semantics. The value of @var{kind} can be @code{"auto"}, in addition
16440to one of the supported file system kinds. In that case, @value{GDBN}
16441tries to determine the appropriate file system variant based on the
16442current target's operating system (@pxref{ABI, ,Configuring the
16443Current ABI}). The supported file system settings are:
16444
16445@table @code
16446@item unix
16447Instruct @value{GDBN} to assume the target file system is of Unix
16448kind. Only file names starting the forward slash (@samp{/}) character
16449are considered absolute, and the directory separator character is also
16450the forward slash.
16451
16452@item dos-based
16453Instruct @value{GDBN} to assume the target file system is DOS based.
16454File names starting with either a forward slash, or a drive letter
16455followed by a colon (e.g., @samp{c:}), are considered absolute, and
16456both the slash (@samp{/}) and the backslash (@samp{\\}) characters are
16457considered directory separators.
16458
16459@item auto
16460Instruct @value{GDBN} to use the file system kind associated with the
16461target operating system (@pxref{ABI, ,Configuring the Current ABI}).
16462This is the default.
16463@end table
f5ebfba0
DJ
16464@end table
16465
c011a4f4
DE
16466@cindex file name canonicalization
16467@cindex base name differences
16468When processing file names provided by the user, @value{GDBN}
16469frequently needs to compare them to the file names recorded in the
16470program's debug info. Normally, @value{GDBN} compares just the
16471@dfn{base names} of the files as strings, which is reasonably fast
16472even for very large programs. (The base name of a file is the last
16473portion of its name, after stripping all the leading directories.)
16474This shortcut in comparison is based upon the assumption that files
16475cannot have more than one base name. This is usually true, but
16476references to files that use symlinks or similar filesystem
16477facilities violate that assumption. If your program records files
16478using such facilities, or if you provide file names to @value{GDBN}
16479using symlinks etc., you can set @code{basenames-may-differ} to
16480@code{true} to instruct @value{GDBN} to completely canonicalize each
16481pair of file names it needs to compare. This will make file-name
16482comparisons accurate, but at a price of a significant slowdown.
16483
16484@table @code
16485@item set basenames-may-differ
16486@kindex set basenames-may-differ
16487Set whether a source file may have multiple base names.
16488
16489@item show basenames-may-differ
16490@kindex show basenames-may-differ
16491Show whether a source file may have multiple base names.
16492@end table
5b5d99cf
JB
16493
16494@node Separate Debug Files
16495@section Debugging Information in Separate Files
16496@cindex separate debugging information files
16497@cindex debugging information in separate files
16498@cindex @file{.debug} subdirectories
16499@cindex debugging information directory, global
f307c045 16500@cindex global debugging information directories
c7e83d54
EZ
16501@cindex build ID, and separate debugging files
16502@cindex @file{.build-id} directory
5b5d99cf
JB
16503
16504@value{GDBN} allows you to put a program's debugging information in a
16505file separate from the executable itself, in a way that allows
16506@value{GDBN} to find and load the debugging information automatically.
c7e83d54
EZ
16507Since debugging information can be very large---sometimes larger
16508than the executable code itself---some systems distribute debugging
5b5d99cf
JB
16509information for their executables in separate files, which users can
16510install only when they need to debug a problem.
16511
c7e83d54
EZ
16512@value{GDBN} supports two ways of specifying the separate debug info
16513file:
5b5d99cf
JB
16514
16515@itemize @bullet
16516@item
c7e83d54
EZ
16517The executable contains a @dfn{debug link} that specifies the name of
16518the separate debug info file. The separate debug file's name is
16519usually @file{@var{executable}.debug}, where @var{executable} is the
16520name of the corresponding executable file without leading directories
16521(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the
99e008fe
EZ
16522debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC)
16523checksum for the debug file, which @value{GDBN} uses to validate that
16524the executable and the debug file came from the same build.
c7e83d54
EZ
16525
16526@item
7e27a47a 16527The executable contains a @dfn{build ID}, a unique bit string that is
c7e83d54 16528also present in the corresponding debug info file. (This is supported
7e27a47a
EZ
16529only on some operating systems, notably those which use the ELF format
16530for binary files and the @sc{gnu} Binutils.) For more details about
16531this feature, see the description of the @option{--build-id}
16532command-line option in @ref{Options, , Command Line Options, ld.info,
16533The GNU Linker}. The debug info file's name is not specified
16534explicitly by the build ID, but can be computed from the build ID, see
16535below.
d3750b24
JK
16536@end itemize
16537
c7e83d54
EZ
16538Depending on the way the debug info file is specified, @value{GDBN}
16539uses two different methods of looking for the debug file:
d3750b24
JK
16540
16541@itemize @bullet
16542@item
c7e83d54
EZ
16543For the ``debug link'' method, @value{GDBN} looks up the named file in
16544the directory of the executable file, then in a subdirectory of that
f307c045
JK
16545directory named @file{.debug}, and finally under each one of the global debug
16546directories, in a subdirectory whose name is identical to the leading
c7e83d54
EZ
16547directories of the executable's absolute file name.
16548
16549@item
83f83d7f 16550For the ``build ID'' method, @value{GDBN} looks in the
f307c045
JK
16551@file{.build-id} subdirectory of each one of the global debug directories for
16552a file named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the
7e27a47a
EZ
16553first 2 hex characters of the build ID bit string, and @var{nnnnnnnn}
16554are the rest of the bit string. (Real build ID strings are 32 or more
16555hex characters, not 10.)
c7e83d54
EZ
16556@end itemize
16557
16558So, for example, suppose you ask @value{GDBN} to debug
7e27a47a
EZ
16559@file{/usr/bin/ls}, which has a debug link that specifies the
16560file @file{ls.debug}, and a build ID whose value in hex is
f307c045 16561@code{abcdef1234}. If the list of the global debug directories includes
c7e83d54
EZ
16562@file{/usr/lib/debug}, then @value{GDBN} will look for the following
16563debug information files, in the indicated order:
16564
16565@itemize @minus
16566@item
16567@file{/usr/lib/debug/.build-id/ab/cdef1234.debug}
d3750b24 16568@item
c7e83d54 16569@file{/usr/bin/ls.debug}
5b5d99cf 16570@item
c7e83d54 16571@file{/usr/bin/.debug/ls.debug}
5b5d99cf 16572@item
c7e83d54 16573@file{/usr/lib/debug/usr/bin/ls.debug}.
5b5d99cf 16574@end itemize
5b5d99cf 16575
1564a261
JK
16576@anchor{debug-file-directory}
16577Global debugging info directories default to what is set by @value{GDBN}
16578configure option @option{--with-separate-debug-dir}. During @value{GDBN} run
16579you can also set the global debugging info directories, and view the list
16580@value{GDBN} is currently using.
5b5d99cf
JB
16581
16582@table @code
16583
16584@kindex set debug-file-directory
24ddea62
JK
16585@item set debug-file-directory @var{directories}
16586Set the directories which @value{GDBN} searches for separate debugging
d9242c17
JK
16587information files to @var{directory}. Multiple path components can be set
16588concatenating them by a path separator.
5b5d99cf
JB
16589
16590@kindex show debug-file-directory
16591@item show debug-file-directory
24ddea62 16592Show the directories @value{GDBN} searches for separate debugging
5b5d99cf
JB
16593information files.
16594
16595@end table
16596
16597@cindex @code{.gnu_debuglink} sections
c7e83d54 16598@cindex debug link sections
5b5d99cf
JB
16599A debug link is a special section of the executable file named
16600@code{.gnu_debuglink}. The section must contain:
16601
16602@itemize
16603@item
16604A filename, with any leading directory components removed, followed by
16605a zero byte,
16606@item
16607zero to three bytes of padding, as needed to reach the next four-byte
16608boundary within the section, and
16609@item
16610a four-byte CRC checksum, stored in the same endianness used for the
16611executable file itself. The checksum is computed on the debugging
16612information file's full contents by the function given below, passing
16613zero as the @var{crc} argument.
16614@end itemize
16615
16616Any executable file format can carry a debug link, as long as it can
16617contain a section named @code{.gnu_debuglink} with the contents
16618described above.
16619
d3750b24 16620@cindex @code{.note.gnu.build-id} sections
c7e83d54 16621@cindex build ID sections
7e27a47a
EZ
16622The build ID is a special section in the executable file (and in other
16623ELF binary files that @value{GDBN} may consider). This section is
16624often named @code{.note.gnu.build-id}, but that name is not mandatory.
16625It contains unique identification for the built files---the ID remains
16626the same across multiple builds of the same build tree. The default
16627algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
16628content for the build ID string. The same section with an identical
16629value is present in the original built binary with symbols, in its
16630stripped variant, and in the separate debugging information file.
d3750b24 16631
5b5d99cf
JB
16632The debugging information file itself should be an ordinary
16633executable, containing a full set of linker symbols, sections, and
16634debugging information. The sections of the debugging information file
c7e83d54
EZ
16635should have the same names, addresses, and sizes as the original file,
16636but they need not contain any data---much like a @code{.bss} section
5b5d99cf
JB
16637in an ordinary executable.
16638
7e27a47a 16639The @sc{gnu} binary utilities (Binutils) package includes the
c7e83d54
EZ
16640@samp{objcopy} utility that can produce
16641the separated executable / debugging information file pairs using the
16642following commands:
16643
16644@smallexample
16645@kbd{objcopy --only-keep-debug foo foo.debug}
16646@kbd{strip -g foo}
c7e83d54
EZ
16647@end smallexample
16648
16649@noindent
16650These commands remove the debugging
83f83d7f
JK
16651information from the executable file @file{foo} and place it in the file
16652@file{foo.debug}. You can use the first, second or both methods to link the
16653two files:
16654
16655@itemize @bullet
16656@item
16657The debug link method needs the following additional command to also leave
16658behind a debug link in @file{foo}:
16659
16660@smallexample
16661@kbd{objcopy --add-gnu-debuglink=foo.debug foo}
16662@end smallexample
16663
16664Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains
d3750b24 16665a version of the @code{strip} command such that the command @kbd{strip foo -f
83f83d7f
JK
16666foo.debug} has the same functionality as the two @code{objcopy} commands and
16667the @code{ln -s} command above, together.
16668
16669@item
16670Build ID gets embedded into the main executable using @code{ld --build-id} or
16671the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus
16672compatibility fixes for debug files separation are present in @sc{gnu} binary
7e27a47a 16673utilities (Binutils) package since version 2.18.
83f83d7f
JK
16674@end itemize
16675
16676@noindent
d3750b24 16677
99e008fe
EZ
16678@cindex CRC algorithm definition
16679The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in
16680IEEE 802.3 using the polynomial:
16681
16682@c TexInfo requires naked braces for multi-digit exponents for Tex
16683@c output, but this causes HTML output to barf. HTML has to be set using
16684@c raw commands. So we end up having to specify this equation in 2
16685@c different ways!
16686@ifhtml
16687@display
16688@html
16689 <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>
16690 + <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
16691@end html
16692@end display
16693@end ifhtml
16694@ifnothtml
16695@display
16696 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}}
16697 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1}
16698@end display
16699@end ifnothtml
16700
16701The function is computed byte at a time, taking the least
16702significant bit of each byte first. The initial pattern
16703@code{0xffffffff} is used, to ensure leading zeros affect the CRC and
16704the final result is inverted to ensure trailing zeros also affect the
16705CRC.
16706
16707@emph{Note:} This is the same CRC polynomial as used in handling the
16708@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{Remote Protocol,
16709, @value{GDBN} Remote Serial Protocol}). However in the
16710case of the Remote Serial Protocol, the CRC is computed @emph{most}
16711significant bit first, and the result is not inverted, so trailing
16712zeros have no effect on the CRC value.
16713
16714To complete the description, we show below the code of the function
16715which produces the CRC used in @code{.gnu_debuglink}. Inverting the
16716initially supplied @code{crc} argument means that an initial call to
16717this function passing in zero will start computing the CRC using
16718@code{0xffffffff}.
5b5d99cf 16719
4644b6e3 16720@kindex gnu_debuglink_crc32
5b5d99cf
JB
16721@smallexample
16722unsigned long
16723gnu_debuglink_crc32 (unsigned long crc,
16724 unsigned char *buf, size_t len)
16725@{
16726 static const unsigned long crc32_table[256] =
16727 @{
16728 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
16729 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
16730 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
16731 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
16732 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
16733 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
16734 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
16735 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
16736 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
16737 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
16738 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
16739 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
16740 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
16741 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
16742 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
16743 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
16744 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
16745 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
16746 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
16747 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
16748 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
16749 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
16750 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
16751 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
16752 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
16753 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
16754 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
16755 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
16756 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
16757 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
16758 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
16759 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
16760 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
16761 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
16762 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
16763 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
16764 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
16765 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
16766 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
16767 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
16768 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
16769 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
16770 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
16771 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
16772 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
16773 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
16774 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
16775 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
16776 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
16777 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
16778 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
16779 0x2d02ef8d
16780 @};
16781 unsigned char *end;
16782
16783 crc = ~crc & 0xffffffff;
16784 for (end = buf + len; buf < end; ++buf)
16785 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
e7a3abfc 16786 return ~crc & 0xffffffff;
5b5d99cf
JB
16787@}
16788@end smallexample
16789
c7e83d54
EZ
16790@noindent
16791This computation does not apply to the ``build ID'' method.
16792
5b5d99cf 16793
9291a0cd
TT
16794@node Index Files
16795@section Index Files Speed Up @value{GDBN}
16796@cindex index files
16797@cindex @samp{.gdb_index} section
16798
16799When @value{GDBN} finds a symbol file, it scans the symbols in the
16800file in order to construct an internal symbol table. This lets most
16801@value{GDBN} operations work quickly---at the cost of a delay early
16802on. For large programs, this delay can be quite lengthy, so
16803@value{GDBN} provides a way to build an index, which speeds up
16804startup.
16805
16806The index is stored as a section in the symbol file. @value{GDBN} can
16807write the index to a file, then you can put it into the symbol file
16808using @command{objcopy}.
16809
16810To create an index file, use the @code{save gdb-index} command:
16811
16812@table @code
16813@item save gdb-index @var{directory}
16814@kindex save gdb-index
16815Create an index file for each symbol file currently known by
16816@value{GDBN}. Each file is named after its corresponding symbol file,
16817with @samp{.gdb-index} appended, and is written into the given
16818@var{directory}.
16819@end table
16820
16821Once you have created an index file you can merge it into your symbol
16822file, here named @file{symfile}, using @command{objcopy}:
16823
16824@smallexample
16825$ objcopy --add-section .gdb_index=symfile.gdb-index \
16826 --set-section-flags .gdb_index=readonly symfile symfile
16827@end smallexample
16828
e615022a
DE
16829@value{GDBN} will normally ignore older versions of @file{.gdb_index}
16830sections that have been deprecated. Usually they are deprecated because
16831they are missing a new feature or have performance issues.
16832To tell @value{GDBN} to use a deprecated index section anyway
16833specify @code{set use-deprecated-index-sections on}.
16834The default is @code{off}.
16835This can speed up startup, but may result in some functionality being lost.
16836@xref{Index Section Format}.
16837
16838@emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on}
16839must be done before gdb reads the file. The following will not work:
16840
16841@smallexample
16842$ gdb -ex "set use-deprecated-index-sections on" <program>
16843@end smallexample
16844
16845Instead you must do, for example,
16846
16847@smallexample
16848$ gdb -iex "set use-deprecated-index-sections on" <program>
16849@end smallexample
16850
9291a0cd
TT
16851There are currently some limitation on indices. They only work when
16852for DWARF debugging information, not stabs. And, they do not
16853currently work for programs using Ada.
16854
6d2ebf8b 16855@node Symbol Errors
79a6e687 16856@section Errors Reading Symbol Files
c906108c
SS
16857
16858While reading a symbol file, @value{GDBN} occasionally encounters problems,
16859such as symbol types it does not recognize, or known bugs in compiler
16860output. By default, @value{GDBN} does not notify you of such problems, since
16861they are relatively common and primarily of interest to people
16862debugging compilers. If you are interested in seeing information
16863about ill-constructed symbol tables, you can either ask @value{GDBN} to print
16864only one message about each such type of problem, no matter how many
16865times the problem occurs; or you can ask @value{GDBN} to print more messages,
16866to see how many times the problems occur, with the @code{set
79a6e687
BW
16867complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and
16868Messages}).
c906108c
SS
16869
16870The messages currently printed, and their meanings, include:
16871
16872@table @code
16873@item inner block not inside outer block in @var{symbol}
16874
16875The symbol information shows where symbol scopes begin and end
16876(such as at the start of a function or a block of statements). This
16877error indicates that an inner scope block is not fully contained
16878in its outer scope blocks.
16879
16880@value{GDBN} circumvents the problem by treating the inner block as if it had
16881the same scope as the outer block. In the error message, @var{symbol}
16882may be shown as ``@code{(don't know)}'' if the outer block is not a
16883function.
16884
16885@item block at @var{address} out of order
16886
16887The symbol information for symbol scope blocks should occur in
16888order of increasing addresses. This error indicates that it does not
16889do so.
16890
16891@value{GDBN} does not circumvent this problem, and has trouble
16892locating symbols in the source file whose symbols it is reading. (You
16893can often determine what source file is affected by specifying
79a6e687
BW
16894@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and
16895Messages}.)
c906108c
SS
16896
16897@item bad block start address patched
16898
16899The symbol information for a symbol scope block has a start address
16900smaller than the address of the preceding source line. This is known
16901to occur in the SunOS 4.1.1 (and earlier) C compiler.
16902
16903@value{GDBN} circumvents the problem by treating the symbol scope block as
16904starting on the previous source line.
16905
16906@item bad string table offset in symbol @var{n}
16907
16908@cindex foo
16909Symbol number @var{n} contains a pointer into the string table which is
16910larger than the size of the string table.
16911
16912@value{GDBN} circumvents the problem by considering the symbol to have the
16913name @code{foo}, which may cause other problems if many symbols end up
16914with this name.
16915
16916@item unknown symbol type @code{0x@var{nn}}
16917
7a292a7a
SS
16918The symbol information contains new data types that @value{GDBN} does
16919not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 16920uncomprehended information, in hexadecimal.
c906108c 16921
7a292a7a
SS
16922@value{GDBN} circumvents the error by ignoring this symbol information.
16923This usually allows you to debug your program, though certain symbols
c906108c 16924are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
16925debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
16926on @code{complain}, then go up to the function @code{read_dbx_symtab}
16927and examine @code{*bufp} to see the symbol.
c906108c
SS
16928
16929@item stub type has NULL name
c906108c 16930
7a292a7a 16931@value{GDBN} could not find the full definition for a struct or class.
c906108c 16932
7a292a7a 16933@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 16934The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
16935information that recent versions of the compiler should have output for
16936it.
c906108c
SS
16937
16938@item info mismatch between compiler and debugger
16939
16940@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 16941
c906108c
SS
16942@end table
16943
b14b1491
TT
16944@node Data Files
16945@section GDB Data Files
16946
16947@cindex prefix for data files
16948@value{GDBN} will sometimes read an auxiliary data file. These files
16949are kept in a directory known as the @dfn{data directory}.
16950
16951You can set the data directory's name, and view the name @value{GDBN}
16952is currently using.
16953
16954@table @code
16955@kindex set data-directory
16956@item set data-directory @var{directory}
16957Set the directory which @value{GDBN} searches for auxiliary data files
16958to @var{directory}.
16959
16960@kindex show data-directory
16961@item show data-directory
16962Show the directory @value{GDBN} searches for auxiliary data files.
16963@end table
16964
16965@cindex default data directory
16966@cindex @samp{--with-gdb-datadir}
16967You can set the default data directory by using the configure-time
16968@samp{--with-gdb-datadir} option. If the data directory is inside
16969@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
16970@samp{--exec-prefix}), then the default data directory will be updated
16971automatically if the installed @value{GDBN} is moved to a new
16972location.
16973
aae1c79a
DE
16974The data directory may also be specified with the
16975@code{--data-directory} command line option.
16976@xref{Mode Options}.
16977
6d2ebf8b 16978@node Targets
c906108c 16979@chapter Specifying a Debugging Target
7a292a7a 16980
c906108c 16981@cindex debugging target
c906108c 16982A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
16983
16984Often, @value{GDBN} runs in the same host environment as your program;
16985in that case, the debugging target is specified as a side effect when
16986you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
16987flexibility---for example, running @value{GDBN} on a physically separate
16988host, or controlling a standalone system over a serial port or a
53a5351d
JM
16989realtime system over a TCP/IP connection---you can use the @code{target}
16990command to specify one of the target types configured for @value{GDBN}
79a6e687 16991(@pxref{Target Commands, ,Commands for Managing Targets}).
c906108c 16992
a8f24a35
EZ
16993@cindex target architecture
16994It is possible to build @value{GDBN} for several different @dfn{target
16995architectures}. When @value{GDBN} is built like that, you can choose
16996one of the available architectures with the @kbd{set architecture}
16997command.
16998
16999@table @code
17000@kindex set architecture
17001@kindex show architecture
17002@item set architecture @var{arch}
17003This command sets the current target architecture to @var{arch}. The
17004value of @var{arch} can be @code{"auto"}, in addition to one of the
17005supported architectures.
17006
17007@item show architecture
17008Show the current target architecture.
9c16f35a
EZ
17009
17010@item set processor
17011@itemx processor
17012@kindex set processor
17013@kindex show processor
17014These are alias commands for, respectively, @code{set architecture}
17015and @code{show architecture}.
a8f24a35
EZ
17016@end table
17017
c906108c
SS
17018@menu
17019* Active Targets:: Active targets
17020* Target Commands:: Commands for managing targets
c906108c 17021* Byte Order:: Choosing target byte order
c906108c
SS
17022@end menu
17023
6d2ebf8b 17024@node Active Targets
79a6e687 17025@section Active Targets
7a292a7a 17026
c906108c
SS
17027@cindex stacking targets
17028@cindex active targets
17029@cindex multiple targets
17030
8ea5bce5 17031There are multiple classes of targets such as: processes, executable files or
c0edd9ed
JK
17032recording sessions. Core files belong to the process class, making core file
17033and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently
17034on multiple active targets, one in each class. This allows you to (for
17035example) start a process and inspect its activity, while still having access to
17036the executable file after the process finishes. Or if you start process
17037recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are
17038presented a virtual layer of the recording target, while the process target
17039remains stopped at the chronologically last point of the process execution.
17040
17041Use the @code{core-file} and @code{exec-file} commands to select a new core
17042file or executable target (@pxref{Files, ,Commands to Specify Files}). To
17043specify as a target a process that is already running, use the @code{attach}
17044command (@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 17045
6d2ebf8b 17046@node Target Commands
79a6e687 17047@section Commands for Managing Targets
c906108c
SS
17048
17049@table @code
17050@item target @var{type} @var{parameters}
7a292a7a
SS
17051Connects the @value{GDBN} host environment to a target machine or
17052process. A target is typically a protocol for talking to debugging
17053facilities. You use the argument @var{type} to specify the type or
17054protocol of the target machine.
c906108c
SS
17055
17056Further @var{parameters} are interpreted by the target protocol, but
17057typically include things like device names or host names to connect
17058with, process numbers, and baud rates.
c906108c
SS
17059
17060The @code{target} command does not repeat if you press @key{RET} again
17061after executing the command.
17062
17063@kindex help target
17064@item help target
17065Displays the names of all targets available. To display targets
17066currently selected, use either @code{info target} or @code{info files}
79a6e687 17067(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
17068
17069@item help target @var{name}
17070Describe a particular target, including any parameters necessary to
17071select it.
17072
17073@kindex set gnutarget
17074@item set gnutarget @var{args}
5d161b24 17075@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 17076knows whether it is reading an @dfn{executable},
5d161b24
DB
17077a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
17078with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
17079with @code{gnutarget} the @code{target} refers to a program, not a machine.
17080
d4f3574e 17081@quotation
c906108c
SS
17082@emph{Warning:} To specify a file format with @code{set gnutarget},
17083you must know the actual BFD name.
d4f3574e 17084@end quotation
c906108c 17085
d4f3574e 17086@noindent
79a6e687 17087@xref{Files, , Commands to Specify Files}.
c906108c 17088
5d161b24 17089@kindex show gnutarget
c906108c
SS
17090@item show gnutarget
17091Use the @code{show gnutarget} command to display what file format
17092@code{gnutarget} is set to read. If you have not set @code{gnutarget},
17093@value{GDBN} will determine the file format for each file automatically,
17094and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
17095@end table
17096
4644b6e3 17097@cindex common targets
c906108c
SS
17098Here are some common targets (available, or not, depending on the GDB
17099configuration):
c906108c
SS
17100
17101@table @code
4644b6e3 17102@kindex target
c906108c 17103@item target exec @var{program}
4644b6e3 17104@cindex executable file target
c906108c
SS
17105An executable file. @samp{target exec @var{program}} is the same as
17106@samp{exec-file @var{program}}.
17107
c906108c 17108@item target core @var{filename}
4644b6e3 17109@cindex core dump file target
c906108c
SS
17110A core dump file. @samp{target core @var{filename}} is the same as
17111@samp{core-file @var{filename}}.
c906108c 17112
1a10341b 17113@item target remote @var{medium}
4644b6e3 17114@cindex remote target
1a10341b
JB
17115A remote system connected to @value{GDBN} via a serial line or network
17116connection. This command tells @value{GDBN} to use its own remote
17117protocol over @var{medium} for debugging. @xref{Remote Debugging}.
17118
17119For example, if you have a board connected to @file{/dev/ttya} on the
17120machine running @value{GDBN}, you could say:
17121
17122@smallexample
17123target remote /dev/ttya
17124@end smallexample
17125
17126@code{target remote} supports the @code{load} command. This is only
17127useful if you have some other way of getting the stub to the target
17128system, and you can put it somewhere in memory where it won't get
17129clobbered by the download.
c906108c 17130
ee8e71d4 17131@item target sim @r{[}@var{simargs}@r{]} @dots{}
4644b6e3 17132@cindex built-in simulator target
2df3850c 17133Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213 17134In general,
474c8240 17135@smallexample
104c1213
JM
17136 target sim
17137 load
17138 run
474c8240 17139@end smallexample
d4f3574e 17140@noindent
104c1213 17141works; however, you cannot assume that a specific memory map, device
d4f3574e 17142drivers, or even basic I/O is available, although some simulators do
104c1213
JM
17143provide these. For info about any processor-specific simulator details,
17144see the appropriate section in @ref{Embedded Processors, ,Embedded
17145Processors}.
17146
c906108c
SS
17147@end table
17148
104c1213 17149Some configurations may include these targets as well:
c906108c
SS
17150
17151@table @code
17152
c906108c 17153@item target nrom @var{dev}
4644b6e3 17154@cindex NetROM ROM emulator target
c906108c
SS
17155NetROM ROM emulator. This target only supports downloading.
17156
c906108c
SS
17157@end table
17158
5d161b24 17159Different targets are available on different configurations of @value{GDBN};
c906108c 17160your configuration may have more or fewer targets.
c906108c 17161
721c2651
EZ
17162Many remote targets require you to download the executable's code once
17163you've successfully established a connection. You may wish to control
3d00d119
DJ
17164various aspects of this process.
17165
17166@table @code
721c2651
EZ
17167
17168@item set hash
17169@kindex set hash@r{, for remote monitors}
17170@cindex hash mark while downloading
17171This command controls whether a hash mark @samp{#} is displayed while
17172downloading a file to the remote monitor. If on, a hash mark is
17173displayed after each S-record is successfully downloaded to the
17174monitor.
17175
17176@item show hash
17177@kindex show hash@r{, for remote monitors}
17178Show the current status of displaying the hash mark.
17179
17180@item set debug monitor
17181@kindex set debug monitor
17182@cindex display remote monitor communications
17183Enable or disable display of communications messages between
17184@value{GDBN} and the remote monitor.
17185
17186@item show debug monitor
17187@kindex show debug monitor
17188Show the current status of displaying communications between
17189@value{GDBN} and the remote monitor.
a8f24a35 17190@end table
c906108c
SS
17191
17192@table @code
17193
17194@kindex load @var{filename}
17195@item load @var{filename}
8edfe269 17196@anchor{load}
c906108c
SS
17197Depending on what remote debugging facilities are configured into
17198@value{GDBN}, the @code{load} command may be available. Where it exists, it
17199is meant to make @var{filename} (an executable) available for debugging
17200on the remote system---by downloading, or dynamic linking, for example.
17201@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
17202the @code{add-symbol-file} command.
17203
17204If your @value{GDBN} does not have a @code{load} command, attempting to
17205execute it gets the error message ``@code{You can't do that when your
17206target is @dots{}}''
c906108c
SS
17207
17208The file is loaded at whatever address is specified in the executable.
17209For some object file formats, you can specify the load address when you
17210link the program; for other formats, like a.out, the object file format
17211specifies a fixed address.
17212@c FIXME! This would be a good place for an xref to the GNU linker doc.
17213
68437a39
DJ
17214Depending on the remote side capabilities, @value{GDBN} may be able to
17215load programs into flash memory.
17216
c906108c
SS
17217@code{load} does not repeat if you press @key{RET} again after using it.
17218@end table
17219
6d2ebf8b 17220@node Byte Order
79a6e687 17221@section Choosing Target Byte Order
7a292a7a 17222
c906108c
SS
17223@cindex choosing target byte order
17224@cindex target byte order
c906108c 17225
eb17f351 17226Some types of processors, such as the @acronym{MIPS}, PowerPC, and Renesas SH,
c906108c
SS
17227offer the ability to run either big-endian or little-endian byte
17228orders. Usually the executable or symbol will include a bit to
17229designate the endian-ness, and you will not need to worry about
17230which to use. However, you may still find it useful to adjust
d4f3574e 17231@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
17232
17233@table @code
4644b6e3 17234@kindex set endian
c906108c
SS
17235@item set endian big
17236Instruct @value{GDBN} to assume the target is big-endian.
17237
c906108c
SS
17238@item set endian little
17239Instruct @value{GDBN} to assume the target is little-endian.
17240
c906108c
SS
17241@item set endian auto
17242Instruct @value{GDBN} to use the byte order associated with the
17243executable.
17244
17245@item show endian
17246Display @value{GDBN}'s current idea of the target byte order.
17247
17248@end table
17249
17250Note that these commands merely adjust interpretation of symbolic
17251data on the host, and that they have absolutely no effect on the
17252target system.
17253
ea35711c
DJ
17254
17255@node Remote Debugging
17256@chapter Debugging Remote Programs
c906108c
SS
17257@cindex remote debugging
17258
17259If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
17260@value{GDBN} in the usual way, it is often useful to use remote debugging.
17261For example, you might use remote debugging on an operating system kernel,
c906108c
SS
17262or on a small system which does not have a general purpose operating system
17263powerful enough to run a full-featured debugger.
17264
17265Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
17266to make this work with particular debugging targets. In addition,
5d161b24 17267@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
17268but not specific to any particular target system) which you can use if you
17269write the remote stubs---the code that runs on the remote system to
17270communicate with @value{GDBN}.
17271
17272Other remote targets may be available in your
17273configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 17274
6b2f586d 17275@menu
07f31aa6 17276* Connecting:: Connecting to a remote target
a6b151f1 17277* File Transfer:: Sending files to a remote system
6b2f586d 17278* Server:: Using the gdbserver program
79a6e687
BW
17279* Remote Configuration:: Remote configuration
17280* Remote Stub:: Implementing a remote stub
6b2f586d
AC
17281@end menu
17282
07f31aa6 17283@node Connecting
79a6e687 17284@section Connecting to a Remote Target
07f31aa6
DJ
17285
17286On the @value{GDBN} host machine, you will need an unstripped copy of
d3e8051b 17287your program, since @value{GDBN} needs symbol and debugging information.
07f31aa6
DJ
17288Start up @value{GDBN} as usual, using the name of the local copy of your
17289program as the first argument.
17290
86941c27
JB
17291@cindex @code{target remote}
17292@value{GDBN} can communicate with the target over a serial line, or
17293over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In
17294each case, @value{GDBN} uses the same protocol for debugging your
17295program; only the medium carrying the debugging packets varies. The
17296@code{target remote} command establishes a connection to the target.
17297Its arguments indicate which medium to use:
17298
17299@table @code
17300
17301@item target remote @var{serial-device}
07f31aa6 17302@cindex serial line, @code{target remote}
86941c27
JB
17303Use @var{serial-device} to communicate with the target. For example,
17304to use a serial line connected to the device named @file{/dev/ttyb}:
17305
17306@smallexample
17307target remote /dev/ttyb
17308@end smallexample
17309
07f31aa6
DJ
17310If you're using a serial line, you may want to give @value{GDBN} the
17311@w{@samp{--baud}} option, or use the @code{set remotebaud} command
79a6e687 17312(@pxref{Remote Configuration, set remotebaud}) before the
9c16f35a 17313@code{target} command.
07f31aa6 17314
86941c27
JB
17315@item target remote @code{@var{host}:@var{port}}
17316@itemx target remote @code{tcp:@var{host}:@var{port}}
17317@cindex @acronym{TCP} port, @code{target remote}
17318Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
17319The @var{host} may be either a host name or a numeric @acronym{IP}
17320address; @var{port} must be a decimal number. The @var{host} could be
17321the target machine itself, if it is directly connected to the net, or
17322it might be a terminal server which in turn has a serial line to the
17323target.
07f31aa6 17324
86941c27
JB
17325For example, to connect to port 2828 on a terminal server named
17326@code{manyfarms}:
07f31aa6
DJ
17327
17328@smallexample
17329target remote manyfarms:2828
17330@end smallexample
17331
86941c27
JB
17332If your remote target is actually running on the same machine as your
17333debugger session (e.g.@: a simulator for your target running on the
17334same host), you can omit the hostname. For example, to connect to
17335port 1234 on your local machine:
07f31aa6
DJ
17336
17337@smallexample
17338target remote :1234
17339@end smallexample
17340@noindent
17341
17342Note that the colon is still required here.
17343
86941c27
JB
17344@item target remote @code{udp:@var{host}:@var{port}}
17345@cindex @acronym{UDP} port, @code{target remote}
17346Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to
17347connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
07f31aa6
DJ
17348
17349@smallexample
17350target remote udp:manyfarms:2828
17351@end smallexample
17352
86941c27
JB
17353When using a @acronym{UDP} connection for remote debugging, you should
17354keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP}
17355can silently drop packets on busy or unreliable networks, which will
17356cause havoc with your debugging session.
17357
66b8c7f6
JB
17358@item target remote | @var{command}
17359@cindex pipe, @code{target remote} to
17360Run @var{command} in the background and communicate with it using a
17361pipe. The @var{command} is a shell command, to be parsed and expanded
17362by the system's command shell, @code{/bin/sh}; it should expect remote
17363protocol packets on its standard input, and send replies on its
17364standard output. You could use this to run a stand-alone simulator
17365that speaks the remote debugging protocol, to make net connections
17366using programs like @code{ssh}, or for other similar tricks.
17367
17368If @var{command} closes its standard output (perhaps by exiting),
17369@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the
17370program has already exited, this will have no effect.)
17371
86941c27 17372@end table
07f31aa6 17373
86941c27 17374Once the connection has been established, you can use all the usual
8edfe269
DJ
17375commands to examine and change data. The remote program is already
17376running; you can use @kbd{step} and @kbd{continue}, and you do not
17377need to use @kbd{run}.
07f31aa6
DJ
17378
17379@cindex interrupting remote programs
17380@cindex remote programs, interrupting
17381Whenever @value{GDBN} is waiting for the remote program, if you type the
c8aa23ab 17382interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the
07f31aa6
DJ
17383program. This may or may not succeed, depending in part on the hardware
17384and the serial drivers the remote system uses. If you type the
17385interrupt character once again, @value{GDBN} displays this prompt:
17386
17387@smallexample
17388Interrupted while waiting for the program.
17389Give up (and stop debugging it)? (y or n)
17390@end smallexample
17391
17392If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
17393(If you decide you want to try again later, you can use @samp{target
17394remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
17395goes back to waiting.
17396
17397@table @code
17398@kindex detach (remote)
17399@item detach
17400When you have finished debugging the remote program, you can use the
17401@code{detach} command to release it from @value{GDBN} control.
17402Detaching from the target normally resumes its execution, but the results
17403will depend on your particular remote stub. After the @code{detach}
17404command, @value{GDBN} is free to connect to another target.
17405
17406@kindex disconnect
17407@item disconnect
17408The @code{disconnect} command behaves like @code{detach}, except that
17409the target is generally not resumed. It will wait for @value{GDBN}
17410(this instance or another one) to connect and continue debugging. After
17411the @code{disconnect} command, @value{GDBN} is again free to connect to
17412another target.
09d4efe1
EZ
17413
17414@cindex send command to remote monitor
fad38dfa
EZ
17415@cindex extend @value{GDBN} for remote targets
17416@cindex add new commands for external monitor
09d4efe1
EZ
17417@kindex monitor
17418@item monitor @var{cmd}
fad38dfa
EZ
17419This command allows you to send arbitrary commands directly to the
17420remote monitor. Since @value{GDBN} doesn't care about the commands it
17421sends like this, this command is the way to extend @value{GDBN}---you
17422can add new commands that only the external monitor will understand
17423and implement.
07f31aa6
DJ
17424@end table
17425
a6b151f1
DJ
17426@node File Transfer
17427@section Sending files to a remote system
17428@cindex remote target, file transfer
17429@cindex file transfer
17430@cindex sending files to remote systems
17431
17432Some remote targets offer the ability to transfer files over the same
17433connection used to communicate with @value{GDBN}. This is convenient
17434for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems
17435running @code{gdbserver} over a network interface. For other targets,
17436e.g.@: embedded devices with only a single serial port, this may be
17437the only way to upload or download files.
17438
17439Not all remote targets support these commands.
17440
17441@table @code
17442@kindex remote put
17443@item remote put @var{hostfile} @var{targetfile}
17444Copy file @var{hostfile} from the host system (the machine running
17445@value{GDBN}) to @var{targetfile} on the target system.
17446
17447@kindex remote get
17448@item remote get @var{targetfile} @var{hostfile}
17449Copy file @var{targetfile} from the target system to @var{hostfile}
17450on the host system.
17451
17452@kindex remote delete
17453@item remote delete @var{targetfile}
17454Delete @var{targetfile} from the target system.
17455
17456@end table
17457
6f05cf9f 17458@node Server
79a6e687 17459@section Using the @code{gdbserver} Program
6f05cf9f
AC
17460
17461@kindex gdbserver
17462@cindex remote connection without stubs
17463@code{gdbserver} is a control program for Unix-like systems, which
17464allows you to connect your program with a remote @value{GDBN} via
17465@code{target remote}---but without linking in the usual debugging stub.
17466
17467@code{gdbserver} is not a complete replacement for the debugging stubs,
17468because it requires essentially the same operating-system facilities
17469that @value{GDBN} itself does. In fact, a system that can run
17470@code{gdbserver} to connect to a remote @value{GDBN} could also run
17471@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
17472because it is a much smaller program than @value{GDBN} itself. It is
17473also easier to port than all of @value{GDBN}, so you may be able to get
17474started more quickly on a new system by using @code{gdbserver}.
17475Finally, if you develop code for real-time systems, you may find that
17476the tradeoffs involved in real-time operation make it more convenient to
17477do as much development work as possible on another system, for example
17478by cross-compiling. You can use @code{gdbserver} to make a similar
17479choice for debugging.
17480
17481@value{GDBN} and @code{gdbserver} communicate via either a serial line
17482or a TCP connection, using the standard @value{GDBN} remote serial
17483protocol.
17484
2d717e4f
DJ
17485@quotation
17486@emph{Warning:} @code{gdbserver} does not have any built-in security.
17487Do not run @code{gdbserver} connected to any public network; a
17488@value{GDBN} connection to @code{gdbserver} provides access to the
17489target system with the same privileges as the user running
17490@code{gdbserver}.
17491@end quotation
17492
17493@subsection Running @code{gdbserver}
17494@cindex arguments, to @code{gdbserver}
d9b1a651 17495@cindex @code{gdbserver}, command-line arguments
2d717e4f
DJ
17496
17497Run @code{gdbserver} on the target system. You need a copy of the
17498program you want to debug, including any libraries it requires.
6f05cf9f
AC
17499@code{gdbserver} does not need your program's symbol table, so you can
17500strip the program if necessary to save space. @value{GDBN} on the host
17501system does all the symbol handling.
17502
17503To use the server, you must tell it how to communicate with @value{GDBN};
56460a61 17504the name of your program; and the arguments for your program. The usual
6f05cf9f
AC
17505syntax is:
17506
17507@smallexample
17508target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
17509@end smallexample
17510
e0f9f062
DE
17511@var{comm} is either a device name (to use a serial line), or a TCP
17512hostname and portnumber, or @code{-} or @code{stdio} to use
17513stdin/stdout of @code{gdbserver}.
17514For example, to debug Emacs with the argument
6f05cf9f
AC
17515@samp{foo.txt} and communicate with @value{GDBN} over the serial port
17516@file{/dev/com1}:
17517
17518@smallexample
17519target> gdbserver /dev/com1 emacs foo.txt
17520@end smallexample
17521
17522@code{gdbserver} waits passively for the host @value{GDBN} to communicate
17523with it.
17524
17525To use a TCP connection instead of a serial line:
17526
17527@smallexample
17528target> gdbserver host:2345 emacs foo.txt
17529@end smallexample
17530
17531The only difference from the previous example is the first argument,
17532specifying that you are communicating with the host @value{GDBN} via
17533TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
17534expect a TCP connection from machine @samp{host} to local TCP port 2345.
17535(Currently, the @samp{host} part is ignored.) You can choose any number
17536you want for the port number as long as it does not conflict with any
17537TCP ports already in use on the target system (for example, @code{23} is
17538reserved for @code{telnet}).@footnote{If you choose a port number that
17539conflicts with another service, @code{gdbserver} prints an error message
17540and exits.} You must use the same port number with the host @value{GDBN}
17541@code{target remote} command.
17542
e0f9f062
DE
17543The @code{stdio} connection is useful when starting @code{gdbserver}
17544with ssh:
17545
17546@smallexample
17547(gdb) target remote | ssh -T hostname gdbserver - hello
17548@end smallexample
17549
17550The @samp{-T} option to ssh is provided because we don't need a remote pty,
17551and we don't want escape-character handling. Ssh does this by default when
17552a command is provided, the flag is provided to make it explicit.
17553You could elide it if you want to.
17554
17555Programs started with stdio-connected gdbserver have @file{/dev/null} for
17556@code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for
17557display through a pipe connected to gdbserver.
17558Both @code{stdout} and @code{stderr} use the same pipe.
17559
2d717e4f 17560@subsubsection Attaching to a Running Program
d9b1a651
EZ
17561@cindex attach to a program, @code{gdbserver}
17562@cindex @option{--attach}, @code{gdbserver} option
2d717e4f 17563
56460a61
DJ
17564On some targets, @code{gdbserver} can also attach to running programs.
17565This is accomplished via the @code{--attach} argument. The syntax is:
17566
17567@smallexample
2d717e4f 17568target> gdbserver --attach @var{comm} @var{pid}
56460a61
DJ
17569@end smallexample
17570
17571@var{pid} is the process ID of a currently running process. It isn't necessary
17572to point @code{gdbserver} at a binary for the running process.
17573
b1fe9455 17574@pindex pidof
b1fe9455
DJ
17575You can debug processes by name instead of process ID if your target has the
17576@code{pidof} utility:
17577
17578@smallexample
2d717e4f 17579target> gdbserver --attach @var{comm} `pidof @var{program}`
b1fe9455
DJ
17580@end smallexample
17581
f822c95b 17582In case more than one copy of @var{program} is running, or @var{program}
b1fe9455
DJ
17583has multiple threads, most versions of @code{pidof} support the
17584@code{-s} option to only return the first process ID.
17585
2d717e4f 17586@subsubsection Multi-Process Mode for @code{gdbserver}
d9b1a651
EZ
17587@cindex @code{gdbserver}, multiple processes
17588@cindex multiple processes with @code{gdbserver}
2d717e4f
DJ
17589
17590When you connect to @code{gdbserver} using @code{target remote},
17591@code{gdbserver} debugs the specified program only once. When the
17592program exits, or you detach from it, @value{GDBN} closes the connection
17593and @code{gdbserver} exits.
17594
6e6c6f50 17595If you connect using @kbd{target extended-remote}, @code{gdbserver}
2d717e4f
DJ
17596enters multi-process mode. When the debugged program exits, or you
17597detach from it, @value{GDBN} stays connected to @code{gdbserver} even
17598though no program is running. The @code{run} and @code{attach}
17599commands instruct @code{gdbserver} to run or attach to a new program.
17600The @code{run} command uses @code{set remote exec-file} (@pxref{set
17601remote exec-file}) to select the program to run. Command line
17602arguments are supported, except for wildcard expansion and I/O
17603redirection (@pxref{Arguments}).
17604
d9b1a651 17605@cindex @option{--multi}, @code{gdbserver} option
2d717e4f
DJ
17606To start @code{gdbserver} without supplying an initial command to run
17607or process ID to attach, use the @option{--multi} command line option.
6e6c6f50 17608Then you can connect using @kbd{target extended-remote} and start
2d717e4f
DJ
17609the program you want to debug.
17610
03f2bd59
JK
17611In multi-process mode @code{gdbserver} does not automatically exit unless you
17612use the option @option{--once}. You can terminate it by using
17613@code{monitor exit} (@pxref{Monitor Commands for gdbserver}). Note that the
17614conditions under which @code{gdbserver} terminates depend on how @value{GDBN}
17615connects to it (@kbd{target remote} or @kbd{target extended-remote}). The
17616@option{--multi} option to @code{gdbserver} has no influence on that.
17617
17618@subsubsection TCP port allocation lifecycle of @code{gdbserver}
17619
17620This section applies only when @code{gdbserver} is run to listen on a TCP port.
17621
17622@code{gdbserver} normally terminates after all of its debugged processes have
17623terminated in @kbd{target remote} mode. On the other hand, for @kbd{target
17624extended-remote}, @code{gdbserver} stays running even with no processes left.
17625@value{GDBN} normally terminates the spawned debugged process on its exit,
17626which normally also terminates @code{gdbserver} in the @kbd{target remote}
17627mode. Therefore, when the connection drops unexpectedly, and @value{GDBN}
17628cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver}
17629stays running even in the @kbd{target remote} mode.
17630
17631When @code{gdbserver} stays running, @value{GDBN} can connect to it again later.
17632Such reconnecting is useful for features like @ref{disconnected tracing}. For
17633completeness, at most one @value{GDBN} can be connected at a time.
17634
17635@cindex @option{--once}, @code{gdbserver} option
17636By default, @code{gdbserver} keeps the listening TCP port open, so that
17637additional connections are possible. However, if you start @code{gdbserver}
17638with the @option{--once} option, it will stop listening for any further
17639connection attempts after connecting to the first @value{GDBN} session. This
17640means no further connections to @code{gdbserver} will be possible after the
17641first one. It also means @code{gdbserver} will terminate after the first
17642connection with remote @value{GDBN} has closed, even for unexpectedly closed
17643connections and even in the @kbd{target extended-remote} mode. The
17644@option{--once} option allows reusing the same port number for connecting to
17645multiple instances of @code{gdbserver} running on the same host, since each
17646instance closes its port after the first connection.
2d717e4f
DJ
17647
17648@subsubsection Other Command-Line Arguments for @code{gdbserver}
17649
d9b1a651 17650@cindex @option{--debug}, @code{gdbserver} option
62709adf 17651The @option{--debug} option tells @code{gdbserver} to display extra
d9b1a651
EZ
17652status information about the debugging process.
17653@cindex @option{--remote-debug}, @code{gdbserver} option
17654The @option{--remote-debug} option tells @code{gdbserver} to display
62709adf
PA
17655remote protocol debug output. These options are intended for
17656@code{gdbserver} development and for bug reports to the developers.
2d717e4f 17657
d9b1a651 17658@cindex @option{--wrapper}, @code{gdbserver} option
ccd213ac
DJ
17659The @option{--wrapper} option specifies a wrapper to launch programs
17660for debugging. The option should be followed by the name of the
17661wrapper, then any command-line arguments to pass to the wrapper, then
17662@kbd{--} indicating the end of the wrapper arguments.
17663
17664@code{gdbserver} runs the specified wrapper program with a combined
17665command line including the wrapper arguments, then the name of the
17666program to debug, then any arguments to the program. The wrapper
17667runs until it executes your program, and then @value{GDBN} gains control.
17668
17669You can use any program that eventually calls @code{execve} with
17670its arguments as a wrapper. Several standard Unix utilities do
17671this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
17672with @code{exec "$@@"} will also work.
17673
17674For example, you can use @code{env} to pass an environment variable to
17675the debugged program, without setting the variable in @code{gdbserver}'s
17676environment:
17677
17678@smallexample
17679$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog
17680@end smallexample
17681
2d717e4f
DJ
17682@subsection Connecting to @code{gdbserver}
17683
17684Run @value{GDBN} on the host system.
17685
17686First make sure you have the necessary symbol files. Load symbols for
f822c95b
DJ
17687your application using the @code{file} command before you connect. Use
17688@code{set sysroot} to locate target libraries (unless your @value{GDBN}
2d717e4f 17689was compiled with the correct sysroot using @code{--with-sysroot}).
f822c95b
DJ
17690
17691The symbol file and target libraries must exactly match the executable
17692and libraries on the target, with one exception: the files on the host
17693system should not be stripped, even if the files on the target system
17694are. Mismatched or missing files will lead to confusing results
17695during debugging. On @sc{gnu}/Linux targets, mismatched or missing
17696files may also prevent @code{gdbserver} from debugging multi-threaded
17697programs.
17698
79a6e687 17699Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}).
6f05cf9f
AC
17700For TCP connections, you must start up @code{gdbserver} prior to using
17701the @code{target remote} command. Otherwise you may get an error whose
17702text depends on the host system, but which usually looks something like
2d717e4f 17703@samp{Connection refused}. Don't use the @code{load}
397ca115 17704command in @value{GDBN} when using @code{gdbserver}, since the program is
f822c95b 17705already on the target.
07f31aa6 17706
79a6e687 17707@subsection Monitor Commands for @code{gdbserver}
c74d0ad8 17708@cindex monitor commands, for @code{gdbserver}
2d717e4f 17709@anchor{Monitor Commands for gdbserver}
c74d0ad8
DJ
17710
17711During a @value{GDBN} session using @code{gdbserver}, you can use the
17712@code{monitor} command to send special requests to @code{gdbserver}.
2d717e4f 17713Here are the available commands.
c74d0ad8
DJ
17714
17715@table @code
17716@item monitor help
17717List the available monitor commands.
17718
17719@item monitor set debug 0
17720@itemx monitor set debug 1
17721Disable or enable general debugging messages.
17722
17723@item monitor set remote-debug 0
17724@itemx monitor set remote-debug 1
17725Disable or enable specific debugging messages associated with the remote
17726protocol (@pxref{Remote Protocol}).
17727
cdbfd419
PP
17728@item monitor set libthread-db-search-path [PATH]
17729@cindex gdbserver, search path for @code{libthread_db}
17730When this command is issued, @var{path} is a colon-separated list of
17731directories to search for @code{libthread_db} (@pxref{Threads,,set
17732libthread-db-search-path}). If you omit @var{path},
84e578fb 17733@samp{libthread-db-search-path} will be reset to its default value.
cdbfd419 17734
98a5dd13
DE
17735The special entry @samp{$pdir} for @samp{libthread-db-search-path} is
17736not supported in @code{gdbserver}.
17737
2d717e4f
DJ
17738@item monitor exit
17739Tell gdbserver to exit immediately. This command should be followed by
17740@code{disconnect} to close the debugging session. @code{gdbserver} will
17741detach from any attached processes and kill any processes it created.
17742Use @code{monitor exit} to terminate @code{gdbserver} at the end
17743of a multi-process mode debug session.
17744
c74d0ad8
DJ
17745@end table
17746
fa593d66
PA
17747@subsection Tracepoints support in @code{gdbserver}
17748@cindex tracepoints support in @code{gdbserver}
17749
0fb4aa4b
PA
17750On some targets, @code{gdbserver} supports tracepoints, fast
17751tracepoints and static tracepoints.
fa593d66 17752
0fb4aa4b 17753For fast or static tracepoints to work, a special library called the
fa593d66
PA
17754@dfn{in-process agent} (IPA), must be loaded in the inferior process.
17755This library is built and distributed as an integral part of
0fb4aa4b
PA
17756@code{gdbserver}. In addition, support for static tracepoints
17757requires building the in-process agent library with static tracepoints
17758support. At present, the UST (LTTng Userspace Tracer,
17759@url{http://lttng.org/ust}) tracing engine is supported. This support
17760is automatically available if UST development headers are found in the
17761standard include path when @code{gdbserver} is built, or if
17762@code{gdbserver} was explicitly configured using @option{--with-ust}
17763to point at such headers. You can explicitly disable the support
17764using @option{--with-ust=no}.
fa593d66
PA
17765
17766There are several ways to load the in-process agent in your program:
17767
17768@table @code
17769@item Specifying it as dependency at link time
17770
17771You can link your program dynamically with the in-process agent
17772library. On most systems, this is accomplished by adding
17773@code{-linproctrace} to the link command.
17774
17775@item Using the system's preloading mechanisms
17776
17777You can force loading the in-process agent at startup time by using
17778your system's support for preloading shared libraries. Many Unixes
17779support the concept of preloading user defined libraries. In most
17780cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so}
17781in the environment. See also the description of @code{gdbserver}'s
17782@option{--wrapper} command line option.
17783
17784@item Using @value{GDBN} to force loading the agent at run time
17785
17786On some systems, you can force the inferior to load a shared library,
17787by calling a dynamic loader function in the inferior that takes care
17788of dynamically looking up and loading a shared library. On most Unix
17789systems, the function is @code{dlopen}. You'll use the @code{call}
17790command for that. For example:
17791
17792@smallexample
17793(@value{GDBP}) call dlopen ("libinproctrace.so", ...)
17794@end smallexample
17795
17796Note that on most Unix systems, for the @code{dlopen} function to be
17797available, the program needs to be linked with @code{-ldl}.
17798@end table
17799
17800On systems that have a userspace dynamic loader, like most Unix
17801systems, when you connect to @code{gdbserver} using @code{target
17802remote}, you'll find that the program is stopped at the dynamic
17803loader's entry point, and no shared library has been loaded in the
17804program's address space yet, including the in-process agent. In that
0fb4aa4b
PA
17805case, before being able to use any of the fast or static tracepoints
17806features, you need to let the loader run and load the shared
17807libraries. The simplest way to do that is to run the program to the
17808main procedure. E.g., if debugging a C or C@t{++} program, start
fa593d66
PA
17809@code{gdbserver} like so:
17810
17811@smallexample
17812$ gdbserver :9999 myprogram
17813@end smallexample
17814
17815Start GDB and connect to @code{gdbserver} like so, and run to main:
17816
17817@smallexample
17818$ gdb myprogram
17819(@value{GDBP}) target remote myhost:9999
178200x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2
17821(@value{GDBP}) b main
17822(@value{GDBP}) continue
17823@end smallexample
17824
17825The in-process tracing agent library should now be loaded into the
17826process; you can confirm it with the @code{info sharedlibrary}
17827command, which will list @file{libinproctrace.so} as loaded in the
0fb4aa4b
PA
17828process. You are now ready to install fast tracepoints, list static
17829tracepoint markers, probe static tracepoints markers, and start
fa593d66
PA
17830tracing.
17831
79a6e687
BW
17832@node Remote Configuration
17833@section Remote Configuration
501eef12 17834
9c16f35a
EZ
17835@kindex set remote
17836@kindex show remote
17837This section documents the configuration options available when
17838debugging remote programs. For the options related to the File I/O
fc320d37 17839extensions of the remote protocol, see @ref{system,
9c16f35a 17840system-call-allowed}.
501eef12
AC
17841
17842@table @code
9c16f35a 17843@item set remoteaddresssize @var{bits}
d3e8051b 17844@cindex address size for remote targets
9c16f35a
EZ
17845@cindex bits in remote address
17846Set the maximum size of address in a memory packet to the specified
17847number of bits. @value{GDBN} will mask off the address bits above
17848that number, when it passes addresses to the remote target. The
17849default value is the number of bits in the target's address.
17850
17851@item show remoteaddresssize
17852Show the current value of remote address size in bits.
17853
17854@item set remotebaud @var{n}
17855@cindex baud rate for remote targets
17856Set the baud rate for the remote serial I/O to @var{n} baud. The
17857value is used to set the speed of the serial port used for debugging
17858remote targets.
17859
17860@item show remotebaud
17861Show the current speed of the remote connection.
17862
17863@item set remotebreak
17864@cindex interrupt remote programs
17865@cindex BREAK signal instead of Ctrl-C
9a6253be 17866@anchor{set remotebreak}
9c16f35a 17867If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote
c8aa23ab 17868when you type @kbd{Ctrl-c} to interrupt the program running
9a7a1b36 17869on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C}
9c16f35a
EZ
17870character instead. The default is off, since most remote systems
17871expect to see @samp{Ctrl-C} as the interrupt signal.
17872
17873@item show remotebreak
17874Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to
17875interrupt the remote program.
17876
23776285
MR
17877@item set remoteflow on
17878@itemx set remoteflow off
17879@kindex set remoteflow
17880Enable or disable hardware flow control (@code{RTS}/@code{CTS})
17881on the serial port used to communicate to the remote target.
17882
17883@item show remoteflow
17884@kindex show remoteflow
17885Show the current setting of hardware flow control.
17886
9c16f35a
EZ
17887@item set remotelogbase @var{base}
17888Set the base (a.k.a.@: radix) of logging serial protocol
17889communications to @var{base}. Supported values of @var{base} are:
17890@code{ascii}, @code{octal}, and @code{hex}. The default is
17891@code{ascii}.
17892
17893@item show remotelogbase
17894Show the current setting of the radix for logging remote serial
17895protocol.
17896
17897@item set remotelogfile @var{file}
17898@cindex record serial communications on file
17899Record remote serial communications on the named @var{file}. The
17900default is not to record at all.
17901
17902@item show remotelogfile.
17903Show the current setting of the file name on which to record the
17904serial communications.
17905
17906@item set remotetimeout @var{num}
17907@cindex timeout for serial communications
17908@cindex remote timeout
17909Set the timeout limit to wait for the remote target to respond to
17910@var{num} seconds. The default is 2 seconds.
17911
17912@item show remotetimeout
17913Show the current number of seconds to wait for the remote target
17914responses.
17915
17916@cindex limit hardware breakpoints and watchpoints
17917@cindex remote target, limit break- and watchpoints
501eef12
AC
17918@anchor{set remote hardware-watchpoint-limit}
17919@anchor{set remote hardware-breakpoint-limit}
17920@item set remote hardware-watchpoint-limit @var{limit}
17921@itemx set remote hardware-breakpoint-limit @var{limit}
17922Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
17923watchpoints. A limit of -1, the default, is treated as unlimited.
2d717e4f 17924
480a3f21
PW
17925@cindex limit hardware watchpoints length
17926@cindex remote target, limit watchpoints length
17927@anchor{set remote hardware-watchpoint-length-limit}
17928@item set remote hardware-watchpoint-length-limit @var{limit}
17929Restrict @value{GDBN} to using @var{limit} bytes for the maximum length of
17930a remote hardware watchpoint. A limit of -1, the default, is treated
17931as unlimited.
17932
17933@item show remote hardware-watchpoint-length-limit
17934Show the current limit (in bytes) of the maximum length of
17935a remote hardware watchpoint.
17936
2d717e4f
DJ
17937@item set remote exec-file @var{filename}
17938@itemx show remote exec-file
17939@anchor{set remote exec-file}
17940@cindex executable file, for remote target
17941Select the file used for @code{run} with @code{target
17942extended-remote}. This should be set to a filename valid on the
17943target system. If it is not set, the target will use a default
17944filename (e.g.@: the last program run).
84603566 17945
9a7071a8
JB
17946@item set remote interrupt-sequence
17947@cindex interrupt remote programs
17948@cindex select Ctrl-C, BREAK or BREAK-g
17949Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or
17950@samp{BREAK-g} as the
17951sequence to the remote target in order to interrupt the execution.
17952@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which
17953is high level of serial line for some certain time.
17954Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g.
17955It is @code{BREAK} signal followed by character @code{g}.
17956
17957@item show interrupt-sequence
17958Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g}
17959is sent by @value{GDBN} to interrupt the remote program.
17960@code{BREAK-g} is BREAK signal followed by @code{g} and
17961also known as Magic SysRq g.
17962
17963@item set remote interrupt-on-connect
17964@cindex send interrupt-sequence on start
17965Specify whether interrupt-sequence is sent to remote target when
17966@value{GDBN} connects to it. This is mostly needed when you debug
17967Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g}
17968which is known as Magic SysRq g in order to connect @value{GDBN}.
17969
17970@item show interrupt-on-connect
17971Show whether interrupt-sequence is sent
17972to remote target when @value{GDBN} connects to it.
17973
84603566
SL
17974@kindex set tcp
17975@kindex show tcp
17976@item set tcp auto-retry on
17977@cindex auto-retry, for remote TCP target
17978Enable auto-retry for remote TCP connections. This is useful if the remote
17979debugging agent is launched in parallel with @value{GDBN}; there is a race
17980condition because the agent may not become ready to accept the connection
17981before @value{GDBN} attempts to connect. When auto-retry is
17982enabled, if the initial attempt to connect fails, @value{GDBN} reattempts
17983to establish the connection using the timeout specified by
17984@code{set tcp connect-timeout}.
17985
17986@item set tcp auto-retry off
17987Do not auto-retry failed TCP connections.
17988
17989@item show tcp auto-retry
17990Show the current auto-retry setting.
17991
17992@item set tcp connect-timeout @var{seconds}
17993@cindex connection timeout, for remote TCP target
17994@cindex timeout, for remote target connection
17995Set the timeout for establishing a TCP connection to the remote target to
17996@var{seconds}. The timeout affects both polling to retry failed connections
17997(enabled by @code{set tcp auto-retry on}) and waiting for connections
17998that are merely slow to complete, and represents an approximate cumulative
17999value.
18000
18001@item show tcp connect-timeout
18002Show the current connection timeout setting.
501eef12
AC
18003@end table
18004
427c3a89
DJ
18005@cindex remote packets, enabling and disabling
18006The @value{GDBN} remote protocol autodetects the packets supported by
18007your debugging stub. If you need to override the autodetection, you
18008can use these commands to enable or disable individual packets. Each
18009packet can be set to @samp{on} (the remote target supports this
18010packet), @samp{off} (the remote target does not support this packet),
18011or @samp{auto} (detect remote target support for this packet). They
18012all default to @samp{auto}. For more information about each packet,
18013see @ref{Remote Protocol}.
18014
18015During normal use, you should not have to use any of these commands.
18016If you do, that may be a bug in your remote debugging stub, or a bug
18017in @value{GDBN}. You may want to report the problem to the
18018@value{GDBN} developers.
18019
cfa9d6d9
DJ
18020For each packet @var{name}, the command to enable or disable the
18021packet is @code{set remote @var{name}-packet}. The available settings
18022are:
427c3a89 18023
cfa9d6d9 18024@multitable @columnfractions 0.28 0.32 0.25
427c3a89
DJ
18025@item Command Name
18026@tab Remote Packet
18027@tab Related Features
18028
cfa9d6d9 18029@item @code{fetch-register}
427c3a89
DJ
18030@tab @code{p}
18031@tab @code{info registers}
18032
cfa9d6d9 18033@item @code{set-register}
427c3a89
DJ
18034@tab @code{P}
18035@tab @code{set}
18036
cfa9d6d9 18037@item @code{binary-download}
427c3a89
DJ
18038@tab @code{X}
18039@tab @code{load}, @code{set}
18040
cfa9d6d9 18041@item @code{read-aux-vector}
427c3a89
DJ
18042@tab @code{qXfer:auxv:read}
18043@tab @code{info auxv}
18044
cfa9d6d9 18045@item @code{symbol-lookup}
427c3a89
DJ
18046@tab @code{qSymbol}
18047@tab Detecting multiple threads
18048
2d717e4f
DJ
18049@item @code{attach}
18050@tab @code{vAttach}
18051@tab @code{attach}
18052
cfa9d6d9 18053@item @code{verbose-resume}
427c3a89
DJ
18054@tab @code{vCont}
18055@tab Stepping or resuming multiple threads
18056
2d717e4f
DJ
18057@item @code{run}
18058@tab @code{vRun}
18059@tab @code{run}
18060
cfa9d6d9 18061@item @code{software-breakpoint}
427c3a89
DJ
18062@tab @code{Z0}
18063@tab @code{break}
18064
cfa9d6d9 18065@item @code{hardware-breakpoint}
427c3a89
DJ
18066@tab @code{Z1}
18067@tab @code{hbreak}
18068
cfa9d6d9 18069@item @code{write-watchpoint}
427c3a89
DJ
18070@tab @code{Z2}
18071@tab @code{watch}
18072
cfa9d6d9 18073@item @code{read-watchpoint}
427c3a89
DJ
18074@tab @code{Z3}
18075@tab @code{rwatch}
18076
cfa9d6d9 18077@item @code{access-watchpoint}
427c3a89
DJ
18078@tab @code{Z4}
18079@tab @code{awatch}
18080
cfa9d6d9
DJ
18081@item @code{target-features}
18082@tab @code{qXfer:features:read}
18083@tab @code{set architecture}
18084
18085@item @code{library-info}
18086@tab @code{qXfer:libraries:read}
18087@tab @code{info sharedlibrary}
18088
18089@item @code{memory-map}
18090@tab @code{qXfer:memory-map:read}
18091@tab @code{info mem}
18092
0fb4aa4b
PA
18093@item @code{read-sdata-object}
18094@tab @code{qXfer:sdata:read}
18095@tab @code{print $_sdata}
18096
cfa9d6d9
DJ
18097@item @code{read-spu-object}
18098@tab @code{qXfer:spu:read}
18099@tab @code{info spu}
18100
18101@item @code{write-spu-object}
18102@tab @code{qXfer:spu:write}
18103@tab @code{info spu}
18104
4aa995e1
PA
18105@item @code{read-siginfo-object}
18106@tab @code{qXfer:siginfo:read}
18107@tab @code{print $_siginfo}
18108
18109@item @code{write-siginfo-object}
18110@tab @code{qXfer:siginfo:write}
18111@tab @code{set $_siginfo}
18112
dc146f7c
VP
18113@item @code{threads}
18114@tab @code{qXfer:threads:read}
18115@tab @code{info threads}
18116
cfa9d6d9 18117@item @code{get-thread-local-@*storage-address}
427c3a89
DJ
18118@tab @code{qGetTLSAddr}
18119@tab Displaying @code{__thread} variables
18120
711e434b
PM
18121@item @code{get-thread-information-block-address}
18122@tab @code{qGetTIBAddr}
18123@tab Display MS-Windows Thread Information Block.
18124
08388c79
DE
18125@item @code{search-memory}
18126@tab @code{qSearch:memory}
18127@tab @code{find}
18128
427c3a89
DJ
18129@item @code{supported-packets}
18130@tab @code{qSupported}
18131@tab Remote communications parameters
18132
cfa9d6d9 18133@item @code{pass-signals}
89be2091
DJ
18134@tab @code{QPassSignals}
18135@tab @code{handle @var{signal}}
18136
9b224c5e
PA
18137@item @code{program-signals}
18138@tab @code{QProgramSignals}
18139@tab @code{handle @var{signal}}
18140
a6b151f1
DJ
18141@item @code{hostio-close-packet}
18142@tab @code{vFile:close}
18143@tab @code{remote get}, @code{remote put}
18144
18145@item @code{hostio-open-packet}
18146@tab @code{vFile:open}
18147@tab @code{remote get}, @code{remote put}
18148
18149@item @code{hostio-pread-packet}
18150@tab @code{vFile:pread}
18151@tab @code{remote get}, @code{remote put}
18152
18153@item @code{hostio-pwrite-packet}
18154@tab @code{vFile:pwrite}
18155@tab @code{remote get}, @code{remote put}
18156
18157@item @code{hostio-unlink-packet}
18158@tab @code{vFile:unlink}
18159@tab @code{remote delete}
a6f3e723 18160
b9e7b9c3
UW
18161@item @code{hostio-readlink-packet}
18162@tab @code{vFile:readlink}
18163@tab Host I/O
18164
a6f3e723
SL
18165@item @code{noack-packet}
18166@tab @code{QStartNoAckMode}
18167@tab Packet acknowledgment
07e059b5
VP
18168
18169@item @code{osdata}
18170@tab @code{qXfer:osdata:read}
18171@tab @code{info os}
0b16c5cf
PA
18172
18173@item @code{query-attached}
18174@tab @code{qAttached}
18175@tab Querying remote process attach state.
b3b9301e
PA
18176
18177@item @code{traceframe-info}
18178@tab @code{qXfer:traceframe-info:read}
18179@tab Traceframe info
03583c20 18180
1e4d1764
YQ
18181@item @code{install-in-trace}
18182@tab @code{InstallInTrace}
18183@tab Install tracepoint in tracing
18184
03583c20
UW
18185@item @code{disable-randomization}
18186@tab @code{QDisableRandomization}
18187@tab @code{set disable-randomization}
83364271
LM
18188
18189@item @code{conditional-breakpoints-packet}
18190@tab @code{Z0 and Z1}
18191@tab @code{Support for target-side breakpoint condition evaluation}
427c3a89
DJ
18192@end multitable
18193
79a6e687
BW
18194@node Remote Stub
18195@section Implementing a Remote Stub
7a292a7a 18196
8e04817f
AC
18197@cindex debugging stub, example
18198@cindex remote stub, example
18199@cindex stub example, remote debugging
18200The stub files provided with @value{GDBN} implement the target side of the
18201communication protocol, and the @value{GDBN} side is implemented in the
18202@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
18203these subroutines to communicate, and ignore the details. (If you're
18204implementing your own stub file, you can still ignore the details: start
18205with one of the existing stub files. @file{sparc-stub.c} is the best
18206organized, and therefore the easiest to read.)
18207
104c1213
JM
18208@cindex remote serial debugging, overview
18209To debug a program running on another machine (the debugging
18210@dfn{target} machine), you must first arrange for all the usual
18211prerequisites for the program to run by itself. For example, for a C
18212program, you need:
c906108c 18213
104c1213
JM
18214@enumerate
18215@item
18216A startup routine to set up the C runtime environment; these usually
18217have a name like @file{crt0}. The startup routine may be supplied by
18218your hardware supplier, or you may have to write your own.
96baa820 18219
5d161b24 18220@item
d4f3574e 18221A C subroutine library to support your program's
104c1213 18222subroutine calls, notably managing input and output.
96baa820 18223
104c1213
JM
18224@item
18225A way of getting your program to the other machine---for example, a
18226download program. These are often supplied by the hardware
18227manufacturer, but you may have to write your own from hardware
18228documentation.
18229@end enumerate
96baa820 18230
104c1213
JM
18231The next step is to arrange for your program to use a serial port to
18232communicate with the machine where @value{GDBN} is running (the @dfn{host}
18233machine). In general terms, the scheme looks like this:
96baa820 18234
104c1213
JM
18235@table @emph
18236@item On the host,
18237@value{GDBN} already understands how to use this protocol; when everything
18238else is set up, you can simply use the @samp{target remote} command
18239(@pxref{Targets,,Specifying a Debugging Target}).
18240
18241@item On the target,
18242you must link with your program a few special-purpose subroutines that
18243implement the @value{GDBN} remote serial protocol. The file containing these
18244subroutines is called a @dfn{debugging stub}.
18245
18246On certain remote targets, you can use an auxiliary program
18247@code{gdbserver} instead of linking a stub into your program.
79a6e687 18248@xref{Server,,Using the @code{gdbserver} Program}, for details.
104c1213 18249@end table
96baa820 18250
104c1213
JM
18251The debugging stub is specific to the architecture of the remote
18252machine; for example, use @file{sparc-stub.c} to debug programs on
18253@sc{sparc} boards.
96baa820 18254
104c1213
JM
18255@cindex remote serial stub list
18256These working remote stubs are distributed with @value{GDBN}:
96baa820 18257
104c1213
JM
18258@table @code
18259
18260@item i386-stub.c
41afff9a 18261@cindex @file{i386-stub.c}
104c1213
JM
18262@cindex Intel
18263@cindex i386
18264For Intel 386 and compatible architectures.
18265
18266@item m68k-stub.c
41afff9a 18267@cindex @file{m68k-stub.c}
104c1213
JM
18268@cindex Motorola 680x0
18269@cindex m680x0
18270For Motorola 680x0 architectures.
18271
18272@item sh-stub.c
41afff9a 18273@cindex @file{sh-stub.c}
172c2a43 18274@cindex Renesas
104c1213 18275@cindex SH
172c2a43 18276For Renesas SH architectures.
104c1213
JM
18277
18278@item sparc-stub.c
41afff9a 18279@cindex @file{sparc-stub.c}
104c1213
JM
18280@cindex Sparc
18281For @sc{sparc} architectures.
18282
18283@item sparcl-stub.c
41afff9a 18284@cindex @file{sparcl-stub.c}
104c1213
JM
18285@cindex Fujitsu
18286@cindex SparcLite
18287For Fujitsu @sc{sparclite} architectures.
18288
18289@end table
18290
18291The @file{README} file in the @value{GDBN} distribution may list other
18292recently added stubs.
18293
18294@menu
18295* Stub Contents:: What the stub can do for you
18296* Bootstrapping:: What you must do for the stub
18297* Debug Session:: Putting it all together
104c1213
JM
18298@end menu
18299
6d2ebf8b 18300@node Stub Contents
79a6e687 18301@subsection What the Stub Can Do for You
104c1213
JM
18302
18303@cindex remote serial stub
18304The debugging stub for your architecture supplies these three
18305subroutines:
18306
18307@table @code
18308@item set_debug_traps
4644b6e3 18309@findex set_debug_traps
104c1213
JM
18310@cindex remote serial stub, initialization
18311This routine arranges for @code{handle_exception} to run when your
2fb860fc
PA
18312program stops. You must call this subroutine explicitly in your
18313program's startup code.
104c1213
JM
18314
18315@item handle_exception
4644b6e3 18316@findex handle_exception
104c1213
JM
18317@cindex remote serial stub, main routine
18318This is the central workhorse, but your program never calls it
18319explicitly---the setup code arranges for @code{handle_exception} to
18320run when a trap is triggered.
18321
18322@code{handle_exception} takes control when your program stops during
18323execution (for example, on a breakpoint), and mediates communications
18324with @value{GDBN} on the host machine. This is where the communications
18325protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 18326representative on the target machine. It begins by sending summary
104c1213
JM
18327information on the state of your program, then continues to execute,
18328retrieving and transmitting any information @value{GDBN} needs, until you
18329execute a @value{GDBN} command that makes your program resume; at that point,
18330@code{handle_exception} returns control to your own code on the target
5d161b24 18331machine.
104c1213
JM
18332
18333@item breakpoint
18334@cindex @code{breakpoint} subroutine, remote
18335Use this auxiliary subroutine to make your program contain a
18336breakpoint. Depending on the particular situation, this may be the only
18337way for @value{GDBN} to get control. For instance, if your target
18338machine has some sort of interrupt button, you won't need to call this;
18339pressing the interrupt button transfers control to
18340@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
18341simply receiving characters on the serial port may also trigger a trap;
18342again, in that situation, you don't need to call @code{breakpoint} from
18343your own program---simply running @samp{target remote} from the host
5d161b24 18344@value{GDBN} session gets control.
104c1213
JM
18345
18346Call @code{breakpoint} if none of these is true, or if you simply want
18347to make certain your program stops at a predetermined point for the
18348start of your debugging session.
18349@end table
18350
6d2ebf8b 18351@node Bootstrapping
79a6e687 18352@subsection What You Must Do for the Stub
104c1213
JM
18353
18354@cindex remote stub, support routines
18355The debugging stubs that come with @value{GDBN} are set up for a particular
18356chip architecture, but they have no information about the rest of your
18357debugging target machine.
18358
18359First of all you need to tell the stub how to communicate with the
18360serial port.
18361
18362@table @code
18363@item int getDebugChar()
4644b6e3 18364@findex getDebugChar
104c1213
JM
18365Write this subroutine to read a single character from the serial port.
18366It may be identical to @code{getchar} for your target system; a
18367different name is used to allow you to distinguish the two if you wish.
18368
18369@item void putDebugChar(int)
4644b6e3 18370@findex putDebugChar
104c1213 18371Write this subroutine to write a single character to the serial port.
5d161b24 18372It may be identical to @code{putchar} for your target system; a
104c1213
JM
18373different name is used to allow you to distinguish the two if you wish.
18374@end table
18375
18376@cindex control C, and remote debugging
18377@cindex interrupting remote targets
18378If you want @value{GDBN} to be able to stop your program while it is
18379running, you need to use an interrupt-driven serial driver, and arrange
18380for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
18381character). That is the character which @value{GDBN} uses to tell the
18382remote system to stop.
18383
18384Getting the debugging target to return the proper status to @value{GDBN}
18385probably requires changes to the standard stub; one quick and dirty way
18386is to just execute a breakpoint instruction (the ``dirty'' part is that
18387@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
18388
18389Other routines you need to supply are:
18390
18391@table @code
18392@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
4644b6e3 18393@findex exceptionHandler
104c1213
JM
18394Write this function to install @var{exception_address} in the exception
18395handling tables. You need to do this because the stub does not have any
18396way of knowing what the exception handling tables on your target system
18397are like (for example, the processor's table might be in @sc{rom},
18398containing entries which point to a table in @sc{ram}).
18399@var{exception_number} is the exception number which should be changed;
18400its meaning is architecture-dependent (for example, different numbers
18401might represent divide by zero, misaligned access, etc). When this
18402exception occurs, control should be transferred directly to
18403@var{exception_address}, and the processor state (stack, registers,
18404and so on) should be just as it is when a processor exception occurs. So if
18405you want to use a jump instruction to reach @var{exception_address}, it
18406should be a simple jump, not a jump to subroutine.
18407
18408For the 386, @var{exception_address} should be installed as an interrupt
18409gate so that interrupts are masked while the handler runs. The gate
18410should be at privilege level 0 (the most privileged level). The
18411@sc{sparc} and 68k stubs are able to mask interrupts themselves without
18412help from @code{exceptionHandler}.
18413
18414@item void flush_i_cache()
4644b6e3 18415@findex flush_i_cache
d4f3574e 18416On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
18417instruction cache, if any, on your target machine. If there is no
18418instruction cache, this subroutine may be a no-op.
18419
18420On target machines that have instruction caches, @value{GDBN} requires this
18421function to make certain that the state of your program is stable.
18422@end table
18423
18424@noindent
18425You must also make sure this library routine is available:
18426
18427@table @code
18428@item void *memset(void *, int, int)
4644b6e3 18429@findex memset
104c1213
JM
18430This is the standard library function @code{memset} that sets an area of
18431memory to a known value. If you have one of the free versions of
18432@code{libc.a}, @code{memset} can be found there; otherwise, you must
18433either obtain it from your hardware manufacturer, or write your own.
18434@end table
18435
18436If you do not use the GNU C compiler, you may need other standard
18437library subroutines as well; this varies from one stub to another,
18438but in general the stubs are likely to use any of the common library
e22ea452 18439subroutines which @code{@value{NGCC}} generates as inline code.
104c1213
JM
18440
18441
6d2ebf8b 18442@node Debug Session
79a6e687 18443@subsection Putting it All Together
104c1213
JM
18444
18445@cindex remote serial debugging summary
18446In summary, when your program is ready to debug, you must follow these
18447steps.
18448
18449@enumerate
18450@item
6d2ebf8b 18451Make sure you have defined the supporting low-level routines
79a6e687 18452(@pxref{Bootstrapping,,What You Must Do for the Stub}):
104c1213
JM
18453@display
18454@code{getDebugChar}, @code{putDebugChar},
18455@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
18456@end display
18457
18458@item
2fb860fc
PA
18459Insert these lines in your program's startup code, before the main
18460procedure is called:
104c1213 18461
474c8240 18462@smallexample
104c1213
JM
18463set_debug_traps();
18464breakpoint();
474c8240 18465@end smallexample
104c1213 18466
2fb860fc
PA
18467On some machines, when a breakpoint trap is raised, the hardware
18468automatically makes the PC point to the instruction after the
18469breakpoint. If your machine doesn't do that, you may need to adjust
18470@code{handle_exception} to arrange for it to return to the instruction
18471after the breakpoint on this first invocation, so that your program
18472doesn't keep hitting the initial breakpoint instead of making
18473progress.
18474
104c1213
JM
18475@item
18476For the 680x0 stub only, you need to provide a variable called
18477@code{exceptionHook}. Normally you just use:
18478
474c8240 18479@smallexample
104c1213 18480void (*exceptionHook)() = 0;
474c8240 18481@end smallexample
104c1213 18482
d4f3574e 18483@noindent
104c1213 18484but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 18485function in your program, that function is called when
104c1213
JM
18486@code{@value{GDBN}} continues after stopping on a trap (for example, bus
18487error). The function indicated by @code{exceptionHook} is called with
18488one parameter: an @code{int} which is the exception number.
18489
18490@item
18491Compile and link together: your program, the @value{GDBN} debugging stub for
18492your target architecture, and the supporting subroutines.
18493
18494@item
18495Make sure you have a serial connection between your target machine and
18496the @value{GDBN} host, and identify the serial port on the host.
18497
18498@item
18499@c The "remote" target now provides a `load' command, so we should
18500@c document that. FIXME.
18501Download your program to your target machine (or get it there by
18502whatever means the manufacturer provides), and start it.
18503
18504@item
07f31aa6 18505Start @value{GDBN} on the host, and connect to the target
79a6e687 18506(@pxref{Connecting,,Connecting to a Remote Target}).
9db8d71f 18507
104c1213
JM
18508@end enumerate
18509
8e04817f
AC
18510@node Configurations
18511@chapter Configuration-Specific Information
104c1213 18512
8e04817f
AC
18513While nearly all @value{GDBN} commands are available for all native and
18514cross versions of the debugger, there are some exceptions. This chapter
18515describes things that are only available in certain configurations.
104c1213 18516
8e04817f
AC
18517There are three major categories of configurations: native
18518configurations, where the host and target are the same, embedded
18519operating system configurations, which are usually the same for several
18520different processor architectures, and bare embedded processors, which
18521are quite different from each other.
104c1213 18522
8e04817f
AC
18523@menu
18524* Native::
18525* Embedded OS::
18526* Embedded Processors::
18527* Architectures::
18528@end menu
104c1213 18529
8e04817f
AC
18530@node Native
18531@section Native
104c1213 18532
8e04817f
AC
18533This section describes details specific to particular native
18534configurations.
6cf7e474 18535
8e04817f
AC
18536@menu
18537* HP-UX:: HP-UX
7561d450 18538* BSD libkvm Interface:: Debugging BSD kernel memory images
8e04817f
AC
18539* SVR4 Process Information:: SVR4 process information
18540* DJGPP Native:: Features specific to the DJGPP port
78c47bea 18541* Cygwin Native:: Features specific to the Cygwin port
14d6dd68 18542* Hurd Native:: Features specific to @sc{gnu} Hurd
a80b95ba 18543* Darwin:: Features specific to Darwin
8e04817f 18544@end menu
6cf7e474 18545
8e04817f
AC
18546@node HP-UX
18547@subsection HP-UX
104c1213 18548
8e04817f
AC
18549On HP-UX systems, if you refer to a function or variable name that
18550begins with a dollar sign, @value{GDBN} searches for a user or system
18551name first, before it searches for a convenience variable.
104c1213 18552
9c16f35a 18553
7561d450
MK
18554@node BSD libkvm Interface
18555@subsection BSD libkvm Interface
18556
18557@cindex libkvm
18558@cindex kernel memory image
18559@cindex kernel crash dump
18560
18561BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
18562interface that provides a uniform interface for accessing kernel virtual
18563memory images, including live systems and crash dumps. @value{GDBN}
18564uses this interface to allow you to debug live kernels and kernel crash
18565dumps on many native BSD configurations. This is implemented as a
18566special @code{kvm} debugging target. For debugging a live system, load
18567the currently running kernel into @value{GDBN} and connect to the
18568@code{kvm} target:
18569
18570@smallexample
18571(@value{GDBP}) @b{target kvm}
18572@end smallexample
18573
18574For debugging crash dumps, provide the file name of the crash dump as an
18575argument:
18576
18577@smallexample
18578(@value{GDBP}) @b{target kvm /var/crash/bsd.0}
18579@end smallexample
18580
18581Once connected to the @code{kvm} target, the following commands are
18582available:
18583
18584@table @code
18585@kindex kvm
18586@item kvm pcb
721c2651 18587Set current context from the @dfn{Process Control Block} (PCB) address.
7561d450
MK
18588
18589@item kvm proc
18590Set current context from proc address. This command isn't available on
18591modern FreeBSD systems.
18592@end table
18593
8e04817f 18594@node SVR4 Process Information
79a6e687 18595@subsection SVR4 Process Information
60bf7e09
EZ
18596@cindex /proc
18597@cindex examine process image
18598@cindex process info via @file{/proc}
104c1213 18599
60bf7e09
EZ
18600Many versions of SVR4 and compatible systems provide a facility called
18601@samp{/proc} that can be used to examine the image of a running
18602process using file-system subroutines. If @value{GDBN} is configured
18603for an operating system with this facility, the command @code{info
18604proc} is available to report information about the process running
18605your program, or about any process running on your system. @code{info
18606proc} works only on SVR4 systems that include the @code{procfs} code.
18607This includes, as of this writing, @sc{gnu}/Linux, OSF/1 (Digital
18608Unix), Solaris, Irix, and Unixware, but not HP-UX, for example.
104c1213 18609
8e04817f
AC
18610@table @code
18611@kindex info proc
60bf7e09 18612@cindex process ID
8e04817f 18613@item info proc
60bf7e09
EZ
18614@itemx info proc @var{process-id}
18615Summarize available information about any running process. If a
18616process ID is specified by @var{process-id}, display information about
18617that process; otherwise display information about the program being
18618debugged. The summary includes the debugged process ID, the command
18619line used to invoke it, its current working directory, and its
18620executable file's absolute file name.
18621
18622On some systems, @var{process-id} can be of the form
18623@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID
18624within a process. If the optional @var{pid} part is missing, it means
18625a thread from the process being debugged (the leading @samp{/} still
18626needs to be present, or else @value{GDBN} will interpret the number as
18627a process ID rather than a thread ID).
6cf7e474 18628
8e04817f 18629@item info proc mappings
60bf7e09
EZ
18630@cindex memory address space mappings
18631Report the memory address space ranges accessible in the program, with
18632information on whether the process has read, write, or execute access
18633rights to each range. On @sc{gnu}/Linux systems, each memory range
18634includes the object file which is mapped to that range, instead of the
18635memory access rights to that range.
18636
18637@item info proc stat
18638@itemx info proc status
18639@cindex process detailed status information
18640These subcommands are specific to @sc{gnu}/Linux systems. They show
18641the process-related information, including the user ID and group ID;
18642how many threads are there in the process; its virtual memory usage;
18643the signals that are pending, blocked, and ignored; its TTY; its
18644consumption of system and user time; its stack size; its @samp{nice}
2eecc4ab 18645value; etc. For more information, see the @samp{proc} man page
60bf7e09
EZ
18646(type @kbd{man 5 proc} from your shell prompt).
18647
18648@item info proc all
18649Show all the information about the process described under all of the
18650above @code{info proc} subcommands.
18651
8e04817f
AC
18652@ignore
18653@comment These sub-options of 'info proc' were not included when
18654@comment procfs.c was re-written. Keep their descriptions around
18655@comment against the day when someone finds the time to put them back in.
18656@kindex info proc times
18657@item info proc times
18658Starting time, user CPU time, and system CPU time for your program and
18659its children.
6cf7e474 18660
8e04817f
AC
18661@kindex info proc id
18662@item info proc id
18663Report on the process IDs related to your program: its own process ID,
18664the ID of its parent, the process group ID, and the session ID.
8e04817f 18665@end ignore
721c2651
EZ
18666
18667@item set procfs-trace
18668@kindex set procfs-trace
18669@cindex @code{procfs} API calls
18670This command enables and disables tracing of @code{procfs} API calls.
18671
18672@item show procfs-trace
18673@kindex show procfs-trace
18674Show the current state of @code{procfs} API call tracing.
18675
18676@item set procfs-file @var{file}
18677@kindex set procfs-file
18678Tell @value{GDBN} to write @code{procfs} API trace to the named
18679@var{file}. @value{GDBN} appends the trace info to the previous
18680contents of the file. The default is to display the trace on the
18681standard output.
18682
18683@item show procfs-file
18684@kindex show procfs-file
18685Show the file to which @code{procfs} API trace is written.
18686
18687@item proc-trace-entry
18688@itemx proc-trace-exit
18689@itemx proc-untrace-entry
18690@itemx proc-untrace-exit
18691@kindex proc-trace-entry
18692@kindex proc-trace-exit
18693@kindex proc-untrace-entry
18694@kindex proc-untrace-exit
18695These commands enable and disable tracing of entries into and exits
18696from the @code{syscall} interface.
18697
18698@item info pidlist
18699@kindex info pidlist
18700@cindex process list, QNX Neutrino
18701For QNX Neutrino only, this command displays the list of all the
18702processes and all the threads within each process.
18703
18704@item info meminfo
18705@kindex info meminfo
18706@cindex mapinfo list, QNX Neutrino
18707For QNX Neutrino only, this command displays the list of all mapinfos.
8e04817f 18708@end table
104c1213 18709
8e04817f
AC
18710@node DJGPP Native
18711@subsection Features for Debugging @sc{djgpp} Programs
18712@cindex @sc{djgpp} debugging
18713@cindex native @sc{djgpp} debugging
18714@cindex MS-DOS-specific commands
104c1213 18715
514c4d71
EZ
18716@cindex DPMI
18717@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and
8e04817f
AC
18718MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
18719that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
18720top of real-mode DOS systems and their emulations.
104c1213 18721
8e04817f
AC
18722@value{GDBN} supports native debugging of @sc{djgpp} programs, and
18723defines a few commands specific to the @sc{djgpp} port. This
18724subsection describes those commands.
104c1213 18725
8e04817f
AC
18726@table @code
18727@kindex info dos
18728@item info dos
18729This is a prefix of @sc{djgpp}-specific commands which print
18730information about the target system and important OS structures.
f1251bdd 18731
8e04817f
AC
18732@kindex sysinfo
18733@cindex MS-DOS system info
18734@cindex free memory information (MS-DOS)
18735@item info dos sysinfo
18736This command displays assorted information about the underlying
18737platform: the CPU type and features, the OS version and flavor, the
18738DPMI version, and the available conventional and DPMI memory.
104c1213 18739
8e04817f
AC
18740@cindex GDT
18741@cindex LDT
18742@cindex IDT
18743@cindex segment descriptor tables
18744@cindex descriptor tables display
18745@item info dos gdt
18746@itemx info dos ldt
18747@itemx info dos idt
18748These 3 commands display entries from, respectively, Global, Local,
18749and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
18750tables are data structures which store a descriptor for each segment
18751that is currently in use. The segment's selector is an index into a
18752descriptor table; the table entry for that index holds the
18753descriptor's base address and limit, and its attributes and access
18754rights.
104c1213 18755
8e04817f
AC
18756A typical @sc{djgpp} program uses 3 segments: a code segment, a data
18757segment (used for both data and the stack), and a DOS segment (which
18758allows access to DOS/BIOS data structures and absolute addresses in
18759conventional memory). However, the DPMI host will usually define
18760additional segments in order to support the DPMI environment.
d4f3574e 18761
8e04817f
AC
18762@cindex garbled pointers
18763These commands allow to display entries from the descriptor tables.
18764Without an argument, all entries from the specified table are
18765displayed. An argument, which should be an integer expression, means
18766display a single entry whose index is given by the argument. For
18767example, here's a convenient way to display information about the
18768debugged program's data segment:
104c1213 18769
8e04817f
AC
18770@smallexample
18771@exdent @code{(@value{GDBP}) info dos ldt $ds}
18772@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
18773@end smallexample
104c1213 18774
8e04817f
AC
18775@noindent
18776This comes in handy when you want to see whether a pointer is outside
18777the data segment's limit (i.e.@: @dfn{garbled}).
104c1213 18778
8e04817f
AC
18779@cindex page tables display (MS-DOS)
18780@item info dos pde
18781@itemx info dos pte
18782These two commands display entries from, respectively, the Page
18783Directory and the Page Tables. Page Directories and Page Tables are
18784data structures which control how virtual memory addresses are mapped
18785into physical addresses. A Page Table includes an entry for every
18786page of memory that is mapped into the program's address space; there
18787may be several Page Tables, each one holding up to 4096 entries. A
18788Page Directory has up to 4096 entries, one each for every Page Table
18789that is currently in use.
104c1213 18790
8e04817f
AC
18791Without an argument, @kbd{info dos pde} displays the entire Page
18792Directory, and @kbd{info dos pte} displays all the entries in all of
18793the Page Tables. An argument, an integer expression, given to the
18794@kbd{info dos pde} command means display only that entry from the Page
18795Directory table. An argument given to the @kbd{info dos pte} command
18796means display entries from a single Page Table, the one pointed to by
18797the specified entry in the Page Directory.
104c1213 18798
8e04817f
AC
18799@cindex direct memory access (DMA) on MS-DOS
18800These commands are useful when your program uses @dfn{DMA} (Direct
18801Memory Access), which needs physical addresses to program the DMA
18802controller.
104c1213 18803
8e04817f 18804These commands are supported only with some DPMI servers.
104c1213 18805
8e04817f
AC
18806@cindex physical address from linear address
18807@item info dos address-pte @var{addr}
18808This command displays the Page Table entry for a specified linear
514c4d71
EZ
18809address. The argument @var{addr} is a linear address which should
18810already have the appropriate segment's base address added to it,
18811because this command accepts addresses which may belong to @emph{any}
18812segment. For example, here's how to display the Page Table entry for
18813the page where a variable @code{i} is stored:
104c1213 18814
b383017d 18815@smallexample
8e04817f
AC
18816@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
18817@exdent @code{Page Table entry for address 0x11a00d30:}
b383017d 18818@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
8e04817f 18819@end smallexample
104c1213 18820
8e04817f
AC
18821@noindent
18822This says that @code{i} is stored at offset @code{0xd30} from the page
514c4d71 18823whose physical base address is @code{0x02698000}, and shows all the
8e04817f 18824attributes of that page.
104c1213 18825
8e04817f
AC
18826Note that you must cast the addresses of variables to a @code{char *},
18827since otherwise the value of @code{__djgpp_base_address}, the base
18828address of all variables and functions in a @sc{djgpp} program, will
18829be added using the rules of C pointer arithmetics: if @code{i} is
18830declared an @code{int}, @value{GDBN} will add 4 times the value of
18831@code{__djgpp_base_address} to the address of @code{i}.
104c1213 18832
8e04817f
AC
18833Here's another example, it displays the Page Table entry for the
18834transfer buffer:
104c1213 18835
8e04817f
AC
18836@smallexample
18837@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
18838@exdent @code{Page Table entry for address 0x29110:}
18839@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
18840@end smallexample
104c1213 18841
8e04817f
AC
18842@noindent
18843(The @code{+ 3} offset is because the transfer buffer's address is the
514c4d71
EZ
188443rd member of the @code{_go32_info_block} structure.) The output
18845clearly shows that this DPMI server maps the addresses in conventional
18846memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and
18847linear (@code{0x29110}) addresses are identical.
104c1213 18848
8e04817f
AC
18849This command is supported only with some DPMI servers.
18850@end table
104c1213 18851
c45da7e6 18852@cindex DOS serial data link, remote debugging
a8f24a35
EZ
18853In addition to native debugging, the DJGPP port supports remote
18854debugging via a serial data link. The following commands are specific
18855to remote serial debugging in the DJGPP port of @value{GDBN}.
18856
18857@table @code
18858@kindex set com1base
18859@kindex set com1irq
18860@kindex set com2base
18861@kindex set com2irq
18862@kindex set com3base
18863@kindex set com3irq
18864@kindex set com4base
18865@kindex set com4irq
18866@item set com1base @var{addr}
18867This command sets the base I/O port address of the @file{COM1} serial
18868port.
18869
18870@item set com1irq @var{irq}
18871This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use
18872for the @file{COM1} serial port.
18873
18874There are similar commands @samp{set com2base}, @samp{set com3irq},
18875etc.@: for setting the port address and the @code{IRQ} lines for the
18876other 3 COM ports.
18877
18878@kindex show com1base
18879@kindex show com1irq
18880@kindex show com2base
18881@kindex show com2irq
18882@kindex show com3base
18883@kindex show com3irq
18884@kindex show com4base
18885@kindex show com4irq
18886The related commands @samp{show com1base}, @samp{show com1irq} etc.@:
18887display the current settings of the base address and the @code{IRQ}
18888lines used by the COM ports.
c45da7e6
EZ
18889
18890@item info serial
18891@kindex info serial
18892@cindex DOS serial port status
18893This command prints the status of the 4 DOS serial ports. For each
18894port, it prints whether it's active or not, its I/O base address and
18895IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the
18896counts of various errors encountered so far.
a8f24a35
EZ
18897@end table
18898
18899
78c47bea 18900@node Cygwin Native
79a6e687 18901@subsection Features for Debugging MS Windows PE Executables
78c47bea
PM
18902@cindex MS Windows debugging
18903@cindex native Cygwin debugging
18904@cindex Cygwin-specific commands
18905
be448670 18906@value{GDBN} supports native debugging of MS Windows programs, including
cbb8f428
EZ
18907DLLs with and without symbolic debugging information.
18908
18909@cindex Ctrl-BREAK, MS-Windows
18910@cindex interrupt debuggee on MS-Windows
18911MS-Windows programs that call @code{SetConsoleMode} to switch off the
18912special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted
18913by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows
18914supports @kbd{C-@key{BREAK}} as an alternative interrupt key
18915sequence, which can be used to interrupt the debuggee even if it
18916ignores @kbd{C-c}.
18917
18918There are various additional Cygwin-specific commands, described in
18919this section. Working with DLLs that have no debugging symbols is
18920described in @ref{Non-debug DLL Symbols}.
78c47bea
PM
18921
18922@table @code
18923@kindex info w32
18924@item info w32
db2e3e2e 18925This is a prefix of MS Windows-specific commands which print
78c47bea
PM
18926information about the target system and important OS structures.
18927
18928@item info w32 selector
18929This command displays information returned by
18930the Win32 API @code{GetThreadSelectorEntry} function.
18931It takes an optional argument that is evaluated to
18932a long value to give the information about this given selector.
18933Without argument, this command displays information
d3e8051b 18934about the six segment registers.
78c47bea 18935
711e434b
PM
18936@item info w32 thread-information-block
18937This command displays thread specific information stored in the
18938Thread Information Block (readable on the X86 CPU family using @code{$fs}
18939selector for 32-bit programs and @code{$gs} for 64-bit programs).
18940
78c47bea
PM
18941@kindex info dll
18942@item info dll
db2e3e2e 18943This is a Cygwin-specific alias of @code{info shared}.
78c47bea
PM
18944
18945@kindex dll-symbols
18946@item dll-symbols
18947This command loads symbols from a dll similarly to
18948add-sym command but without the need to specify a base address.
18949
be90c084 18950@kindex set cygwin-exceptions
e16b02ee
EZ
18951@cindex debugging the Cygwin DLL
18952@cindex Cygwin DLL, debugging
be90c084 18953@item set cygwin-exceptions @var{mode}
e16b02ee
EZ
18954If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that
18955happen inside the Cygwin DLL. If @var{mode} is @code{off},
18956@value{GDBN} will delay recognition of exceptions, and may ignore some
18957exceptions which seem to be caused by internal Cygwin DLL
18958``bookkeeping''. This option is meant primarily for debugging the
18959Cygwin DLL itself; the default value is @code{off} to avoid annoying
18960@value{GDBN} users with false @code{SIGSEGV} signals.
be90c084
CF
18961
18962@kindex show cygwin-exceptions
18963@item show cygwin-exceptions
e16b02ee
EZ
18964Displays whether @value{GDBN} will break on exceptions that happen
18965inside the Cygwin DLL itself.
be90c084 18966
b383017d 18967@kindex set new-console
78c47bea 18968@item set new-console @var{mode}
b383017d 18969If @var{mode} is @code{on} the debuggee will
78c47bea 18970be started in a new console on next start.
e03e5e7b 18971If @var{mode} is @code{off}, the debuggee will
78c47bea
PM
18972be started in the same console as the debugger.
18973
18974@kindex show new-console
18975@item show new-console
18976Displays whether a new console is used
18977when the debuggee is started.
18978
18979@kindex set new-group
18980@item set new-group @var{mode}
18981This boolean value controls whether the debuggee should
18982start a new group or stay in the same group as the debugger.
18983This affects the way the Windows OS handles
c8aa23ab 18984@samp{Ctrl-C}.
78c47bea
PM
18985
18986@kindex show new-group
18987@item show new-group
18988Displays current value of new-group boolean.
18989
18990@kindex set debugevents
18991@item set debugevents
219eec71
EZ
18992This boolean value adds debug output concerning kernel events related
18993to the debuggee seen by the debugger. This includes events that
18994signal thread and process creation and exit, DLL loading and
18995unloading, console interrupts, and debugging messages produced by the
18996Windows @code{OutputDebugString} API call.
78c47bea
PM
18997
18998@kindex set debugexec
18999@item set debugexec
b383017d 19000This boolean value adds debug output concerning execute events
219eec71 19001(such as resume thread) seen by the debugger.
78c47bea
PM
19002
19003@kindex set debugexceptions
19004@item set debugexceptions
219eec71
EZ
19005This boolean value adds debug output concerning exceptions in the
19006debuggee seen by the debugger.
78c47bea
PM
19007
19008@kindex set debugmemory
19009@item set debugmemory
219eec71
EZ
19010This boolean value adds debug output concerning debuggee memory reads
19011and writes by the debugger.
78c47bea
PM
19012
19013@kindex set shell
19014@item set shell
19015This boolean values specifies whether the debuggee is called
19016via a shell or directly (default value is on).
19017
19018@kindex show shell
19019@item show shell
19020Displays if the debuggee will be started with a shell.
19021
19022@end table
19023
be448670 19024@menu
79a6e687 19025* Non-debug DLL Symbols:: Support for DLLs without debugging symbols
be448670
CF
19026@end menu
19027
79a6e687
BW
19028@node Non-debug DLL Symbols
19029@subsubsection Support for DLLs without Debugging Symbols
be448670
CF
19030@cindex DLLs with no debugging symbols
19031@cindex Minimal symbols and DLLs
19032
19033Very often on windows, some of the DLLs that your program relies on do
19034not include symbolic debugging information (for example,
db2e3e2e 19035@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
be448670 19036symbols in a DLL, it relies on the minimal amount of symbolic
db2e3e2e 19037information contained in the DLL's export table. This section
be448670
CF
19038describes working with such symbols, known internally to @value{GDBN} as
19039``minimal symbols''.
19040
19041Note that before the debugged program has started execution, no DLLs
db2e3e2e 19042will have been loaded. The easiest way around this problem is simply to
be448670 19043start the program --- either by setting a breakpoint or letting the
db2e3e2e 19044program run once to completion. It is also possible to force
be448670 19045@value{GDBN} to load a particular DLL before starting the executable ---
12c27660 19046see the shared library information in @ref{Files}, or the
db2e3e2e 19047@code{dll-symbols} command in @ref{Cygwin Native}. Currently,
be448670
CF
19048explicitly loading symbols from a DLL with no debugging information will
19049cause the symbol names to be duplicated in @value{GDBN}'s lookup table,
19050which may adversely affect symbol lookup performance.
19051
79a6e687 19052@subsubsection DLL Name Prefixes
be448670
CF
19053
19054In keeping with the naming conventions used by the Microsoft debugging
19055tools, DLL export symbols are made available with a prefix based on the
19056DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
19057also entered into the symbol table, so @code{CreateFileA} is often
99e008fe 19058sufficient. In some cases there will be name clashes within a program
be448670
CF
19059(particularly if the executable itself includes full debugging symbols)
19060necessitating the use of the fully qualified name when referring to the
99e008fe 19061contents of the DLL. Use single-quotes around the name to avoid the
be448670
CF
19062exclamation mark (``!'') being interpreted as a language operator.
19063
19064Note that the internal name of the DLL may be all upper-case, even
99e008fe 19065though the file name of the DLL is lower-case, or vice-versa. Since
be448670
CF
19066symbols within @value{GDBN} are @emph{case-sensitive} this may cause
19067some confusion. If in doubt, try the @code{info functions} and
0869d01b
NR
19068@code{info variables} commands or even @code{maint print msymbols}
19069(@pxref{Symbols}). Here's an example:
be448670
CF
19070
19071@smallexample
f7dc1244 19072(@value{GDBP}) info function CreateFileA
be448670
CF
19073All functions matching regular expression "CreateFileA":
19074
19075Non-debugging symbols:
190760x77e885f4 CreateFileA
190770x77e885f4 KERNEL32!CreateFileA
19078@end smallexample
19079
19080@smallexample
f7dc1244 19081(@value{GDBP}) info function !
be448670
CF
19082All functions matching regular expression "!":
19083
19084Non-debugging symbols:
190850x6100114c cygwin1!__assert
190860x61004034 cygwin1!_dll_crt0@@0
190870x61004240 cygwin1!dll_crt0(per_process *)
19088[etc...]
19089@end smallexample
19090
79a6e687 19091@subsubsection Working with Minimal Symbols
be448670
CF
19092
19093Symbols extracted from a DLL's export table do not contain very much
19094type information. All that @value{GDBN} can do is guess whether a symbol
19095refers to a function or variable depending on the linker section that
19096contains the symbol. Also note that the actual contents of the memory
19097contained in a DLL are not available unless the program is running. This
19098means that you cannot examine the contents of a variable or disassemble
19099a function within a DLL without a running program.
19100
19101Variables are generally treated as pointers and dereferenced
19102automatically. For this reason, it is often necessary to prefix a
19103variable name with the address-of operator (``&'') and provide explicit
19104type information in the command. Here's an example of the type of
19105problem:
19106
19107@smallexample
f7dc1244 19108(@value{GDBP}) print 'cygwin1!__argv'
be448670
CF
19109$1 = 268572168
19110@end smallexample
19111
19112@smallexample
f7dc1244 19113(@value{GDBP}) x 'cygwin1!__argv'
be448670
CF
191140x10021610: "\230y\""
19115@end smallexample
19116
19117And two possible solutions:
19118
19119@smallexample
f7dc1244 19120(@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
be448670
CF
19121$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
19122@end smallexample
19123
19124@smallexample
f7dc1244 19125(@value{GDBP}) x/2x &'cygwin1!__argv'
be448670 191260x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
f7dc1244 19127(@value{GDBP}) x/x 0x10021608
be448670 191280x10021608: 0x0022fd98
f7dc1244 19129(@value{GDBP}) x/s 0x0022fd98
be448670
CF
191300x22fd98: "/cygdrive/c/mydirectory/myprogram"
19131@end smallexample
19132
19133Setting a break point within a DLL is possible even before the program
19134starts execution. However, under these circumstances, @value{GDBN} can't
19135examine the initial instructions of the function in order to skip the
19136function's frame set-up code. You can work around this by using ``*&''
19137to set the breakpoint at a raw memory address:
19138
19139@smallexample
f7dc1244 19140(@value{GDBP}) break *&'python22!PyOS_Readline'
be448670
CF
19141Breakpoint 1 at 0x1e04eff0
19142@end smallexample
19143
19144The author of these extensions is not entirely convinced that setting a
19145break point within a shared DLL like @file{kernel32.dll} is completely
19146safe.
19147
14d6dd68 19148@node Hurd Native
79a6e687 19149@subsection Commands Specific to @sc{gnu} Hurd Systems
14d6dd68
EZ
19150@cindex @sc{gnu} Hurd debugging
19151
19152This subsection describes @value{GDBN} commands specific to the
19153@sc{gnu} Hurd native debugging.
19154
19155@table @code
19156@item set signals
19157@itemx set sigs
19158@kindex set signals@r{, Hurd command}
19159@kindex set sigs@r{, Hurd command}
19160This command toggles the state of inferior signal interception by
19161@value{GDBN}. Mach exceptions, such as breakpoint traps, are not
19162affected by this command. @code{sigs} is a shorthand alias for
19163@code{signals}.
19164
19165@item show signals
19166@itemx show sigs
19167@kindex show signals@r{, Hurd command}
19168@kindex show sigs@r{, Hurd command}
19169Show the current state of intercepting inferior's signals.
19170
19171@item set signal-thread
19172@itemx set sigthread
19173@kindex set signal-thread
19174@kindex set sigthread
19175This command tells @value{GDBN} which thread is the @code{libc} signal
19176thread. That thread is run when a signal is delivered to a running
19177process. @code{set sigthread} is the shorthand alias of @code{set
19178signal-thread}.
19179
19180@item show signal-thread
19181@itemx show sigthread
19182@kindex show signal-thread
19183@kindex show sigthread
19184These two commands show which thread will run when the inferior is
19185delivered a signal.
19186
19187@item set stopped
19188@kindex set stopped@r{, Hurd command}
19189This commands tells @value{GDBN} that the inferior process is stopped,
19190as with the @code{SIGSTOP} signal. The stopped process can be
19191continued by delivering a signal to it.
19192
19193@item show stopped
19194@kindex show stopped@r{, Hurd command}
19195This command shows whether @value{GDBN} thinks the debuggee is
19196stopped.
19197
19198@item set exceptions
19199@kindex set exceptions@r{, Hurd command}
19200Use this command to turn off trapping of exceptions in the inferior.
19201When exception trapping is off, neither breakpoints nor
19202single-stepping will work. To restore the default, set exception
19203trapping on.
19204
19205@item show exceptions
19206@kindex show exceptions@r{, Hurd command}
19207Show the current state of trapping exceptions in the inferior.
19208
19209@item set task pause
19210@kindex set task@r{, Hurd commands}
19211@cindex task attributes (@sc{gnu} Hurd)
19212@cindex pause current task (@sc{gnu} Hurd)
19213This command toggles task suspension when @value{GDBN} has control.
19214Setting it to on takes effect immediately, and the task is suspended
19215whenever @value{GDBN} gets control. Setting it to off will take
19216effect the next time the inferior is continued. If this option is set
19217to off, you can use @code{set thread default pause on} or @code{set
19218thread pause on} (see below) to pause individual threads.
19219
19220@item show task pause
19221@kindex show task@r{, Hurd commands}
19222Show the current state of task suspension.
19223
19224@item set task detach-suspend-count
19225@cindex task suspend count
19226@cindex detach from task, @sc{gnu} Hurd
19227This command sets the suspend count the task will be left with when
19228@value{GDBN} detaches from it.
19229
19230@item show task detach-suspend-count
19231Show the suspend count the task will be left with when detaching.
19232
19233@item set task exception-port
19234@itemx set task excp
19235@cindex task exception port, @sc{gnu} Hurd
19236This command sets the task exception port to which @value{GDBN} will
19237forward exceptions. The argument should be the value of the @dfn{send
19238rights} of the task. @code{set task excp} is a shorthand alias.
19239
19240@item set noninvasive
19241@cindex noninvasive task options
19242This command switches @value{GDBN} to a mode that is the least
19243invasive as far as interfering with the inferior is concerned. This
19244is the same as using @code{set task pause}, @code{set exceptions}, and
19245@code{set signals} to values opposite to the defaults.
19246
19247@item info send-rights
19248@itemx info receive-rights
19249@itemx info port-rights
19250@itemx info port-sets
19251@itemx info dead-names
19252@itemx info ports
19253@itemx info psets
19254@cindex send rights, @sc{gnu} Hurd
19255@cindex receive rights, @sc{gnu} Hurd
19256@cindex port rights, @sc{gnu} Hurd
19257@cindex port sets, @sc{gnu} Hurd
19258@cindex dead names, @sc{gnu} Hurd
19259These commands display information about, respectively, send rights,
19260receive rights, port rights, port sets, and dead names of a task.
19261There are also shorthand aliases: @code{info ports} for @code{info
19262port-rights} and @code{info psets} for @code{info port-sets}.
19263
19264@item set thread pause
19265@kindex set thread@r{, Hurd command}
19266@cindex thread properties, @sc{gnu} Hurd
19267@cindex pause current thread (@sc{gnu} Hurd)
19268This command toggles current thread suspension when @value{GDBN} has
19269control. Setting it to on takes effect immediately, and the current
19270thread is suspended whenever @value{GDBN} gets control. Setting it to
19271off will take effect the next time the inferior is continued.
19272Normally, this command has no effect, since when @value{GDBN} has
19273control, the whole task is suspended. However, if you used @code{set
19274task pause off} (see above), this command comes in handy to suspend
19275only the current thread.
19276
19277@item show thread pause
19278@kindex show thread@r{, Hurd command}
19279This command shows the state of current thread suspension.
19280
19281@item set thread run
d3e8051b 19282This command sets whether the current thread is allowed to run.
14d6dd68
EZ
19283
19284@item show thread run
19285Show whether the current thread is allowed to run.
19286
19287@item set thread detach-suspend-count
19288@cindex thread suspend count, @sc{gnu} Hurd
19289@cindex detach from thread, @sc{gnu} Hurd
19290This command sets the suspend count @value{GDBN} will leave on a
19291thread when detaching. This number is relative to the suspend count
19292found by @value{GDBN} when it notices the thread; use @code{set thread
19293takeover-suspend-count} to force it to an absolute value.
19294
19295@item show thread detach-suspend-count
19296Show the suspend count @value{GDBN} will leave on the thread when
19297detaching.
19298
19299@item set thread exception-port
19300@itemx set thread excp
19301Set the thread exception port to which to forward exceptions. This
19302overrides the port set by @code{set task exception-port} (see above).
19303@code{set thread excp} is the shorthand alias.
19304
19305@item set thread takeover-suspend-count
19306Normally, @value{GDBN}'s thread suspend counts are relative to the
19307value @value{GDBN} finds when it notices each thread. This command
19308changes the suspend counts to be absolute instead.
19309
19310@item set thread default
19311@itemx show thread default
19312@cindex thread default settings, @sc{gnu} Hurd
19313Each of the above @code{set thread} commands has a @code{set thread
19314default} counterpart (e.g., @code{set thread default pause}, @code{set
19315thread default exception-port}, etc.). The @code{thread default}
19316variety of commands sets the default thread properties for all
19317threads; you can then change the properties of individual threads with
19318the non-default commands.
19319@end table
19320
a80b95ba
TG
19321@node Darwin
19322@subsection Darwin
19323@cindex Darwin
19324
19325@value{GDBN} provides the following commands specific to the Darwin target:
19326
19327@table @code
19328@item set debug darwin @var{num}
19329@kindex set debug darwin
19330When set to a non zero value, enables debugging messages specific to
19331the Darwin support. Higher values produce more verbose output.
19332
19333@item show debug darwin
19334@kindex show debug darwin
19335Show the current state of Darwin messages.
19336
19337@item set debug mach-o @var{num}
19338@kindex set debug mach-o
19339When set to a non zero value, enables debugging messages while
19340@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the
19341file format used on Darwin for object and executable files.) Higher
19342values produce more verbose output. This is a command to diagnose
19343problems internal to @value{GDBN} and should not be needed in normal
19344usage.
19345
19346@item show debug mach-o
19347@kindex show debug mach-o
19348Show the current state of Mach-O file messages.
19349
19350@item set mach-exceptions on
19351@itemx set mach-exceptions off
19352@kindex set mach-exceptions
19353On Darwin, faults are first reported as a Mach exception and are then
19354mapped to a Posix signal. Use this command to turn on trapping of
19355Mach exceptions in the inferior. This might be sometimes useful to
19356better understand the cause of a fault. The default is off.
19357
19358@item show mach-exceptions
19359@kindex show mach-exceptions
19360Show the current state of exceptions trapping.
19361@end table
19362
a64548ea 19363
8e04817f
AC
19364@node Embedded OS
19365@section Embedded Operating Systems
104c1213 19366
8e04817f
AC
19367This section describes configurations involving the debugging of
19368embedded operating systems that are available for several different
19369architectures.
d4f3574e 19370
8e04817f
AC
19371@menu
19372* VxWorks:: Using @value{GDBN} with VxWorks
19373@end menu
104c1213 19374
8e04817f
AC
19375@value{GDBN} includes the ability to debug programs running on
19376various real-time operating systems.
104c1213 19377
8e04817f
AC
19378@node VxWorks
19379@subsection Using @value{GDBN} with VxWorks
104c1213 19380
8e04817f 19381@cindex VxWorks
104c1213 19382
8e04817f 19383@table @code
104c1213 19384
8e04817f
AC
19385@kindex target vxworks
19386@item target vxworks @var{machinename}
19387A VxWorks system, attached via TCP/IP. The argument @var{machinename}
19388is the target system's machine name or IP address.
104c1213 19389
8e04817f 19390@end table
104c1213 19391
8e04817f
AC
19392On VxWorks, @code{load} links @var{filename} dynamically on the
19393current target system as well as adding its symbols in @value{GDBN}.
104c1213 19394
8e04817f
AC
19395@value{GDBN} enables developers to spawn and debug tasks running on networked
19396VxWorks targets from a Unix host. Already-running tasks spawned from
19397the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
19398both the Unix host and on the VxWorks target. The program
19399@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
19400installed with the name @code{vxgdb}, to distinguish it from a
19401@value{GDBN} for debugging programs on the host itself.)
104c1213 19402
8e04817f
AC
19403@table @code
19404@item VxWorks-timeout @var{args}
19405@kindex vxworks-timeout
19406All VxWorks-based targets now support the option @code{vxworks-timeout}.
19407This option is set by the user, and @var{args} represents the number of
19408seconds @value{GDBN} waits for responses to rpc's. You might use this if
19409your VxWorks target is a slow software simulator or is on the far side
19410of a thin network line.
19411@end table
104c1213 19412
8e04817f
AC
19413The following information on connecting to VxWorks was current when
19414this manual was produced; newer releases of VxWorks may use revised
19415procedures.
104c1213 19416
4644b6e3 19417@findex INCLUDE_RDB
8e04817f
AC
19418To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
19419to include the remote debugging interface routines in the VxWorks
19420library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
19421VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
19422kernel. The resulting kernel contains @file{rdb.a}, and spawns the
19423source debugging task @code{tRdbTask} when VxWorks is booted. For more
19424information on configuring and remaking VxWorks, see the manufacturer's
19425manual.
19426@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
104c1213 19427
8e04817f
AC
19428Once you have included @file{rdb.a} in your VxWorks system image and set
19429your Unix execution search path to find @value{GDBN}, you are ready to
19430run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
19431@code{vxgdb}, depending on your installation).
104c1213 19432
8e04817f 19433@value{GDBN} comes up showing the prompt:
104c1213 19434
474c8240 19435@smallexample
8e04817f 19436(vxgdb)
474c8240 19437@end smallexample
104c1213 19438
8e04817f
AC
19439@menu
19440* VxWorks Connection:: Connecting to VxWorks
19441* VxWorks Download:: VxWorks download
19442* VxWorks Attach:: Running tasks
19443@end menu
104c1213 19444
8e04817f
AC
19445@node VxWorks Connection
19446@subsubsection Connecting to VxWorks
104c1213 19447
8e04817f
AC
19448The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
19449network. To connect to a target whose host name is ``@code{tt}'', type:
104c1213 19450
474c8240 19451@smallexample
8e04817f 19452(vxgdb) target vxworks tt
474c8240 19453@end smallexample
104c1213 19454
8e04817f
AC
19455@need 750
19456@value{GDBN} displays messages like these:
104c1213 19457
8e04817f
AC
19458@smallexample
19459Attaching remote machine across net...
19460Connected to tt.
19461@end smallexample
104c1213 19462
8e04817f
AC
19463@need 1000
19464@value{GDBN} then attempts to read the symbol tables of any object modules
19465loaded into the VxWorks target since it was last booted. @value{GDBN} locates
19466these files by searching the directories listed in the command search
79a6e687 19467path (@pxref{Environment, ,Your Program's Environment}); if it fails
8e04817f 19468to find an object file, it displays a message such as:
5d161b24 19469
474c8240 19470@smallexample
8e04817f 19471prog.o: No such file or directory.
474c8240 19472@end smallexample
104c1213 19473
8e04817f
AC
19474When this happens, add the appropriate directory to the search path with
19475the @value{GDBN} command @code{path}, and execute the @code{target}
19476command again.
104c1213 19477
8e04817f 19478@node VxWorks Download
79a6e687 19479@subsubsection VxWorks Download
104c1213 19480
8e04817f
AC
19481@cindex download to VxWorks
19482If you have connected to the VxWorks target and you want to debug an
19483object that has not yet been loaded, you can use the @value{GDBN}
19484@code{load} command to download a file from Unix to VxWorks
19485incrementally. The object file given as an argument to the @code{load}
19486command is actually opened twice: first by the VxWorks target in order
19487to download the code, then by @value{GDBN} in order to read the symbol
19488table. This can lead to problems if the current working directories on
19489the two systems differ. If both systems have NFS mounted the same
19490filesystems, you can avoid these problems by using absolute paths.
19491Otherwise, it is simplest to set the working directory on both systems
19492to the directory in which the object file resides, and then to reference
19493the file by its name, without any path. For instance, a program
19494@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
19495and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
19496program, type this on VxWorks:
104c1213 19497
474c8240 19498@smallexample
8e04817f 19499-> cd "@var{vxpath}/vw/demo/rdb"
474c8240 19500@end smallexample
104c1213 19501
8e04817f
AC
19502@noindent
19503Then, in @value{GDBN}, type:
104c1213 19504
474c8240 19505@smallexample
8e04817f
AC
19506(vxgdb) cd @var{hostpath}/vw/demo/rdb
19507(vxgdb) load prog.o
474c8240 19508@end smallexample
104c1213 19509
8e04817f 19510@value{GDBN} displays a response similar to this:
104c1213 19511
8e04817f
AC
19512@smallexample
19513Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
19514@end smallexample
104c1213 19515
8e04817f
AC
19516You can also use the @code{load} command to reload an object module
19517after editing and recompiling the corresponding source file. Note that
19518this makes @value{GDBN} delete all currently-defined breakpoints,
19519auto-displays, and convenience variables, and to clear the value
19520history. (This is necessary in order to preserve the integrity of
19521debugger's data structures that reference the target system's symbol
19522table.)
104c1213 19523
8e04817f 19524@node VxWorks Attach
79a6e687 19525@subsubsection Running Tasks
104c1213
JM
19526
19527@cindex running VxWorks tasks
19528You can also attach to an existing task using the @code{attach} command as
19529follows:
19530
474c8240 19531@smallexample
104c1213 19532(vxgdb) attach @var{task}
474c8240 19533@end smallexample
104c1213
JM
19534
19535@noindent
19536where @var{task} is the VxWorks hexadecimal task ID. The task can be running
19537or suspended when you attach to it. Running tasks are suspended at
19538the time of attachment.
19539
6d2ebf8b 19540@node Embedded Processors
104c1213
JM
19541@section Embedded Processors
19542
19543This section goes into details specific to particular embedded
19544configurations.
19545
c45da7e6
EZ
19546@cindex send command to simulator
19547Whenever a specific embedded processor has a simulator, @value{GDBN}
19548allows to send an arbitrary command to the simulator.
19549
19550@table @code
19551@item sim @var{command}
19552@kindex sim@r{, a command}
19553Send an arbitrary @var{command} string to the simulator. Consult the
19554documentation for the specific simulator in use for information about
19555acceptable commands.
19556@end table
19557
7d86b5d5 19558
104c1213 19559@menu
c45da7e6 19560* ARM:: ARM RDI
172c2a43 19561* M32R/D:: Renesas M32R/D
104c1213 19562* M68K:: Motorola M68K
08be9d71 19563* MicroBlaze:: Xilinx MicroBlaze
104c1213 19564* MIPS Embedded:: MIPS Embedded
a37295f9 19565* OpenRISC 1000:: OpenRisc 1000
4acd40f3 19566* PowerPC Embedded:: PowerPC Embedded
984359d2 19567* PA:: HP PA Embedded
104c1213
JM
19568* Sparclet:: Tsqware Sparclet
19569* Sparclite:: Fujitsu Sparclite
104c1213 19570* Z8000:: Zilog Z8000
a64548ea
EZ
19571* AVR:: Atmel AVR
19572* CRIS:: CRIS
19573* Super-H:: Renesas Super-H
104c1213
JM
19574@end menu
19575
6d2ebf8b 19576@node ARM
104c1213 19577@subsection ARM
c45da7e6 19578@cindex ARM RDI
104c1213
JM
19579
19580@table @code
8e04817f
AC
19581@kindex target rdi
19582@item target rdi @var{dev}
19583ARM Angel monitor, via RDI library interface to ADP protocol. You may
19584use this target to communicate with both boards running the Angel
19585monitor, or with the EmbeddedICE JTAG debug device.
19586
19587@kindex target rdp
19588@item target rdp @var{dev}
19589ARM Demon monitor.
19590
19591@end table
19592
e2f4edfd
EZ
19593@value{GDBN} provides the following ARM-specific commands:
19594
19595@table @code
19596@item set arm disassembler
19597@kindex set arm
19598This commands selects from a list of disassembly styles. The
19599@code{"std"} style is the standard style.
19600
19601@item show arm disassembler
19602@kindex show arm
19603Show the current disassembly style.
19604
19605@item set arm apcs32
19606@cindex ARM 32-bit mode
19607This command toggles ARM operation mode between 32-bit and 26-bit.
19608
19609@item show arm apcs32
19610Display the current usage of the ARM 32-bit mode.
19611
19612@item set arm fpu @var{fputype}
19613This command sets the ARM floating-point unit (FPU) type. The
19614argument @var{fputype} can be one of these:
19615
19616@table @code
19617@item auto
19618Determine the FPU type by querying the OS ABI.
19619@item softfpa
19620Software FPU, with mixed-endian doubles on little-endian ARM
19621processors.
19622@item fpa
19623GCC-compiled FPA co-processor.
19624@item softvfp
19625Software FPU with pure-endian doubles.
19626@item vfp
19627VFP co-processor.
19628@end table
19629
19630@item show arm fpu
19631Show the current type of the FPU.
19632
19633@item set arm abi
19634This command forces @value{GDBN} to use the specified ABI.
19635
19636@item show arm abi
19637Show the currently used ABI.
19638
0428b8f5
DJ
19639@item set arm fallback-mode (arm|thumb|auto)
19640@value{GDBN} uses the symbol table, when available, to determine
19641whether instructions are ARM or Thumb. This command controls
19642@value{GDBN}'s default behavior when the symbol table is not
19643available. The default is @samp{auto}, which causes @value{GDBN} to
19644use the current execution mode (from the @code{T} bit in the @code{CPSR}
19645register).
19646
19647@item show arm fallback-mode
19648Show the current fallback instruction mode.
19649
19650@item set arm force-mode (arm|thumb|auto)
19651This command overrides use of the symbol table to determine whether
19652instructions are ARM or Thumb. The default is @samp{auto}, which
19653causes @value{GDBN} to use the symbol table and then the setting
19654of @samp{set arm fallback-mode}.
19655
19656@item show arm force-mode
19657Show the current forced instruction mode.
19658
e2f4edfd
EZ
19659@item set debug arm
19660Toggle whether to display ARM-specific debugging messages from the ARM
19661target support subsystem.
19662
19663@item show debug arm
19664Show whether ARM-specific debugging messages are enabled.
19665@end table
19666
c45da7e6
EZ
19667The following commands are available when an ARM target is debugged
19668using the RDI interface:
19669
19670@table @code
19671@item rdilogfile @r{[}@var{file}@r{]}
19672@kindex rdilogfile
19673@cindex ADP (Angel Debugger Protocol) logging
19674Set the filename for the ADP (Angel Debugger Protocol) packet log.
19675With an argument, sets the log file to the specified @var{file}. With
19676no argument, show the current log file name. The default log file is
19677@file{rdi.log}.
19678
19679@item rdilogenable @r{[}@var{arg}@r{]}
19680@kindex rdilogenable
19681Control logging of ADP packets. With an argument of 1 or @code{"yes"}
19682enables logging, with an argument 0 or @code{"no"} disables it. With
19683no arguments displays the current setting. When logging is enabled,
19684ADP packets exchanged between @value{GDBN} and the RDI target device
19685are logged to a file.
19686
19687@item set rdiromatzero
19688@kindex set rdiromatzero
19689@cindex ROM at zero address, RDI
19690Tell @value{GDBN} whether the target has ROM at address 0. If on,
19691vector catching is disabled, so that zero address can be used. If off
19692(the default), vector catching is enabled. For this command to take
19693effect, it needs to be invoked prior to the @code{target rdi} command.
19694
19695@item show rdiromatzero
19696@kindex show rdiromatzero
19697Show the current setting of ROM at zero address.
19698
19699@item set rdiheartbeat
19700@kindex set rdiheartbeat
19701@cindex RDI heartbeat
19702Enable or disable RDI heartbeat packets. It is not recommended to
19703turn on this option, since it confuses ARM and EPI JTAG interface, as
19704well as the Angel monitor.
19705
19706@item show rdiheartbeat
19707@kindex show rdiheartbeat
19708Show the setting of RDI heartbeat packets.
19709@end table
19710
ee8e71d4
EZ
19711@table @code
19712@item target sim @r{[}@var{simargs}@r{]} @dots{}
19713The @value{GDBN} ARM simulator accepts the following optional arguments.
19714
19715@table @code
19716@item --swi-support=@var{type}
19717Tell the simulator which SWI interfaces to support.
19718@var{type} may be a comma separated list of the following values.
19719The default value is @code{all}.
19720
19721@table @code
19722@item none
19723@item demon
19724@item angel
19725@item redboot
19726@item all
19727@end table
19728@end table
19729@end table
e2f4edfd 19730
8e04817f 19731@node M32R/D
ba04e063 19732@subsection Renesas M32R/D and M32R/SDI
8e04817f
AC
19733
19734@table @code
8e04817f
AC
19735@kindex target m32r
19736@item target m32r @var{dev}
172c2a43 19737Renesas M32R/D ROM monitor.
8e04817f 19738
fb3e19c0
KI
19739@kindex target m32rsdi
19740@item target m32rsdi @var{dev}
19741Renesas M32R SDI server, connected via parallel port to the board.
721c2651
EZ
19742@end table
19743
19744The following @value{GDBN} commands are specific to the M32R monitor:
19745
19746@table @code
19747@item set download-path @var{path}
19748@kindex set download-path
19749@cindex find downloadable @sc{srec} files (M32R)
d3e8051b 19750Set the default path for finding downloadable @sc{srec} files.
721c2651
EZ
19751
19752@item show download-path
19753@kindex show download-path
19754Show the default path for downloadable @sc{srec} files.
fb3e19c0 19755
721c2651
EZ
19756@item set board-address @var{addr}
19757@kindex set board-address
19758@cindex M32-EVA target board address
19759Set the IP address for the M32R-EVA target board.
19760
19761@item show board-address
19762@kindex show board-address
19763Show the current IP address of the target board.
19764
19765@item set server-address @var{addr}
19766@kindex set server-address
19767@cindex download server address (M32R)
19768Set the IP address for the download server, which is the @value{GDBN}'s
19769host machine.
19770
19771@item show server-address
19772@kindex show server-address
19773Display the IP address of the download server.
19774
19775@item upload @r{[}@var{file}@r{]}
19776@kindex upload@r{, M32R}
19777Upload the specified @sc{srec} @var{file} via the monitor's Ethernet
19778upload capability. If no @var{file} argument is given, the current
19779executable file is uploaded.
19780
19781@item tload @r{[}@var{file}@r{]}
19782@kindex tload@r{, M32R}
19783Test the @code{upload} command.
8e04817f
AC
19784@end table
19785
ba04e063
EZ
19786The following commands are available for M32R/SDI:
19787
19788@table @code
19789@item sdireset
19790@kindex sdireset
19791@cindex reset SDI connection, M32R
19792This command resets the SDI connection.
19793
19794@item sdistatus
19795@kindex sdistatus
19796This command shows the SDI connection status.
19797
19798@item debug_chaos
19799@kindex debug_chaos
19800@cindex M32R/Chaos debugging
19801Instructs the remote that M32R/Chaos debugging is to be used.
19802
19803@item use_debug_dma
19804@kindex use_debug_dma
19805Instructs the remote to use the DEBUG_DMA method of accessing memory.
19806
19807@item use_mon_code
19808@kindex use_mon_code
19809Instructs the remote to use the MON_CODE method of accessing memory.
19810
19811@item use_ib_break
19812@kindex use_ib_break
19813Instructs the remote to set breakpoints by IB break.
19814
19815@item use_dbt_break
19816@kindex use_dbt_break
19817Instructs the remote to set breakpoints by DBT.
19818@end table
19819
8e04817f
AC
19820@node M68K
19821@subsection M68k
19822
7ce59000
DJ
19823The Motorola m68k configuration includes ColdFire support, and a
19824target command for the following ROM monitor.
8e04817f
AC
19825
19826@table @code
19827
8e04817f
AC
19828@kindex target dbug
19829@item target dbug @var{dev}
19830dBUG ROM monitor for Motorola ColdFire.
19831
8e04817f
AC
19832@end table
19833
08be9d71
ME
19834@node MicroBlaze
19835@subsection MicroBlaze
19836@cindex Xilinx MicroBlaze
19837@cindex XMD, Xilinx Microprocessor Debugger
19838
19839The MicroBlaze is a soft-core processor supported on various Xilinx
19840FPGAs, such as Spartan or Virtex series. Boards with these processors
19841usually have JTAG ports which connect to a host system running the Xilinx
19842Embedded Development Kit (EDK) or Software Development Kit (SDK).
19843This host system is used to download the configuration bitstream to
19844the target FPGA. The Xilinx Microprocessor Debugger (XMD) program
19845communicates with the target board using the JTAG interface and
19846presents a @code{gdbserver} interface to the board. By default
19847@code{xmd} uses port @code{1234}. (While it is possible to change
19848this default port, it requires the use of undocumented @code{xmd}
19849commands. Contact Xilinx support if you need to do this.)
19850
19851Use these GDB commands to connect to the MicroBlaze target processor.
19852
19853@table @code
19854@item target remote :1234
19855Use this command to connect to the target if you are running @value{GDBN}
19856on the same system as @code{xmd}.
19857
19858@item target remote @var{xmd-host}:1234
19859Use this command to connect to the target if it is connected to @code{xmd}
19860running on a different system named @var{xmd-host}.
19861
19862@item load
19863Use this command to download a program to the MicroBlaze target.
19864
19865@item set debug microblaze @var{n}
19866Enable MicroBlaze-specific debugging messages if non-zero.
19867
19868@item show debug microblaze @var{n}
19869Show MicroBlaze-specific debugging level.
19870@end table
19871
8e04817f 19872@node MIPS Embedded
eb17f351 19873@subsection @acronym{MIPS} Embedded
8e04817f 19874
eb17f351
EZ
19875@cindex @acronym{MIPS} boards
19876@value{GDBN} can use the @acronym{MIPS} remote debugging protocol to talk to a
19877@acronym{MIPS} board attached to a serial line. This is available when
cc30c4bd 19878you configure @value{GDBN} with @samp{--target=mips-elf}.
104c1213 19879
8e04817f
AC
19880@need 1000
19881Use these @value{GDBN} commands to specify the connection to your target board:
104c1213 19882
8e04817f
AC
19883@table @code
19884@item target mips @var{port}
19885@kindex target mips @var{port}
19886To run a program on the board, start up @code{@value{GDBP}} with the
19887name of your program as the argument. To connect to the board, use the
19888command @samp{target mips @var{port}}, where @var{port} is the name of
19889the serial port connected to the board. If the program has not already
19890been downloaded to the board, you may use the @code{load} command to
19891download it. You can then use all the usual @value{GDBN} commands.
104c1213 19892
8e04817f
AC
19893For example, this sequence connects to the target board through a serial
19894port, and loads and runs a program called @var{prog} through the
19895debugger:
104c1213 19896
474c8240 19897@smallexample
8e04817f
AC
19898host$ @value{GDBP} @var{prog}
19899@value{GDBN} is free software and @dots{}
19900(@value{GDBP}) target mips /dev/ttyb
19901(@value{GDBP}) load @var{prog}
19902(@value{GDBP}) run
474c8240 19903@end smallexample
104c1213 19904
8e04817f
AC
19905@item target mips @var{hostname}:@var{portnumber}
19906On some @value{GDBN} host configurations, you can specify a TCP
19907connection (for instance, to a serial line managed by a terminal
19908concentrator) instead of a serial port, using the syntax
19909@samp{@var{hostname}:@var{portnumber}}.
104c1213 19910
8e04817f
AC
19911@item target pmon @var{port}
19912@kindex target pmon @var{port}
19913PMON ROM monitor.
104c1213 19914
8e04817f
AC
19915@item target ddb @var{port}
19916@kindex target ddb @var{port}
19917NEC's DDB variant of PMON for Vr4300.
104c1213 19918
8e04817f
AC
19919@item target lsi @var{port}
19920@kindex target lsi @var{port}
19921LSI variant of PMON.
104c1213 19922
8e04817f
AC
19923@kindex target r3900
19924@item target r3900 @var{dev}
19925Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
104c1213 19926
8e04817f
AC
19927@kindex target array
19928@item target array @var{dev}
19929Array Tech LSI33K RAID controller board.
104c1213 19930
8e04817f 19931@end table
104c1213 19932
104c1213 19933
8e04817f 19934@noindent
eb17f351 19935@value{GDBN} also supports these special commands for @acronym{MIPS} targets:
104c1213 19936
8e04817f 19937@table @code
8e04817f
AC
19938@item set mipsfpu double
19939@itemx set mipsfpu single
19940@itemx set mipsfpu none
a64548ea 19941@itemx set mipsfpu auto
8e04817f
AC
19942@itemx show mipsfpu
19943@kindex set mipsfpu
19944@kindex show mipsfpu
eb17f351
EZ
19945@cindex @acronym{MIPS} remote floating point
19946@cindex floating point, @acronym{MIPS} remote
19947If your target board does not support the @acronym{MIPS} floating point
8e04817f
AC
19948coprocessor, you should use the command @samp{set mipsfpu none} (if you
19949need this, you may wish to put the command in your @value{GDBN} init
19950file). This tells @value{GDBN} how to find the return value of
19951functions which return floating point values. It also allows
19952@value{GDBN} to avoid saving the floating point registers when calling
19953functions on the board. If you are using a floating point coprocessor
19954with only single precision floating point support, as on the @sc{r4650}
19955processor, use the command @samp{set mipsfpu single}. The default
19956double precision floating point coprocessor may be selected using
19957@samp{set mipsfpu double}.
104c1213 19958
8e04817f
AC
19959In previous versions the only choices were double precision or no
19960floating point, so @samp{set mipsfpu on} will select double precision
19961and @samp{set mipsfpu off} will select no floating point.
104c1213 19962
8e04817f
AC
19963As usual, you can inquire about the @code{mipsfpu} variable with
19964@samp{show mipsfpu}.
104c1213 19965
8e04817f
AC
19966@item set timeout @var{seconds}
19967@itemx set retransmit-timeout @var{seconds}
19968@itemx show timeout
19969@itemx show retransmit-timeout
eb17f351
EZ
19970@cindex @code{timeout}, @acronym{MIPS} protocol
19971@cindex @code{retransmit-timeout}, @acronym{MIPS} protocol
8e04817f
AC
19972@kindex set timeout
19973@kindex show timeout
19974@kindex set retransmit-timeout
19975@kindex show retransmit-timeout
eb17f351 19976You can control the timeout used while waiting for a packet, in the @acronym{MIPS}
8e04817f
AC
19977remote protocol, with the @code{set timeout @var{seconds}} command. The
19978default is 5 seconds. Similarly, you can control the timeout used while
a6f3e723 19979waiting for an acknowledgment of a packet with the @code{set
8e04817f
AC
19980retransmit-timeout @var{seconds}} command. The default is 3 seconds.
19981You can inspect both values with @code{show timeout} and @code{show
19982retransmit-timeout}. (These commands are @emph{only} available when
cc30c4bd 19983@value{GDBN} is configured for @samp{--target=mips-elf}.)
104c1213 19984
8e04817f
AC
19985The timeout set by @code{set timeout} does not apply when @value{GDBN}
19986is waiting for your program to stop. In that case, @value{GDBN} waits
19987forever because it has no way of knowing how long the program is going
19988to run before stopping.
ba04e063
EZ
19989
19990@item set syn-garbage-limit @var{num}
eb17f351
EZ
19991@kindex set syn-garbage-limit@r{, @acronym{MIPS} remote}
19992@cindex synchronize with remote @acronym{MIPS} target
ba04e063
EZ
19993Limit the maximum number of characters @value{GDBN} should ignore when
19994it tries to synchronize with the remote target. The default is 10
19995characters. Setting the limit to -1 means there's no limit.
19996
19997@item show syn-garbage-limit
eb17f351 19998@kindex show syn-garbage-limit@r{, @acronym{MIPS} remote}
ba04e063
EZ
19999Show the current limit on the number of characters to ignore when
20000trying to synchronize with the remote system.
20001
20002@item set monitor-prompt @var{prompt}
eb17f351 20003@kindex set monitor-prompt@r{, @acronym{MIPS} remote}
ba04e063
EZ
20004@cindex remote monitor prompt
20005Tell @value{GDBN} to expect the specified @var{prompt} string from the
20006remote monitor. The default depends on the target:
20007@table @asis
20008@item pmon target
20009@samp{PMON}
20010@item ddb target
20011@samp{NEC010}
20012@item lsi target
20013@samp{PMON>}
20014@end table
20015
20016@item show monitor-prompt
eb17f351 20017@kindex show monitor-prompt@r{, @acronym{MIPS} remote}
ba04e063
EZ
20018Show the current strings @value{GDBN} expects as the prompt from the
20019remote monitor.
20020
20021@item set monitor-warnings
eb17f351 20022@kindex set monitor-warnings@r{, @acronym{MIPS} remote}
ba04e063
EZ
20023Enable or disable monitor warnings about hardware breakpoints. This
20024has effect only for the @code{lsi} target. When on, @value{GDBN} will
20025display warning messages whose codes are returned by the @code{lsi}
20026PMON monitor for breakpoint commands.
20027
20028@item show monitor-warnings
eb17f351 20029@kindex show monitor-warnings@r{, @acronym{MIPS} remote}
ba04e063
EZ
20030Show the current setting of printing monitor warnings.
20031
20032@item pmon @var{command}
eb17f351 20033@kindex pmon@r{, @acronym{MIPS} remote}
ba04e063
EZ
20034@cindex send PMON command
20035This command allows sending an arbitrary @var{command} string to the
20036monitor. The monitor must be in debug mode for this to work.
8e04817f 20037@end table
104c1213 20038
a37295f9
MM
20039@node OpenRISC 1000
20040@subsection OpenRISC 1000
20041@cindex OpenRISC 1000
20042
20043@cindex or1k boards
20044See OR1k Architecture document (@uref{www.opencores.org}) for more information
20045about platform and commands.
20046
20047@table @code
20048
20049@kindex target jtag
20050@item target jtag jtag://@var{host}:@var{port}
20051
20052Connects to remote JTAG server.
20053JTAG remote server can be either an or1ksim or JTAG server,
20054connected via parallel port to the board.
20055
20056Example: @code{target jtag jtag://localhost:9999}
20057
20058@kindex or1ksim
20059@item or1ksim @var{command}
20060If connected to @code{or1ksim} OpenRISC 1000 Architectural
20061Simulator, proprietary commands can be executed.
20062
20063@kindex info or1k spr
20064@item info or1k spr
20065Displays spr groups.
20066
20067@item info or1k spr @var{group}
20068@itemx info or1k spr @var{groupno}
20069Displays register names in selected group.
20070
20071@item info or1k spr @var{group} @var{register}
20072@itemx info or1k spr @var{register}
20073@itemx info or1k spr @var{groupno} @var{registerno}
20074@itemx info or1k spr @var{registerno}
20075Shows information about specified spr register.
20076
20077@kindex spr
20078@item spr @var{group} @var{register} @var{value}
20079@itemx spr @var{register @var{value}}
20080@itemx spr @var{groupno} @var{registerno @var{value}}
20081@itemx spr @var{registerno @var{value}}
20082Writes @var{value} to specified spr register.
20083@end table
20084
20085Some implementations of OpenRISC 1000 Architecture also have hardware trace.
20086It is very similar to @value{GDBN} trace, except it does not interfere with normal
20087program execution and is thus much faster. Hardware breakpoints/watchpoint
20088triggers can be set using:
20089@table @code
20090@item $LEA/$LDATA
20091Load effective address/data
20092@item $SEA/$SDATA
20093Store effective address/data
20094@item $AEA/$ADATA
20095Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
20096@item $FETCH
20097Fetch data
20098@end table
20099
20100When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
20101@code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
20102
20103@code{htrace} commands:
20104@cindex OpenRISC 1000 htrace
20105@table @code
20106@kindex hwatch
20107@item hwatch @var{conditional}
d3e8051b 20108Set hardware watchpoint on combination of Load/Store Effective Address(es)
a37295f9
MM
20109or Data. For example:
20110
20111@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
20112
20113@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
20114
4644b6e3 20115@kindex htrace
a37295f9
MM
20116@item htrace info
20117Display information about current HW trace configuration.
20118
a37295f9
MM
20119@item htrace trigger @var{conditional}
20120Set starting criteria for HW trace.
20121
a37295f9
MM
20122@item htrace qualifier @var{conditional}
20123Set acquisition qualifier for HW trace.
20124
a37295f9
MM
20125@item htrace stop @var{conditional}
20126Set HW trace stopping criteria.
20127
f153cc92 20128@item htrace record [@var{data}]*
a37295f9
MM
20129Selects the data to be recorded, when qualifier is met and HW trace was
20130triggered.
20131
a37295f9 20132@item htrace enable
a37295f9
MM
20133@itemx htrace disable
20134Enables/disables the HW trace.
20135
f153cc92 20136@item htrace rewind [@var{filename}]
a37295f9
MM
20137Clears currently recorded trace data.
20138
20139If filename is specified, new trace file is made and any newly collected data
20140will be written there.
20141
f153cc92 20142@item htrace print [@var{start} [@var{len}]]
a37295f9
MM
20143Prints trace buffer, using current record configuration.
20144
a37295f9
MM
20145@item htrace mode continuous
20146Set continuous trace mode.
20147
a37295f9
MM
20148@item htrace mode suspend
20149Set suspend trace mode.
20150
20151@end table
20152
4acd40f3
TJB
20153@node PowerPC Embedded
20154@subsection PowerPC Embedded
104c1213 20155
66b73624
TJB
20156@cindex DVC register
20157@value{GDBN} supports using the DVC (Data Value Compare) register to
20158implement in hardware simple hardware watchpoint conditions of the form:
20159
20160@smallexample
20161(@value{GDBP}) watch @var{ADDRESS|VARIABLE} \
20162 if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION}
20163@end smallexample
20164
e09342b5
TJB
20165The DVC register will be automatically used when @value{GDBN} detects
20166such pattern in a condition expression, and the created watchpoint uses one
20167debug register (either the @code{exact-watchpoints} option is on and the
20168variable is scalar, or the variable has a length of one byte). This feature
20169is available in native @value{GDBN} running on a Linux kernel version 2.6.34
20170or newer.
20171
20172When running on PowerPC embedded processors, @value{GDBN} automatically uses
20173ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on,
20174in which case watchpoints using only one debug register are created when
20175watching variables of scalar types.
20176
20177You can create an artificial array to watch an arbitrary memory
20178region using one of the following commands (@pxref{Expressions}):
20179
20180@smallexample
20181(@value{GDBP}) watch *((char *) @var{address})@@@var{length}
20182(@value{GDBP}) watch @{char[@var{length}]@} @var{address}
20183@end smallexample
66b73624 20184
9c06b0b4
TJB
20185PowerPC embedded processors support masked watchpoints. See the discussion
20186about the @code{mask} argument in @ref{Set Watchpoints}.
20187
f1310107
TJB
20188@cindex ranged breakpoint
20189PowerPC embedded processors support hardware accelerated
20190@dfn{ranged breakpoints}. A ranged breakpoint stops execution of
20191the inferior whenever it executes an instruction at any address within
20192the range it specifies. To set a ranged breakpoint in @value{GDBN},
20193use the @code{break-range} command.
20194
55eddb0f
DJ
20195@value{GDBN} provides the following PowerPC-specific commands:
20196
104c1213 20197@table @code
f1310107
TJB
20198@kindex break-range
20199@item break-range @var{start-location}, @var{end-location}
20200Set a breakpoint for an address range.
20201@var{start-location} and @var{end-location} can specify a function name,
20202a line number, an offset of lines from the current line or from the start
20203location, or an address of an instruction (see @ref{Specify Location},
20204for a list of all the possible ways to specify a @var{location}.)
20205The breakpoint will stop execution of the inferior whenever it
20206executes an instruction at any address within the specified range,
20207(including @var{start-location} and @var{end-location}.)
20208
55eddb0f
DJ
20209@kindex set powerpc
20210@item set powerpc soft-float
20211@itemx show powerpc soft-float
20212Force @value{GDBN} to use (or not use) a software floating point calling
20213convention. By default, @value{GDBN} selects the calling convention based
20214on the selected architecture and the provided executable file.
20215
20216@item set powerpc vector-abi
20217@itemx show powerpc vector-abi
20218Force @value{GDBN} to use the specified calling convention for vector
20219arguments and return values. The valid options are @samp{auto};
20220@samp{generic}, to avoid vector registers even if they are present;
20221@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE
20222registers. By default, @value{GDBN} selects the calling convention
20223based on the selected architecture and the provided executable file.
20224
e09342b5
TJB
20225@item set powerpc exact-watchpoints
20226@itemx show powerpc exact-watchpoints
20227Allow @value{GDBN} to use only one debug register when watching a variable
20228of scalar type, thus assuming that the variable is accessed through the
20229address of its first byte.
20230
8e04817f
AC
20231@kindex target dink32
20232@item target dink32 @var{dev}
20233DINK32 ROM monitor.
104c1213 20234
8e04817f
AC
20235@kindex target ppcbug
20236@item target ppcbug @var{dev}
20237@kindex target ppcbug1
20238@item target ppcbug1 @var{dev}
20239PPCBUG ROM monitor for PowerPC.
104c1213 20240
8e04817f
AC
20241@kindex target sds
20242@item target sds @var{dev}
20243SDS monitor, running on a PowerPC board (such as Motorola's ADS).
c45da7e6 20244@end table
8e04817f 20245
c45da7e6 20246@cindex SDS protocol
d52fb0e9 20247The following commands specific to the SDS protocol are supported
55eddb0f 20248by @value{GDBN}:
c45da7e6
EZ
20249
20250@table @code
20251@item set sdstimeout @var{nsec}
20252@kindex set sdstimeout
20253Set the timeout for SDS protocol reads to be @var{nsec} seconds. The
20254default is 2 seconds.
20255
20256@item show sdstimeout
20257@kindex show sdstimeout
20258Show the current value of the SDS timeout.
20259
20260@item sds @var{command}
20261@kindex sds@r{, a command}
20262Send the specified @var{command} string to the SDS monitor.
8e04817f
AC
20263@end table
20264
c45da7e6 20265
8e04817f
AC
20266@node PA
20267@subsection HP PA Embedded
104c1213
JM
20268
20269@table @code
20270
8e04817f
AC
20271@kindex target op50n
20272@item target op50n @var{dev}
20273OP50N monitor, running on an OKI HPPA board.
20274
20275@kindex target w89k
20276@item target w89k @var{dev}
20277W89K monitor, running on a Winbond HPPA board.
104c1213
JM
20278
20279@end table
20280
8e04817f
AC
20281@node Sparclet
20282@subsection Tsqware Sparclet
104c1213 20283
8e04817f
AC
20284@cindex Sparclet
20285
20286@value{GDBN} enables developers to debug tasks running on
20287Sparclet targets from a Unix host.
20288@value{GDBN} uses code that runs on
20289both the Unix host and on the Sparclet target. The program
20290@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213 20291
8e04817f
AC
20292@table @code
20293@item remotetimeout @var{args}
20294@kindex remotetimeout
20295@value{GDBN} supports the option @code{remotetimeout}.
20296This option is set by the user, and @var{args} represents the number of
20297seconds @value{GDBN} waits for responses.
104c1213
JM
20298@end table
20299
8e04817f
AC
20300@cindex compiling, on Sparclet
20301When compiling for debugging, include the options @samp{-g} to get debug
20302information and @samp{-Ttext} to relocate the program to where you wish to
20303load it on the target. You may also want to add the options @samp{-n} or
20304@samp{-N} in order to reduce the size of the sections. Example:
104c1213 20305
474c8240 20306@smallexample
8e04817f 20307sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
474c8240 20308@end smallexample
104c1213 20309
8e04817f 20310You can use @code{objdump} to verify that the addresses are what you intended:
104c1213 20311
474c8240 20312@smallexample
8e04817f 20313sparclet-aout-objdump --headers --syms prog
474c8240 20314@end smallexample
104c1213 20315
8e04817f
AC
20316@cindex running, on Sparclet
20317Once you have set
20318your Unix execution search path to find @value{GDBN}, you are ready to
20319run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
20320(or @code{sparclet-aout-gdb}, depending on your installation).
104c1213 20321
8e04817f
AC
20322@value{GDBN} comes up showing the prompt:
20323
474c8240 20324@smallexample
8e04817f 20325(gdbslet)
474c8240 20326@end smallexample
104c1213
JM
20327
20328@menu
8e04817f
AC
20329* Sparclet File:: Setting the file to debug
20330* Sparclet Connection:: Connecting to Sparclet
20331* Sparclet Download:: Sparclet download
20332* Sparclet Execution:: Running and debugging
104c1213
JM
20333@end menu
20334
8e04817f 20335@node Sparclet File
79a6e687 20336@subsubsection Setting File to Debug
104c1213 20337
8e04817f 20338The @value{GDBN} command @code{file} lets you choose with program to debug.
104c1213 20339
474c8240 20340@smallexample
8e04817f 20341(gdbslet) file prog
474c8240 20342@end smallexample
104c1213 20343
8e04817f
AC
20344@need 1000
20345@value{GDBN} then attempts to read the symbol table of @file{prog}.
20346@value{GDBN} locates
20347the file by searching the directories listed in the command search
20348path.
12c27660 20349If the file was compiled with debug information (option @samp{-g}), source
8e04817f
AC
20350files will be searched as well.
20351@value{GDBN} locates
20352the source files by searching the directories listed in the directory search
79a6e687 20353path (@pxref{Environment, ,Your Program's Environment}).
8e04817f
AC
20354If it fails
20355to find a file, it displays a message such as:
104c1213 20356
474c8240 20357@smallexample
8e04817f 20358prog: No such file or directory.
474c8240 20359@end smallexample
104c1213 20360
8e04817f
AC
20361When this happens, add the appropriate directories to the search paths with
20362the @value{GDBN} commands @code{path} and @code{dir}, and execute the
20363@code{target} command again.
104c1213 20364
8e04817f
AC
20365@node Sparclet Connection
20366@subsubsection Connecting to Sparclet
104c1213 20367
8e04817f
AC
20368The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
20369To connect to a target on serial port ``@code{ttya}'', type:
104c1213 20370
474c8240 20371@smallexample
8e04817f
AC
20372(gdbslet) target sparclet /dev/ttya
20373Remote target sparclet connected to /dev/ttya
20374main () at ../prog.c:3
474c8240 20375@end smallexample
104c1213 20376
8e04817f
AC
20377@need 750
20378@value{GDBN} displays messages like these:
104c1213 20379
474c8240 20380@smallexample
8e04817f 20381Connected to ttya.
474c8240 20382@end smallexample
104c1213 20383
8e04817f 20384@node Sparclet Download
79a6e687 20385@subsubsection Sparclet Download
104c1213 20386
8e04817f
AC
20387@cindex download to Sparclet
20388Once connected to the Sparclet target,
20389you can use the @value{GDBN}
20390@code{load} command to download the file from the host to the target.
20391The file name and load offset should be given as arguments to the @code{load}
20392command.
20393Since the file format is aout, the program must be loaded to the starting
20394address. You can use @code{objdump} to find out what this value is. The load
20395offset is an offset which is added to the VMA (virtual memory address)
20396of each of the file's sections.
20397For instance, if the program
20398@file{prog} was linked to text address 0x1201000, with data at 0x12010160
20399and bss at 0x12010170, in @value{GDBN}, type:
104c1213 20400
474c8240 20401@smallexample
8e04817f
AC
20402(gdbslet) load prog 0x12010000
20403Loading section .text, size 0xdb0 vma 0x12010000
474c8240 20404@end smallexample
104c1213 20405
8e04817f
AC
20406If the code is loaded at a different address then what the program was linked
20407to, you may need to use the @code{section} and @code{add-symbol-file} commands
20408to tell @value{GDBN} where to map the symbol table.
20409
20410@node Sparclet Execution
79a6e687 20411@subsubsection Running and Debugging
8e04817f
AC
20412
20413@cindex running and debugging Sparclet programs
20414You can now begin debugging the task using @value{GDBN}'s execution control
20415commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
20416manual for the list of commands.
20417
474c8240 20418@smallexample
8e04817f
AC
20419(gdbslet) b main
20420Breakpoint 1 at 0x12010000: file prog.c, line 3.
20421(gdbslet) run
20422Starting program: prog
20423Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
204243 char *symarg = 0;
20425(gdbslet) step
204264 char *execarg = "hello!";
20427(gdbslet)
474c8240 20428@end smallexample
8e04817f
AC
20429
20430@node Sparclite
20431@subsection Fujitsu Sparclite
104c1213
JM
20432
20433@table @code
20434
8e04817f
AC
20435@kindex target sparclite
20436@item target sparclite @var{dev}
20437Fujitsu sparclite boards, used only for the purpose of loading.
20438You must use an additional command to debug the program.
20439For example: target remote @var{dev} using @value{GDBN} standard
20440remote protocol.
104c1213
JM
20441
20442@end table
20443
8e04817f
AC
20444@node Z8000
20445@subsection Zilog Z8000
104c1213 20446
8e04817f
AC
20447@cindex Z8000
20448@cindex simulator, Z8000
20449@cindex Zilog Z8000 simulator
104c1213 20450
8e04817f
AC
20451When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
20452a Z8000 simulator.
20453
20454For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
20455unsegmented variant of the Z8000 architecture) or the Z8001 (the
20456segmented variant). The simulator recognizes which architecture is
20457appropriate by inspecting the object code.
104c1213 20458
8e04817f
AC
20459@table @code
20460@item target sim @var{args}
20461@kindex sim
20462@kindex target sim@r{, with Z8000}
20463Debug programs on a simulated CPU. If the simulator supports setup
20464options, specify them via @var{args}.
104c1213
JM
20465@end table
20466
8e04817f
AC
20467@noindent
20468After specifying this target, you can debug programs for the simulated
20469CPU in the same style as programs for your host computer; use the
20470@code{file} command to load a new program image, the @code{run} command
20471to run your program, and so on.
20472
20473As well as making available all the usual machine registers
20474(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
20475additional items of information as specially named registers:
104c1213
JM
20476
20477@table @code
20478
8e04817f
AC
20479@item cycles
20480Counts clock-ticks in the simulator.
104c1213 20481
8e04817f
AC
20482@item insts
20483Counts instructions run in the simulator.
104c1213 20484
8e04817f
AC
20485@item time
20486Execution time in 60ths of a second.
104c1213 20487
8e04817f 20488@end table
104c1213 20489
8e04817f
AC
20490You can refer to these values in @value{GDBN} expressions with the usual
20491conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
20492conditional breakpoint that suspends only after at least 5000
20493simulated clock ticks.
104c1213 20494
a64548ea
EZ
20495@node AVR
20496@subsection Atmel AVR
20497@cindex AVR
20498
20499When configured for debugging the Atmel AVR, @value{GDBN} supports the
20500following AVR-specific commands:
20501
20502@table @code
20503@item info io_registers
20504@kindex info io_registers@r{, AVR}
20505@cindex I/O registers (Atmel AVR)
20506This command displays information about the AVR I/O registers. For
20507each register, @value{GDBN} prints its number and value.
20508@end table
20509
20510@node CRIS
20511@subsection CRIS
20512@cindex CRIS
20513
20514When configured for debugging CRIS, @value{GDBN} provides the
20515following CRIS-specific commands:
20516
20517@table @code
20518@item set cris-version @var{ver}
20519@cindex CRIS version
e22e55c9
OF
20520Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}.
20521The CRIS version affects register names and sizes. This command is useful in
20522case autodetection of the CRIS version fails.
a64548ea
EZ
20523
20524@item show cris-version
20525Show the current CRIS version.
20526
20527@item set cris-dwarf2-cfi
20528@cindex DWARF-2 CFI and CRIS
e22e55c9
OF
20529Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}.
20530Change to @samp{off} when using @code{gcc-cris} whose version is below
20531@code{R59}.
a64548ea
EZ
20532
20533@item show cris-dwarf2-cfi
20534Show the current state of using DWARF-2 CFI.
e22e55c9
OF
20535
20536@item set cris-mode @var{mode}
20537@cindex CRIS mode
20538Set the current CRIS mode to @var{mode}. It should only be changed when
20539debugging in guru mode, in which case it should be set to
20540@samp{guru} (the default is @samp{normal}).
20541
20542@item show cris-mode
20543Show the current CRIS mode.
a64548ea
EZ
20544@end table
20545
20546@node Super-H
20547@subsection Renesas Super-H
20548@cindex Super-H
20549
20550For the Renesas Super-H processor, @value{GDBN} provides these
20551commands:
20552
20553@table @code
c055b101
CV
20554@item set sh calling-convention @var{convention}
20555@kindex set sh calling-convention
20556Set the calling-convention used when calling functions from @value{GDBN}.
20557Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}.
20558With the @samp{gcc} setting, functions are called using the @value{NGCC} calling
20559convention. If the DWARF-2 information of the called function specifies
20560that the function follows the Renesas calling convention, the function
20561is called using the Renesas calling convention. If the calling convention
20562is set to @samp{renesas}, the Renesas calling convention is always used,
20563regardless of the DWARF-2 information. This can be used to override the
20564default of @samp{gcc} if debug information is missing, or the compiler
20565does not emit the DWARF-2 calling convention entry for a function.
20566
20567@item show sh calling-convention
20568@kindex show sh calling-convention
20569Show the current calling convention setting.
20570
a64548ea
EZ
20571@end table
20572
20573
8e04817f
AC
20574@node Architectures
20575@section Architectures
104c1213 20576
8e04817f
AC
20577This section describes characteristics of architectures that affect
20578all uses of @value{GDBN} with the architecture, both native and cross.
104c1213 20579
8e04817f 20580@menu
9c16f35a 20581* i386::
8e04817f
AC
20582* Alpha::
20583* MIPS::
a64548ea 20584* HPPA:: HP PA architecture
23d964e7 20585* SPU:: Cell Broadband Engine SPU architecture
4acd40f3 20586* PowerPC::
8e04817f 20587@end menu
104c1213 20588
9c16f35a 20589@node i386
db2e3e2e 20590@subsection x86 Architecture-specific Issues
9c16f35a
EZ
20591
20592@table @code
20593@item set struct-convention @var{mode}
20594@kindex set struct-convention
20595@cindex struct return convention
20596@cindex struct/union returned in registers
20597Set the convention used by the inferior to return @code{struct}s and
20598@code{union}s from functions to @var{mode}. Possible values of
20599@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the
20600default). @code{"default"} or @code{"pcc"} means that @code{struct}s
20601are returned on the stack, while @code{"reg"} means that a
20602@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will
20603be returned in a register.
20604
20605@item show struct-convention
20606@kindex show struct-convention
20607Show the current setting of the convention to return @code{struct}s
20608from functions.
20609@end table
20610
8e04817f
AC
20611@node Alpha
20612@subsection Alpha
104c1213 20613
8e04817f 20614See the following section.
104c1213 20615
8e04817f 20616@node MIPS
eb17f351 20617@subsection @acronym{MIPS}
104c1213 20618
8e04817f 20619@cindex stack on Alpha
eb17f351 20620@cindex stack on @acronym{MIPS}
8e04817f 20621@cindex Alpha stack
eb17f351
EZ
20622@cindex @acronym{MIPS} stack
20623Alpha- and @acronym{MIPS}-based computers use an unusual stack frame, which
8e04817f
AC
20624sometimes requires @value{GDBN} to search backward in the object code to
20625find the beginning of a function.
104c1213 20626
eb17f351 20627@cindex response time, @acronym{MIPS} debugging
8e04817f
AC
20628To improve response time (especially for embedded applications, where
20629@value{GDBN} may be restricted to a slow serial line for this search)
20630you may want to limit the size of this search, using one of these
20631commands:
104c1213 20632
8e04817f 20633@table @code
eb17f351 20634@cindex @code{heuristic-fence-post} (Alpha, @acronym{MIPS})
8e04817f
AC
20635@item set heuristic-fence-post @var{limit}
20636Restrict @value{GDBN} to examining at most @var{limit} bytes in its
20637search for the beginning of a function. A value of @var{0} (the
20638default) means there is no limit. However, except for @var{0}, the
20639larger the limit the more bytes @code{heuristic-fence-post} must search
e2f4edfd
EZ
20640and therefore the longer it takes to run. You should only need to use
20641this command when debugging a stripped executable.
104c1213 20642
8e04817f
AC
20643@item show heuristic-fence-post
20644Display the current limit.
20645@end table
104c1213
JM
20646
20647@noindent
8e04817f 20648These commands are available @emph{only} when @value{GDBN} is configured
eb17f351 20649for debugging programs on Alpha or @acronym{MIPS} processors.
104c1213 20650
eb17f351 20651Several @acronym{MIPS}-specific commands are available when debugging @acronym{MIPS}
a64548ea
EZ
20652programs:
20653
20654@table @code
a64548ea
EZ
20655@item set mips abi @var{arg}
20656@kindex set mips abi
eb17f351
EZ
20657@cindex set ABI for @acronym{MIPS}
20658Tell @value{GDBN} which @acronym{MIPS} ABI is used by the inferior. Possible
a64548ea
EZ
20659values of @var{arg} are:
20660
20661@table @samp
20662@item auto
20663The default ABI associated with the current binary (this is the
20664default).
20665@item o32
20666@item o64
20667@item n32
20668@item n64
20669@item eabi32
20670@item eabi64
a64548ea
EZ
20671@end table
20672
20673@item show mips abi
20674@kindex show mips abi
eb17f351 20675Show the @acronym{MIPS} ABI used by @value{GDBN} to debug the inferior.
a64548ea 20676
4cc0665f
MR
20677@item set mips compression @var{arg}
20678@kindex set mips compression
20679@cindex code compression, @acronym{MIPS}
20680Tell @value{GDBN} which @acronym{MIPS} compressed
20681@acronym{ISA, Instruction Set Architecture} encoding is used by the
20682inferior. @value{GDBN} uses this for code disassembly and other
20683internal interpretation purposes. This setting is only referred to
20684when no executable has been associated with the debugging session or
20685the executable does not provide information about the encoding it uses.
20686Otherwise this setting is automatically updated from information
20687provided by the executable.
20688
20689Possible values of @var{arg} are @samp{mips16} and @samp{micromips}.
20690The default compressed @acronym{ISA} encoding is @samp{mips16}, as
20691executables containing @acronym{MIPS16} code frequently are not
20692identified as such.
20693
20694This setting is ``sticky''; that is, it retains its value across
20695debugging sessions until reset either explicitly with this command or
20696implicitly from an executable.
20697
20698The compiler and/or assembler typically add symbol table annotations to
20699identify functions compiled for the @acronym{MIPS16} or
20700@acronym{microMIPS} @acronym{ISA}s. If these function-scope annotations
20701are present, @value{GDBN} uses them in preference to the global
20702compressed @acronym{ISA} encoding setting.
20703
20704@item show mips compression
20705@kindex show mips compression
20706Show the @acronym{MIPS} compressed @acronym{ISA} encoding used by
20707@value{GDBN} to debug the inferior.
20708
a64548ea
EZ
20709@item set mipsfpu
20710@itemx show mipsfpu
20711@xref{MIPS Embedded, set mipsfpu}.
20712
20713@item set mips mask-address @var{arg}
20714@kindex set mips mask-address
eb17f351 20715@cindex @acronym{MIPS} addresses, masking
a64548ea 20716This command determines whether the most-significant 32 bits of 64-bit
eb17f351 20717@acronym{MIPS} addresses are masked off. The argument @var{arg} can be
a64548ea
EZ
20718@samp{on}, @samp{off}, or @samp{auto}. The latter is the default
20719setting, which lets @value{GDBN} determine the correct value.
20720
20721@item show mips mask-address
20722@kindex show mips mask-address
eb17f351 20723Show whether the upper 32 bits of @acronym{MIPS} addresses are masked off or
a64548ea
EZ
20724not.
20725
20726@item set remote-mips64-transfers-32bit-regs
20727@kindex set remote-mips64-transfers-32bit-regs
eb17f351
EZ
20728This command controls compatibility with 64-bit @acronym{MIPS} targets that
20729transfer data in 32-bit quantities. If you have an old @acronym{MIPS} 64 target
a64548ea
EZ
20730that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr},
20731and 64 bits for other registers, set this option to @samp{on}.
20732
20733@item show remote-mips64-transfers-32bit-regs
20734@kindex show remote-mips64-transfers-32bit-regs
eb17f351 20735Show the current setting of compatibility with older @acronym{MIPS} 64 targets.
a64548ea
EZ
20736
20737@item set debug mips
20738@kindex set debug mips
eb17f351 20739This command turns on and off debugging messages for the @acronym{MIPS}-specific
a64548ea
EZ
20740target code in @value{GDBN}.
20741
20742@item show debug mips
20743@kindex show debug mips
eb17f351 20744Show the current setting of @acronym{MIPS} debugging messages.
a64548ea
EZ
20745@end table
20746
20747
20748@node HPPA
20749@subsection HPPA
20750@cindex HPPA support
20751
d3e8051b 20752When @value{GDBN} is debugging the HP PA architecture, it provides the
a64548ea
EZ
20753following special commands:
20754
20755@table @code
20756@item set debug hppa
20757@kindex set debug hppa
db2e3e2e 20758This command determines whether HPPA architecture-specific debugging
a64548ea
EZ
20759messages are to be displayed.
20760
20761@item show debug hppa
20762Show whether HPPA debugging messages are displayed.
20763
20764@item maint print unwind @var{address}
20765@kindex maint print unwind@r{, HPPA}
20766This command displays the contents of the unwind table entry at the
20767given @var{address}.
20768
20769@end table
20770
104c1213 20771
23d964e7
UW
20772@node SPU
20773@subsection Cell Broadband Engine SPU architecture
20774@cindex Cell Broadband Engine
20775@cindex SPU
20776
20777When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
20778it provides the following special commands:
20779
20780@table @code
20781@item info spu event
20782@kindex info spu
20783Display SPU event facility status. Shows current event mask
20784and pending event status.
20785
20786@item info spu signal
20787Display SPU signal notification facility status. Shows pending
20788signal-control word and signal notification mode of both signal
20789notification channels.
20790
20791@item info spu mailbox
20792Display SPU mailbox facility status. Shows all pending entries,
20793in order of processing, in each of the SPU Write Outbound,
20794SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
20795
20796@item info spu dma
20797Display MFC DMA status. Shows all pending commands in the MFC
20798DMA queue. For each entry, opcode, tag, class IDs, effective
20799and local store addresses and transfer size are shown.
20800
20801@item info spu proxydma
20802Display MFC Proxy-DMA status. Shows all pending commands in the MFC
20803Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
20804and local store addresses and transfer size are shown.
20805
20806@end table
20807
3285f3fe
UW
20808When @value{GDBN} is debugging a combined PowerPC/SPU application
20809on the Cell Broadband Engine, it provides in addition the following
20810special commands:
20811
20812@table @code
20813@item set spu stop-on-load @var{arg}
20814@kindex set spu
20815Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN}
20816will give control to the user when a new SPE thread enters its @code{main}
20817function. The default is @code{off}.
20818
20819@item show spu stop-on-load
20820@kindex show spu
20821Show whether to stop for new SPE threads.
20822
ff1a52c6
UW
20823@item set spu auto-flush-cache @var{arg}
20824Set whether to automatically flush the software-managed cache. When set to
20825@code{on}, @value{GDBN} will automatically cause the SPE software-managed
20826cache to be flushed whenever SPE execution stops. This provides a consistent
20827view of PowerPC memory that is accessed via the cache. If an application
20828does not use the software-managed cache, this option has no effect.
20829
20830@item show spu auto-flush-cache
20831Show whether to automatically flush the software-managed cache.
20832
3285f3fe
UW
20833@end table
20834
4acd40f3
TJB
20835@node PowerPC
20836@subsection PowerPC
20837@cindex PowerPC architecture
20838
20839When @value{GDBN} is debugging the PowerPC architecture, it provides a set of
20840pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
20841numbers stored in the floating point registers. These values must be stored
20842in two consecutive registers, always starting at an even register like
20843@code{f0} or @code{f2}.
20844
20845The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed
20846by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0},
20847@code{f2} and @code{f3} for @code{$dl1} and so on.
20848
aeac0ff9 20849For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit
677c5bb1
LM
20850wide Extended Floating Point Registers (@samp{f32} through @samp{f63}).
20851
23d964e7 20852
8e04817f
AC
20853@node Controlling GDB
20854@chapter Controlling @value{GDBN}
20855
20856You can alter the way @value{GDBN} interacts with you by using the
20857@code{set} command. For commands controlling how @value{GDBN} displays
79a6e687 20858data, see @ref{Print Settings, ,Print Settings}. Other settings are
8e04817f
AC
20859described here.
20860
20861@menu
20862* Prompt:: Prompt
20863* Editing:: Command editing
d620b259 20864* Command History:: Command history
8e04817f
AC
20865* Screen Size:: Screen size
20866* Numbers:: Numbers
1e698235 20867* ABI:: Configuring the current ABI
bf88dd68 20868* Auto-loading:: Automatically loading associated files
8e04817f
AC
20869* Messages/Warnings:: Optional warnings and messages
20870* Debugging Output:: Optional messages about internal happenings
14fb1bac 20871* Other Misc Settings:: Other Miscellaneous Settings
8e04817f
AC
20872@end menu
20873
20874@node Prompt
20875@section Prompt
104c1213 20876
8e04817f 20877@cindex prompt
104c1213 20878
8e04817f
AC
20879@value{GDBN} indicates its readiness to read a command by printing a string
20880called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
20881can change the prompt string with the @code{set prompt} command. For
20882instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
20883the prompt in one of the @value{GDBN} sessions so that you can always tell
20884which one you are talking to.
104c1213 20885
8e04817f
AC
20886@emph{Note:} @code{set prompt} does not add a space for you after the
20887prompt you set. This allows you to set a prompt which ends in a space
20888or a prompt that does not.
104c1213 20889
8e04817f
AC
20890@table @code
20891@kindex set prompt
20892@item set prompt @var{newprompt}
20893Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
104c1213 20894
8e04817f
AC
20895@kindex show prompt
20896@item show prompt
20897Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
104c1213
JM
20898@end table
20899
fa3a4f15
PM
20900Versions of @value{GDBN} that ship with Python scripting enabled have
20901prompt extensions. The commands for interacting with these extensions
20902are:
20903
20904@table @code
20905@kindex set extended-prompt
20906@item set extended-prompt @var{prompt}
20907Set an extended prompt that allows for substitutions.
20908@xref{gdb.prompt}, for a list of escape sequences that can be used for
20909substitution. Any escape sequences specified as part of the prompt
20910string are replaced with the corresponding strings each time the prompt
20911is displayed.
20912
20913For example:
20914
20915@smallexample
20916set extended-prompt Current working directory: \w (gdb)
20917@end smallexample
20918
20919Note that when an extended-prompt is set, it takes control of the
20920@var{prompt_hook} hook. @xref{prompt_hook}, for further information.
20921
20922@kindex show extended-prompt
20923@item show extended-prompt
20924Prints the extended prompt. Any escape sequences specified as part of
20925the prompt string with @code{set extended-prompt}, are replaced with the
20926corresponding strings each time the prompt is displayed.
20927@end table
20928
8e04817f 20929@node Editing
79a6e687 20930@section Command Editing
8e04817f
AC
20931@cindex readline
20932@cindex command line editing
104c1213 20933
703663ab 20934@value{GDBN} reads its input commands via the @dfn{Readline} interface. This
8e04817f
AC
20935@sc{gnu} library provides consistent behavior for programs which provide a
20936command line interface to the user. Advantages are @sc{gnu} Emacs-style
20937or @dfn{vi}-style inline editing of commands, @code{csh}-like history
20938substitution, and a storage and recall of command history across
20939debugging sessions.
104c1213 20940
8e04817f
AC
20941You may control the behavior of command line editing in @value{GDBN} with the
20942command @code{set}.
104c1213 20943
8e04817f
AC
20944@table @code
20945@kindex set editing
20946@cindex editing
20947@item set editing
20948@itemx set editing on
20949Enable command line editing (enabled by default).
104c1213 20950
8e04817f
AC
20951@item set editing off
20952Disable command line editing.
104c1213 20953
8e04817f
AC
20954@kindex show editing
20955@item show editing
20956Show whether command line editing is enabled.
104c1213
JM
20957@end table
20958
39037522
TT
20959@ifset SYSTEM_READLINE
20960@xref{Command Line Editing, , , rluserman, GNU Readline Library},
20961@end ifset
20962@ifclear SYSTEM_READLINE
20963@xref{Command Line Editing},
20964@end ifclear
20965for more details about the Readline
703663ab
EZ
20966interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
20967encouraged to read that chapter.
20968
d620b259 20969@node Command History
79a6e687 20970@section Command History
703663ab 20971@cindex command history
8e04817f
AC
20972
20973@value{GDBN} can keep track of the commands you type during your
20974debugging sessions, so that you can be certain of precisely what
20975happened. Use these commands to manage the @value{GDBN} command
20976history facility.
104c1213 20977
703663ab 20978@value{GDBN} uses the @sc{gnu} History library, a part of the Readline
39037522
TT
20979package, to provide the history facility.
20980@ifset SYSTEM_READLINE
20981@xref{Using History Interactively, , , history, GNU History Library},
20982@end ifset
20983@ifclear SYSTEM_READLINE
20984@xref{Using History Interactively},
20985@end ifclear
20986for the detailed description of the History library.
703663ab 20987
d620b259 20988To issue a command to @value{GDBN} without affecting certain aspects of
9e6c4bd5
NR
20989the state which is seen by users, prefix it with @samp{server }
20990(@pxref{Server Prefix}). This
d620b259
NR
20991means that this command will not affect the command history, nor will it
20992affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
20993pressed on a line by itself.
20994
20995@cindex @code{server}, command prefix
20996The server prefix does not affect the recording of values into the value
20997history; to print a value without recording it into the value history,
20998use the @code{output} command instead of the @code{print} command.
20999
703663ab
EZ
21000Here is the description of @value{GDBN} commands related to command
21001history.
21002
104c1213 21003@table @code
8e04817f
AC
21004@cindex history substitution
21005@cindex history file
21006@kindex set history filename
4644b6e3 21007@cindex @env{GDBHISTFILE}, environment variable
8e04817f
AC
21008@item set history filename @var{fname}
21009Set the name of the @value{GDBN} command history file to @var{fname}.
21010This is the file where @value{GDBN} reads an initial command history
21011list, and where it writes the command history from this session when it
21012exits. You can access this list through history expansion or through
21013the history command editing characters listed below. This file defaults
21014to the value of the environment variable @code{GDBHISTFILE}, or to
21015@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
21016is not set.
104c1213 21017
9c16f35a
EZ
21018@cindex save command history
21019@kindex set history save
8e04817f
AC
21020@item set history save
21021@itemx set history save on
21022Record command history in a file, whose name may be specified with the
21023@code{set history filename} command. By default, this option is disabled.
104c1213 21024
8e04817f
AC
21025@item set history save off
21026Stop recording command history in a file.
104c1213 21027
8e04817f 21028@cindex history size
9c16f35a 21029@kindex set history size
6fc08d32 21030@cindex @env{HISTSIZE}, environment variable
8e04817f
AC
21031@item set history size @var{size}
21032Set the number of commands which @value{GDBN} keeps in its history list.
21033This defaults to the value of the environment variable
21034@code{HISTSIZE}, or to 256 if this variable is not set.
104c1213
JM
21035@end table
21036
8e04817f 21037History expansion assigns special meaning to the character @kbd{!}.
39037522
TT
21038@ifset SYSTEM_READLINE
21039@xref{Event Designators, , , history, GNU History Library},
21040@end ifset
21041@ifclear SYSTEM_READLINE
21042@xref{Event Designators},
21043@end ifclear
21044for more details.
8e04817f 21045
703663ab 21046@cindex history expansion, turn on/off
8e04817f
AC
21047Since @kbd{!} is also the logical not operator in C, history expansion
21048is off by default. If you decide to enable history expansion with the
21049@code{set history expansion on} command, you may sometimes need to
21050follow @kbd{!} (when it is used as logical not, in an expression) with
21051a space or a tab to prevent it from being expanded. The readline
21052history facilities do not attempt substitution on the strings
21053@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
21054
21055The commands to control history expansion are:
104c1213
JM
21056
21057@table @code
8e04817f
AC
21058@item set history expansion on
21059@itemx set history expansion
703663ab 21060@kindex set history expansion
8e04817f 21061Enable history expansion. History expansion is off by default.
104c1213 21062
8e04817f
AC
21063@item set history expansion off
21064Disable history expansion.
104c1213 21065
8e04817f
AC
21066@c @group
21067@kindex show history
21068@item show history
21069@itemx show history filename
21070@itemx show history save
21071@itemx show history size
21072@itemx show history expansion
21073These commands display the state of the @value{GDBN} history parameters.
21074@code{show history} by itself displays all four states.
21075@c @end group
21076@end table
21077
21078@table @code
9c16f35a
EZ
21079@kindex show commands
21080@cindex show last commands
21081@cindex display command history
8e04817f
AC
21082@item show commands
21083Display the last ten commands in the command history.
104c1213 21084
8e04817f
AC
21085@item show commands @var{n}
21086Print ten commands centered on command number @var{n}.
21087
21088@item show commands +
21089Print ten commands just after the commands last printed.
104c1213
JM
21090@end table
21091
8e04817f 21092@node Screen Size
79a6e687 21093@section Screen Size
8e04817f
AC
21094@cindex size of screen
21095@cindex pauses in output
104c1213 21096
8e04817f
AC
21097Certain commands to @value{GDBN} may produce large amounts of
21098information output to the screen. To help you read all of it,
21099@value{GDBN} pauses and asks you for input at the end of each page of
21100output. Type @key{RET} when you want to continue the output, or @kbd{q}
21101to discard the remaining output. Also, the screen width setting
21102determines when to wrap lines of output. Depending on what is being
21103printed, @value{GDBN} tries to break the line at a readable place,
21104rather than simply letting it overflow onto the following line.
21105
21106Normally @value{GDBN} knows the size of the screen from the terminal
21107driver software. For example, on Unix @value{GDBN} uses the termcap data base
21108together with the value of the @code{TERM} environment variable and the
21109@code{stty rows} and @code{stty cols} settings. If this is not correct,
21110you can override it with the @code{set height} and @code{set
21111width} commands:
21112
21113@table @code
21114@kindex set height
21115@kindex set width
21116@kindex show width
21117@kindex show height
21118@item set height @var{lpp}
21119@itemx show height
21120@itemx set width @var{cpl}
21121@itemx show width
21122These @code{set} commands specify a screen height of @var{lpp} lines and
21123a screen width of @var{cpl} characters. The associated @code{show}
21124commands display the current settings.
104c1213 21125
8e04817f
AC
21126If you specify a height of zero lines, @value{GDBN} does not pause during
21127output no matter how long the output is. This is useful if output is to a
21128file or to an editor buffer.
104c1213 21129
8e04817f
AC
21130Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
21131from wrapping its output.
9c16f35a
EZ
21132
21133@item set pagination on
21134@itemx set pagination off
21135@kindex set pagination
21136Turn the output pagination on or off; the default is on. Turning
7c953934
TT
21137pagination off is the alternative to @code{set height 0}. Note that
21138running @value{GDBN} with the @option{--batch} option (@pxref{Mode
21139Options, -batch}) also automatically disables pagination.
9c16f35a
EZ
21140
21141@item show pagination
21142@kindex show pagination
21143Show the current pagination mode.
104c1213
JM
21144@end table
21145
8e04817f
AC
21146@node Numbers
21147@section Numbers
21148@cindex number representation
21149@cindex entering numbers
104c1213 21150
8e04817f
AC
21151You can always enter numbers in octal, decimal, or hexadecimal in
21152@value{GDBN} by the usual conventions: octal numbers begin with
21153@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
eb2dae08
EZ
21154begin with @samp{0x}. Numbers that neither begin with @samp{0} or
21155@samp{0x}, nor end with a @samp{.} are, by default, entered in base
2115610; likewise, the default display for numbers---when no particular
21157format is specified---is base 10. You can change the default base for
21158both input and output with the commands described below.
104c1213 21159
8e04817f
AC
21160@table @code
21161@kindex set input-radix
21162@item set input-radix @var{base}
21163Set the default base for numeric input. Supported choices
21164for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 21165specified either unambiguously or using the current input radix; for
8e04817f 21166example, any of
104c1213 21167
8e04817f 21168@smallexample
9c16f35a
EZ
21169set input-radix 012
21170set input-radix 10.
21171set input-radix 0xa
8e04817f 21172@end smallexample
104c1213 21173
8e04817f 21174@noindent
9c16f35a 21175sets the input base to decimal. On the other hand, @samp{set input-radix 10}
eb2dae08
EZ
21176leaves the input radix unchanged, no matter what it was, since
21177@samp{10}, being without any leading or trailing signs of its base, is
21178interpreted in the current radix. Thus, if the current radix is 16,
21179@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't
21180change the radix.
104c1213 21181
8e04817f
AC
21182@kindex set output-radix
21183@item set output-radix @var{base}
21184Set the default base for numeric display. Supported choices
21185for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 21186specified either unambiguously or using the current input radix.
104c1213 21187
8e04817f
AC
21188@kindex show input-radix
21189@item show input-radix
21190Display the current default base for numeric input.
104c1213 21191
8e04817f
AC
21192@kindex show output-radix
21193@item show output-radix
21194Display the current default base for numeric display.
9c16f35a
EZ
21195
21196@item set radix @r{[}@var{base}@r{]}
21197@itemx show radix
21198@kindex set radix
21199@kindex show radix
21200These commands set and show the default base for both input and output
21201of numbers. @code{set radix} sets the radix of input and output to
21202the same base; without an argument, it resets the radix back to its
21203default value of 10.
21204
8e04817f 21205@end table
104c1213 21206
1e698235 21207@node ABI
79a6e687 21208@section Configuring the Current ABI
1e698235
DJ
21209
21210@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
21211application automatically. However, sometimes you need to override its
21212conclusions. Use these commands to manage @value{GDBN}'s view of the
21213current ABI.
21214
98b45e30
DJ
21215@cindex OS ABI
21216@kindex set osabi
b4e9345d 21217@kindex show osabi
98b45e30
DJ
21218
21219One @value{GDBN} configuration can debug binaries for multiple operating
b383017d 21220system targets, either via remote debugging or native emulation.
98b45e30
DJ
21221@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
21222but you can override its conclusion using the @code{set osabi} command.
21223One example where this is useful is in debugging of binaries which use
21224an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
21225not have the same identifying marks that the standard C library for your
21226platform provides.
21227
21228@table @code
21229@item show osabi
21230Show the OS ABI currently in use.
21231
21232@item set osabi
21233With no argument, show the list of registered available OS ABI's.
21234
21235@item set osabi @var{abi}
21236Set the current OS ABI to @var{abi}.
21237@end table
21238
1e698235 21239@cindex float promotion
1e698235
DJ
21240
21241Generally, the way that an argument of type @code{float} is passed to a
21242function depends on whether the function is prototyped. For a prototyped
21243(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
21244according to the architecture's convention for @code{float}. For unprototyped
21245(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
21246@code{double} and then passed.
21247
21248Unfortunately, some forms of debug information do not reliably indicate whether
21249a function is prototyped. If @value{GDBN} calls a function that is not marked
21250as prototyped, it consults @kbd{set coerce-float-to-double}.
21251
21252@table @code
a8f24a35 21253@kindex set coerce-float-to-double
1e698235
DJ
21254@item set coerce-float-to-double
21255@itemx set coerce-float-to-double on
21256Arguments of type @code{float} will be promoted to @code{double} when passed
21257to an unprototyped function. This is the default setting.
21258
21259@item set coerce-float-to-double off
21260Arguments of type @code{float} will be passed directly to unprototyped
21261functions.
9c16f35a
EZ
21262
21263@kindex show coerce-float-to-double
21264@item show coerce-float-to-double
21265Show the current setting of promoting @code{float} to @code{double}.
1e698235
DJ
21266@end table
21267
f1212245
DJ
21268@kindex set cp-abi
21269@kindex show cp-abi
21270@value{GDBN} needs to know the ABI used for your program's C@t{++}
21271objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
21272used to build your application. @value{GDBN} only fully supports
21273programs with a single C@t{++} ABI; if your program contains code using
21274multiple C@t{++} ABI's or if @value{GDBN} can not identify your
21275program's ABI correctly, you can tell @value{GDBN} which ABI to use.
21276Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
21277before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
21278``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
21279use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
21280``auto''.
21281
21282@table @code
21283@item show cp-abi
21284Show the C@t{++} ABI currently in use.
21285
21286@item set cp-abi
21287With no argument, show the list of supported C@t{++} ABI's.
21288
21289@item set cp-abi @var{abi}
21290@itemx set cp-abi auto
21291Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
21292@end table
21293
bf88dd68
JK
21294@node Auto-loading
21295@section Automatically loading associated files
21296@cindex auto-loading
21297
21298@value{GDBN} sometimes reads files with commands and settings automatically,
21299without being explicitly told so by the user. We call this feature
21300@dfn{auto-loading}. While auto-loading is useful for automatically adapting
21301@value{GDBN} to the needs of your project, it can sometimes produce unexpected
21302results or introduce security risks (e.g., if the file comes from untrusted
21303sources).
21304
c1668e4e
JK
21305Note that loading of these associated files (including the local @file{.gdbinit}
21306file) requires accordingly configured @code{auto-load safe-path}
21307(@pxref{Auto-loading safe path}).
21308
bf88dd68
JK
21309For these reasons, @value{GDBN} includes commands and options to let you
21310control when to auto-load files and which files should be auto-loaded.
21311
21312@table @code
21313@anchor{set auto-load off}
21314@kindex set auto-load off
21315@item set auto-load off
21316Globally disable loading of all auto-loaded files.
21317You may want to use this command with the @samp{-iex} option
21318(@pxref{Option -init-eval-command}) such as:
21319@smallexample
21320$ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile}
21321@end smallexample
21322
21323Be aware that system init file (@pxref{System-wide configuration})
21324and init files from your home directory (@pxref{Home Directory Init File})
21325still get read (as they come from generally trusted directories).
21326To prevent @value{GDBN} from auto-loading even those init files, use the
21327@option{-nx} option (@pxref{Mode Options}), in addition to
21328@code{set auto-load no}.
21329
21330@anchor{show auto-load}
21331@kindex show auto-load
21332@item show auto-load
21333Show whether auto-loading of each specific @samp{auto-load} file(s) is enabled
21334or disabled.
21335
21336@smallexample
21337(gdb) show auto-load
21338gdb-scripts: Auto-loading of canned sequences of commands scripts is on.
21339libthread-db: Auto-loading of inferior specific libthread_db is on.
1ccacbcd
JK
21340local-gdbinit: Auto-loading of .gdbinit script from current directory
21341 is on.
bf88dd68 21342python-scripts: Auto-loading of Python scripts is on.
bccbefd2 21343safe-path: List of directories from which it is safe to auto-load files
1564a261 21344 is $debugdir:$datadir/auto-load.
7349ff92 21345scripts-directory: List of directories from which to load auto-loaded scripts
1564a261 21346 is $debugdir:$datadir/auto-load.
bf88dd68
JK
21347@end smallexample
21348
21349@anchor{info auto-load}
21350@kindex info auto-load
21351@item info auto-load
21352Print whether each specific @samp{auto-load} file(s) have been auto-loaded or
21353not.
21354
21355@smallexample
21356(gdb) info auto-load
21357gdb-scripts:
21358Loaded Script
21359Yes /home/user/gdb/gdb-gdb.gdb
21360libthread-db: No auto-loaded libthread-db.
1ccacbcd
JK
21361local-gdbinit: Local .gdbinit file "/home/user/gdb/.gdbinit" has been
21362 loaded.
bf88dd68
JK
21363python-scripts:
21364Loaded Script
21365Yes /home/user/gdb/gdb-gdb.py
21366@end smallexample
21367@end table
21368
21369These are various kinds of files @value{GDBN} can automatically load:
21370
21371@itemize @bullet
21372@item
21373@xref{objfile-gdb.py file}, controlled by @ref{set auto-load python-scripts}.
21374@item
21375@xref{objfile-gdb.gdb file}, controlled by @ref{set auto-load gdb-scripts}.
21376@item
21377@xref{dotdebug_gdb_scripts section},
21378controlled by @ref{set auto-load python-scripts}.
21379@item
21380@xref{Init File in the Current Directory},
21381controlled by @ref{set auto-load local-gdbinit}.
21382@item
21383@xref{libthread_db.so.1 file}, controlled by @ref{set auto-load libthread-db}.
21384@end itemize
21385
21386These are @value{GDBN} control commands for the auto-loading:
21387
21388@multitable @columnfractions .5 .5
21389@item @xref{set auto-load off}.
21390@tab Disable auto-loading globally.
21391@item @xref{show auto-load}.
21392@tab Show setting of all kinds of files.
21393@item @xref{info auto-load}.
21394@tab Show state of all kinds of files.
21395@item @xref{set auto-load gdb-scripts}.
21396@tab Control for @value{GDBN} command scripts.
21397@item @xref{show auto-load gdb-scripts}.
21398@tab Show setting of @value{GDBN} command scripts.
21399@item @xref{info auto-load gdb-scripts}.
21400@tab Show state of @value{GDBN} command scripts.
21401@item @xref{set auto-load python-scripts}.
21402@tab Control for @value{GDBN} Python scripts.
21403@item @xref{show auto-load python-scripts}.
21404@tab Show setting of @value{GDBN} Python scripts.
21405@item @xref{info auto-load python-scripts}.
21406@tab Show state of @value{GDBN} Python scripts.
7349ff92
JK
21407@item @xref{set auto-load scripts-directory}.
21408@tab Control for @value{GDBN} auto-loaded scripts location.
21409@item @xref{show auto-load scripts-directory}.
21410@tab Show @value{GDBN} auto-loaded scripts location.
bf88dd68
JK
21411@item @xref{set auto-load local-gdbinit}.
21412@tab Control for init file in the current directory.
21413@item @xref{show auto-load local-gdbinit}.
21414@tab Show setting of init file in the current directory.
21415@item @xref{info auto-load local-gdbinit}.
21416@tab Show state of init file in the current directory.
21417@item @xref{set auto-load libthread-db}.
21418@tab Control for thread debugging library.
21419@item @xref{show auto-load libthread-db}.
21420@tab Show setting of thread debugging library.
21421@item @xref{info auto-load libthread-db}.
21422@tab Show state of thread debugging library.
bccbefd2
JK
21423@item @xref{set auto-load safe-path}.
21424@tab Control directories trusted for automatic loading.
21425@item @xref{show auto-load safe-path}.
21426@tab Show directories trusted for automatic loading.
21427@item @xref{add-auto-load-safe-path}.
21428@tab Add directory trusted for automatic loading.
bf88dd68
JK
21429@end multitable
21430
21431@menu
21432* Init File in the Current Directory:: @samp{set/show/info auto-load local-gdbinit}
21433* libthread_db.so.1 file:: @samp{set/show/info auto-load libthread-db}
21434* objfile-gdb.gdb file:: @samp{set/show/info auto-load gdb-script}
bccbefd2 21435* Auto-loading safe path:: @samp{set/show/info auto-load safe-path}
4dc84fd1 21436* Auto-loading verbose mode:: @samp{set/show debug auto-load}
bf88dd68
JK
21437@xref{Python Auto-loading}.
21438@end menu
21439
21440@node Init File in the Current Directory
21441@subsection Automatically loading init file in the current directory
21442@cindex auto-loading init file in the current directory
21443
21444By default, @value{GDBN} reads and executes the canned sequences of commands
21445from init file (if any) in the current working directory,
21446see @ref{Init File in the Current Directory during Startup}.
21447
c1668e4e
JK
21448Note that loading of this local @file{.gdbinit} file also requires accordingly
21449configured @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21450
bf88dd68
JK
21451@table @code
21452@anchor{set auto-load local-gdbinit}
21453@kindex set auto-load local-gdbinit
21454@item set auto-load local-gdbinit [on|off]
21455Enable or disable the auto-loading of canned sequences of commands
21456(@pxref{Sequences}) found in init file in the current directory.
21457
21458@anchor{show auto-load local-gdbinit}
21459@kindex show auto-load local-gdbinit
21460@item show auto-load local-gdbinit
21461Show whether auto-loading of canned sequences of commands from init file in the
21462current directory is enabled or disabled.
21463
21464@anchor{info auto-load local-gdbinit}
21465@kindex info auto-load local-gdbinit
21466@item info auto-load local-gdbinit
21467Print whether canned sequences of commands from init file in the
21468current directory have been auto-loaded.
21469@end table
21470
21471@node libthread_db.so.1 file
21472@subsection Automatically loading thread debugging library
21473@cindex auto-loading libthread_db.so.1
21474
21475This feature is currently present only on @sc{gnu}/Linux native hosts.
21476
21477@value{GDBN} reads in some cases thread debugging library from places specific
21478to the inferior (@pxref{set libthread-db-search-path}).
21479
21480The special @samp{libthread-db-search-path} entry @samp{$sdir} is processed
21481without checking this @samp{set auto-load libthread-db} switch as system
21482libraries have to be trusted in general. In all other cases of
21483@samp{libthread-db-search-path} entries @value{GDBN} checks first if @samp{set
21484auto-load libthread-db} is enabled before trying to open such thread debugging
21485library.
21486
c1668e4e
JK
21487Note that loading of this debugging library also requires accordingly configured
21488@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21489
bf88dd68
JK
21490@table @code
21491@anchor{set auto-load libthread-db}
21492@kindex set auto-load libthread-db
21493@item set auto-load libthread-db [on|off]
21494Enable or disable the auto-loading of inferior specific thread debugging library.
21495
21496@anchor{show auto-load libthread-db}
21497@kindex show auto-load libthread-db
21498@item show auto-load libthread-db
21499Show whether auto-loading of inferior specific thread debugging library is
21500enabled or disabled.
21501
21502@anchor{info auto-load libthread-db}
21503@kindex info auto-load libthread-db
21504@item info auto-load libthread-db
21505Print the list of all loaded inferior specific thread debugging libraries and
21506for each such library print list of inferior @var{pid}s using it.
21507@end table
21508
21509@node objfile-gdb.gdb file
21510@subsection The @file{@var{objfile}-gdb.gdb} file
21511@cindex auto-loading @file{@var{objfile}-gdb.gdb}
21512
21513@value{GDBN} tries to load an @file{@var{objfile}-gdb.gdb} file containing
21514canned sequences of commands (@pxref{Sequences}), as long as @samp{set
21515auto-load gdb-scripts} is set to @samp{on}.
21516
c1668e4e
JK
21517Note that loading of this script file also requires accordingly configured
21518@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21519
bf88dd68
JK
21520For more background refer to the similar Python scripts auto-loading
21521description (@pxref{objfile-gdb.py file}).
21522
21523@table @code
21524@anchor{set auto-load gdb-scripts}
21525@kindex set auto-load gdb-scripts
21526@item set auto-load gdb-scripts [on|off]
21527Enable or disable the auto-loading of canned sequences of commands scripts.
21528
21529@anchor{show auto-load gdb-scripts}
21530@kindex show auto-load gdb-scripts
21531@item show auto-load gdb-scripts
21532Show whether auto-loading of canned sequences of commands scripts is enabled or
21533disabled.
21534
21535@anchor{info auto-load gdb-scripts}
21536@kindex info auto-load gdb-scripts
21537@cindex print list of auto-loaded canned sequences of commands scripts
21538@item info auto-load gdb-scripts [@var{regexp}]
21539Print the list of all canned sequences of commands scripts that @value{GDBN}
21540auto-loaded.
21541@end table
21542
21543If @var{regexp} is supplied only canned sequences of commands scripts with
21544matching names are printed.
21545
bccbefd2
JK
21546@node Auto-loading safe path
21547@subsection Security restriction for auto-loading
21548@cindex auto-loading safe-path
21549
21550As the files of inferior can come from untrusted source (such as submitted by
21551an application user) @value{GDBN} does not always load any files automatically.
21552@value{GDBN} provides the @samp{set auto-load safe-path} setting to list
21553directories trusted for loading files not explicitly requested by user.
202cbf1c 21554Each directory can also be a shell wildcard pattern.
bccbefd2
JK
21555
21556If the path is not set properly you will see a warning and the file will not
21557get loaded:
21558
21559@smallexample
21560$ ./gdb -q ./gdb
21561Reading symbols from /home/user/gdb/gdb...done.
21562warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been
1564a261
JK
21563 declined by your `auto-load safe-path' set
21564 to "$debugdir:$datadir/auto-load".
bccbefd2 21565warning: File "/home/user/gdb/gdb-gdb.py" auto-loading has been
1564a261
JK
21566 declined by your `auto-load safe-path' set
21567 to "$debugdir:$datadir/auto-load".
bccbefd2
JK
21568@end smallexample
21569
21570The list of trusted directories is controlled by the following commands:
21571
21572@table @code
21573@anchor{set auto-load safe-path}
21574@kindex set auto-load safe-path
af2c1515 21575@item set auto-load safe-path @r{[}@var{directories}@r{]}
bccbefd2
JK
21576Set the list of directories (and their subdirectories) trusted for automatic
21577loading and execution of scripts. You can also enter a specific trusted file.
202cbf1c
JK
21578Each directory can also be a shell wildcard pattern; wildcards do not match
21579directory separator - see @code{FNM_PATHNAME} for system function @code{fnmatch}
21580(@pxref{Wildcard Matching, fnmatch, , libc, GNU C Library Reference Manual}).
af2c1515
JK
21581If you omit @var{directories}, @samp{auto-load safe-path} will be reset to
21582its default value as specified during @value{GDBN} compilation.
21583
d9242c17 21584The list of directories uses path separator (@samp{:} on GNU and Unix
bccbefd2
JK
21585systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly
21586to the @env{PATH} environment variable.
21587
21588@anchor{show auto-load safe-path}
21589@kindex show auto-load safe-path
21590@item show auto-load safe-path
21591Show the list of directories trusted for automatic loading and execution of
21592scripts.
21593
21594@anchor{add-auto-load-safe-path}
21595@kindex add-auto-load-safe-path
21596@item add-auto-load-safe-path
21597Add an entry (or list of entries) the list of directories trusted for automatic
21598loading and execution of scripts. Multiple entries may be delimited by the
d9242c17 21599host platform path separator in use.
bccbefd2
JK
21600@end table
21601
7349ff92 21602This variable defaults to what @code{--with-auto-load-dir} has been configured
1564a261
JK
21603to (@pxref{with-auto-load-dir}). @file{$debugdir} and @file{$datadir}
21604substitution applies the same as for @ref{set auto-load scripts-directory}.
21605The default @code{set auto-load safe-path} value can be also overriden by
21606@value{GDBN} configuration option @option{--with-auto-load-safe-path}.
6dea1fbd 21607
6dea1fbd
JK
21608Setting this variable to @file{/} disables this security protection,
21609corresponding @value{GDBN} configuration option is
21610@option{--without-auto-load-safe-path}.
bccbefd2
JK
21611This variable is supposed to be set to the system directories writable by the
21612system superuser only. Users can add their source directories in init files in
21613their home directories (@pxref{Home Directory Init File}). See also deprecated
21614init file in the current directory
21615(@pxref{Init File in the Current Directory during Startup}).
21616
21617To force @value{GDBN} to load the files it declined to load in the previous
21618example, you could use one of the following ways:
21619
0511cc75
JK
21620@table @asis
21621@item @file{~/.gdbinit}: @samp{add-auto-load-safe-path ~/src/gdb}
bccbefd2
JK
21622Specify this trusted directory (or a file) as additional component of the list.
21623You have to specify also any existing directories displayed by
21624by @samp{show auto-load safe-path} (such as @samp{/usr:/bin} in this example).
21625
174bb630 21626@item @kbd{gdb -iex "set auto-load safe-path /usr:/bin:~/src/gdb" @dots{}}
bccbefd2
JK
21627Specify this directory as in the previous case but just for a single
21628@value{GDBN} session.
21629
af2c1515 21630@item @kbd{gdb -iex "set auto-load safe-path /" @dots{}}
bccbefd2
JK
21631Disable auto-loading safety for a single @value{GDBN} session.
21632This assumes all the files you debug during this @value{GDBN} session will come
21633from trusted sources.
21634
21635@item @kbd{./configure --without-auto-load-safe-path}
21636During compilation of @value{GDBN} you may disable any auto-loading safety.
21637This assumes all the files you will ever debug with this @value{GDBN} come from
21638trusted sources.
0511cc75 21639@end table
bccbefd2
JK
21640
21641On the other hand you can also explicitly forbid automatic files loading which
21642also suppresses any such warning messages:
21643
0511cc75 21644@table @asis
174bb630 21645@item @kbd{gdb -iex "set auto-load no" @dots{}}
bccbefd2
JK
21646You can use @value{GDBN} command-line option for a single @value{GDBN} session.
21647
0511cc75 21648@item @file{~/.gdbinit}: @samp{set auto-load no}
bccbefd2
JK
21649Disable auto-loading globally for the user
21650(@pxref{Home Directory Init File}). While it is improbable, you could also
21651use system init file instead (@pxref{System-wide configuration}).
0511cc75 21652@end table
bccbefd2
JK
21653
21654This setting applies to the file names as entered by user. If no entry matches
21655@value{GDBN} tries as a last resort to also resolve all the file names into
21656their canonical form (typically resolving symbolic links) and compare the
21657entries again. @value{GDBN} already canonicalizes most of the filenames on its
21658own before starting the comparison so a canonical form of directories is
21659recommended to be entered.
21660
4dc84fd1
JK
21661@node Auto-loading verbose mode
21662@subsection Displaying files tried for auto-load
21663@cindex auto-loading verbose mode
21664
21665For better visibility of all the file locations where you can place scripts to
21666be auto-loaded with inferior --- or to protect yourself against accidental
21667execution of untrusted scripts --- @value{GDBN} provides a feature for printing
21668all the files attempted to be loaded. Both existing and non-existing files may
21669be printed.
21670
21671For example the list of directories from which it is safe to auto-load files
21672(@pxref{Auto-loading safe path}) applies also to canonicalized filenames which
21673may not be too obvious while setting it up.
21674
21675@smallexample
0070f25a 21676(gdb) set debug auto-load on
4dc84fd1
JK
21677(gdb) file ~/src/t/true
21678auto-load: Loading canned sequences of commands script "/tmp/true-gdb.gdb"
21679 for objfile "/tmp/true".
21680auto-load: Updating directories of "/usr:/opt".
21681auto-load: Using directory "/usr".
21682auto-load: Using directory "/opt".
21683warning: File "/tmp/true-gdb.gdb" auto-loading has been declined
21684 by your `auto-load safe-path' set to "/usr:/opt".
21685@end smallexample
21686
21687@table @code
21688@anchor{set debug auto-load}
21689@kindex set debug auto-load
21690@item set debug auto-load [on|off]
21691Set whether to print the filenames attempted to be auto-loaded.
21692
21693@anchor{show debug auto-load}
21694@kindex show debug auto-load
21695@item show debug auto-load
21696Show whether printing of the filenames attempted to be auto-loaded is turned
21697on or off.
21698@end table
21699
8e04817f 21700@node Messages/Warnings
79a6e687 21701@section Optional Warnings and Messages
104c1213 21702
9c16f35a
EZ
21703@cindex verbose operation
21704@cindex optional warnings
8e04817f
AC
21705By default, @value{GDBN} is silent about its inner workings. If you are
21706running on a slow machine, you may want to use the @code{set verbose}
21707command. This makes @value{GDBN} tell you when it does a lengthy
21708internal operation, so you will not think it has crashed.
104c1213 21709
8e04817f
AC
21710Currently, the messages controlled by @code{set verbose} are those
21711which announce that the symbol table for a source file is being read;
79a6e687 21712see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}.
104c1213 21713
8e04817f
AC
21714@table @code
21715@kindex set verbose
21716@item set verbose on
21717Enables @value{GDBN} output of certain informational messages.
104c1213 21718
8e04817f
AC
21719@item set verbose off
21720Disables @value{GDBN} output of certain informational messages.
104c1213 21721
8e04817f
AC
21722@kindex show verbose
21723@item show verbose
21724Displays whether @code{set verbose} is on or off.
21725@end table
104c1213 21726
8e04817f
AC
21727By default, if @value{GDBN} encounters bugs in the symbol table of an
21728object file, it is silent; but if you are debugging a compiler, you may
79a6e687
BW
21729find this information useful (@pxref{Symbol Errors, ,Errors Reading
21730Symbol Files}).
104c1213 21731
8e04817f 21732@table @code
104c1213 21733
8e04817f
AC
21734@kindex set complaints
21735@item set complaints @var{limit}
21736Permits @value{GDBN} to output @var{limit} complaints about each type of
21737unusual symbols before becoming silent about the problem. Set
21738@var{limit} to zero to suppress all complaints; set it to a large number
21739to prevent complaints from being suppressed.
104c1213 21740
8e04817f
AC
21741@kindex show complaints
21742@item show complaints
21743Displays how many symbol complaints @value{GDBN} is permitted to produce.
104c1213 21744
8e04817f 21745@end table
104c1213 21746
d837706a 21747@anchor{confirmation requests}
8e04817f
AC
21748By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
21749lot of stupid questions to confirm certain commands. For example, if
21750you try to run a program which is already running:
104c1213 21751
474c8240 21752@smallexample
8e04817f
AC
21753(@value{GDBP}) run
21754The program being debugged has been started already.
21755Start it from the beginning? (y or n)
474c8240 21756@end smallexample
104c1213 21757
8e04817f
AC
21758If you are willing to unflinchingly face the consequences of your own
21759commands, you can disable this ``feature'':
104c1213 21760
8e04817f 21761@table @code
104c1213 21762
8e04817f
AC
21763@kindex set confirm
21764@cindex flinching
21765@cindex confirmation
21766@cindex stupid questions
21767@item set confirm off
7c953934
TT
21768Disables confirmation requests. Note that running @value{GDBN} with
21769the @option{--batch} option (@pxref{Mode Options, -batch}) also
21770automatically disables confirmation requests.
104c1213 21771
8e04817f
AC
21772@item set confirm on
21773Enables confirmation requests (the default).
104c1213 21774
8e04817f
AC
21775@kindex show confirm
21776@item show confirm
21777Displays state of confirmation requests.
21778
21779@end table
104c1213 21780
16026cd7
AS
21781@cindex command tracing
21782If you need to debug user-defined commands or sourced files you may find it
21783useful to enable @dfn{command tracing}. In this mode each command will be
21784printed as it is executed, prefixed with one or more @samp{+} symbols, the
21785quantity denoting the call depth of each command.
21786
21787@table @code
21788@kindex set trace-commands
21789@cindex command scripts, debugging
21790@item set trace-commands on
21791Enable command tracing.
21792@item set trace-commands off
21793Disable command tracing.
21794@item show trace-commands
21795Display the current state of command tracing.
21796@end table
21797
8e04817f 21798@node Debugging Output
79a6e687 21799@section Optional Messages about Internal Happenings
4644b6e3
EZ
21800@cindex optional debugging messages
21801
da316a69
EZ
21802@value{GDBN} has commands that enable optional debugging messages from
21803various @value{GDBN} subsystems; normally these commands are of
21804interest to @value{GDBN} maintainers, or when reporting a bug. This
21805section documents those commands.
21806
104c1213 21807@table @code
a8f24a35
EZ
21808@kindex set exec-done-display
21809@item set exec-done-display
21810Turns on or off the notification of asynchronous commands'
21811completion. When on, @value{GDBN} will print a message when an
21812asynchronous command finishes its execution. The default is off.
21813@kindex show exec-done-display
21814@item show exec-done-display
21815Displays the current setting of asynchronous command completion
21816notification.
4644b6e3
EZ
21817@kindex set debug
21818@cindex gdbarch debugging info
a8f24a35 21819@cindex architecture debugging info
8e04817f 21820@item set debug arch
a8f24a35 21821Turns on or off display of gdbarch debugging info. The default is off
4644b6e3 21822@kindex show debug
8e04817f
AC
21823@item show debug arch
21824Displays the current state of displaying gdbarch debugging info.
721c2651
EZ
21825@item set debug aix-thread
21826@cindex AIX threads
21827Display debugging messages about inner workings of the AIX thread
21828module.
21829@item show debug aix-thread
21830Show the current state of AIX thread debugging info display.
900e11f9
JK
21831@item set debug check-physname
21832@cindex physname
21833Check the results of the ``physname'' computation. When reading DWARF
21834debugging information for C@t{++}, @value{GDBN} attempts to compute
21835each entity's name. @value{GDBN} can do this computation in two
21836different ways, depending on exactly what information is present.
21837When enabled, this setting causes @value{GDBN} to compute the names
21838both ways and display any discrepancies.
21839@item show debug check-physname
21840Show the current state of ``physname'' checking.
d97bc12b
DE
21841@item set debug dwarf2-die
21842@cindex DWARF2 DIEs
21843Dump DWARF2 DIEs after they are read in.
21844The value is the number of nesting levels to print.
21845A value of zero turns off the display.
21846@item show debug dwarf2-die
21847Show the current state of DWARF2 DIE debugging.
45cfd468
DE
21848@item set debug dwarf2-read
21849@cindex DWARF2 Reading
21850Turns on or off display of debugging messages related to reading
21851DWARF debug info. The default is off.
21852@item show debug dwarf2-read
21853Show the current state of DWARF2 reader debugging.
237fc4c9
PA
21854@item set debug displaced
21855@cindex displaced stepping debugging info
21856Turns on or off display of @value{GDBN} debugging info for the
21857displaced stepping support. The default is off.
21858@item show debug displaced
21859Displays the current state of displaying @value{GDBN} debugging info
21860related to displaced stepping.
8e04817f 21861@item set debug event
4644b6e3 21862@cindex event debugging info
a8f24a35 21863Turns on or off display of @value{GDBN} event debugging info. The
8e04817f 21864default is off.
8e04817f
AC
21865@item show debug event
21866Displays the current state of displaying @value{GDBN} event debugging
21867info.
8e04817f 21868@item set debug expression
4644b6e3 21869@cindex expression debugging info
721c2651
EZ
21870Turns on or off display of debugging info about @value{GDBN}
21871expression parsing. The default is off.
8e04817f 21872@item show debug expression
721c2651
EZ
21873Displays the current state of displaying debugging info about
21874@value{GDBN} expression parsing.
7453dc06 21875@item set debug frame
4644b6e3 21876@cindex frame debugging info
7453dc06
AC
21877Turns on or off display of @value{GDBN} frame debugging info. The
21878default is off.
7453dc06
AC
21879@item show debug frame
21880Displays the current state of displaying @value{GDBN} frame debugging
21881info.
cbe54154
PA
21882@item set debug gnu-nat
21883@cindex @sc{gnu}/Hurd debug messages
21884Turns on or off debugging messages from the @sc{gnu}/Hurd debug support.
21885@item show debug gnu-nat
21886Show the current state of @sc{gnu}/Hurd debugging messages.
30e91e0b
RC
21887@item set debug infrun
21888@cindex inferior debugging info
21889Turns on or off display of @value{GDBN} debugging info for running the inferior.
21890The default is off. @file{infrun.c} contains GDB's runtime state machine used
21891for implementing operations such as single-stepping the inferior.
21892@item show debug infrun
21893Displays the current state of @value{GDBN} inferior debugging.
a255712f
PP
21894@item set debug jit
21895@cindex just-in-time compilation, debugging messages
21896Turns on or off debugging messages from JIT debug support.
21897@item show debug jit
21898Displays the current state of @value{GDBN} JIT debugging.
da316a69
EZ
21899@item set debug lin-lwp
21900@cindex @sc{gnu}/Linux LWP debug messages
21901@cindex Linux lightweight processes
721c2651 21902Turns on or off debugging messages from the Linux LWP debug support.
da316a69
EZ
21903@item show debug lin-lwp
21904Show the current state of Linux LWP debugging messages.
2b4855ab 21905@item set debug observer
4644b6e3 21906@cindex observer debugging info
2b4855ab
AC
21907Turns on or off display of @value{GDBN} observer debugging. This
21908includes info such as the notification of observable events.
2b4855ab
AC
21909@item show debug observer
21910Displays the current state of observer debugging.
8e04817f 21911@item set debug overload
4644b6e3 21912@cindex C@t{++} overload debugging info
8e04817f 21913Turns on or off display of @value{GDBN} C@t{++} overload debugging
359df76b 21914info. This includes info such as ranking of functions, etc. The default
8e04817f 21915is off.
8e04817f
AC
21916@item show debug overload
21917Displays the current state of displaying @value{GDBN} C@t{++} overload
21918debugging info.
92981e24
TT
21919@cindex expression parser, debugging info
21920@cindex debug expression parser
21921@item set debug parser
21922Turns on or off the display of expression parser debugging output.
21923Internally, this sets the @code{yydebug} variable in the expression
21924parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for
21925details. The default is off.
21926@item show debug parser
21927Show the current state of expression parser debugging.
8e04817f
AC
21928@cindex packets, reporting on stdout
21929@cindex serial connections, debugging
605a56cb
DJ
21930@cindex debug remote protocol
21931@cindex remote protocol debugging
21932@cindex display remote packets
8e04817f
AC
21933@item set debug remote
21934Turns on or off display of reports on all packets sent back and forth across
21935the serial line to the remote machine. The info is printed on the
21936@value{GDBN} standard output stream. The default is off.
8e04817f
AC
21937@item show debug remote
21938Displays the state of display of remote packets.
8e04817f
AC
21939@item set debug serial
21940Turns on or off display of @value{GDBN} serial debugging info. The
21941default is off.
8e04817f
AC
21942@item show debug serial
21943Displays the current state of displaying @value{GDBN} serial debugging
21944info.
c45da7e6
EZ
21945@item set debug solib-frv
21946@cindex FR-V shared-library debugging
21947Turns on or off debugging messages for FR-V shared-library code.
21948@item show debug solib-frv
21949Display the current state of FR-V shared-library code debugging
21950messages.
45cfd468
DE
21951@item set debug symtab-create
21952@cindex symbol table creation
21953Turns on or off display of debugging messages related to symbol table creation.
21954The default is off.
21955@item show debug symtab-create
21956Show the current state of symbol table creation debugging.
8e04817f 21957@item set debug target
4644b6e3 21958@cindex target debugging info
8e04817f
AC
21959Turns on or off display of @value{GDBN} target debugging info. This info
21960includes what is going on at the target level of GDB, as it happens. The
701b08bb
DJ
21961default is 0. Set it to 1 to track events, and to 2 to also track the
21962value of large memory transfers. Changes to this flag do not take effect
21963until the next time you connect to a target or use the @code{run} command.
8e04817f
AC
21964@item show debug target
21965Displays the current state of displaying @value{GDBN} target debugging
21966info.
75feb17d
DJ
21967@item set debug timestamp
21968@cindex timestampping debugging info
21969Turns on or off display of timestamps with @value{GDBN} debugging info.
21970When enabled, seconds and microseconds are displayed before each debugging
21971message.
21972@item show debug timestamp
21973Displays the current state of displaying timestamps with @value{GDBN}
21974debugging info.
c45da7e6 21975@item set debugvarobj
4644b6e3 21976@cindex variable object debugging info
8e04817f
AC
21977Turns on or off display of @value{GDBN} variable object debugging
21978info. The default is off.
c45da7e6 21979@item show debugvarobj
8e04817f
AC
21980Displays the current state of displaying @value{GDBN} variable object
21981debugging info.
e776119f
DJ
21982@item set debug xml
21983@cindex XML parser debugging
21984Turns on or off debugging messages for built-in XML parsers.
21985@item show debug xml
21986Displays the current state of XML debugging messages.
8e04817f 21987@end table
104c1213 21988
14fb1bac
JB
21989@node Other Misc Settings
21990@section Other Miscellaneous Settings
21991@cindex miscellaneous settings
21992
21993@table @code
21994@kindex set interactive-mode
21995@item set interactive-mode
7bfc9434
JB
21996If @code{on}, forces @value{GDBN} to assume that GDB was started
21997in a terminal. In practice, this means that @value{GDBN} should wait
21998for the user to answer queries generated by commands entered at
21999the command prompt. If @code{off}, forces @value{GDBN} to operate
22000in the opposite mode, and it uses the default answers to all queries.
22001If @code{auto} (the default), @value{GDBN} tries to determine whether
22002its standard input is a terminal, and works in interactive-mode if it
22003is, non-interactively otherwise.
14fb1bac
JB
22004
22005In the vast majority of cases, the debugger should be able to guess
22006correctly which mode should be used. But this setting can be useful
22007in certain specific cases, such as running a MinGW @value{GDBN}
22008inside a cygwin window.
22009
22010@kindex show interactive-mode
22011@item show interactive-mode
22012Displays whether the debugger is operating in interactive mode or not.
22013@end table
22014
d57a3c85
TJB
22015@node Extending GDB
22016@chapter Extending @value{GDBN}
22017@cindex extending GDB
22018
5a56e9c5
DE
22019@value{GDBN} provides three mechanisms for extension. The first is based
22020on composition of @value{GDBN} commands, the second is based on the
22021Python scripting language, and the third is for defining new aliases of
22022existing commands.
d57a3c85 22023
5a56e9c5 22024To facilitate the use of the first two extensions, @value{GDBN} is capable
95433b34
JB
22025of evaluating the contents of a file. When doing so, @value{GDBN}
22026can recognize which scripting language is being used by looking at
22027the filename extension. Files with an unrecognized filename extension
22028are always treated as a @value{GDBN} Command Files.
22029@xref{Command Files,, Command files}.
22030
22031You can control how @value{GDBN} evaluates these files with the following
22032setting:
22033
22034@table @code
22035@kindex set script-extension
22036@kindex show script-extension
22037@item set script-extension off
22038All scripts are always evaluated as @value{GDBN} Command Files.
22039
22040@item set script-extension soft
22041The debugger determines the scripting language based on filename
22042extension. If this scripting language is supported, @value{GDBN}
22043evaluates the script using that language. Otherwise, it evaluates
22044the file as a @value{GDBN} Command File.
22045
22046@item set script-extension strict
22047The debugger determines the scripting language based on filename
22048extension, and evaluates the script using that language. If the
22049language is not supported, then the evaluation fails.
22050
22051@item show script-extension
22052Display the current value of the @code{script-extension} option.
22053
22054@end table
22055
d57a3c85
TJB
22056@menu
22057* Sequences:: Canned Sequences of Commands
22058* Python:: Scripting @value{GDBN} using Python
5a56e9c5 22059* Aliases:: Creating new spellings of existing commands
d57a3c85
TJB
22060@end menu
22061
8e04817f 22062@node Sequences
d57a3c85 22063@section Canned Sequences of Commands
104c1213 22064
8e04817f 22065Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
79a6e687 22066Command Lists}), @value{GDBN} provides two ways to store sequences of
8e04817f
AC
22067commands for execution as a unit: user-defined commands and command
22068files.
104c1213 22069
8e04817f 22070@menu
fcc73fe3
EZ
22071* Define:: How to define your own commands
22072* Hooks:: Hooks for user-defined commands
22073* Command Files:: How to write scripts of commands to be stored in a file
22074* Output:: Commands for controlled output
8e04817f 22075@end menu
104c1213 22076
8e04817f 22077@node Define
d57a3c85 22078@subsection User-defined Commands
104c1213 22079
8e04817f 22080@cindex user-defined command
fcc73fe3 22081@cindex arguments, to user-defined commands
8e04817f
AC
22082A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
22083which you assign a new name as a command. This is done with the
22084@code{define} command. User commands may accept up to 10 arguments
22085separated by whitespace. Arguments are accessed within the user command
c03c782f 22086via @code{$arg0@dots{}$arg9}. A trivial example:
104c1213 22087
8e04817f
AC
22088@smallexample
22089define adder
22090 print $arg0 + $arg1 + $arg2
c03c782f 22091end
8e04817f 22092@end smallexample
104c1213
JM
22093
22094@noindent
8e04817f 22095To execute the command use:
104c1213 22096
8e04817f
AC
22097@smallexample
22098adder 1 2 3
22099@end smallexample
104c1213 22100
8e04817f
AC
22101@noindent
22102This defines the command @code{adder}, which prints the sum of
22103its three arguments. Note the arguments are text substitutions, so they may
22104reference variables, use complex expressions, or even perform inferior
22105functions calls.
104c1213 22106
fcc73fe3
EZ
22107@cindex argument count in user-defined commands
22108@cindex how many arguments (user-defined commands)
c03c782f
AS
22109In addition, @code{$argc} may be used to find out how many arguments have
22110been passed. This expands to a number in the range 0@dots{}10.
22111
22112@smallexample
22113define adder
22114 if $argc == 2
22115 print $arg0 + $arg1
22116 end
22117 if $argc == 3
22118 print $arg0 + $arg1 + $arg2
22119 end
22120end
22121@end smallexample
22122
104c1213 22123@table @code
104c1213 22124
8e04817f
AC
22125@kindex define
22126@item define @var{commandname}
22127Define a command named @var{commandname}. If there is already a command
22128by that name, you are asked to confirm that you want to redefine it.
adb483fe
DJ
22129@var{commandname} may be a bare command name consisting of letters,
22130numbers, dashes, and underscores. It may also start with any predefined
22131prefix command. For example, @samp{define target my-target} creates
22132a user-defined @samp{target my-target} command.
104c1213 22133
8e04817f
AC
22134The definition of the command is made up of other @value{GDBN} command lines,
22135which are given following the @code{define} command. The end of these
22136commands is marked by a line containing @code{end}.
104c1213 22137
8e04817f 22138@kindex document
ca91424e 22139@kindex end@r{ (user-defined commands)}
8e04817f
AC
22140@item document @var{commandname}
22141Document the user-defined command @var{commandname}, so that it can be
22142accessed by @code{help}. The command @var{commandname} must already be
22143defined. This command reads lines of documentation just as @code{define}
22144reads the lines of the command definition, ending with @code{end}.
22145After the @code{document} command is finished, @code{help} on command
22146@var{commandname} displays the documentation you have written.
104c1213 22147
8e04817f
AC
22148You may use the @code{document} command again to change the
22149documentation of a command. Redefining the command with @code{define}
22150does not change the documentation.
104c1213 22151
c45da7e6
EZ
22152@kindex dont-repeat
22153@cindex don't repeat command
22154@item dont-repeat
22155Used inside a user-defined command, this tells @value{GDBN} that this
22156command should not be repeated when the user hits @key{RET}
22157(@pxref{Command Syntax, repeat last command}).
22158
8e04817f
AC
22159@kindex help user-defined
22160@item help user-defined
7d74f244
DE
22161List all user-defined commands and all python commands defined in class
22162COMAND_USER. The first line of the documentation or docstring is
22163included (if any).
104c1213 22164
8e04817f
AC
22165@kindex show user
22166@item show user
22167@itemx show user @var{commandname}
22168Display the @value{GDBN} commands used to define @var{commandname} (but
22169not its documentation). If no @var{commandname} is given, display the
22170definitions for all user-defined commands.
7d74f244 22171This does not work for user-defined python commands.
104c1213 22172
fcc73fe3 22173@cindex infinite recursion in user-defined commands
20f01a46
DH
22174@kindex show max-user-call-depth
22175@kindex set max-user-call-depth
22176@item show max-user-call-depth
5ca0cb28
DH
22177@itemx set max-user-call-depth
22178The value of @code{max-user-call-depth} controls how many recursion
3f94c067 22179levels are allowed in user-defined commands before @value{GDBN} suspects an
5ca0cb28 22180infinite recursion and aborts the command.
7d74f244 22181This does not apply to user-defined python commands.
104c1213
JM
22182@end table
22183
fcc73fe3
EZ
22184In addition to the above commands, user-defined commands frequently
22185use control flow commands, described in @ref{Command Files}.
22186
8e04817f
AC
22187When user-defined commands are executed, the
22188commands of the definition are not printed. An error in any command
22189stops execution of the user-defined command.
104c1213 22190
8e04817f
AC
22191If used interactively, commands that would ask for confirmation proceed
22192without asking when used inside a user-defined command. Many @value{GDBN}
22193commands that normally print messages to say what they are doing omit the
22194messages when used in a user-defined command.
104c1213 22195
8e04817f 22196@node Hooks
d57a3c85 22197@subsection User-defined Command Hooks
8e04817f
AC
22198@cindex command hooks
22199@cindex hooks, for commands
22200@cindex hooks, pre-command
104c1213 22201
8e04817f 22202@kindex hook
8e04817f
AC
22203You may define @dfn{hooks}, which are a special kind of user-defined
22204command. Whenever you run the command @samp{foo}, if the user-defined
22205command @samp{hook-foo} exists, it is executed (with no arguments)
22206before that command.
104c1213 22207
8e04817f
AC
22208@cindex hooks, post-command
22209@kindex hookpost
8e04817f
AC
22210A hook may also be defined which is run after the command you executed.
22211Whenever you run the command @samp{foo}, if the user-defined command
22212@samp{hookpost-foo} exists, it is executed (with no arguments) after
22213that command. Post-execution hooks may exist simultaneously with
22214pre-execution hooks, for the same command.
104c1213 22215
8e04817f 22216It is valid for a hook to call the command which it hooks. If this
9f1c6395 22217occurs, the hook is not re-executed, thereby avoiding infinite recursion.
104c1213 22218
8e04817f
AC
22219@c It would be nice if hookpost could be passed a parameter indicating
22220@c if the command it hooks executed properly or not. FIXME!
104c1213 22221
8e04817f
AC
22222@kindex stop@r{, a pseudo-command}
22223In addition, a pseudo-command, @samp{stop} exists. Defining
22224(@samp{hook-stop}) makes the associated commands execute every time
22225execution stops in your program: before breakpoint commands are run,
22226displays are printed, or the stack frame is printed.
104c1213 22227
8e04817f
AC
22228For example, to ignore @code{SIGALRM} signals while
22229single-stepping, but treat them normally during normal execution,
22230you could define:
104c1213 22231
474c8240 22232@smallexample
8e04817f
AC
22233define hook-stop
22234handle SIGALRM nopass
22235end
104c1213 22236
8e04817f
AC
22237define hook-run
22238handle SIGALRM pass
22239end
104c1213 22240
8e04817f 22241define hook-continue
d3e8051b 22242handle SIGALRM pass
8e04817f 22243end
474c8240 22244@end smallexample
104c1213 22245
d3e8051b 22246As a further example, to hook at the beginning and end of the @code{echo}
b383017d 22247command, and to add extra text to the beginning and end of the message,
8e04817f 22248you could define:
104c1213 22249
474c8240 22250@smallexample
8e04817f
AC
22251define hook-echo
22252echo <<<---
22253end
104c1213 22254
8e04817f
AC
22255define hookpost-echo
22256echo --->>>\n
22257end
104c1213 22258
8e04817f
AC
22259(@value{GDBP}) echo Hello World
22260<<<---Hello World--->>>
22261(@value{GDBP})
104c1213 22262
474c8240 22263@end smallexample
104c1213 22264
8e04817f
AC
22265You can define a hook for any single-word command in @value{GDBN}, but
22266not for command aliases; you should define a hook for the basic command
c1468174 22267name, e.g.@: @code{backtrace} rather than @code{bt}.
8e04817f
AC
22268@c FIXME! So how does Joe User discover whether a command is an alias
22269@c or not?
adb483fe
DJ
22270You can hook a multi-word command by adding @code{hook-} or
22271@code{hookpost-} to the last word of the command, e.g.@:
22272@samp{define target hook-remote} to add a hook to @samp{target remote}.
22273
8e04817f
AC
22274If an error occurs during the execution of your hook, execution of
22275@value{GDBN} commands stops and @value{GDBN} issues a prompt
22276(before the command that you actually typed had a chance to run).
104c1213 22277
8e04817f
AC
22278If you try to define a hook which does not match any known command, you
22279get a warning from the @code{define} command.
c906108c 22280
8e04817f 22281@node Command Files
d57a3c85 22282@subsection Command Files
c906108c 22283
8e04817f 22284@cindex command files
fcc73fe3 22285@cindex scripting commands
6fc08d32
EZ
22286A command file for @value{GDBN} is a text file made of lines that are
22287@value{GDBN} commands. Comments (lines starting with @kbd{#}) may
22288also be included. An empty line in a command file does nothing; it
22289does not mean to repeat the last command, as it would from the
22290terminal.
c906108c 22291
6fc08d32 22292You can request the execution of a command file with the @code{source}
95433b34
JB
22293command. Note that the @code{source} command is also used to evaluate
22294scripts that are not Command Files. The exact behavior can be configured
22295using the @code{script-extension} setting.
22296@xref{Extending GDB,, Extending GDB}.
c906108c 22297
8e04817f
AC
22298@table @code
22299@kindex source
ca91424e 22300@cindex execute commands from a file
3f7b2faa 22301@item source [-s] [-v] @var{filename}
8e04817f 22302Execute the command file @var{filename}.
c906108c
SS
22303@end table
22304
fcc73fe3
EZ
22305The lines in a command file are generally executed sequentially,
22306unless the order of execution is changed by one of the
22307@emph{flow-control commands} described below. The commands are not
a71ec265
DH
22308printed as they are executed. An error in any command terminates
22309execution of the command file and control is returned to the console.
c906108c 22310
08001717
DE
22311@value{GDBN} first searches for @var{filename} in the current directory.
22312If the file is not found there, and @var{filename} does not specify a
22313directory, then @value{GDBN} also looks for the file on the source search path
22314(specified with the @samp{directory} command);
22315except that @file{$cdir} is not searched because the compilation directory
22316is not relevant to scripts.
4b505b12 22317
3f7b2faa
DE
22318If @code{-s} is specified, then @value{GDBN} searches for @var{filename}
22319on the search path even if @var{filename} specifies a directory.
22320The search is done by appending @var{filename} to each element of the
22321search path. So, for example, if @var{filename} is @file{mylib/myscript}
22322and the search path contains @file{/home/user} then @value{GDBN} will
22323look for the script @file{/home/user/mylib/myscript}.
22324The search is also done if @var{filename} is an absolute path.
22325For example, if @var{filename} is @file{/tmp/myscript} and
22326the search path contains @file{/home/user} then @value{GDBN} will
22327look for the script @file{/home/user/tmp/myscript}.
22328For DOS-like systems, if @var{filename} contains a drive specification,
22329it is stripped before concatenation. For example, if @var{filename} is
22330@file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN}
22331will look for the script @file{c:/tmp/myscript}.
22332
16026cd7
AS
22333If @code{-v}, for verbose mode, is given then @value{GDBN} displays
22334each command as it is executed. The option must be given before
22335@var{filename}, and is interpreted as part of the filename anywhere else.
22336
8e04817f
AC
22337Commands that would ask for confirmation if used interactively proceed
22338without asking when used in a command file. Many @value{GDBN} commands that
22339normally print messages to say what they are doing omit the messages
22340when called from command files.
c906108c 22341
8e04817f
AC
22342@value{GDBN} also accepts command input from standard input. In this
22343mode, normal output goes to standard output and error output goes to
22344standard error. Errors in a command file supplied on standard input do
6fc08d32 22345not terminate execution of the command file---execution continues with
8e04817f 22346the next command.
c906108c 22347
474c8240 22348@smallexample
8e04817f 22349gdb < cmds > log 2>&1
474c8240 22350@end smallexample
c906108c 22351
8e04817f
AC
22352(The syntax above will vary depending on the shell used.) This example
22353will execute commands from the file @file{cmds}. All output and errors
22354would be directed to @file{log}.
c906108c 22355
fcc73fe3
EZ
22356Since commands stored on command files tend to be more general than
22357commands typed interactively, they frequently need to deal with
22358complicated situations, such as different or unexpected values of
22359variables and symbols, changes in how the program being debugged is
22360built, etc. @value{GDBN} provides a set of flow-control commands to
22361deal with these complexities. Using these commands, you can write
22362complex scripts that loop over data structures, execute commands
22363conditionally, etc.
22364
22365@table @code
22366@kindex if
22367@kindex else
22368@item if
22369@itemx else
22370This command allows to include in your script conditionally executed
22371commands. The @code{if} command takes a single argument, which is an
22372expression to evaluate. It is followed by a series of commands that
22373are executed only if the expression is true (its value is nonzero).
22374There can then optionally be an @code{else} line, followed by a series
22375of commands that are only executed if the expression was false. The
22376end of the list is marked by a line containing @code{end}.
22377
22378@kindex while
22379@item while
22380This command allows to write loops. Its syntax is similar to
22381@code{if}: the command takes a single argument, which is an expression
22382to evaluate, and must be followed by the commands to execute, one per
22383line, terminated by an @code{end}. These commands are called the
22384@dfn{body} of the loop. The commands in the body of @code{while} are
22385executed repeatedly as long as the expression evaluates to true.
22386
22387@kindex loop_break
22388@item loop_break
22389This command exits the @code{while} loop in whose body it is included.
22390Execution of the script continues after that @code{while}s @code{end}
22391line.
22392
22393@kindex loop_continue
22394@item loop_continue
22395This command skips the execution of the rest of the body of commands
22396in the @code{while} loop in whose body it is included. Execution
22397branches to the beginning of the @code{while} loop, where it evaluates
22398the controlling expression.
ca91424e
EZ
22399
22400@kindex end@r{ (if/else/while commands)}
22401@item end
22402Terminate the block of commands that are the body of @code{if},
22403@code{else}, or @code{while} flow-control commands.
fcc73fe3
EZ
22404@end table
22405
22406
8e04817f 22407@node Output
d57a3c85 22408@subsection Commands for Controlled Output
c906108c 22409
8e04817f
AC
22410During the execution of a command file or a user-defined command, normal
22411@value{GDBN} output is suppressed; the only output that appears is what is
22412explicitly printed by the commands in the definition. This section
22413describes three commands useful for generating exactly the output you
22414want.
c906108c
SS
22415
22416@table @code
8e04817f
AC
22417@kindex echo
22418@item echo @var{text}
22419@c I do not consider backslash-space a standard C escape sequence
22420@c because it is not in ANSI.
22421Print @var{text}. Nonprinting characters can be included in
22422@var{text} using C escape sequences, such as @samp{\n} to print a
22423newline. @strong{No newline is printed unless you specify one.}
22424In addition to the standard C escape sequences, a backslash followed
22425by a space stands for a space. This is useful for displaying a
22426string with spaces at the beginning or the end, since leading and
22427trailing spaces are otherwise trimmed from all arguments.
22428To print @samp{@w{ }and foo =@w{ }}, use the command
22429@samp{echo \@w{ }and foo = \@w{ }}.
c906108c 22430
8e04817f
AC
22431A backslash at the end of @var{text} can be used, as in C, to continue
22432the command onto subsequent lines. For example,
c906108c 22433
474c8240 22434@smallexample
8e04817f
AC
22435echo This is some text\n\
22436which is continued\n\
22437onto several lines.\n
474c8240 22438@end smallexample
c906108c 22439
8e04817f 22440produces the same output as
c906108c 22441
474c8240 22442@smallexample
8e04817f
AC
22443echo This is some text\n
22444echo which is continued\n
22445echo onto several lines.\n
474c8240 22446@end smallexample
c906108c 22447
8e04817f
AC
22448@kindex output
22449@item output @var{expression}
22450Print the value of @var{expression} and nothing but that value: no
22451newlines, no @samp{$@var{nn} = }. The value is not entered in the
22452value history either. @xref{Expressions, ,Expressions}, for more information
22453on expressions.
c906108c 22454
8e04817f
AC
22455@item output/@var{fmt} @var{expression}
22456Print the value of @var{expression} in format @var{fmt}. You can use
22457the same formats as for @code{print}. @xref{Output Formats,,Output
79a6e687 22458Formats}, for more information.
c906108c 22459
8e04817f 22460@kindex printf
82160952
EZ
22461@item printf @var{template}, @var{expressions}@dots{}
22462Print the values of one or more @var{expressions} under the control of
22463the string @var{template}. To print several values, make
22464@var{expressions} be a comma-separated list of individual expressions,
22465which may be either numbers or pointers. Their values are printed as
22466specified by @var{template}, exactly as a C program would do by
22467executing the code below:
c906108c 22468
474c8240 22469@smallexample
82160952 22470printf (@var{template}, @var{expressions}@dots{});
474c8240 22471@end smallexample
c906108c 22472
82160952
EZ
22473As in @code{C} @code{printf}, ordinary characters in @var{template}
22474are printed verbatim, while @dfn{conversion specification} introduced
22475by the @samp{%} character cause subsequent @var{expressions} to be
22476evaluated, their values converted and formatted according to type and
22477style information encoded in the conversion specifications, and then
22478printed.
22479
8e04817f 22480For example, you can print two values in hex like this:
c906108c 22481
8e04817f
AC
22482@smallexample
22483printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
22484@end smallexample
c906108c 22485
82160952
EZ
22486@code{printf} supports all the standard @code{C} conversion
22487specifications, including the flags and modifiers between the @samp{%}
22488character and the conversion letter, with the following exceptions:
22489
22490@itemize @bullet
22491@item
22492The argument-ordering modifiers, such as @samp{2$}, are not supported.
22493
22494@item
22495The modifier @samp{*} is not supported for specifying precision or
22496width.
22497
22498@item
22499The @samp{'} flag (for separation of digits into groups according to
22500@code{LC_NUMERIC'}) is not supported.
22501
22502@item
22503The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not
22504supported.
22505
22506@item
22507The conversion letter @samp{n} (as in @samp{%n}) is not supported.
22508
22509@item
22510The conversion letters @samp{a} and @samp{A} are not supported.
22511@end itemize
22512
22513@noindent
22514Note that the @samp{ll} type modifier is supported only if the
22515underlying @code{C} implementation used to build @value{GDBN} supports
22516the @code{long long int} type, and the @samp{L} type modifier is
22517supported only if @code{long double} type is available.
22518
22519As in @code{C}, @code{printf} supports simple backslash-escape
22520sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"},
22521@samp{\a}, and @samp{\f}, that consist of backslash followed by a
22522single character. Octal and hexadecimal escape sequences are not
22523supported.
1a619819
LM
22524
22525Additionally, @code{printf} supports conversion specifications for DFP
0aea4bf3
LM
22526(@dfn{Decimal Floating Point}) types using the following length modifiers
22527together with a floating point specifier.
1a619819
LM
22528letters:
22529
22530@itemize @bullet
22531@item
22532@samp{H} for printing @code{Decimal32} types.
22533
22534@item
22535@samp{D} for printing @code{Decimal64} types.
22536
22537@item
22538@samp{DD} for printing @code{Decimal128} types.
22539@end itemize
22540
22541If the underlying @code{C} implementation used to build @value{GDBN} has
0aea4bf3 22542support for the three length modifiers for DFP types, other modifiers
3b784c4f 22543such as width and precision will also be available for @value{GDBN} to use.
1a619819
LM
22544
22545In case there is no such @code{C} support, no additional modifiers will be
22546available and the value will be printed in the standard way.
22547
22548Here's an example of printing DFP types using the above conversion letters:
22549@smallexample
0aea4bf3 22550printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
1a619819
LM
22551@end smallexample
22552
f1421989
HZ
22553@kindex eval
22554@item eval @var{template}, @var{expressions}@dots{}
22555Convert the values of one or more @var{expressions} under the control of
22556the string @var{template} to a command line, and call it.
22557
c906108c
SS
22558@end table
22559
d57a3c85
TJB
22560@node Python
22561@section Scripting @value{GDBN} using Python
22562@cindex python scripting
22563@cindex scripting with python
22564
22565You can script @value{GDBN} using the @uref{http://www.python.org/,
22566Python programming language}. This feature is available only if
22567@value{GDBN} was configured using @option{--with-python}.
22568
9279c692
JB
22569@cindex python directory
22570Python scripts used by @value{GDBN} should be installed in
22571@file{@var{data-directory}/python}, where @var{data-directory} is
9eeee977
DE
22572the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
22573This directory, known as the @dfn{python directory},
9279c692
JB
22574is automatically added to the Python Search Path in order to allow
22575the Python interpreter to locate all scripts installed at this location.
22576
5e239b84
PM
22577Additionally, @value{GDBN} commands and convenience functions which
22578are written in Python and are located in the
22579@file{@var{data-directory}/python/gdb/command} or
22580@file{@var{data-directory}/python/gdb/function} directories are
22581automatically imported when @value{GDBN} starts.
22582
d57a3c85
TJB
22583@menu
22584* Python Commands:: Accessing Python from @value{GDBN}.
22585* Python API:: Accessing @value{GDBN} from Python.
bf88dd68 22586* Python Auto-loading:: Automatically loading Python code.
0e3509db 22587* Python modules:: Python modules provided by @value{GDBN}.
d57a3c85
TJB
22588@end menu
22589
22590@node Python Commands
22591@subsection Python Commands
22592@cindex python commands
22593@cindex commands to access python
22594
8315665e 22595@value{GDBN} provides two commands for accessing the Python interpreter,
d57a3c85
TJB
22596and one related setting:
22597
22598@table @code
8315665e
YPK
22599@kindex python-interactive
22600@kindex pi
22601@item python-interactive @r{[}@var{command}@r{]}
22602@itemx pi @r{[}@var{command}@r{]}
22603Without an argument, the @code{python-interactive} command can be used
e3480f4a
YPK
22604to start an interactive Python prompt. To return to @value{GDBN},
22605type the @code{EOF} character (e.g., @kbd{Ctrl-D} on an empty prompt).
8315665e
YPK
22606
22607Alternatively, a single-line Python command can be given as an
22608argument and evaluated. If the command is an expression, the result
22609will be printed; otherwise, nothing will be printed. For example:
22610
22611@smallexample
22612(@value{GDBP}) python-interactive 2 + 3
226135
22614@end smallexample
22615
d57a3c85 22616@kindex python
8315665e
YPK
22617@kindex py
22618@item python @r{[}@var{command}@r{]}
22619@itemx py @r{[}@var{command}@r{]}
d57a3c85
TJB
22620The @code{python} command can be used to evaluate Python code.
22621
22622If given an argument, the @code{python} command will evaluate the
22623argument as a Python command. For example:
22624
22625@smallexample
22626(@value{GDBP}) python print 23
2262723
22628@end smallexample
22629
22630If you do not provide an argument to @code{python}, it will act as a
22631multi-line command, like @code{define}. In this case, the Python
22632script is made up of subsequent command lines, given after the
22633@code{python} command. This command list is terminated using a line
22634containing @code{end}. For example:
22635
22636@smallexample
22637(@value{GDBP}) python
22638Type python script
22639End with a line saying just "end".
22640>print 23
22641>end
2264223
22643@end smallexample
22644
713389e0
PM
22645@kindex set python print-stack
22646@item set python print-stack
80b6e756
PM
22647By default, @value{GDBN} will print only the message component of a
22648Python exception when an error occurs in a Python script. This can be
22649controlled using @code{set python print-stack}: if @code{full}, then
22650full Python stack printing is enabled; if @code{none}, then Python stack
22651and message printing is disabled; if @code{message}, the default, only
22652the message component of the error is printed.
d57a3c85
TJB
22653@end table
22654
95433b34
JB
22655It is also possible to execute a Python script from the @value{GDBN}
22656interpreter:
22657
22658@table @code
22659@item source @file{script-name}
22660The script name must end with @samp{.py} and @value{GDBN} must be configured
22661to recognize the script language based on filename extension using
22662the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
22663
22664@item python execfile ("script-name")
22665This method is based on the @code{execfile} Python built-in function,
22666and thus is always available.
22667@end table
22668
d57a3c85
TJB
22669@node Python API
22670@subsection Python API
22671@cindex python api
22672@cindex programming in python
22673
22674@cindex python stdout
22675@cindex python pagination
22676At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
22677@code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
22678A Python program which outputs to one of these streams may have its
22679output interrupted by the user (@pxref{Screen Size}). In this
22680situation, a Python @code{KeyboardInterrupt} exception is thrown.
22681
22682@menu
22683* Basic Python:: Basic Python Functions.
06e65f44
TT
22684* Exception Handling:: How Python exceptions are translated.
22685* Values From Inferior:: Python representation of values.
4c374409
JK
22686* Types In Python:: Python representation of types.
22687* Pretty Printing API:: Pretty-printing values.
a6bac58e 22688* Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
7b51bc51 22689* Writing a Pretty-Printer:: Writing a Pretty-Printer.
18a9fc12 22690* Type Printing API:: Pretty-printing types.
595939de 22691* Inferiors In Python:: Python representation of inferiors (processes)
505500db 22692* Events In Python:: Listening for events from @value{GDBN}.
595939de 22693* Threads In Python:: Accessing inferior threads from Python.
d8906c6f 22694* Commands In Python:: Implementing new commands in Python.
d7b32ed3 22695* Parameters In Python:: Adding new @value{GDBN} parameters.
bc3b79fd 22696* Functions In Python:: Writing new convenience functions.
fa33c3cd 22697* Progspaces In Python:: Program spaces.
89c73ade 22698* Objfiles In Python:: Object files.
f3e9a817
PM
22699* Frames In Python:: Accessing inferior stack frames from Python.
22700* Blocks In Python:: Accessing frame blocks from Python.
22701* Symbols In Python:: Python representation of symbols.
22702* Symbol Tables In Python:: Python representation of symbol tables.
adc36818 22703* Breakpoints In Python:: Manipulating breakpoints using Python.
cc72b2a2
KP
22704* Finish Breakpoints in Python:: Setting Breakpoints on function return
22705 using Python.
984359d2 22706* Lazy Strings In Python:: Python representation of lazy strings.
d57a3c85
TJB
22707@end menu
22708
22709@node Basic Python
22710@subsubsection Basic Python
22711
22712@cindex python functions
22713@cindex python module
22714@cindex gdb module
22715@value{GDBN} introduces a new Python module, named @code{gdb}. All
22716methods and classes added by @value{GDBN} are placed in this module.
22717@value{GDBN} automatically @code{import}s the @code{gdb} module for
22718use in all scripts evaluated by the @code{python} command.
22719
9279c692 22720@findex gdb.PYTHONDIR
d812018b 22721@defvar gdb.PYTHONDIR
9279c692
JB
22722A string containing the python directory (@pxref{Python}).
22723@end defvar
22724
d57a3c85 22725@findex gdb.execute
d812018b 22726@defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]})
d57a3c85
TJB
22727Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
22728If a GDB exception happens while @var{command} runs, it is
22729translated as described in @ref{Exception Handling,,Exception Handling}.
12453b93
TJB
22730
22731@var{from_tty} specifies whether @value{GDBN} ought to consider this
22732command as having originated from the user invoking it interactively.
22733It must be a boolean value. If omitted, it defaults to @code{False}.
bc9f0842
TT
22734
22735By default, any output produced by @var{command} is sent to
22736@value{GDBN}'s standard output. If the @var{to_string} parameter is
22737@code{True}, then output will be collected by @code{gdb.execute} and
22738returned as a string. The default is @code{False}, in which case the
5da1313b
JK
22739return value is @code{None}. If @var{to_string} is @code{True}, the
22740@value{GDBN} virtual terminal will be temporarily set to unlimited width
22741and height, and its pagination will be disabled; @pxref{Screen Size}.
d57a3c85
TJB
22742@end defun
22743
adc36818 22744@findex gdb.breakpoints
d812018b 22745@defun gdb.breakpoints ()
adc36818
PM
22746Return a sequence holding all of @value{GDBN}'s breakpoints.
22747@xref{Breakpoints In Python}, for more information.
22748@end defun
22749
8f500870 22750@findex gdb.parameter
d812018b 22751@defun gdb.parameter (parameter)
d57a3c85
TJB
22752Return the value of a @value{GDBN} parameter. @var{parameter} is a
22753string naming the parameter to look up; @var{parameter} may contain
22754spaces if the parameter has a multi-part name. For example,
22755@samp{print object} is a valid parameter name.
22756
22757If the named parameter does not exist, this function throws a
621c8364
TT
22758@code{gdb.error} (@pxref{Exception Handling}). Otherwise, the
22759parameter's value is converted to a Python value of the appropriate
22760type, and returned.
d57a3c85
TJB
22761@end defun
22762
08c637de 22763@findex gdb.history
d812018b 22764@defun gdb.history (number)
08c637de
TJB
22765Return a value from @value{GDBN}'s value history (@pxref{Value
22766History}). @var{number} indicates which history element to return.
22767If @var{number} is negative, then @value{GDBN} will take its absolute value
22768and count backward from the last element (i.e., the most recent element) to
22769find the value to return. If @var{number} is zero, then @value{GDBN} will
a0c36267 22770return the most recent element. If the element specified by @var{number}
621c8364 22771doesn't exist in the value history, a @code{gdb.error} exception will be
08c637de
TJB
22772raised.
22773
22774If no exception is raised, the return value is always an instance of
22775@code{gdb.Value} (@pxref{Values From Inferior}).
22776@end defun
22777
57a1d736 22778@findex gdb.parse_and_eval
d812018b 22779@defun gdb.parse_and_eval (expression)
57a1d736
TT
22780Parse @var{expression} as an expression in the current language,
22781evaluate it, and return the result as a @code{gdb.Value}.
22782@var{expression} must be a string.
22783
22784This function can be useful when implementing a new command
22785(@pxref{Commands In Python}), as it provides a way to parse the
22786command's argument as an expression. It is also useful simply to
22787compute values, for example, it is the only way to get the value of a
22788convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}.
22789@end defun
22790
7efc75aa
SCR
22791@findex gdb.find_pc_line
22792@defun gdb.find_pc_line (pc)
22793Return the @code{gdb.Symtab_and_line} object corresponding to the
22794@var{pc} value. @xref{Symbol Tables In Python}. If an invalid
22795value of @var{pc} is passed as an argument, then the @code{symtab} and
22796@code{line} attributes of the returned @code{gdb.Symtab_and_line} object
22797will be @code{None} and 0 respectively.
22798@end defun
22799
ca5c20b6 22800@findex gdb.post_event
d812018b 22801@defun gdb.post_event (event)
ca5c20b6
PM
22802Put @var{event}, a callable object taking no arguments, into
22803@value{GDBN}'s internal event queue. This callable will be invoked at
22804some later point, during @value{GDBN}'s event processing. Events
22805posted using @code{post_event} will be run in the order in which they
22806were posted; however, there is no way to know when they will be
22807processed relative to other events inside @value{GDBN}.
22808
22809@value{GDBN} is not thread-safe. If your Python program uses multiple
22810threads, you must be careful to only call @value{GDBN}-specific
22811functions in the main @value{GDBN} thread. @code{post_event} ensures
22812this. For example:
22813
22814@smallexample
22815(@value{GDBP}) python
22816>import threading
22817>
22818>class Writer():
22819> def __init__(self, message):
22820> self.message = message;
22821> def __call__(self):
22822> gdb.write(self.message)
22823>
22824>class MyThread1 (threading.Thread):
22825> def run (self):
22826> gdb.post_event(Writer("Hello "))
22827>
22828>class MyThread2 (threading.Thread):
22829> def run (self):
22830> gdb.post_event(Writer("World\n"))
22831>
22832>MyThread1().start()
22833>MyThread2().start()
22834>end
22835(@value{GDBP}) Hello World
22836@end smallexample
22837@end defun
22838
99c3dc11 22839@findex gdb.write
d812018b 22840@defun gdb.write (string @r{[}, stream{]})
99c3dc11
PM
22841Print a string to @value{GDBN}'s paginated output stream. The
22842optional @var{stream} determines the stream to print to. The default
22843stream is @value{GDBN}'s standard output stream. Possible stream
22844values are:
22845
22846@table @code
22847@findex STDOUT
22848@findex gdb.STDOUT
d812018b 22849@item gdb.STDOUT
99c3dc11
PM
22850@value{GDBN}'s standard output stream.
22851
22852@findex STDERR
22853@findex gdb.STDERR
d812018b 22854@item gdb.STDERR
99c3dc11
PM
22855@value{GDBN}'s standard error stream.
22856
22857@findex STDLOG
22858@findex gdb.STDLOG
d812018b 22859@item gdb.STDLOG
99c3dc11
PM
22860@value{GDBN}'s log stream (@pxref{Logging Output}).
22861@end table
22862
d57a3c85 22863Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
99c3dc11
PM
22864call this function and will automatically direct the output to the
22865relevant stream.
d57a3c85
TJB
22866@end defun
22867
22868@findex gdb.flush
d812018b 22869@defun gdb.flush ()
99c3dc11
PM
22870Flush the buffer of a @value{GDBN} paginated stream so that the
22871contents are displayed immediately. @value{GDBN} will flush the
22872contents of a stream automatically when it encounters a newline in the
22873buffer. The optional @var{stream} determines the stream to flush. The
22874default stream is @value{GDBN}'s standard output stream. Possible
22875stream values are:
22876
22877@table @code
22878@findex STDOUT
22879@findex gdb.STDOUT
d812018b 22880@item gdb.STDOUT
99c3dc11
PM
22881@value{GDBN}'s standard output stream.
22882
22883@findex STDERR
22884@findex gdb.STDERR
d812018b 22885@item gdb.STDERR
99c3dc11
PM
22886@value{GDBN}'s standard error stream.
22887
22888@findex STDLOG
22889@findex gdb.STDLOG
d812018b 22890@item gdb.STDLOG
99c3dc11
PM
22891@value{GDBN}'s log stream (@pxref{Logging Output}).
22892
22893@end table
22894
22895Flushing @code{sys.stdout} or @code{sys.stderr} will automatically
22896call this function for the relevant stream.
d57a3c85
TJB
22897@end defun
22898
f870a310 22899@findex gdb.target_charset
d812018b 22900@defun gdb.target_charset ()
f870a310
TT
22901Return the name of the current target character set (@pxref{Character
22902Sets}). This differs from @code{gdb.parameter('target-charset')} in
22903that @samp{auto} is never returned.
22904@end defun
22905
22906@findex gdb.target_wide_charset
d812018b 22907@defun gdb.target_wide_charset ()
f870a310
TT
22908Return the name of the current target wide character set
22909(@pxref{Character Sets}). This differs from
22910@code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
22911never returned.
22912@end defun
22913
cb2e07a6 22914@findex gdb.solib_name
d812018b 22915@defun gdb.solib_name (address)
cb2e07a6
PM
22916Return the name of the shared library holding the given @var{address}
22917as a string, or @code{None}.
22918@end defun
22919
22920@findex gdb.decode_line
d812018b 22921@defun gdb.decode_line @r{[}expression@r{]}
cb2e07a6
PM
22922Return locations of the line specified by @var{expression}, or of the
22923current line if no argument was given. This function returns a Python
22924tuple containing two elements. The first element contains a string
22925holding any unparsed section of @var{expression} (or @code{None} if
22926the expression has been fully parsed). The second element contains
22927either @code{None} or another tuple that contains all the locations
22928that match the expression represented as @code{gdb.Symtab_and_line}
22929objects (@pxref{Symbol Tables In Python}). If @var{expression} is
22930provided, it is decoded the way that @value{GDBN}'s inbuilt
22931@code{break} or @code{edit} commands do (@pxref{Specify Location}).
22932@end defun
22933
d812018b 22934@defun gdb.prompt_hook (current_prompt)
fa3a4f15
PM
22935@anchor{prompt_hook}
22936
d17b6f81
PM
22937If @var{prompt_hook} is callable, @value{GDBN} will call the method
22938assigned to this operation before a prompt is displayed by
22939@value{GDBN}.
22940
22941The parameter @code{current_prompt} contains the current @value{GDBN}
22942prompt. This method must return a Python string, or @code{None}. If
22943a string is returned, the @value{GDBN} prompt will be set to that
22944string. If @code{None} is returned, @value{GDBN} will continue to use
22945the current prompt.
22946
22947Some prompts cannot be substituted in @value{GDBN}. Secondary prompts
22948such as those used by readline for command input, and annotation
22949related prompts are prohibited from being changed.
d812018b 22950@end defun
d17b6f81 22951
d57a3c85
TJB
22952@node Exception Handling
22953@subsubsection Exception Handling
22954@cindex python exceptions
22955@cindex exceptions, python
22956
22957When executing the @code{python} command, Python exceptions
22958uncaught within the Python code are translated to calls to
22959@value{GDBN} error-reporting mechanism. If the command that called
22960@code{python} does not handle the error, @value{GDBN} will
22961terminate it and print an error message containing the Python
22962exception name, the associated value, and the Python call stack
22963backtrace at the point where the exception was raised. Example:
22964
22965@smallexample
22966(@value{GDBP}) python print foo
22967Traceback (most recent call last):
22968 File "<string>", line 1, in <module>
22969NameError: name 'foo' is not defined
22970@end smallexample
22971
621c8364
TT
22972@value{GDBN} errors that happen in @value{GDBN} commands invoked by
22973Python code are converted to Python exceptions. The type of the
22974Python exception depends on the error.
22975
22976@ftable @code
22977@item gdb.error
22978This is the base class for most exceptions generated by @value{GDBN}.
22979It is derived from @code{RuntimeError}, for compatibility with earlier
22980versions of @value{GDBN}.
22981
22982If an error occurring in @value{GDBN} does not fit into some more
22983specific category, then the generated exception will have this type.
22984
22985@item gdb.MemoryError
22986This is a subclass of @code{gdb.error} which is thrown when an
22987operation tried to access invalid memory in the inferior.
22988
22989@item KeyboardInterrupt
22990User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
22991prompt) is translated to a Python @code{KeyboardInterrupt} exception.
22992@end ftable
22993
22994In all cases, your exception handler will see the @value{GDBN} error
22995message as its value and the Python call stack backtrace at the Python
22996statement closest to where the @value{GDBN} error occured as the
d57a3c85
TJB
22997traceback.
22998
07ca107c
DE
22999@findex gdb.GdbError
23000When implementing @value{GDBN} commands in Python via @code{gdb.Command},
23001it is useful to be able to throw an exception that doesn't cause a
23002traceback to be printed. For example, the user may have invoked the
23003command incorrectly. Use the @code{gdb.GdbError} exception
23004to handle this case. Example:
23005
23006@smallexample
23007(gdb) python
23008>class HelloWorld (gdb.Command):
23009> """Greet the whole world."""
23010> def __init__ (self):
7d74f244 23011> super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
07ca107c
DE
23012> def invoke (self, args, from_tty):
23013> argv = gdb.string_to_argv (args)
23014> if len (argv) != 0:
23015> raise gdb.GdbError ("hello-world takes no arguments")
23016> print "Hello, World!"
23017>HelloWorld ()
23018>end
23019(gdb) hello-world 42
23020hello-world takes no arguments
23021@end smallexample
23022
a08702d6
TJB
23023@node Values From Inferior
23024@subsubsection Values From Inferior
23025@cindex values from inferior, with Python
23026@cindex python, working with values from inferior
23027
23028@cindex @code{gdb.Value}
23029@value{GDBN} provides values it obtains from the inferior program in
23030an object of type @code{gdb.Value}. @value{GDBN} uses this object
23031for its internal bookkeeping of the inferior's values, and for
23032fetching values when necessary.
23033
23034Inferior values that are simple scalars can be used directly in
23035Python expressions that are valid for the value's data type. Here's
23036an example for an integer or floating-point value @code{some_val}:
23037
23038@smallexample
23039bar = some_val + 2
23040@end smallexample
23041
23042@noindent
23043As result of this, @code{bar} will also be a @code{gdb.Value} object
23044whose values are of the same type as those of @code{some_val}.
23045
23046Inferior values that are structures or instances of some class can
23047be accessed using the Python @dfn{dictionary syntax}. For example, if
23048@code{some_val} is a @code{gdb.Value} instance holding a structure, you
23049can access its @code{foo} element with:
23050
23051@smallexample
23052bar = some_val['foo']
23053@end smallexample
23054
23055Again, @code{bar} will also be a @code{gdb.Value} object.
23056
5374244e
PM
23057A @code{gdb.Value} that represents a function can be executed via
23058inferior function call. Any arguments provided to the call must match
23059the function's prototype, and must be provided in the order specified
23060by that prototype.
23061
23062For example, @code{some_val} is a @code{gdb.Value} instance
23063representing a function that takes two integers as arguments. To
23064execute this function, call it like so:
23065
23066@smallexample
23067result = some_val (10,20)
23068@end smallexample
23069
23070Any values returned from a function call will be stored as a
23071@code{gdb.Value}.
23072
c0c6f777 23073The following attributes are provided:
a08702d6 23074
def2b000 23075@table @code
d812018b 23076@defvar Value.address
c0c6f777
TJB
23077If this object is addressable, this read-only attribute holds a
23078@code{gdb.Value} object representing the address. Otherwise,
23079this attribute holds @code{None}.
d812018b 23080@end defvar
c0c6f777 23081
def2b000 23082@cindex optimized out value in Python
d812018b 23083@defvar Value.is_optimized_out
def2b000
TJB
23084This read-only boolean attribute is true if the compiler optimized out
23085this value, thus it is not available for fetching from the inferior.
d812018b 23086@end defvar
2c74e833 23087
d812018b 23088@defvar Value.type
2c74e833 23089The type of this @code{gdb.Value}. The value of this attribute is a
44592cc4 23090@code{gdb.Type} object (@pxref{Types In Python}).
d812018b 23091@end defvar
03f17ccf 23092
d812018b 23093@defvar Value.dynamic_type
03f17ccf 23094The dynamic type of this @code{gdb.Value}. This uses C@t{++} run-time
fccd1d1e
EZ
23095type information (@acronym{RTTI}) to determine the dynamic type of the
23096value. If this value is of class type, it will return the class in
23097which the value is embedded, if any. If this value is of pointer or
23098reference to a class type, it will compute the dynamic type of the
23099referenced object, and return a pointer or reference to that type,
23100respectively. In all other cases, it will return the value's static
23101type.
23102
23103Note that this feature will only work when debugging a C@t{++} program
23104that includes @acronym{RTTI} for the object in question. Otherwise,
23105it will just return the static type of the value as in @kbd{ptype foo}
23106(@pxref{Symbols, ptype}).
d812018b 23107@end defvar
22dbab46
PK
23108
23109@defvar Value.is_lazy
23110The value of this read-only boolean attribute is @code{True} if this
23111@code{gdb.Value} has not yet been fetched from the inferior.
23112@value{GDBN} does not fetch values until necessary, for efficiency.
23113For example:
23114
23115@smallexample
23116myval = gdb.parse_and_eval ('somevar')
23117@end smallexample
23118
23119The value of @code{somevar} is not fetched at this time. It will be
23120fetched when the value is needed, or when the @code{fetch_lazy}
23121method is invoked.
23122@end defvar
def2b000
TJB
23123@end table
23124
23125The following methods are provided:
23126
23127@table @code
d812018b 23128@defun Value.__init__ (@var{val})
e8467610
TT
23129Many Python values can be converted directly to a @code{gdb.Value} via
23130this object initializer. Specifically:
23131
23132@table @asis
23133@item Python boolean
23134A Python boolean is converted to the boolean type from the current
23135language.
23136
23137@item Python integer
23138A Python integer is converted to the C @code{long} type for the
23139current architecture.
23140
23141@item Python long
23142A Python long is converted to the C @code{long long} type for the
23143current architecture.
23144
23145@item Python float
23146A Python float is converted to the C @code{double} type for the
23147current architecture.
23148
23149@item Python string
23150A Python string is converted to a target string, using the current
23151target encoding.
23152
23153@item @code{gdb.Value}
23154If @code{val} is a @code{gdb.Value}, then a copy of the value is made.
23155
23156@item @code{gdb.LazyString}
23157If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In
23158Python}), then the lazy string's @code{value} method is called, and
23159its result is used.
23160@end table
d812018b 23161@end defun
e8467610 23162
d812018b 23163@defun Value.cast (type)
14ff2235
PM
23164Return a new instance of @code{gdb.Value} that is the result of
23165casting this instance to the type described by @var{type}, which must
23166be a @code{gdb.Type} object. If the cast cannot be performed for some
23167reason, this method throws an exception.
d812018b 23168@end defun
14ff2235 23169
d812018b 23170@defun Value.dereference ()
def2b000
TJB
23171For pointer data types, this method returns a new @code{gdb.Value} object
23172whose contents is the object pointed to by the pointer. For example, if
23173@code{foo} is a C pointer to an @code{int}, declared in your C program as
a08702d6
TJB
23174
23175@smallexample
23176int *foo;
23177@end smallexample
23178
23179@noindent
23180then you can use the corresponding @code{gdb.Value} to access what
23181@code{foo} points to like this:
23182
23183@smallexample
23184bar = foo.dereference ()
23185@end smallexample
23186
23187The result @code{bar} will be a @code{gdb.Value} object holding the
23188value pointed to by @code{foo}.
7b282c5a
SCR
23189
23190A similar function @code{Value.referenced_value} exists which also
23191returns @code{gdb.Value} objects corresonding to the values pointed to
23192by pointer values (and additionally, values referenced by reference
23193values). However, the behavior of @code{Value.dereference}
23194differs from @code{Value.referenced_value} by the fact that the
23195behavior of @code{Value.dereference} is identical to applying the C
23196unary operator @code{*} on a given value. For example, consider a
23197reference to a pointer @code{ptrref}, declared in your C@t{++} program
23198as
23199
23200@smallexample
23201typedef int *intptr;
23202...
23203int val = 10;
23204intptr ptr = &val;
23205intptr &ptrref = ptr;
23206@end smallexample
23207
23208Though @code{ptrref} is a reference value, one can apply the method
23209@code{Value.dereference} to the @code{gdb.Value} object corresponding
23210to it and obtain a @code{gdb.Value} which is identical to that
23211corresponding to @code{val}. However, if you apply the method
23212@code{Value.referenced_value}, the result would be a @code{gdb.Value}
23213object identical to that corresponding to @code{ptr}.
23214
23215@smallexample
23216py_ptrref = gdb.parse_and_eval ("ptrref")
23217py_val = py_ptrref.dereference ()
23218py_ptr = py_ptrref.referenced_value ()
23219@end smallexample
23220
23221The @code{gdb.Value} object @code{py_val} is identical to that
23222corresponding to @code{val}, and @code{py_ptr} is identical to that
23223corresponding to @code{ptr}. In general, @code{Value.dereference} can
23224be applied whenever the C unary operator @code{*} can be applied
23225to the corresponding C value. For those cases where applying both
23226@code{Value.dereference} and @code{Value.referenced_value} is allowed,
23227the results obtained need not be identical (as we have seen in the above
23228example). The results are however identical when applied on
23229@code{gdb.Value} objects corresponding to pointers (@code{gdb.Value}
23230objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
23231@end defun
23232
23233@defun Value.referenced_value ()
23234For pointer or reference data types, this method returns a new
23235@code{gdb.Value} object corresponding to the value referenced by the
23236pointer/reference value. For pointer data types,
23237@code{Value.dereference} and @code{Value.referenced_value} produce
23238identical results. The difference between these methods is that
23239@code{Value.dereference} cannot get the values referenced by reference
23240values. For example, consider a reference to an @code{int}, declared
23241in your C@t{++} program as
23242
23243@smallexample
23244int val = 10;
23245int &ref = val;
23246@end smallexample
23247
23248@noindent
23249then applying @code{Value.dereference} to the @code{gdb.Value} object
23250corresponding to @code{ref} will result in an error, while applying
23251@code{Value.referenced_value} will result in a @code{gdb.Value} object
23252identical to that corresponding to @code{val}.
23253
23254@smallexample
23255py_ref = gdb.parse_and_eval ("ref")
23256er_ref = py_ref.dereference () # Results in error
23257py_val = py_ref.referenced_value () # Returns the referenced value
23258@end smallexample
23259
23260The @code{gdb.Value} object @code{py_val} is identical to that
23261corresponding to @code{val}.
d812018b 23262@end defun
a08702d6 23263
d812018b 23264@defun Value.dynamic_cast (type)
f9ffd4bb
TT
23265Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast}
23266operator were used. Consult a C@t{++} reference for details.
d812018b 23267@end defun
f9ffd4bb 23268
d812018b 23269@defun Value.reinterpret_cast (type)
f9ffd4bb
TT
23270Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast}
23271operator were used. Consult a C@t{++} reference for details.
d812018b 23272@end defun
f9ffd4bb 23273
d812018b 23274@defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]})
b6cb8e7d
TJB
23275If this @code{gdb.Value} represents a string, then this method
23276converts the contents to a Python string. Otherwise, this method will
23277throw an exception.
23278
23279Strings are recognized in a language-specific way; whether a given
23280@code{gdb.Value} represents a string is determined by the current
23281language.
23282
23283For C-like languages, a value is a string if it is a pointer to or an
23284array of characters or ints. The string is assumed to be terminated
fbb8f299
PM
23285by a zero of the appropriate width. However if the optional length
23286argument is given, the string will be converted to that given length,
23287ignoring any embedded zeros that the string may contain.
b6cb8e7d
TJB
23288
23289If the optional @var{encoding} argument is given, it must be a string
23290naming the encoding of the string in the @code{gdb.Value}, such as
23291@code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
23292the same encodings as the corresponding argument to Python's
23293@code{string.decode} method, and the Python codec machinery will be used
23294to convert the string. If @var{encoding} is not given, or if
23295@var{encoding} is the empty string, then either the @code{target-charset}
23296(@pxref{Character Sets}) will be used, or a language-specific encoding
23297will be used, if the current language is able to supply one.
23298
23299The optional @var{errors} argument is the same as the corresponding
23300argument to Python's @code{string.decode} method.
fbb8f299
PM
23301
23302If the optional @var{length} argument is given, the string will be
23303fetched and converted to the given length.
d812018b 23304@end defun
be759fcf 23305
d812018b 23306@defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]})
be759fcf
PM
23307If this @code{gdb.Value} represents a string, then this method
23308converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings
23309In Python}). Otherwise, this method will throw an exception.
23310
23311If the optional @var{encoding} argument is given, it must be a string
23312naming the encoding of the @code{gdb.LazyString}. Some examples are:
23313@samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the
23314@var{encoding} argument is an encoding that @value{GDBN} does
23315recognize, @value{GDBN} will raise an error.
23316
23317When a lazy string is printed, the @value{GDBN} encoding machinery is
23318used to convert the string during printing. If the optional
23319@var{encoding} argument is not provided, or is an empty string,
23320@value{GDBN} will automatically select the encoding most suitable for
23321the string type. For further information on encoding in @value{GDBN}
23322please see @ref{Character Sets}.
23323
23324If the optional @var{length} argument is given, the string will be
23325fetched and encoded to the length of characters specified. If
23326the @var{length} argument is not provided, the string will be fetched
23327and encoded until a null of appropriate width is found.
d812018b 23328@end defun
22dbab46
PK
23329
23330@defun Value.fetch_lazy ()
23331If the @code{gdb.Value} object is currently a lazy value
23332(@code{gdb.Value.is_lazy} is @code{True}), then the value is
23333fetched from the inferior. Any errors that occur in the process
23334will produce a Python exception.
23335
23336If the @code{gdb.Value} object is not a lazy value, this method
23337has no effect.
23338
23339This method does not return a value.
23340@end defun
23341
def2b000 23342@end table
b6cb8e7d 23343
2c74e833
TT
23344@node Types In Python
23345@subsubsection Types In Python
23346@cindex types in Python
23347@cindex Python, working with types
23348
23349@tindex gdb.Type
23350@value{GDBN} represents types from the inferior using the class
23351@code{gdb.Type}.
23352
23353The following type-related functions are available in the @code{gdb}
23354module:
23355
23356@findex gdb.lookup_type
d812018b 23357@defun gdb.lookup_type (name @r{[}, block@r{]})
2c74e833
TT
23358This function looks up a type by name. @var{name} is the name of the
23359type to look up. It must be a string.
23360
5107b149
PM
23361If @var{block} is given, then @var{name} is looked up in that scope.
23362Otherwise, it is searched for globally.
23363
2c74e833
TT
23364Ordinarily, this function will return an instance of @code{gdb.Type}.
23365If the named type cannot be found, it will throw an exception.
23366@end defun
23367
a73bb892
PK
23368If the type is a structure or class type, or an enum type, the fields
23369of that type can be accessed using the Python @dfn{dictionary syntax}.
23370For example, if @code{some_type} is a @code{gdb.Type} instance holding
23371a structure type, you can access its @code{foo} field with:
23372
23373@smallexample
23374bar = some_type['foo']
23375@end smallexample
23376
23377@code{bar} will be a @code{gdb.Field} object; see below under the
23378description of the @code{Type.fields} method for a description of the
23379@code{gdb.Field} class.
23380
2c74e833
TT
23381An instance of @code{Type} has the following attributes:
23382
23383@table @code
d812018b 23384@defvar Type.code
2c74e833
TT
23385The type code for this type. The type code will be one of the
23386@code{TYPE_CODE_} constants defined below.
d812018b 23387@end defvar
2c74e833 23388
d812018b 23389@defvar Type.sizeof
2c74e833
TT
23390The size of this type, in target @code{char} units. Usually, a
23391target's @code{char} type will be an 8-bit byte. However, on some
23392unusual platforms, this type may have a different size.
d812018b 23393@end defvar
2c74e833 23394
d812018b 23395@defvar Type.tag
2c74e833
TT
23396The tag name for this type. The tag name is the name after
23397@code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
23398languages have this concept. If this type has no tag name, then
23399@code{None} is returned.
d812018b 23400@end defvar
2c74e833
TT
23401@end table
23402
23403The following methods are provided:
23404
23405@table @code
d812018b 23406@defun Type.fields ()
2c74e833
TT
23407For structure and union types, this method returns the fields. Range
23408types have two fields, the minimum and maximum values. Enum types
23409have one field per enum constant. Function and method types have one
23410field per parameter. The base types of C@t{++} classes are also
23411represented as fields. If the type has no fields, or does not fit
23412into one of these categories, an empty sequence will be returned.
23413
a73bb892 23414Each field is a @code{gdb.Field} object, with some pre-defined attributes:
2c74e833
TT
23415@table @code
23416@item bitpos
23417This attribute is not available for @code{static} fields (as in
23418C@t{++} or Java). For non-@code{static} fields, the value is the bit
a9f54f60
TT
23419position of the field. For @code{enum} fields, the value is the
23420enumeration member's integer representation.
2c74e833
TT
23421
23422@item name
23423The name of the field, or @code{None} for anonymous fields.
23424
23425@item artificial
23426This is @code{True} if the field is artificial, usually meaning that
23427it was provided by the compiler and not the user. This attribute is
23428always provided, and is @code{False} if the field is not artificial.
23429
bfd31e71
PM
23430@item is_base_class
23431This is @code{True} if the field represents a base class of a C@t{++}
23432structure. This attribute is always provided, and is @code{False}
23433if the field is not a base class of the type that is the argument of
23434@code{fields}, or if that type was not a C@t{++} class.
23435
2c74e833
TT
23436@item bitsize
23437If the field is packed, or is a bitfield, then this will have a
23438non-zero value, which is the size of the field in bits. Otherwise,
23439this will be zero; in this case the field's size is given by its type.
23440
23441@item type
23442The type of the field. This is usually an instance of @code{Type},
23443but it can be @code{None} in some situations.
23444@end table
d812018b 23445@end defun
2c74e833 23446
d812018b 23447@defun Type.array (@var{n1} @r{[}, @var{n2}@r{]})
702c2711
TT
23448Return a new @code{gdb.Type} object which represents an array of this
23449type. If one argument is given, it is the inclusive upper bound of
23450the array; in this case the lower bound is zero. If two arguments are
23451given, the first argument is the lower bound of the array, and the
23452second argument is the upper bound of the array. An array's length
23453must not be negative, but the bounds can be.
d812018b 23454@end defun
702c2711 23455
a72c3253
DE
23456@defun Type.vector (@var{n1} @r{[}, @var{n2}@r{]})
23457Return a new @code{gdb.Type} object which represents a vector of this
23458type. If one argument is given, it is the inclusive upper bound of
23459the vector; in this case the lower bound is zero. If two arguments are
23460given, the first argument is the lower bound of the vector, and the
23461second argument is the upper bound of the vector. A vector's length
23462must not be negative, but the bounds can be.
23463
23464The difference between an @code{array} and a @code{vector} is that
23465arrays behave like in C: when used in expressions they decay to a pointer
23466to the first element whereas vectors are treated as first class values.
23467@end defun
23468
d812018b 23469@defun Type.const ()
2c74e833
TT
23470Return a new @code{gdb.Type} object which represents a
23471@code{const}-qualified variant of this type.
d812018b 23472@end defun
2c74e833 23473
d812018b 23474@defun Type.volatile ()
2c74e833
TT
23475Return a new @code{gdb.Type} object which represents a
23476@code{volatile}-qualified variant of this type.
d812018b 23477@end defun
2c74e833 23478
d812018b 23479@defun Type.unqualified ()
2c74e833
TT
23480Return a new @code{gdb.Type} object which represents an unqualified
23481variant of this type. That is, the result is neither @code{const} nor
23482@code{volatile}.
d812018b 23483@end defun
2c74e833 23484
d812018b 23485@defun Type.range ()
361ae042
PM
23486Return a Python @code{Tuple} object that contains two elements: the
23487low bound of the argument type and the high bound of that type. If
23488the type does not have a range, @value{GDBN} will raise a
621c8364 23489@code{gdb.error} exception (@pxref{Exception Handling}).
d812018b 23490@end defun
361ae042 23491
d812018b 23492@defun Type.reference ()
2c74e833
TT
23493Return a new @code{gdb.Type} object which represents a reference to this
23494type.
d812018b 23495@end defun
2c74e833 23496
d812018b 23497@defun Type.pointer ()
7a6973ad
TT
23498Return a new @code{gdb.Type} object which represents a pointer to this
23499type.
d812018b 23500@end defun
7a6973ad 23501
d812018b 23502@defun Type.strip_typedefs ()
2c74e833
TT
23503Return a new @code{gdb.Type} that represents the real type,
23504after removing all layers of typedefs.
d812018b 23505@end defun
2c74e833 23506
d812018b 23507@defun Type.target ()
2c74e833
TT
23508Return a new @code{gdb.Type} object which represents the target type
23509of this type.
23510
23511For a pointer type, the target type is the type of the pointed-to
23512object. For an array type (meaning C-like arrays), the target type is
23513the type of the elements of the array. For a function or method type,
23514the target type is the type of the return value. For a complex type,
23515the target type is the type of the elements. For a typedef, the
23516target type is the aliased type.
23517
23518If the type does not have a target, this method will throw an
23519exception.
d812018b 23520@end defun
2c74e833 23521
d812018b 23522@defun Type.template_argument (n @r{[}, block@r{]})
2c74e833
TT
23523If this @code{gdb.Type} is an instantiation of a template, this will
23524return a new @code{gdb.Type} which represents the type of the
23525@var{n}th template argument.
23526
23527If this @code{gdb.Type} is not a template type, this will throw an
23528exception. Ordinarily, only C@t{++} code will have template types.
23529
5107b149
PM
23530If @var{block} is given, then @var{name} is looked up in that scope.
23531Otherwise, it is searched for globally.
d812018b 23532@end defun
2c74e833
TT
23533@end table
23534
23535
23536Each type has a code, which indicates what category this type falls
23537into. The available type categories are represented by constants
23538defined in the @code{gdb} module:
23539
23540@table @code
23541@findex TYPE_CODE_PTR
23542@findex gdb.TYPE_CODE_PTR
d812018b 23543@item gdb.TYPE_CODE_PTR
2c74e833
TT
23544The type is a pointer.
23545
23546@findex TYPE_CODE_ARRAY
23547@findex gdb.TYPE_CODE_ARRAY
d812018b 23548@item gdb.TYPE_CODE_ARRAY
2c74e833
TT
23549The type is an array.
23550
23551@findex TYPE_CODE_STRUCT
23552@findex gdb.TYPE_CODE_STRUCT
d812018b 23553@item gdb.TYPE_CODE_STRUCT
2c74e833
TT
23554The type is a structure.
23555
23556@findex TYPE_CODE_UNION
23557@findex gdb.TYPE_CODE_UNION
d812018b 23558@item gdb.TYPE_CODE_UNION
2c74e833
TT
23559The type is a union.
23560
23561@findex TYPE_CODE_ENUM
23562@findex gdb.TYPE_CODE_ENUM
d812018b 23563@item gdb.TYPE_CODE_ENUM
2c74e833
TT
23564The type is an enum.
23565
23566@findex TYPE_CODE_FLAGS
23567@findex gdb.TYPE_CODE_FLAGS
d812018b 23568@item gdb.TYPE_CODE_FLAGS
2c74e833
TT
23569A bit flags type, used for things such as status registers.
23570
23571@findex TYPE_CODE_FUNC
23572@findex gdb.TYPE_CODE_FUNC
d812018b 23573@item gdb.TYPE_CODE_FUNC
2c74e833
TT
23574The type is a function.
23575
23576@findex TYPE_CODE_INT
23577@findex gdb.TYPE_CODE_INT
d812018b 23578@item gdb.TYPE_CODE_INT
2c74e833
TT
23579The type is an integer type.
23580
23581@findex TYPE_CODE_FLT
23582@findex gdb.TYPE_CODE_FLT
d812018b 23583@item gdb.TYPE_CODE_FLT
2c74e833
TT
23584A floating point type.
23585
23586@findex TYPE_CODE_VOID
23587@findex gdb.TYPE_CODE_VOID
d812018b 23588@item gdb.TYPE_CODE_VOID
2c74e833
TT
23589The special type @code{void}.
23590
23591@findex TYPE_CODE_SET
23592@findex gdb.TYPE_CODE_SET
d812018b 23593@item gdb.TYPE_CODE_SET
2c74e833
TT
23594A Pascal set type.
23595
23596@findex TYPE_CODE_RANGE
23597@findex gdb.TYPE_CODE_RANGE
d812018b 23598@item gdb.TYPE_CODE_RANGE
2c74e833
TT
23599A range type, that is, an integer type with bounds.
23600
23601@findex TYPE_CODE_STRING
23602@findex gdb.TYPE_CODE_STRING
d812018b 23603@item gdb.TYPE_CODE_STRING
2c74e833
TT
23604A string type. Note that this is only used for certain languages with
23605language-defined string types; C strings are not represented this way.
23606
23607@findex TYPE_CODE_BITSTRING
23608@findex gdb.TYPE_CODE_BITSTRING
d812018b 23609@item gdb.TYPE_CODE_BITSTRING
6b1755ce 23610A string of bits. It is deprecated.
2c74e833
TT
23611
23612@findex TYPE_CODE_ERROR
23613@findex gdb.TYPE_CODE_ERROR
d812018b 23614@item gdb.TYPE_CODE_ERROR
2c74e833
TT
23615An unknown or erroneous type.
23616
23617@findex TYPE_CODE_METHOD
23618@findex gdb.TYPE_CODE_METHOD
d812018b 23619@item gdb.TYPE_CODE_METHOD
2c74e833
TT
23620A method type, as found in C@t{++} or Java.
23621
23622@findex TYPE_CODE_METHODPTR
23623@findex gdb.TYPE_CODE_METHODPTR
d812018b 23624@item gdb.TYPE_CODE_METHODPTR
2c74e833
TT
23625A pointer-to-member-function.
23626
23627@findex TYPE_CODE_MEMBERPTR
23628@findex gdb.TYPE_CODE_MEMBERPTR
d812018b 23629@item gdb.TYPE_CODE_MEMBERPTR
2c74e833
TT
23630A pointer-to-member.
23631
23632@findex TYPE_CODE_REF
23633@findex gdb.TYPE_CODE_REF
d812018b 23634@item gdb.TYPE_CODE_REF
2c74e833
TT
23635A reference type.
23636
23637@findex TYPE_CODE_CHAR
23638@findex gdb.TYPE_CODE_CHAR
d812018b 23639@item gdb.TYPE_CODE_CHAR
2c74e833
TT
23640A character type.
23641
23642@findex TYPE_CODE_BOOL
23643@findex gdb.TYPE_CODE_BOOL
d812018b 23644@item gdb.TYPE_CODE_BOOL
2c74e833
TT
23645A boolean type.
23646
23647@findex TYPE_CODE_COMPLEX
23648@findex gdb.TYPE_CODE_COMPLEX
d812018b 23649@item gdb.TYPE_CODE_COMPLEX
2c74e833
TT
23650A complex float type.
23651
23652@findex TYPE_CODE_TYPEDEF
23653@findex gdb.TYPE_CODE_TYPEDEF
d812018b 23654@item gdb.TYPE_CODE_TYPEDEF
2c74e833
TT
23655A typedef to some other type.
23656
23657@findex TYPE_CODE_NAMESPACE
23658@findex gdb.TYPE_CODE_NAMESPACE
d812018b 23659@item gdb.TYPE_CODE_NAMESPACE
2c74e833
TT
23660A C@t{++} namespace.
23661
23662@findex TYPE_CODE_DECFLOAT
23663@findex gdb.TYPE_CODE_DECFLOAT
d812018b 23664@item gdb.TYPE_CODE_DECFLOAT
2c74e833
TT
23665A decimal floating point type.
23666
23667@findex TYPE_CODE_INTERNAL_FUNCTION
23668@findex gdb.TYPE_CODE_INTERNAL_FUNCTION
d812018b 23669@item gdb.TYPE_CODE_INTERNAL_FUNCTION
2c74e833
TT
23670A function internal to @value{GDBN}. This is the type used to represent
23671convenience functions.
23672@end table
23673
0e3509db
DE
23674Further support for types is provided in the @code{gdb.types}
23675Python module (@pxref{gdb.types}).
23676
4c374409
JK
23677@node Pretty Printing API
23678@subsubsection Pretty Printing API
a6bac58e 23679
4c374409 23680An example output is provided (@pxref{Pretty Printing}).
a6bac58e
TT
23681
23682A pretty-printer is just an object that holds a value and implements a
23683specific interface, defined here.
23684
d812018b 23685@defun pretty_printer.children (self)
a6bac58e
TT
23686@value{GDBN} will call this method on a pretty-printer to compute the
23687children of the pretty-printer's value.
23688
23689This method must return an object conforming to the Python iterator
23690protocol. Each item returned by the iterator must be a tuple holding
23691two elements. The first element is the ``name'' of the child; the
23692second element is the child's value. The value can be any Python
23693object which is convertible to a @value{GDBN} value.
23694
23695This method is optional. If it does not exist, @value{GDBN} will act
23696as though the value has no children.
d812018b 23697@end defun
a6bac58e 23698
d812018b 23699@defun pretty_printer.display_hint (self)
a6bac58e
TT
23700The CLI may call this method and use its result to change the
23701formatting of a value. The result will also be supplied to an MI
23702consumer as a @samp{displayhint} attribute of the variable being
23703printed.
23704
23705This method is optional. If it does exist, this method must return a
23706string.
23707
23708Some display hints are predefined by @value{GDBN}:
23709
23710@table @samp
23711@item array
23712Indicate that the object being printed is ``array-like''. The CLI
23713uses this to respect parameters such as @code{set print elements} and
23714@code{set print array}.
23715
23716@item map
23717Indicate that the object being printed is ``map-like'', and that the
23718children of this value can be assumed to alternate between keys and
23719values.
23720
23721@item string
23722Indicate that the object being printed is ``string-like''. If the
23723printer's @code{to_string} method returns a Python string of some
23724kind, then @value{GDBN} will call its internal language-specific
23725string-printing function to format the string. For the CLI this means
23726adding quotation marks, possibly escaping some characters, respecting
23727@code{set print elements}, and the like.
23728@end table
d812018b 23729@end defun
a6bac58e 23730
d812018b 23731@defun pretty_printer.to_string (self)
a6bac58e
TT
23732@value{GDBN} will call this method to display the string
23733representation of the value passed to the object's constructor.
23734
23735When printing from the CLI, if the @code{to_string} method exists,
23736then @value{GDBN} will prepend its result to the values returned by
23737@code{children}. Exactly how this formatting is done is dependent on
23738the display hint, and may change as more hints are added. Also,
23739depending on the print settings (@pxref{Print Settings}), the CLI may
23740print just the result of @code{to_string} in a stack trace, omitting
23741the result of @code{children}.
23742
23743If this method returns a string, it is printed verbatim.
23744
23745Otherwise, if this method returns an instance of @code{gdb.Value},
23746then @value{GDBN} prints this value. This may result in a call to
23747another pretty-printer.
23748
23749If instead the method returns a Python value which is convertible to a
23750@code{gdb.Value}, then @value{GDBN} performs the conversion and prints
23751the resulting value. Again, this may result in a call to another
23752pretty-printer. Python scalars (integers, floats, and booleans) and
23753strings are convertible to @code{gdb.Value}; other types are not.
23754
79f283fe
PM
23755Finally, if this method returns @code{None} then no further operations
23756are peformed in this method and nothing is printed.
23757
a6bac58e 23758If the result is not one of these types, an exception is raised.
d812018b 23759@end defun
a6bac58e 23760
464b3efb
TT
23761@value{GDBN} provides a function which can be used to look up the
23762default pretty-printer for a @code{gdb.Value}:
23763
23764@findex gdb.default_visualizer
d812018b 23765@defun gdb.default_visualizer (value)
464b3efb
TT
23766This function takes a @code{gdb.Value} object as an argument. If a
23767pretty-printer for this value exists, then it is returned. If no such
23768printer exists, then this returns @code{None}.
23769@end defun
23770
a6bac58e
TT
23771@node Selecting Pretty-Printers
23772@subsubsection Selecting Pretty-Printers
23773
23774The Python list @code{gdb.pretty_printers} contains an array of
967cf477 23775functions or callable objects that have been registered via addition
7b51bc51
DE
23776as a pretty-printer. Printers in this list are called @code{global}
23777printers, they're available when debugging all inferiors.
fa33c3cd 23778Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute.
a6bac58e
TT
23779Each @code{gdb.Objfile} also contains a @code{pretty_printers}
23780attribute.
23781
7b51bc51 23782Each function on these lists is passed a single @code{gdb.Value}
a6bac58e 23783argument and should return a pretty-printer object conforming to the
4c374409 23784interface definition above (@pxref{Pretty Printing API}). If a function
a6bac58e
TT
23785cannot create a pretty-printer for the value, it should return
23786@code{None}.
23787
23788@value{GDBN} first checks the @code{pretty_printers} attribute of each
fa33c3cd 23789@code{gdb.Objfile} in the current program space and iteratively calls
7b51bc51
DE
23790each enabled lookup routine in the list for that @code{gdb.Objfile}
23791until it receives a pretty-printer object.
fa33c3cd
DE
23792If no pretty-printer is found in the objfile lists, @value{GDBN} then
23793searches the pretty-printer list of the current program space,
967cf477 23794calling each enabled function until an object is returned.
a6bac58e 23795After these lists have been exhausted, it tries the global
967cf477 23796@code{gdb.pretty_printers} list, again calling each enabled function until an
a6bac58e
TT
23797object is returned.
23798
23799The order in which the objfiles are searched is not specified. For a
23800given list, functions are always invoked from the head of the list,
23801and iterated over sequentially until the end of the list, or a printer
23802object is returned.
23803
7b51bc51
DE
23804For various reasons a pretty-printer may not work.
23805For example, the underlying data structure may have changed and
23806the pretty-printer is out of date.
23807
23808The consequences of a broken pretty-printer are severe enough that
23809@value{GDBN} provides support for enabling and disabling individual
23810printers. For example, if @code{print frame-arguments} is on,
23811a backtrace can become highly illegible if any argument is printed
23812with a broken printer.
23813
23814Pretty-printers are enabled and disabled by attaching an @code{enabled}
23815attribute to the registered function or callable object. If this attribute
23816is present and its value is @code{False}, the printer is disabled, otherwise
23817the printer is enabled.
23818
23819@node Writing a Pretty-Printer
23820@subsubsection Writing a Pretty-Printer
23821@cindex writing a pretty-printer
23822
23823A pretty-printer consists of two parts: a lookup function to detect
23824if the type is supported, and the printer itself.
23825
a6bac58e 23826Here is an example showing how a @code{std::string} printer might be
7b51bc51
DE
23827written. @xref{Pretty Printing API}, for details on the API this class
23828must provide.
a6bac58e
TT
23829
23830@smallexample
7b51bc51 23831class StdStringPrinter(object):
a6bac58e
TT
23832 "Print a std::string"
23833
7b51bc51 23834 def __init__(self, val):
a6bac58e
TT
23835 self.val = val
23836
7b51bc51 23837 def to_string(self):
a6bac58e
TT
23838 return self.val['_M_dataplus']['_M_p']
23839
7b51bc51 23840 def display_hint(self):
a6bac58e
TT
23841 return 'string'
23842@end smallexample
23843
23844And here is an example showing how a lookup function for the printer
23845example above might be written.
23846
23847@smallexample
7b51bc51 23848def str_lookup_function(val):
a6bac58e 23849 lookup_tag = val.type.tag
a6bac58e
TT
23850 if lookup_tag == None:
23851 return None
7b51bc51
DE
23852 regex = re.compile("^std::basic_string<char,.*>$")
23853 if regex.match(lookup_tag):
23854 return StdStringPrinter(val)
a6bac58e
TT
23855 return None
23856@end smallexample
23857
23858The example lookup function extracts the value's type, and attempts to
23859match it to a type that it can pretty-print. If it is a type the
23860printer can pretty-print, it will return a printer object. If not, it
23861returns @code{None}.
23862
23863We recommend that you put your core pretty-printers into a Python
23864package. If your pretty-printers are for use with a library, we
23865further recommend embedding a version number into the package name.
23866This practice will enable @value{GDBN} to load multiple versions of
23867your pretty-printers at the same time, because they will have
23868different names.
23869
bf88dd68 23870You should write auto-loaded code (@pxref{Python Auto-loading}) such that it
a6bac58e
TT
23871can be evaluated multiple times without changing its meaning. An
23872ideal auto-load file will consist solely of @code{import}s of your
23873printer modules, followed by a call to a register pretty-printers with
23874the current objfile.
23875
23876Taken as a whole, this approach will scale nicely to multiple
23877inferiors, each potentially using a different library version.
23878Embedding a version number in the Python package name will ensure that
23879@value{GDBN} is able to load both sets of printers simultaneously.
23880Then, because the search for pretty-printers is done by objfile, and
23881because your auto-loaded code took care to register your library's
23882printers with a specific objfile, @value{GDBN} will find the correct
23883printers for the specific version of the library used by each
23884inferior.
23885
4c374409 23886To continue the @code{std::string} example (@pxref{Pretty Printing API}),
a6bac58e
TT
23887this code might appear in @code{gdb.libstdcxx.v6}:
23888
23889@smallexample
7b51bc51 23890def register_printers(objfile):
ae6f0d5b 23891 objfile.pretty_printers.append(str_lookup_function)
a6bac58e
TT
23892@end smallexample
23893
23894@noindent
23895And then the corresponding contents of the auto-load file would be:
23896
23897@smallexample
23898import gdb.libstdcxx.v6
7b51bc51 23899gdb.libstdcxx.v6.register_printers(gdb.current_objfile())
a6bac58e
TT
23900@end smallexample
23901
7b51bc51
DE
23902The previous example illustrates a basic pretty-printer.
23903There are a few things that can be improved on.
23904The printer doesn't have a name, making it hard to identify in a
23905list of installed printers. The lookup function has a name, but
23906lookup functions can have arbitrary, even identical, names.
967cf477 23907
7b51bc51
DE
23908Second, the printer only handles one type, whereas a library typically has
23909several types. One could install a lookup function for each desired type
23910in the library, but one could also have a single lookup function recognize
23911several types. The latter is the conventional way this is handled.
23912If a pretty-printer can handle multiple data types, then its
23913@dfn{subprinters} are the printers for the individual data types.
967cf477 23914
7b51bc51
DE
23915The @code{gdb.printing} module provides a formal way of solving these
23916problems (@pxref{gdb.printing}).
23917Here is another example that handles multiple types.
967cf477 23918
7b51bc51
DE
23919These are the types we are going to pretty-print:
23920
23921@smallexample
23922struct foo @{ int a, b; @};
23923struct bar @{ struct foo x, y; @};
23924@end smallexample
23925
23926Here are the printers:
23927
23928@smallexample
23929class fooPrinter:
23930 """Print a foo object."""
23931
23932 def __init__(self, val):
23933 self.val = val
23934
23935 def to_string(self):
23936 return ("a=<" + str(self.val["a"]) +
23937 "> b=<" + str(self.val["b"]) + ">")
23938
23939class barPrinter:
23940 """Print a bar object."""
23941
23942 def __init__(self, val):
23943 self.val = val
23944
23945 def to_string(self):
23946 return ("x=<" + str(self.val["x"]) +
23947 "> y=<" + str(self.val["y"]) + ">")
23948@end smallexample
23949
23950This example doesn't need a lookup function, that is handled by the
23951@code{gdb.printing} module. Instead a function is provided to build up
23952the object that handles the lookup.
23953
23954@smallexample
23955import gdb.printing
23956
23957def build_pretty_printer():
23958 pp = gdb.printing.RegexpCollectionPrettyPrinter(
23959 "my_library")
23960 pp.add_printer('foo', '^foo$', fooPrinter)
23961 pp.add_printer('bar', '^bar$', barPrinter)
23962 return pp
23963@end smallexample
23964
23965And here is the autoload support:
23966
23967@smallexample
23968import gdb.printing
23969import my_library
23970gdb.printing.register_pretty_printer(
23971 gdb.current_objfile(),
23972 my_library.build_pretty_printer())
23973@end smallexample
23974
23975Finally, when this printer is loaded into @value{GDBN}, here is the
23976corresponding output of @samp{info pretty-printer}:
23977
23978@smallexample
23979(gdb) info pretty-printer
23980my_library.so:
23981 my_library
23982 foo
23983 bar
23984@end smallexample
967cf477 23985
18a9fc12
TT
23986@node Type Printing API
23987@subsubsection Type Printing API
23988@cindex type printing API for Python
23989
23990@value{GDBN} provides a way for Python code to customize type display.
23991This is mainly useful for substituting canonical typedef names for
23992types.
23993
23994@cindex type printer
23995A @dfn{type printer} is just a Python object conforming to a certain
23996protocol. A simple base class implementing the protocol is provided;
23997see @ref{gdb.types}. A type printer must supply at least:
23998
23999@defivar type_printer enabled
24000A boolean which is True if the printer is enabled, and False
24001otherwise. This is manipulated by the @code{enable type-printer}
24002and @code{disable type-printer} commands.
24003@end defivar
24004
24005@defivar type_printer name
24006The name of the type printer. This must be a string. This is used by
24007the @code{enable type-printer} and @code{disable type-printer}
24008commands.
24009@end defivar
24010
24011@defmethod type_printer instantiate (self)
24012This is called by @value{GDBN} at the start of type-printing. It is
24013only called if the type printer is enabled. This method must return a
24014new object that supplies a @code{recognize} method, as described below.
24015@end defmethod
24016
24017
24018When displaying a type, say via the @code{ptype} command, @value{GDBN}
24019will compute a list of type recognizers. This is done by iterating
24020first over the per-objfile type printers (@pxref{Objfiles In Python}),
24021followed by the per-progspace type printers (@pxref{Progspaces In
24022Python}), and finally the global type printers.
24023
24024@value{GDBN} will call the @code{instantiate} method of each enabled
24025type printer. If this method returns @code{None}, then the result is
24026ignored; otherwise, it is appended to the list of recognizers.
24027
24028Then, when @value{GDBN} is going to display a type name, it iterates
24029over the list of recognizers. For each one, it calls the recognition
24030function, stopping if the function returns a non-@code{None} value.
24031The recognition function is defined as:
24032
24033@defmethod type_recognizer recognize (self, type)
24034If @var{type} is not recognized, return @code{None}. Otherwise,
24035return a string which is to be printed as the name of @var{type}.
24036@var{type} will be an instance of @code{gdb.Type} (@pxref{Types In
24037Python}).
24038@end defmethod
24039
24040@value{GDBN} uses this two-pass approach so that type printers can
24041efficiently cache information without holding on to it too long. For
24042example, it can be convenient to look up type information in a type
24043printer and hold it for a recognizer's lifetime; if a single pass were
24044done then type printers would have to make use of the event system in
24045order to avoid holding information that could become stale as the
24046inferior changed.
24047
595939de
PM
24048@node Inferiors In Python
24049@subsubsection Inferiors In Python
505500db 24050@cindex inferiors in Python
595939de
PM
24051
24052@findex gdb.Inferior
24053Programs which are being run under @value{GDBN} are called inferiors
24054(@pxref{Inferiors and Programs}). Python scripts can access
24055information about and manipulate inferiors controlled by @value{GDBN}
24056via objects of the @code{gdb.Inferior} class.
24057
24058The following inferior-related functions are available in the @code{gdb}
24059module:
24060
d812018b 24061@defun gdb.inferiors ()
595939de
PM
24062Return a tuple containing all inferior objects.
24063@end defun
24064
d812018b 24065@defun gdb.selected_inferior ()
2aa48337
KP
24066Return an object representing the current inferior.
24067@end defun
24068
595939de
PM
24069A @code{gdb.Inferior} object has the following attributes:
24070
24071@table @code
d812018b 24072@defvar Inferior.num
595939de 24073ID of inferior, as assigned by GDB.
d812018b 24074@end defvar
595939de 24075
d812018b 24076@defvar Inferior.pid
595939de
PM
24077Process ID of the inferior, as assigned by the underlying operating
24078system.
d812018b 24079@end defvar
595939de 24080
d812018b 24081@defvar Inferior.was_attached
595939de
PM
24082Boolean signaling whether the inferior was created using `attach', or
24083started by @value{GDBN} itself.
d812018b 24084@end defvar
595939de
PM
24085@end table
24086
24087A @code{gdb.Inferior} object has the following methods:
24088
24089@table @code
d812018b 24090@defun Inferior.is_valid ()
29703da4
PM
24091Returns @code{True} if the @code{gdb.Inferior} object is valid,
24092@code{False} if not. A @code{gdb.Inferior} object will become invalid
24093if the inferior no longer exists within @value{GDBN}. All other
24094@code{gdb.Inferior} methods will throw an exception if it is invalid
24095at the time the method is called.
d812018b 24096@end defun
29703da4 24097
d812018b 24098@defun Inferior.threads ()
595939de
PM
24099This method returns a tuple holding all the threads which are valid
24100when it is called. If there are no valid threads, the method will
24101return an empty tuple.
d812018b 24102@end defun
595939de 24103
2678e2af 24104@findex Inferior.read_memory
d812018b 24105@defun Inferior.read_memory (address, length)
595939de
PM
24106Read @var{length} bytes of memory from the inferior, starting at
24107@var{address}. Returns a buffer object, which behaves much like an array
2678e2af
YQ
24108or a string. It can be modified and given to the
24109@code{Inferior.write_memory} function.
d812018b 24110@end defun
595939de 24111
2678e2af 24112@findex Inferior.write_memory
d812018b 24113@defun Inferior.write_memory (address, buffer @r{[}, length@r{]})
595939de
PM
24114Write the contents of @var{buffer} to the inferior, starting at
24115@var{address}. The @var{buffer} parameter must be a Python object
24116which supports the buffer protocol, i.e., a string, an array or the
2678e2af 24117object returned from @code{Inferior.read_memory}. If given, @var{length}
595939de 24118determines the number of bytes from @var{buffer} to be written.
d812018b 24119@end defun
595939de
PM
24120
24121@findex gdb.search_memory
d812018b 24122@defun Inferior.search_memory (address, length, pattern)
595939de
PM
24123Search a region of the inferior memory starting at @var{address} with
24124the given @var{length} using the search pattern supplied in
24125@var{pattern}. The @var{pattern} parameter must be a Python object
24126which supports the buffer protocol, i.e., a string, an array or the
24127object returned from @code{gdb.read_memory}. Returns a Python @code{Long}
24128containing the address where the pattern was found, or @code{None} if
24129the pattern could not be found.
d812018b 24130@end defun
595939de
PM
24131@end table
24132
505500db
SW
24133@node Events In Python
24134@subsubsection Events In Python
24135@cindex inferior events in Python
24136
24137@value{GDBN} provides a general event facility so that Python code can be
24138notified of various state changes, particularly changes that occur in
24139the inferior.
24140
24141An @dfn{event} is just an object that describes some state change. The
24142type of the object and its attributes will vary depending on the details
24143of the change. All the existing events are described below.
24144
24145In order to be notified of an event, you must register an event handler
24146with an @dfn{event registry}. An event registry is an object in the
24147@code{gdb.events} module which dispatches particular events. A registry
24148provides methods to register and unregister event handlers:
24149
24150@table @code
d812018b 24151@defun EventRegistry.connect (object)
505500db
SW
24152Add the given callable @var{object} to the registry. This object will be
24153called when an event corresponding to this registry occurs.
d812018b 24154@end defun
505500db 24155
d812018b 24156@defun EventRegistry.disconnect (object)
505500db
SW
24157Remove the given @var{object} from the registry. Once removed, the object
24158will no longer receive notifications of events.
d812018b 24159@end defun
505500db
SW
24160@end table
24161
24162Here is an example:
24163
24164@smallexample
24165def exit_handler (event):
24166 print "event type: exit"
24167 print "exit code: %d" % (event.exit_code)
24168
24169gdb.events.exited.connect (exit_handler)
24170@end smallexample
24171
24172In the above example we connect our handler @code{exit_handler} to the
24173registry @code{events.exited}. Once connected, @code{exit_handler} gets
24174called when the inferior exits. The argument @dfn{event} in this example is
24175of type @code{gdb.ExitedEvent}. As you can see in the example the
24176@code{ExitedEvent} object has an attribute which indicates the exit code of
24177the inferior.
24178
24179The following is a listing of the event registries that are available and
24180details of the events they emit:
24181
24182@table @code
24183
24184@item events.cont
24185Emits @code{gdb.ThreadEvent}.
24186
24187Some events can be thread specific when @value{GDBN} is running in non-stop
24188mode. When represented in Python, these events all extend
24189@code{gdb.ThreadEvent}. Note, this event is not emitted directly; instead,
24190events which are emitted by this or other modules might extend this event.
24191Examples of these events are @code{gdb.BreakpointEvent} and
24192@code{gdb.ContinueEvent}.
24193
24194@table @code
d812018b 24195@defvar ThreadEvent.inferior_thread
505500db
SW
24196In non-stop mode this attribute will be set to the specific thread which was
24197involved in the emitted event. Otherwise, it will be set to @code{None}.
d812018b 24198@end defvar
505500db
SW
24199@end table
24200
24201Emits @code{gdb.ContinueEvent} which extends @code{gdb.ThreadEvent}.
24202
24203This event indicates that the inferior has been continued after a stop. For
24204inherited attribute refer to @code{gdb.ThreadEvent} above.
24205
24206@item events.exited
24207Emits @code{events.ExitedEvent} which indicates that the inferior has exited.
cb6be26b 24208@code{events.ExitedEvent} has two attributes:
505500db 24209@table @code
d812018b 24210@defvar ExitedEvent.exit_code
cb6be26b
KP
24211An integer representing the exit code, if available, which the inferior
24212has returned. (The exit code could be unavailable if, for example,
24213@value{GDBN} detaches from the inferior.) If the exit code is unavailable,
24214the attribute does not exist.
24215@end defvar
24216@defvar ExitedEvent inferior
24217A reference to the inferior which triggered the @code{exited} event.
d812018b 24218@end defvar
505500db
SW
24219@end table
24220
24221@item events.stop
24222Emits @code{gdb.StopEvent} which extends @code{gdb.ThreadEvent}.
24223
24224Indicates that the inferior has stopped. All events emitted by this registry
24225extend StopEvent. As a child of @code{gdb.ThreadEvent}, @code{gdb.StopEvent}
24226will indicate the stopped thread when @value{GDBN} is running in non-stop
24227mode. Refer to @code{gdb.ThreadEvent} above for more details.
24228
24229Emits @code{gdb.SignalEvent} which extends @code{gdb.StopEvent}.
24230
24231This event indicates that the inferior or one of its threads has received as
24232signal. @code{gdb.SignalEvent} has the following attributes:
24233
24234@table @code
d812018b 24235@defvar SignalEvent.stop_signal
505500db
SW
24236A string representing the signal received by the inferior. A list of possible
24237signal values can be obtained by running the command @code{info signals} in
24238the @value{GDBN} command prompt.
d812018b 24239@end defvar
505500db
SW
24240@end table
24241
24242Also emits @code{gdb.BreakpointEvent} which extends @code{gdb.StopEvent}.
24243
6839b47f
KP
24244@code{gdb.BreakpointEvent} event indicates that one or more breakpoints have
24245been hit, and has the following attributes:
505500db
SW
24246
24247@table @code
d812018b 24248@defvar BreakpointEvent.breakpoints
6839b47f
KP
24249A sequence containing references to all the breakpoints (type
24250@code{gdb.Breakpoint}) that were hit.
505500db 24251@xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object.
d812018b
PK
24252@end defvar
24253@defvar BreakpointEvent.breakpoint
6839b47f
KP
24254A reference to the first breakpoint that was hit.
24255This function is maintained for backward compatibility and is now deprecated
d812018b
PK
24256in favor of the @code{gdb.BreakpointEvent.breakpoints} attribute.
24257@end defvar
505500db
SW
24258@end table
24259
20c168b5
KP
24260@item events.new_objfile
24261Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has
24262been loaded by @value{GDBN}. @code{gdb.NewObjFileEvent} has one attribute:
24263
24264@table @code
24265@defvar NewObjFileEvent.new_objfile
24266A reference to the object file (@code{gdb.Objfile}) which has been loaded.
24267@xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
24268@end defvar
24269@end table
24270
505500db
SW
24271@end table
24272
595939de
PM
24273@node Threads In Python
24274@subsubsection Threads In Python
24275@cindex threads in python
24276
24277@findex gdb.InferiorThread
24278Python scripts can access information about, and manipulate inferior threads
24279controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class.
24280
24281The following thread-related functions are available in the @code{gdb}
24282module:
24283
24284@findex gdb.selected_thread
d812018b 24285@defun gdb.selected_thread ()
595939de
PM
24286This function returns the thread object for the selected thread. If there
24287is no selected thread, this will return @code{None}.
24288@end defun
24289
24290A @code{gdb.InferiorThread} object has the following attributes:
24291
24292@table @code
d812018b 24293@defvar InferiorThread.name
4694da01
TT
24294The name of the thread. If the user specified a name using
24295@code{thread name}, then this returns that name. Otherwise, if an
24296OS-supplied name is available, then it is returned. Otherwise, this
24297returns @code{None}.
24298
24299This attribute can be assigned to. The new value must be a string
24300object, which sets the new name, or @code{None}, which removes any
24301user-specified thread name.
d812018b 24302@end defvar
4694da01 24303
d812018b 24304@defvar InferiorThread.num
595939de 24305ID of the thread, as assigned by GDB.
d812018b 24306@end defvar
595939de 24307
d812018b 24308@defvar InferiorThread.ptid
595939de
PM
24309ID of the thread, as assigned by the operating system. This attribute is a
24310tuple containing three integers. The first is the Process ID (PID); the second
24311is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
24312Either the LWPID or TID may be 0, which indicates that the operating system
24313does not use that identifier.
d812018b 24314@end defvar
595939de
PM
24315@end table
24316
24317A @code{gdb.InferiorThread} object has the following methods:
24318
dc3b15be 24319@table @code
d812018b 24320@defun InferiorThread.is_valid ()
29703da4
PM
24321Returns @code{True} if the @code{gdb.InferiorThread} object is valid,
24322@code{False} if not. A @code{gdb.InferiorThread} object will become
24323invalid if the thread exits, or the inferior that the thread belongs
24324is deleted. All other @code{gdb.InferiorThread} methods will throw an
24325exception if it is invalid at the time the method is called.
d812018b 24326@end defun
29703da4 24327
d812018b 24328@defun InferiorThread.switch ()
595939de
PM
24329This changes @value{GDBN}'s currently selected thread to the one represented
24330by this object.
d812018b 24331@end defun
595939de 24332
d812018b 24333@defun InferiorThread.is_stopped ()
595939de 24334Return a Boolean indicating whether the thread is stopped.
d812018b 24335@end defun
595939de 24336
d812018b 24337@defun InferiorThread.is_running ()
595939de 24338Return a Boolean indicating whether the thread is running.
d812018b 24339@end defun
595939de 24340
d812018b 24341@defun InferiorThread.is_exited ()
595939de 24342Return a Boolean indicating whether the thread is exited.
d812018b 24343@end defun
595939de
PM
24344@end table
24345
d8906c6f
TJB
24346@node Commands In Python
24347@subsubsection Commands In Python
24348
24349@cindex commands in python
24350@cindex python commands
d8906c6f
TJB
24351You can implement new @value{GDBN} CLI commands in Python. A CLI
24352command is implemented using an instance of the @code{gdb.Command}
24353class, most commonly using a subclass.
24354
f05e2e1d 24355@defun Command.__init__ (name, @var{command_class} @r{[}, @var{completer_class} @r{[}, @var{prefix}@r{]]})
d8906c6f
TJB
24356The object initializer for @code{Command} registers the new command
24357with @value{GDBN}. This initializer is normally invoked from the
24358subclass' own @code{__init__} method.
24359
24360@var{name} is the name of the command. If @var{name} consists of
24361multiple words, then the initial words are looked for as prefix
24362commands. In this case, if one of the prefix commands does not exist,
24363an exception is raised.
24364
24365There is no support for multi-line commands.
24366
cc924cad 24367@var{command_class} should be one of the @samp{COMMAND_} constants
d8906c6f
TJB
24368defined below. This argument tells @value{GDBN} how to categorize the
24369new command in the help system.
24370
cc924cad 24371@var{completer_class} is an optional argument. If given, it should be
d8906c6f
TJB
24372one of the @samp{COMPLETE_} constants defined below. This argument
24373tells @value{GDBN} how to perform completion for this command. If not
24374given, @value{GDBN} will attempt to complete using the object's
24375@code{complete} method (see below); if no such method is found, an
24376error will occur when completion is attempted.
24377
24378@var{prefix} is an optional argument. If @code{True}, then the new
24379command is a prefix command; sub-commands of this command may be
24380registered.
24381
24382The help text for the new command is taken from the Python
24383documentation string for the command's class, if there is one. If no
24384documentation string is provided, the default value ``This command is
24385not documented.'' is used.
d812018b 24386@end defun
d8906c6f 24387
a0c36267 24388@cindex don't repeat Python command
d812018b 24389@defun Command.dont_repeat ()
d8906c6f
TJB
24390By default, a @value{GDBN} command is repeated when the user enters a
24391blank line at the command prompt. A command can suppress this
24392behavior by invoking the @code{dont_repeat} method. This is similar
24393to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
d812018b 24394@end defun
d8906c6f 24395
d812018b 24396@defun Command.invoke (argument, from_tty)
d8906c6f
TJB
24397This method is called by @value{GDBN} when this command is invoked.
24398
24399@var{argument} is a string. It is the argument to the command, after
24400leading and trailing whitespace has been stripped.
24401
24402@var{from_tty} is a boolean argument. When true, this means that the
24403command was entered by the user at the terminal; when false it means
24404that the command came from elsewhere.
24405
24406If this method throws an exception, it is turned into a @value{GDBN}
24407@code{error} call. Otherwise, the return value is ignored.
07ca107c
DE
24408
24409@findex gdb.string_to_argv
24410To break @var{argument} up into an argv-like string use
24411@code{gdb.string_to_argv}. This function behaves identically to
24412@value{GDBN}'s internal argument lexer @code{buildargv}.
24413It is recommended to use this for consistency.
24414Arguments are separated by spaces and may be quoted.
24415Example:
24416
24417@smallexample
24418print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"")
24419['1', '2 "3', '4 "5', "6 '7"]
24420@end smallexample
24421
d812018b 24422@end defun
d8906c6f 24423
a0c36267 24424@cindex completion of Python commands
d812018b 24425@defun Command.complete (text, word)
d8906c6f
TJB
24426This method is called by @value{GDBN} when the user attempts
24427completion on this command. All forms of completion are handled by
a0c36267
EZ
24428this method, that is, the @key{TAB} and @key{M-?} key bindings
24429(@pxref{Completion}), and the @code{complete} command (@pxref{Help,
24430complete}).
d8906c6f
TJB
24431
24432The arguments @var{text} and @var{word} are both strings. @var{text}
24433holds the complete command line up to the cursor's location.
24434@var{word} holds the last word of the command line; this is computed
24435using a word-breaking heuristic.
24436
24437The @code{complete} method can return several values:
24438@itemize @bullet
24439@item
24440If the return value is a sequence, the contents of the sequence are
24441used as the completions. It is up to @code{complete} to ensure that the
24442contents actually do complete the word. A zero-length sequence is
24443allowed, it means that there were no completions available. Only
24444string elements of the sequence are used; other elements in the
24445sequence are ignored.
24446
24447@item
24448If the return value is one of the @samp{COMPLETE_} constants defined
24449below, then the corresponding @value{GDBN}-internal completion
24450function is invoked, and its result is used.
24451
24452@item
24453All other results are treated as though there were no available
24454completions.
24455@end itemize
d812018b 24456@end defun
d8906c6f 24457
d8906c6f
TJB
24458When a new command is registered, it must be declared as a member of
24459some general class of commands. This is used to classify top-level
24460commands in the on-line help system; note that prefix commands are not
24461listed under their own category but rather that of their top-level
24462command. The available classifications are represented by constants
24463defined in the @code{gdb} module:
24464
24465@table @code
24466@findex COMMAND_NONE
24467@findex gdb.COMMAND_NONE
d812018b 24468@item gdb.COMMAND_NONE
d8906c6f
TJB
24469The command does not belong to any particular class. A command in
24470this category will not be displayed in any of the help categories.
24471
24472@findex COMMAND_RUNNING
24473@findex gdb.COMMAND_RUNNING
d812018b 24474@item gdb.COMMAND_RUNNING
d8906c6f
TJB
24475The command is related to running the inferior. For example,
24476@code{start}, @code{step}, and @code{continue} are in this category.
a0c36267 24477Type @kbd{help running} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24478commands in this category.
24479
24480@findex COMMAND_DATA
24481@findex gdb.COMMAND_DATA
d812018b 24482@item gdb.COMMAND_DATA
d8906c6f
TJB
24483The command is related to data or variables. For example,
24484@code{call}, @code{find}, and @code{print} are in this category. Type
a0c36267 24485@kbd{help data} at the @value{GDBN} prompt to see a list of commands
d8906c6f
TJB
24486in this category.
24487
24488@findex COMMAND_STACK
24489@findex gdb.COMMAND_STACK
d812018b 24490@item gdb.COMMAND_STACK
d8906c6f
TJB
24491The command has to do with manipulation of the stack. For example,
24492@code{backtrace}, @code{frame}, and @code{return} are in this
a0c36267 24493category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
d8906c6f
TJB
24494list of commands in this category.
24495
24496@findex COMMAND_FILES
24497@findex gdb.COMMAND_FILES
d812018b 24498@item gdb.COMMAND_FILES
d8906c6f
TJB
24499This class is used for file-related commands. For example,
24500@code{file}, @code{list} and @code{section} are in this category.
a0c36267 24501Type @kbd{help files} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24502commands in this category.
24503
24504@findex COMMAND_SUPPORT
24505@findex gdb.COMMAND_SUPPORT
d812018b 24506@item gdb.COMMAND_SUPPORT
d8906c6f
TJB
24507This should be used for ``support facilities'', generally meaning
24508things that are useful to the user when interacting with @value{GDBN},
24509but not related to the state of the inferior. For example,
24510@code{help}, @code{make}, and @code{shell} are in this category. Type
a0c36267 24511@kbd{help support} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24512commands in this category.
24513
24514@findex COMMAND_STATUS
24515@findex gdb.COMMAND_STATUS
d812018b 24516@item gdb.COMMAND_STATUS
d8906c6f
TJB
24517The command is an @samp{info}-related command, that is, related to the
24518state of @value{GDBN} itself. For example, @code{info}, @code{macro},
a0c36267 24519and @code{show} are in this category. Type @kbd{help status} at the
d8906c6f
TJB
24520@value{GDBN} prompt to see a list of commands in this category.
24521
24522@findex COMMAND_BREAKPOINTS
24523@findex gdb.COMMAND_BREAKPOINTS
d812018b 24524@item gdb.COMMAND_BREAKPOINTS
d8906c6f 24525The command has to do with breakpoints. For example, @code{break},
a0c36267 24526@code{clear}, and @code{delete} are in this category. Type @kbd{help
d8906c6f
TJB
24527breakpoints} at the @value{GDBN} prompt to see a list of commands in
24528this category.
24529
24530@findex COMMAND_TRACEPOINTS
24531@findex gdb.COMMAND_TRACEPOINTS
d812018b 24532@item gdb.COMMAND_TRACEPOINTS
d8906c6f
TJB
24533The command has to do with tracepoints. For example, @code{trace},
24534@code{actions}, and @code{tfind} are in this category. Type
a0c36267 24535@kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24536commands in this category.
24537
7d74f244
DE
24538@findex COMMAND_USER
24539@findex gdb.COMMAND_USER
24540@item gdb.COMMAND_USER
24541The command is a general purpose command for the user, and typically
24542does not fit in one of the other categories.
24543Type @kbd{help user-defined} at the @value{GDBN} prompt to see
24544a list of commands in this category, as well as the list of gdb macros
24545(@pxref{Sequences}).
24546
d8906c6f
TJB
24547@findex COMMAND_OBSCURE
24548@findex gdb.COMMAND_OBSCURE
d812018b 24549@item gdb.COMMAND_OBSCURE
d8906c6f
TJB
24550The command is only used in unusual circumstances, or is not of
24551general interest to users. For example, @code{checkpoint},
a0c36267 24552@code{fork}, and @code{stop} are in this category. Type @kbd{help
d8906c6f
TJB
24553obscure} at the @value{GDBN} prompt to see a list of commands in this
24554category.
24555
24556@findex COMMAND_MAINTENANCE
24557@findex gdb.COMMAND_MAINTENANCE
d812018b 24558@item gdb.COMMAND_MAINTENANCE
d8906c6f
TJB
24559The command is only useful to @value{GDBN} maintainers. The
24560@code{maintenance} and @code{flushregs} commands are in this category.
a0c36267 24561Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24562commands in this category.
24563@end table
24564
d8906c6f
TJB
24565A new command can use a predefined completion function, either by
24566specifying it via an argument at initialization, or by returning it
24567from the @code{complete} method. These predefined completion
24568constants are all defined in the @code{gdb} module:
24569
24570@table @code
24571@findex COMPLETE_NONE
24572@findex gdb.COMPLETE_NONE
d812018b 24573@item gdb.COMPLETE_NONE
d8906c6f
TJB
24574This constant means that no completion should be done.
24575
24576@findex COMPLETE_FILENAME
24577@findex gdb.COMPLETE_FILENAME
d812018b 24578@item gdb.COMPLETE_FILENAME
d8906c6f
TJB
24579This constant means that filename completion should be performed.
24580
24581@findex COMPLETE_LOCATION
24582@findex gdb.COMPLETE_LOCATION
d812018b 24583@item gdb.COMPLETE_LOCATION
d8906c6f
TJB
24584This constant means that location completion should be done.
24585@xref{Specify Location}.
24586
24587@findex COMPLETE_COMMAND
24588@findex gdb.COMPLETE_COMMAND
d812018b 24589@item gdb.COMPLETE_COMMAND
d8906c6f
TJB
24590This constant means that completion should examine @value{GDBN}
24591command names.
24592
24593@findex COMPLETE_SYMBOL
24594@findex gdb.COMPLETE_SYMBOL
d812018b 24595@item gdb.COMPLETE_SYMBOL
d8906c6f
TJB
24596This constant means that completion should be done using symbol names
24597as the source.
24598@end table
24599
24600The following code snippet shows how a trivial CLI command can be
24601implemented in Python:
24602
24603@smallexample
24604class HelloWorld (gdb.Command):
24605 """Greet the whole world."""
24606
24607 def __init__ (self):
7d74f244 24608 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
d8906c6f
TJB
24609
24610 def invoke (self, arg, from_tty):
24611 print "Hello, World!"
24612
24613HelloWorld ()
24614@end smallexample
24615
24616The last line instantiates the class, and is necessary to trigger the
24617registration of the command with @value{GDBN}. Depending on how the
24618Python code is read into @value{GDBN}, you may need to import the
24619@code{gdb} module explicitly.
24620
d7b32ed3
PM
24621@node Parameters In Python
24622@subsubsection Parameters In Python
24623
24624@cindex parameters in python
24625@cindex python parameters
24626@tindex gdb.Parameter
24627@tindex Parameter
24628You can implement new @value{GDBN} parameters using Python. A new
24629parameter is implemented as an instance of the @code{gdb.Parameter}
24630class.
24631
24632Parameters are exposed to the user via the @code{set} and
24633@code{show} commands. @xref{Help}.
24634
24635There are many parameters that already exist and can be set in
24636@value{GDBN}. Two examples are: @code{set follow fork} and
24637@code{set charset}. Setting these parameters influences certain
24638behavior in @value{GDBN}. Similarly, you can define parameters that
24639can be used to influence behavior in custom Python scripts and commands.
24640
d812018b 24641@defun Parameter.__init__ (name, @var{command-class}, @var{parameter-class} @r{[}, @var{enum-sequence}@r{]})
d7b32ed3
PM
24642The object initializer for @code{Parameter} registers the new
24643parameter with @value{GDBN}. This initializer is normally invoked
24644from the subclass' own @code{__init__} method.
24645
24646@var{name} is the name of the new parameter. If @var{name} consists
24647of multiple words, then the initial words are looked for as prefix
24648parameters. An example of this can be illustrated with the
24649@code{set print} set of parameters. If @var{name} is
24650@code{print foo}, then @code{print} will be searched as the prefix
24651parameter. In this case the parameter can subsequently be accessed in
24652@value{GDBN} as @code{set print foo}.
24653
24654If @var{name} consists of multiple words, and no prefix parameter group
24655can be found, an exception is raised.
24656
24657@var{command-class} should be one of the @samp{COMMAND_} constants
24658(@pxref{Commands In Python}). This argument tells @value{GDBN} how to
24659categorize the new parameter in the help system.
24660
24661@var{parameter-class} should be one of the @samp{PARAM_} constants
24662defined below. This argument tells @value{GDBN} the type of the new
24663parameter; this information is used for input validation and
24664completion.
24665
24666If @var{parameter-class} is @code{PARAM_ENUM}, then
24667@var{enum-sequence} must be a sequence of strings. These strings
24668represent the possible values for the parameter.
24669
24670If @var{parameter-class} is not @code{PARAM_ENUM}, then the presence
24671of a fourth argument will cause an exception to be thrown.
24672
24673The help text for the new parameter is taken from the Python
24674documentation string for the parameter's class, if there is one. If
24675there is no documentation string, a default value is used.
d812018b 24676@end defun
d7b32ed3 24677
d812018b 24678@defvar Parameter.set_doc
d7b32ed3
PM
24679If this attribute exists, and is a string, then its value is used as
24680the help text for this parameter's @code{set} command. The value is
24681examined when @code{Parameter.__init__} is invoked; subsequent changes
24682have no effect.
d812018b 24683@end defvar
d7b32ed3 24684
d812018b 24685@defvar Parameter.show_doc
d7b32ed3
PM
24686If this attribute exists, and is a string, then its value is used as
24687the help text for this parameter's @code{show} command. The value is
24688examined when @code{Parameter.__init__} is invoked; subsequent changes
24689have no effect.
d812018b 24690@end defvar
d7b32ed3 24691
d812018b 24692@defvar Parameter.value
d7b32ed3
PM
24693The @code{value} attribute holds the underlying value of the
24694parameter. It can be read and assigned to just as any other
24695attribute. @value{GDBN} does validation when assignments are made.
d812018b 24696@end defvar
d7b32ed3 24697
ecec24e6
PM
24698There are two methods that should be implemented in any
24699@code{Parameter} class. These are:
24700
d812018b 24701@defun Parameter.get_set_string (self)
ecec24e6
PM
24702@value{GDBN} will call this method when a @var{parameter}'s value has
24703been changed via the @code{set} API (for example, @kbd{set foo off}).
24704The @code{value} attribute has already been populated with the new
24705value and may be used in output. This method must return a string.
d812018b 24706@end defun
ecec24e6 24707
d812018b 24708@defun Parameter.get_show_string (self, svalue)
ecec24e6
PM
24709@value{GDBN} will call this method when a @var{parameter}'s
24710@code{show} API has been invoked (for example, @kbd{show foo}). The
24711argument @code{svalue} receives the string representation of the
24712current value. This method must return a string.
d812018b 24713@end defun
d7b32ed3
PM
24714
24715When a new parameter is defined, its type must be specified. The
24716available types are represented by constants defined in the @code{gdb}
24717module:
24718
24719@table @code
24720@findex PARAM_BOOLEAN
24721@findex gdb.PARAM_BOOLEAN
d812018b 24722@item gdb.PARAM_BOOLEAN
d7b32ed3
PM
24723The value is a plain boolean. The Python boolean values, @code{True}
24724and @code{False} are the only valid values.
24725
24726@findex PARAM_AUTO_BOOLEAN
24727@findex gdb.PARAM_AUTO_BOOLEAN
d812018b 24728@item gdb.PARAM_AUTO_BOOLEAN
d7b32ed3
PM
24729The value has three possible states: true, false, and @samp{auto}. In
24730Python, true and false are represented using boolean constants, and
24731@samp{auto} is represented using @code{None}.
24732
24733@findex PARAM_UINTEGER
24734@findex gdb.PARAM_UINTEGER
d812018b 24735@item gdb.PARAM_UINTEGER
d7b32ed3
PM
24736The value is an unsigned integer. The value of 0 should be
24737interpreted to mean ``unlimited''.
24738
24739@findex PARAM_INTEGER
24740@findex gdb.PARAM_INTEGER
d812018b 24741@item gdb.PARAM_INTEGER
d7b32ed3
PM
24742The value is a signed integer. The value of 0 should be interpreted
24743to mean ``unlimited''.
24744
24745@findex PARAM_STRING
24746@findex gdb.PARAM_STRING
d812018b 24747@item gdb.PARAM_STRING
d7b32ed3
PM
24748The value is a string. When the user modifies the string, any escape
24749sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
24750translated into corresponding characters and encoded into the current
24751host charset.
24752
24753@findex PARAM_STRING_NOESCAPE
24754@findex gdb.PARAM_STRING_NOESCAPE
d812018b 24755@item gdb.PARAM_STRING_NOESCAPE
d7b32ed3
PM
24756The value is a string. When the user modifies the string, escapes are
24757passed through untranslated.
24758
24759@findex PARAM_OPTIONAL_FILENAME
24760@findex gdb.PARAM_OPTIONAL_FILENAME
d812018b 24761@item gdb.PARAM_OPTIONAL_FILENAME
d7b32ed3
PM
24762The value is a either a filename (a string), or @code{None}.
24763
24764@findex PARAM_FILENAME
24765@findex gdb.PARAM_FILENAME
d812018b 24766@item gdb.PARAM_FILENAME
d7b32ed3
PM
24767The value is a filename. This is just like
24768@code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
24769
24770@findex PARAM_ZINTEGER
24771@findex gdb.PARAM_ZINTEGER
d812018b 24772@item gdb.PARAM_ZINTEGER
d7b32ed3
PM
24773The value is an integer. This is like @code{PARAM_INTEGER}, except 0
24774is interpreted as itself.
24775
24776@findex PARAM_ENUM
24777@findex gdb.PARAM_ENUM
d812018b 24778@item gdb.PARAM_ENUM
d7b32ed3
PM
24779The value is a string, which must be one of a collection string
24780constants provided when the parameter is created.
24781@end table
24782
bc3b79fd
TJB
24783@node Functions In Python
24784@subsubsection Writing new convenience functions
24785
24786@cindex writing convenience functions
24787@cindex convenience functions in python
24788@cindex python convenience functions
24789@tindex gdb.Function
24790@tindex Function
24791You can implement new convenience functions (@pxref{Convenience Vars})
24792in Python. A convenience function is an instance of a subclass of the
24793class @code{gdb.Function}.
24794
d812018b 24795@defun Function.__init__ (name)
bc3b79fd
TJB
24796The initializer for @code{Function} registers the new function with
24797@value{GDBN}. The argument @var{name} is the name of the function,
24798a string. The function will be visible to the user as a convenience
24799variable of type @code{internal function}, whose name is the same as
24800the given @var{name}.
24801
24802The documentation for the new function is taken from the documentation
24803string for the new class.
d812018b 24804@end defun
bc3b79fd 24805
d812018b 24806@defun Function.invoke (@var{*args})
bc3b79fd
TJB
24807When a convenience function is evaluated, its arguments are converted
24808to instances of @code{gdb.Value}, and then the function's
24809@code{invoke} method is called. Note that @value{GDBN} does not
24810predetermine the arity of convenience functions. Instead, all
24811available arguments are passed to @code{invoke}, following the
24812standard Python calling convention. In particular, a convenience
24813function can have default values for parameters without ill effect.
24814
24815The return value of this method is used as its value in the enclosing
24816expression. If an ordinary Python value is returned, it is converted
24817to a @code{gdb.Value} following the usual rules.
d812018b 24818@end defun
bc3b79fd
TJB
24819
24820The following code snippet shows how a trivial convenience function can
24821be implemented in Python:
24822
24823@smallexample
24824class Greet (gdb.Function):
24825 """Return string to greet someone.
24826Takes a name as argument."""
24827
24828 def __init__ (self):
24829 super (Greet, self).__init__ ("greet")
24830
24831 def invoke (self, name):
24832 return "Hello, %s!" % name.string ()
24833
24834Greet ()
24835@end smallexample
24836
24837The last line instantiates the class, and is necessary to trigger the
24838registration of the function with @value{GDBN}. Depending on how the
24839Python code is read into @value{GDBN}, you may need to import the
24840@code{gdb} module explicitly.
24841
dc939229
TT
24842Now you can use the function in an expression:
24843
24844@smallexample
24845(gdb) print $greet("Bob")
24846$1 = "Hello, Bob!"
24847@end smallexample
24848
fa33c3cd
DE
24849@node Progspaces In Python
24850@subsubsection Program Spaces In Python
24851
24852@cindex progspaces in python
24853@tindex gdb.Progspace
24854@tindex Progspace
24855A program space, or @dfn{progspace}, represents a symbolic view
24856of an address space.
24857It consists of all of the objfiles of the program.
24858@xref{Objfiles In Python}.
24859@xref{Inferiors and Programs, program spaces}, for more details
24860about program spaces.
24861
24862The following progspace-related functions are available in the
24863@code{gdb} module:
24864
24865@findex gdb.current_progspace
d812018b 24866@defun gdb.current_progspace ()
fa33c3cd
DE
24867This function returns the program space of the currently selected inferior.
24868@xref{Inferiors and Programs}.
24869@end defun
24870
24871@findex gdb.progspaces
d812018b 24872@defun gdb.progspaces ()
fa33c3cd
DE
24873Return a sequence of all the progspaces currently known to @value{GDBN}.
24874@end defun
24875
24876Each progspace is represented by an instance of the @code{gdb.Progspace}
24877class.
24878
d812018b 24879@defvar Progspace.filename
fa33c3cd 24880The file name of the progspace as a string.
d812018b 24881@end defvar
fa33c3cd 24882
d812018b 24883@defvar Progspace.pretty_printers
fa33c3cd
DE
24884The @code{pretty_printers} attribute is a list of functions. It is
24885used to look up pretty-printers. A @code{Value} is passed to each
24886function in order; if the function returns @code{None}, then the
24887search continues. Otherwise, the return value should be an object
4c374409 24888which is used to format the value. @xref{Pretty Printing API}, for more
fa33c3cd 24889information.
d812018b 24890@end defvar
fa33c3cd 24891
18a9fc12
TT
24892@defvar Progspace.type_printers
24893The @code{type_printers} attribute is a list of type printer objects.
24894@xref{Type Printing API}, for more information.
24895@end defvar
24896
89c73ade
TT
24897@node Objfiles In Python
24898@subsubsection Objfiles In Python
24899
24900@cindex objfiles in python
24901@tindex gdb.Objfile
24902@tindex Objfile
24903@value{GDBN} loads symbols for an inferior from various
24904symbol-containing files (@pxref{Files}). These include the primary
24905executable file, any shared libraries used by the inferior, and any
24906separate debug info files (@pxref{Separate Debug Files}).
24907@value{GDBN} calls these symbol-containing files @dfn{objfiles}.
24908
24909The following objfile-related functions are available in the
24910@code{gdb} module:
24911
24912@findex gdb.current_objfile
d812018b 24913@defun gdb.current_objfile ()
bf88dd68 24914When auto-loading a Python script (@pxref{Python Auto-loading}), @value{GDBN}
89c73ade
TT
24915sets the ``current objfile'' to the corresponding objfile. This
24916function returns the current objfile. If there is no current objfile,
24917this function returns @code{None}.
24918@end defun
24919
24920@findex gdb.objfiles
d812018b 24921@defun gdb.objfiles ()
89c73ade
TT
24922Return a sequence of all the objfiles current known to @value{GDBN}.
24923@xref{Objfiles In Python}.
24924@end defun
24925
24926Each objfile is represented by an instance of the @code{gdb.Objfile}
24927class.
24928
d812018b 24929@defvar Objfile.filename
89c73ade 24930The file name of the objfile as a string.
d812018b 24931@end defvar
89c73ade 24932
d812018b 24933@defvar Objfile.pretty_printers
89c73ade
TT
24934The @code{pretty_printers} attribute is a list of functions. It is
24935used to look up pretty-printers. A @code{Value} is passed to each
24936function in order; if the function returns @code{None}, then the
24937search continues. Otherwise, the return value should be an object
4c374409 24938which is used to format the value. @xref{Pretty Printing API}, for more
a6bac58e 24939information.
d812018b 24940@end defvar
89c73ade 24941
18a9fc12
TT
24942@defvar Objfile.type_printers
24943The @code{type_printers} attribute is a list of type printer objects.
24944@xref{Type Printing API}, for more information.
24945@end defvar
24946
29703da4
PM
24947A @code{gdb.Objfile} object has the following methods:
24948
d812018b 24949@defun Objfile.is_valid ()
29703da4
PM
24950Returns @code{True} if the @code{gdb.Objfile} object is valid,
24951@code{False} if not. A @code{gdb.Objfile} object can become invalid
24952if the object file it refers to is not loaded in @value{GDBN} any
24953longer. All other @code{gdb.Objfile} methods will throw an exception
24954if it is invalid at the time the method is called.
d812018b 24955@end defun
29703da4 24956
f8f6f20b 24957@node Frames In Python
f3e9a817 24958@subsubsection Accessing inferior stack frames from Python.
f8f6f20b
TJB
24959
24960@cindex frames in python
24961When the debugged program stops, @value{GDBN} is able to analyze its call
24962stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
24963represents a frame in the stack. A @code{gdb.Frame} object is only valid
24964while its corresponding frame exists in the inferior's stack. If you try
621c8364
TT
24965to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error}
24966exception (@pxref{Exception Handling}).
f8f6f20b
TJB
24967
24968Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
24969operator, like:
24970
24971@smallexample
24972(@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
24973True
24974@end smallexample
24975
24976The following frame-related functions are available in the @code{gdb} module:
24977
24978@findex gdb.selected_frame
d812018b 24979@defun gdb.selected_frame ()
f8f6f20b
TJB
24980Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
24981@end defun
24982
d8e22779 24983@findex gdb.newest_frame
d812018b 24984@defun gdb.newest_frame ()
d8e22779
TT
24985Return the newest frame object for the selected thread.
24986@end defun
24987
d812018b 24988@defun gdb.frame_stop_reason_string (reason)
f8f6f20b
TJB
24989Return a string explaining the reason why @value{GDBN} stopped unwinding
24990frames, as expressed by the given @var{reason} code (an integer, see the
24991@code{unwind_stop_reason} method further down in this section).
24992@end defun
24993
24994A @code{gdb.Frame} object has the following methods:
24995
24996@table @code
d812018b 24997@defun Frame.is_valid ()
f8f6f20b
TJB
24998Returns true if the @code{gdb.Frame} object is valid, false if not.
24999A frame object can become invalid if the frame it refers to doesn't
25000exist anymore in the inferior. All @code{gdb.Frame} methods will throw
25001an exception if it is invalid at the time the method is called.
d812018b 25002@end defun
f8f6f20b 25003
d812018b 25004@defun Frame.name ()
f8f6f20b
TJB
25005Returns the function name of the frame, or @code{None} if it can't be
25006obtained.
d812018b 25007@end defun
f8f6f20b 25008
d812018b 25009@defun Frame.type ()
ccfc3d6e
TT
25010Returns the type of the frame. The value can be one of:
25011@table @code
25012@item gdb.NORMAL_FRAME
25013An ordinary stack frame.
25014
25015@item gdb.DUMMY_FRAME
25016A fake stack frame that was created by @value{GDBN} when performing an
25017inferior function call.
25018
25019@item gdb.INLINE_FRAME
25020A frame representing an inlined function. The function was inlined
25021into a @code{gdb.NORMAL_FRAME} that is older than this one.
25022
111c6489
JK
25023@item gdb.TAILCALL_FRAME
25024A frame representing a tail call. @xref{Tail Call Frames}.
25025
ccfc3d6e
TT
25026@item gdb.SIGTRAMP_FRAME
25027A signal trampoline frame. This is the frame created by the OS when
25028it calls into a signal handler.
25029
25030@item gdb.ARCH_FRAME
25031A fake stack frame representing a cross-architecture call.
25032
25033@item gdb.SENTINEL_FRAME
25034This is like @code{gdb.NORMAL_FRAME}, but it is only used for the
25035newest frame.
25036@end table
d812018b 25037@end defun
f8f6f20b 25038
d812018b 25039@defun Frame.unwind_stop_reason ()
f8f6f20b
TJB
25040Return an integer representing the reason why it's not possible to find
25041more frames toward the outermost frame. Use
25042@code{gdb.frame_stop_reason_string} to convert the value returned by this
a7fc3f37
KP
25043function to a string. The value can be one of:
25044
25045@table @code
25046@item gdb.FRAME_UNWIND_NO_REASON
25047No particular reason (older frames should be available).
25048
25049@item gdb.FRAME_UNWIND_NULL_ID
25050The previous frame's analyzer returns an invalid result.
25051
25052@item gdb.FRAME_UNWIND_OUTERMOST
25053This frame is the outermost.
25054
25055@item gdb.FRAME_UNWIND_UNAVAILABLE
25056Cannot unwind further, because that would require knowing the
25057values of registers or memory that have not been collected.
25058
25059@item gdb.FRAME_UNWIND_INNER_ID
25060This frame ID looks like it ought to belong to a NEXT frame,
25061but we got it for a PREV frame. Normally, this is a sign of
25062unwinder failure. It could also indicate stack corruption.
25063
25064@item gdb.FRAME_UNWIND_SAME_ID
25065This frame has the same ID as the previous one. That means
25066that unwinding further would almost certainly give us another
25067frame with exactly the same ID, so break the chain. Normally,
25068this is a sign of unwinder failure. It could also indicate
25069stack corruption.
25070
25071@item gdb.FRAME_UNWIND_NO_SAVED_PC
25072The frame unwinder did not find any saved PC, but we needed
25073one to unwind further.
2231f1fb
KP
25074
25075@item gdb.FRAME_UNWIND_FIRST_ERROR
25076Any stop reason greater or equal to this value indicates some kind
25077of error. This special value facilitates writing code that tests
25078for errors in unwinding in a way that will work correctly even if
25079the list of the other values is modified in future @value{GDBN}
25080versions. Using it, you could write:
25081@smallexample
25082reason = gdb.selected_frame().unwind_stop_reason ()
25083reason_str = gdb.frame_stop_reason_string (reason)
25084if reason >= gdb.FRAME_UNWIND_FIRST_ERROR:
25085 print "An error occured: %s" % reason_str
25086@end smallexample
a7fc3f37
KP
25087@end table
25088
d812018b 25089@end defun
f8f6f20b 25090
d812018b 25091@defun Frame.pc ()
f8f6f20b 25092Returns the frame's resume address.
d812018b 25093@end defun
f8f6f20b 25094
d812018b 25095@defun Frame.block ()
f3e9a817 25096Return the frame's code block. @xref{Blocks In Python}.
d812018b 25097@end defun
f3e9a817 25098
d812018b 25099@defun Frame.function ()
f3e9a817
PM
25100Return the symbol for the function corresponding to this frame.
25101@xref{Symbols In Python}.
d812018b 25102@end defun
f3e9a817 25103
d812018b 25104@defun Frame.older ()
f8f6f20b 25105Return the frame that called this frame.
d812018b 25106@end defun
f8f6f20b 25107
d812018b 25108@defun Frame.newer ()
f8f6f20b 25109Return the frame called by this frame.
d812018b 25110@end defun
f8f6f20b 25111
d812018b 25112@defun Frame.find_sal ()
f3e9a817
PM
25113Return the frame's symtab and line object.
25114@xref{Symbol Tables In Python}.
d812018b 25115@end defun
f3e9a817 25116
d812018b 25117@defun Frame.read_var (variable @r{[}, block@r{]})
dc00d89f
PM
25118Return the value of @var{variable} in this frame. If the optional
25119argument @var{block} is provided, search for the variable from that
25120block; otherwise start at the frame's current block (which is
25121determined by the frame's current program counter). @var{variable}
25122must be a string or a @code{gdb.Symbol} object. @var{block} must be a
25123@code{gdb.Block} object.
d812018b 25124@end defun
f3e9a817 25125
d812018b 25126@defun Frame.select ()
f3e9a817
PM
25127Set this frame to be the selected frame. @xref{Stack, ,Examining the
25128Stack}.
d812018b 25129@end defun
f3e9a817
PM
25130@end table
25131
25132@node Blocks In Python
25133@subsubsection Accessing frame blocks from Python.
25134
25135@cindex blocks in python
25136@tindex gdb.Block
25137
25138Within each frame, @value{GDBN} maintains information on each block
25139stored in that frame. These blocks are organized hierarchically, and
25140are represented individually in Python as a @code{gdb.Block}.
25141Please see @ref{Frames In Python}, for a more in-depth discussion on
25142frames. Furthermore, see @ref{Stack, ,Examining the Stack}, for more
25143detailed technical information on @value{GDBN}'s book-keeping of the
25144stack.
25145
bdb1994d 25146A @code{gdb.Block} is iterable. The iterator returns the symbols
56af09aa
SCR
25147(@pxref{Symbols In Python}) local to the block. Python programs
25148should not assume that a specific block object will always contain a
25149given symbol, since changes in @value{GDBN} features and
25150infrastructure may cause symbols move across blocks in a symbol
25151table.
bdb1994d 25152
f3e9a817
PM
25153The following block-related functions are available in the @code{gdb}
25154module:
25155
25156@findex gdb.block_for_pc
d812018b 25157@defun gdb.block_for_pc (pc)
f3e9a817
PM
25158Return the @code{gdb.Block} containing the given @var{pc} value. If the
25159block cannot be found for the @var{pc} value specified, the function
25160will return @code{None}.
25161@end defun
25162
29703da4
PM
25163A @code{gdb.Block} object has the following methods:
25164
25165@table @code
d812018b 25166@defun Block.is_valid ()
29703da4
PM
25167Returns @code{True} if the @code{gdb.Block} object is valid,
25168@code{False} if not. A block object can become invalid if the block it
25169refers to doesn't exist anymore in the inferior. All other
25170@code{gdb.Block} methods will throw an exception if it is invalid at
bdb1994d
TT
25171the time the method is called. The block's validity is also checked
25172during iteration over symbols of the block.
d812018b 25173@end defun
29703da4
PM
25174@end table
25175
f3e9a817
PM
25176A @code{gdb.Block} object has the following attributes:
25177
25178@table @code
d812018b 25179@defvar Block.start
f3e9a817 25180The start address of the block. This attribute is not writable.
d812018b 25181@end defvar
f3e9a817 25182
d812018b 25183@defvar Block.end
f3e9a817 25184The end address of the block. This attribute is not writable.
d812018b 25185@end defvar
f3e9a817 25186
d812018b 25187@defvar Block.function
f3e9a817
PM
25188The name of the block represented as a @code{gdb.Symbol}. If the
25189block is not named, then this attribute holds @code{None}. This
25190attribute is not writable.
d812018b 25191@end defvar
f3e9a817 25192
d812018b 25193@defvar Block.superblock
f3e9a817
PM
25194The block containing this block. If this parent block does not exist,
25195this attribute holds @code{None}. This attribute is not writable.
d812018b 25196@end defvar
9df2fbc4
PM
25197
25198@defvar Block.global_block
25199The global block associated with this block. This attribute is not
25200writable.
25201@end defvar
25202
25203@defvar Block.static_block
25204The static block associated with this block. This attribute is not
25205writable.
25206@end defvar
25207
25208@defvar Block.is_global
25209@code{True} if the @code{gdb.Block} object is a global block,
25210@code{False} if not. This attribute is not
25211writable.
25212@end defvar
25213
25214@defvar Block.is_static
25215@code{True} if the @code{gdb.Block} object is a static block,
25216@code{False} if not. This attribute is not writable.
25217@end defvar
f3e9a817
PM
25218@end table
25219
25220@node Symbols In Python
25221@subsubsection Python representation of Symbols.
25222
25223@cindex symbols in python
25224@tindex gdb.Symbol
25225
25226@value{GDBN} represents every variable, function and type as an
25227entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
25228Similarly, Python represents these symbols in @value{GDBN} with the
25229@code{gdb.Symbol} object.
25230
25231The following symbol-related functions are available in the @code{gdb}
25232module:
25233
25234@findex gdb.lookup_symbol
d812018b 25235@defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]})
f3e9a817
PM
25236This function searches for a symbol by name. The search scope can be
25237restricted to the parameters defined in the optional domain and block
25238arguments.
25239
25240@var{name} is the name of the symbol. It must be a string. The
25241optional @var{block} argument restricts the search to symbols visible
25242in that @var{block}. The @var{block} argument must be a
6e6fbe60
DE
25243@code{gdb.Block} object. If omitted, the block for the current frame
25244is used. The optional @var{domain} argument restricts
f3e9a817
PM
25245the search to the domain type. The @var{domain} argument must be a
25246domain constant defined in the @code{gdb} module and described later
25247in this chapter.
6e6fbe60
DE
25248
25249The result is a tuple of two elements.
25250The first element is a @code{gdb.Symbol} object or @code{None} if the symbol
25251is not found.
25252If the symbol is found, the second element is @code{True} if the symbol
82809774 25253is a field of a method's object (e.g., @code{this} in C@t{++}),
6e6fbe60
DE
25254otherwise it is @code{False}.
25255If the symbol is not found, the second element is @code{False}.
25256@end defun
25257
25258@findex gdb.lookup_global_symbol
d812018b 25259@defun gdb.lookup_global_symbol (name @r{[}, domain@r{]})
6e6fbe60
DE
25260This function searches for a global symbol by name.
25261The search scope can be restricted to by the domain argument.
25262
25263@var{name} is the name of the symbol. It must be a string.
25264The optional @var{domain} argument restricts the search to the domain type.
25265The @var{domain} argument must be a domain constant defined in the @code{gdb}
25266module and described later in this chapter.
25267
25268The result is a @code{gdb.Symbol} object or @code{None} if the symbol
25269is not found.
f3e9a817
PM
25270@end defun
25271
25272A @code{gdb.Symbol} object has the following attributes:
25273
25274@table @code
d812018b 25275@defvar Symbol.type
457e09f0
DE
25276The type of the symbol or @code{None} if no type is recorded.
25277This attribute is represented as a @code{gdb.Type} object.
25278@xref{Types In Python}. This attribute is not writable.
d812018b 25279@end defvar
457e09f0 25280
d812018b 25281@defvar Symbol.symtab
f3e9a817
PM
25282The symbol table in which the symbol appears. This attribute is
25283represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
25284Python}. This attribute is not writable.
d812018b 25285@end defvar
f3e9a817 25286
64e7d9dd
TT
25287@defvar Symbol.line
25288The line number in the source code at which the symbol was defined.
25289This is an integer.
25290@end defvar
25291
d812018b 25292@defvar Symbol.name
f3e9a817 25293The name of the symbol as a string. This attribute is not writable.
d812018b 25294@end defvar
f3e9a817 25295
d812018b 25296@defvar Symbol.linkage_name
f3e9a817
PM
25297The name of the symbol, as used by the linker (i.e., may be mangled).
25298This attribute is not writable.
d812018b 25299@end defvar
f3e9a817 25300
d812018b 25301@defvar Symbol.print_name
f3e9a817
PM
25302The name of the symbol in a form suitable for output. This is either
25303@code{name} or @code{linkage_name}, depending on whether the user
25304asked @value{GDBN} to display demangled or mangled names.
d812018b 25305@end defvar
f3e9a817 25306
d812018b 25307@defvar Symbol.addr_class
f3e9a817
PM
25308The address class of the symbol. This classifies how to find the value
25309of a symbol. Each address class is a constant defined in the
25310@code{gdb} module and described later in this chapter.
d812018b 25311@end defvar
f3e9a817 25312
f0823d2c
TT
25313@defvar Symbol.needs_frame
25314This is @code{True} if evaluating this symbol's value requires a frame
25315(@pxref{Frames In Python}) and @code{False} otherwise. Typically,
25316local variables will require a frame, but other symbols will not.
035d1e5b 25317@end defvar
f0823d2c 25318
d812018b 25319@defvar Symbol.is_argument
f3e9a817 25320@code{True} if the symbol is an argument of a function.
d812018b 25321@end defvar
f3e9a817 25322
d812018b 25323@defvar Symbol.is_constant
f3e9a817 25324@code{True} if the symbol is a constant.
d812018b 25325@end defvar
f3e9a817 25326
d812018b 25327@defvar Symbol.is_function
f3e9a817 25328@code{True} if the symbol is a function or a method.
d812018b 25329@end defvar
f3e9a817 25330
d812018b 25331@defvar Symbol.is_variable
f3e9a817 25332@code{True} if the symbol is a variable.
d812018b 25333@end defvar
f3e9a817
PM
25334@end table
25335
29703da4
PM
25336A @code{gdb.Symbol} object has the following methods:
25337
25338@table @code
d812018b 25339@defun Symbol.is_valid ()
29703da4
PM
25340Returns @code{True} if the @code{gdb.Symbol} object is valid,
25341@code{False} if not. A @code{gdb.Symbol} object can become invalid if
25342the symbol it refers to does not exist in @value{GDBN} any longer.
25343All other @code{gdb.Symbol} methods will throw an exception if it is
25344invalid at the time the method is called.
d812018b 25345@end defun
f0823d2c
TT
25346
25347@defun Symbol.value (@r{[}frame@r{]})
25348Compute the value of the symbol, as a @code{gdb.Value}. For
25349functions, this computes the address of the function, cast to the
25350appropriate type. If the symbol requires a frame in order to compute
25351its value, then @var{frame} must be given. If @var{frame} is not
25352given, or if @var{frame} is invalid, then this method will throw an
25353exception.
25354@end defun
29703da4
PM
25355@end table
25356
f3e9a817
PM
25357The available domain categories in @code{gdb.Symbol} are represented
25358as constants in the @code{gdb} module:
25359
25360@table @code
25361@findex SYMBOL_UNDEF_DOMAIN
25362@findex gdb.SYMBOL_UNDEF_DOMAIN
d812018b 25363@item gdb.SYMBOL_UNDEF_DOMAIN
f3e9a817
PM
25364This is used when a domain has not been discovered or none of the
25365following domains apply. This usually indicates an error either
25366in the symbol information or in @value{GDBN}'s handling of symbols.
25367@findex SYMBOL_VAR_DOMAIN
25368@findex gdb.SYMBOL_VAR_DOMAIN
d812018b 25369@item gdb.SYMBOL_VAR_DOMAIN
f3e9a817
PM
25370This domain contains variables, function names, typedef names and enum
25371type values.
25372@findex SYMBOL_STRUCT_DOMAIN
25373@findex gdb.SYMBOL_STRUCT_DOMAIN
d812018b 25374@item gdb.SYMBOL_STRUCT_DOMAIN
f3e9a817
PM
25375This domain holds struct, union and enum type names.
25376@findex SYMBOL_LABEL_DOMAIN
25377@findex gdb.SYMBOL_LABEL_DOMAIN
d812018b 25378@item gdb.SYMBOL_LABEL_DOMAIN
f3e9a817
PM
25379This domain contains names of labels (for gotos).
25380@findex SYMBOL_VARIABLES_DOMAIN
25381@findex gdb.SYMBOL_VARIABLES_DOMAIN
d812018b 25382@item gdb.SYMBOL_VARIABLES_DOMAIN
f3e9a817
PM
25383This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
25384contains everything minus functions and types.
25385@findex SYMBOL_FUNCTIONS_DOMAIN
25386@findex gdb.SYMBOL_FUNCTIONS_DOMAIN
d812018b 25387@item gdb.SYMBOL_FUNCTION_DOMAIN
f3e9a817
PM
25388This domain contains all functions.
25389@findex SYMBOL_TYPES_DOMAIN
25390@findex gdb.SYMBOL_TYPES_DOMAIN
d812018b 25391@item gdb.SYMBOL_TYPES_DOMAIN
f3e9a817
PM
25392This domain contains all types.
25393@end table
25394
25395The available address class categories in @code{gdb.Symbol} are represented
25396as constants in the @code{gdb} module:
25397
25398@table @code
25399@findex SYMBOL_LOC_UNDEF
25400@findex gdb.SYMBOL_LOC_UNDEF
d812018b 25401@item gdb.SYMBOL_LOC_UNDEF
f3e9a817
PM
25402If this is returned by address class, it indicates an error either in
25403the symbol information or in @value{GDBN}'s handling of symbols.
25404@findex SYMBOL_LOC_CONST
25405@findex gdb.SYMBOL_LOC_CONST
d812018b 25406@item gdb.SYMBOL_LOC_CONST
f3e9a817
PM
25407Value is constant int.
25408@findex SYMBOL_LOC_STATIC
25409@findex gdb.SYMBOL_LOC_STATIC
d812018b 25410@item gdb.SYMBOL_LOC_STATIC
f3e9a817
PM
25411Value is at a fixed address.
25412@findex SYMBOL_LOC_REGISTER
25413@findex gdb.SYMBOL_LOC_REGISTER
d812018b 25414@item gdb.SYMBOL_LOC_REGISTER
f3e9a817
PM
25415Value is in a register.
25416@findex SYMBOL_LOC_ARG
25417@findex gdb.SYMBOL_LOC_ARG
d812018b 25418@item gdb.SYMBOL_LOC_ARG
f3e9a817
PM
25419Value is an argument. This value is at the offset stored within the
25420symbol inside the frame's argument list.
25421@findex SYMBOL_LOC_REF_ARG
25422@findex gdb.SYMBOL_LOC_REF_ARG
d812018b 25423@item gdb.SYMBOL_LOC_REF_ARG
f3e9a817
PM
25424Value address is stored in the frame's argument list. Just like
25425@code{LOC_ARG} except that the value's address is stored at the
25426offset, not the value itself.
25427@findex SYMBOL_LOC_REGPARM_ADDR
25428@findex gdb.SYMBOL_LOC_REGPARM_ADDR
d812018b 25429@item gdb.SYMBOL_LOC_REGPARM_ADDR
f3e9a817
PM
25430Value is a specified register. Just like @code{LOC_REGISTER} except
25431the register holds the address of the argument instead of the argument
25432itself.
25433@findex SYMBOL_LOC_LOCAL
25434@findex gdb.SYMBOL_LOC_LOCAL
d812018b 25435@item gdb.SYMBOL_LOC_LOCAL
f3e9a817
PM
25436Value is a local variable.
25437@findex SYMBOL_LOC_TYPEDEF
25438@findex gdb.SYMBOL_LOC_TYPEDEF
d812018b 25439@item gdb.SYMBOL_LOC_TYPEDEF
f3e9a817
PM
25440Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
25441have this class.
25442@findex SYMBOL_LOC_BLOCK
25443@findex gdb.SYMBOL_LOC_BLOCK
d812018b 25444@item gdb.SYMBOL_LOC_BLOCK
f3e9a817
PM
25445Value is a block.
25446@findex SYMBOL_LOC_CONST_BYTES
25447@findex gdb.SYMBOL_LOC_CONST_BYTES
d812018b 25448@item gdb.SYMBOL_LOC_CONST_BYTES
f3e9a817
PM
25449Value is a byte-sequence.
25450@findex SYMBOL_LOC_UNRESOLVED
25451@findex gdb.SYMBOL_LOC_UNRESOLVED
d812018b 25452@item gdb.SYMBOL_LOC_UNRESOLVED
f3e9a817
PM
25453Value is at a fixed address, but the address of the variable has to be
25454determined from the minimal symbol table whenever the variable is
25455referenced.
25456@findex SYMBOL_LOC_OPTIMIZED_OUT
25457@findex gdb.SYMBOL_LOC_OPTIMIZED_OUT
d812018b 25458@item gdb.SYMBOL_LOC_OPTIMIZED_OUT
f3e9a817
PM
25459The value does not actually exist in the program.
25460@findex SYMBOL_LOC_COMPUTED
25461@findex gdb.SYMBOL_LOC_COMPUTED
d812018b 25462@item gdb.SYMBOL_LOC_COMPUTED
f3e9a817
PM
25463The value's address is a computed location.
25464@end table
25465
25466@node Symbol Tables In Python
25467@subsubsection Symbol table representation in Python.
25468
25469@cindex symbol tables in python
25470@tindex gdb.Symtab
25471@tindex gdb.Symtab_and_line
25472
25473Access to symbol table data maintained by @value{GDBN} on the inferior
25474is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
25475@code{gdb.Symtab}. Symbol table and line data for a frame is returned
25476from the @code{find_sal} method in @code{gdb.Frame} object.
25477@xref{Frames In Python}.
25478
25479For more information on @value{GDBN}'s symbol table management, see
25480@ref{Symbols, ,Examining the Symbol Table}, for more information.
25481
25482A @code{gdb.Symtab_and_line} object has the following attributes:
25483
25484@table @code
d812018b 25485@defvar Symtab_and_line.symtab
f3e9a817
PM
25486The symbol table object (@code{gdb.Symtab}) for this frame.
25487This attribute is not writable.
d812018b 25488@end defvar
f3e9a817 25489
d812018b 25490@defvar Symtab_and_line.pc
3c15d565
SCR
25491Indicates the start of the address range occupied by code for the
25492current source line. This attribute is not writable.
d812018b 25493@end defvar
f3e9a817 25494
ee0bf529
SCR
25495@defvar Symtab_and_line.last
25496Indicates the end of the address range occupied by code for the current
25497source line. This attribute is not writable.
25498@end defvar
25499
d812018b 25500@defvar Symtab_and_line.line
f3e9a817
PM
25501Indicates the current line number for this object. This
25502attribute is not writable.
d812018b 25503@end defvar
f3e9a817
PM
25504@end table
25505
29703da4
PM
25506A @code{gdb.Symtab_and_line} object has the following methods:
25507
25508@table @code
d812018b 25509@defun Symtab_and_line.is_valid ()
29703da4
PM
25510Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid,
25511@code{False} if not. A @code{gdb.Symtab_and_line} object can become
25512invalid if the Symbol table and line object it refers to does not
25513exist in @value{GDBN} any longer. All other
25514@code{gdb.Symtab_and_line} methods will throw an exception if it is
25515invalid at the time the method is called.
d812018b 25516@end defun
29703da4
PM
25517@end table
25518
f3e9a817
PM
25519A @code{gdb.Symtab} object has the following attributes:
25520
25521@table @code
d812018b 25522@defvar Symtab.filename
f3e9a817 25523The symbol table's source filename. This attribute is not writable.
d812018b 25524@end defvar
f3e9a817 25525
d812018b 25526@defvar Symtab.objfile
f3e9a817
PM
25527The symbol table's backing object file. @xref{Objfiles In Python}.
25528This attribute is not writable.
d812018b 25529@end defvar
f3e9a817
PM
25530@end table
25531
29703da4 25532A @code{gdb.Symtab} object has the following methods:
f3e9a817
PM
25533
25534@table @code
d812018b 25535@defun Symtab.is_valid ()
29703da4
PM
25536Returns @code{True} if the @code{gdb.Symtab} object is valid,
25537@code{False} if not. A @code{gdb.Symtab} object can become invalid if
25538the symbol table it refers to does not exist in @value{GDBN} any
25539longer. All other @code{gdb.Symtab} methods will throw an exception
25540if it is invalid at the time the method is called.
d812018b 25541@end defun
29703da4 25542
d812018b 25543@defun Symtab.fullname ()
f3e9a817 25544Return the symbol table's source absolute file name.
d812018b 25545@end defun
a20ee7a4
SCR
25546
25547@defun Symtab.global_block ()
25548Return the global block of the underlying symbol table.
25549@xref{Blocks In Python}.
25550@end defun
25551
25552@defun Symtab.static_block ()
25553Return the static block of the underlying symbol table.
25554@xref{Blocks In Python}.
25555@end defun
f8f6f20b
TJB
25556@end table
25557
adc36818
PM
25558@node Breakpoints In Python
25559@subsubsection Manipulating breakpoints using Python
25560
25561@cindex breakpoints in python
25562@tindex gdb.Breakpoint
25563
25564Python code can manipulate breakpoints via the @code{gdb.Breakpoint}
25565class.
25566
d812018b 25567@defun Breakpoint.__init__ (spec @r{[}, type @r{[}, wp_class @r{[},internal@r{]]]})
adc36818
PM
25568Create a new breakpoint. @var{spec} is a string naming the
25569location of the breakpoint, or an expression that defines a
25570watchpoint. The contents can be any location recognized by the
25571@code{break} command, or in the case of a watchpoint, by the @code{watch}
25572command. The optional @var{type} denotes the breakpoint to create
25573from the types defined later in this chapter. This argument can be
d812018b
PK
25574either: @code{gdb.BP_BREAKPOINT} or @code{gdb.BP_WATCHPOINT}. @var{type}
25575defaults to @code{gdb.BP_BREAKPOINT}. The optional @var{internal} argument
84f4c1fe
PM
25576allows the breakpoint to become invisible to the user. The breakpoint
25577will neither be reported when created, nor will it be listed in the
25578output from @code{info breakpoints} (but will be listed with the
25579@code{maint info breakpoints} command). The optional @var{wp_class}
adc36818 25580argument defines the class of watchpoint to create, if @var{type} is
d812018b
PK
25581@code{gdb.BP_WATCHPOINT}. If a watchpoint class is not provided, it is
25582assumed to be a @code{gdb.WP_WRITE} class.
25583@end defun
adc36818 25584
d812018b 25585@defun Breakpoint.stop (self)
7371cf6d
PM
25586The @code{gdb.Breakpoint} class can be sub-classed and, in
25587particular, you may choose to implement the @code{stop} method.
25588If this method is defined as a sub-class of @code{gdb.Breakpoint},
25589it will be called when the inferior reaches any location of a
25590breakpoint which instantiates that sub-class. If the method returns
25591@code{True}, the inferior will be stopped at the location of the
25592breakpoint, otherwise the inferior will continue.
25593
25594If there are multiple breakpoints at the same location with a
25595@code{stop} method, each one will be called regardless of the
25596return status of the previous. This ensures that all @code{stop}
25597methods have a chance to execute at that location. In this scenario
25598if one of the methods returns @code{True} but the others return
25599@code{False}, the inferior will still be stopped.
25600
99f5279d
PM
25601You should not alter the execution state of the inferior (i.e.@:, step,
25602next, etc.), alter the current frame context (i.e.@:, change the current
25603active frame), or alter, add or delete any breakpoint. As a general
25604rule, you should not alter any data within @value{GDBN} or the inferior
25605at this time.
25606
7371cf6d
PM
25607Example @code{stop} implementation:
25608
25609@smallexample
25610class MyBreakpoint (gdb.Breakpoint):
25611 def stop (self):
25612 inf_val = gdb.parse_and_eval("foo")
25613 if inf_val == 3:
25614 return True
25615 return False
25616@end smallexample
d812018b 25617@end defun
7371cf6d 25618
adc36818
PM
25619The available watchpoint types represented by constants are defined in the
25620@code{gdb} module:
25621
25622@table @code
25623@findex WP_READ
25624@findex gdb.WP_READ
d812018b 25625@item gdb.WP_READ
adc36818
PM
25626Read only watchpoint.
25627
25628@findex WP_WRITE
25629@findex gdb.WP_WRITE
d812018b 25630@item gdb.WP_WRITE
adc36818
PM
25631Write only watchpoint.
25632
25633@findex WP_ACCESS
25634@findex gdb.WP_ACCESS
d812018b 25635@item gdb.WP_ACCESS
adc36818
PM
25636Read/Write watchpoint.
25637@end table
25638
d812018b 25639@defun Breakpoint.is_valid ()
adc36818
PM
25640Return @code{True} if this @code{Breakpoint} object is valid,
25641@code{False} otherwise. A @code{Breakpoint} object can become invalid
25642if the user deletes the breakpoint. In this case, the object still
25643exists, but the underlying breakpoint does not. In the cases of
25644watchpoint scope, the watchpoint remains valid even if execution of the
25645inferior leaves the scope of that watchpoint.
d812018b 25646@end defun
adc36818 25647
d812018b 25648@defun Breakpoint.delete
94b6973e
PM
25649Permanently deletes the @value{GDBN} breakpoint. This also
25650invalidates the Python @code{Breakpoint} object. Any further access
25651to this object's attributes or methods will raise an error.
d812018b 25652@end defun
94b6973e 25653
d812018b 25654@defvar Breakpoint.enabled
adc36818
PM
25655This attribute is @code{True} if the breakpoint is enabled, and
25656@code{False} otherwise. This attribute is writable.
d812018b 25657@end defvar
adc36818 25658
d812018b 25659@defvar Breakpoint.silent
adc36818
PM
25660This attribute is @code{True} if the breakpoint is silent, and
25661@code{False} otherwise. This attribute is writable.
25662
25663Note that a breakpoint can also be silent if it has commands and the
25664first command is @code{silent}. This is not reported by the
25665@code{silent} attribute.
d812018b 25666@end defvar
adc36818 25667
d812018b 25668@defvar Breakpoint.thread
adc36818
PM
25669If the breakpoint is thread-specific, this attribute holds the thread
25670id. If the breakpoint is not thread-specific, this attribute is
25671@code{None}. This attribute is writable.
d812018b 25672@end defvar
adc36818 25673
d812018b 25674@defvar Breakpoint.task
adc36818
PM
25675If the breakpoint is Ada task-specific, this attribute holds the Ada task
25676id. If the breakpoint is not task-specific (or the underlying
25677language is not Ada), this attribute is @code{None}. This attribute
25678is writable.
d812018b 25679@end defvar
adc36818 25680
d812018b 25681@defvar Breakpoint.ignore_count
adc36818
PM
25682This attribute holds the ignore count for the breakpoint, an integer.
25683This attribute is writable.
d812018b 25684@end defvar
adc36818 25685
d812018b 25686@defvar Breakpoint.number
adc36818
PM
25687This attribute holds the breakpoint's number --- the identifier used by
25688the user to manipulate the breakpoint. This attribute is not writable.
d812018b 25689@end defvar
adc36818 25690
d812018b 25691@defvar Breakpoint.type
adc36818
PM
25692This attribute holds the breakpoint's type --- the identifier used to
25693determine the actual breakpoint type or use-case. This attribute is not
25694writable.
d812018b 25695@end defvar
adc36818 25696
d812018b 25697@defvar Breakpoint.visible
84f4c1fe
PM
25698This attribute tells whether the breakpoint is visible to the user
25699when set, or when the @samp{info breakpoints} command is run. This
25700attribute is not writable.
d812018b 25701@end defvar
84f4c1fe 25702
adc36818
PM
25703The available types are represented by constants defined in the @code{gdb}
25704module:
25705
25706@table @code
25707@findex BP_BREAKPOINT
25708@findex gdb.BP_BREAKPOINT
d812018b 25709@item gdb.BP_BREAKPOINT
adc36818
PM
25710Normal code breakpoint.
25711
25712@findex BP_WATCHPOINT
25713@findex gdb.BP_WATCHPOINT
d812018b 25714@item gdb.BP_WATCHPOINT
adc36818
PM
25715Watchpoint breakpoint.
25716
25717@findex BP_HARDWARE_WATCHPOINT
25718@findex gdb.BP_HARDWARE_WATCHPOINT
d812018b 25719@item gdb.BP_HARDWARE_WATCHPOINT
adc36818
PM
25720Hardware assisted watchpoint.
25721
25722@findex BP_READ_WATCHPOINT
25723@findex gdb.BP_READ_WATCHPOINT
d812018b 25724@item gdb.BP_READ_WATCHPOINT
adc36818
PM
25725Hardware assisted read watchpoint.
25726
25727@findex BP_ACCESS_WATCHPOINT
25728@findex gdb.BP_ACCESS_WATCHPOINT
d812018b 25729@item gdb.BP_ACCESS_WATCHPOINT
adc36818
PM
25730Hardware assisted access watchpoint.
25731@end table
25732
d812018b 25733@defvar Breakpoint.hit_count
adc36818
PM
25734This attribute holds the hit count for the breakpoint, an integer.
25735This attribute is writable, but currently it can only be set to zero.
d812018b 25736@end defvar
adc36818 25737
d812018b 25738@defvar Breakpoint.location
adc36818
PM
25739This attribute holds the location of the breakpoint, as specified by
25740the user. It is a string. If the breakpoint does not have a location
25741(that is, it is a watchpoint) the attribute's value is @code{None}. This
25742attribute is not writable.
d812018b 25743@end defvar
adc36818 25744
d812018b 25745@defvar Breakpoint.expression
adc36818
PM
25746This attribute holds a breakpoint expression, as specified by
25747the user. It is a string. If the breakpoint does not have an
25748expression (the breakpoint is not a watchpoint) the attribute's value
25749is @code{None}. This attribute is not writable.
d812018b 25750@end defvar
adc36818 25751
d812018b 25752@defvar Breakpoint.condition
adc36818
PM
25753This attribute holds the condition of the breakpoint, as specified by
25754the user. It is a string. If there is no condition, this attribute's
25755value is @code{None}. This attribute is writable.
d812018b 25756@end defvar
adc36818 25757
d812018b 25758@defvar Breakpoint.commands
adc36818
PM
25759This attribute holds the commands attached to the breakpoint. If
25760there are commands, this attribute's value is a string holding all the
25761commands, separated by newlines. If there are no commands, this
25762attribute is @code{None}. This attribute is not writable.
d812018b 25763@end defvar
adc36818 25764
cc72b2a2
KP
25765@node Finish Breakpoints in Python
25766@subsubsection Finish Breakpoints
25767
25768@cindex python finish breakpoints
25769@tindex gdb.FinishBreakpoint
25770
25771A finish breakpoint is a temporary breakpoint set at the return address of
25772a frame, based on the @code{finish} command. @code{gdb.FinishBreakpoint}
25773extends @code{gdb.Breakpoint}. The underlying breakpoint will be disabled
25774and deleted when the execution will run out of the breakpoint scope (i.e.@:
25775@code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered).
25776Finish breakpoints are thread specific and must be create with the right
25777thread selected.
25778
25779@defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]})
25780Create a finish breakpoint at the return address of the @code{gdb.Frame}
25781object @var{frame}. If @var{frame} is not provided, this defaults to the
25782newest frame. The optional @var{internal} argument allows the breakpoint to
25783become invisible to the user. @xref{Breakpoints In Python}, for further
25784details about this argument.
25785@end defun
25786
25787@defun FinishBreakpoint.out_of_scope (self)
25788In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN}
25789@code{return} command, @dots{}), a function may not properly terminate, and
25790thus never hit the finish breakpoint. When @value{GDBN} notices such a
25791situation, the @code{out_of_scope} callback will be triggered.
25792
25793You may want to sub-class @code{gdb.FinishBreakpoint} and override this
25794method:
25795
25796@smallexample
25797class MyFinishBreakpoint (gdb.FinishBreakpoint)
25798 def stop (self):
25799 print "normal finish"
25800 return True
25801
25802 def out_of_scope ():
25803 print "abnormal finish"
25804@end smallexample
25805@end defun
25806
25807@defvar FinishBreakpoint.return_value
25808When @value{GDBN} is stopped at a finish breakpoint and the frame
25809used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this
25810attribute will contain a @code{gdb.Value} object corresponding to the return
25811value of the function. The value will be @code{None} if the function return
25812type is @code{void} or if the return value was not computable. This attribute
25813is not writable.
25814@end defvar
25815
be759fcf
PM
25816@node Lazy Strings In Python
25817@subsubsection Python representation of lazy strings.
25818
25819@cindex lazy strings in python
25820@tindex gdb.LazyString
25821
25822A @dfn{lazy string} is a string whose contents is not retrieved or
25823encoded until it is needed.
25824
25825A @code{gdb.LazyString} is represented in @value{GDBN} as an
25826@code{address} that points to a region of memory, an @code{encoding}
25827that will be used to encode that region of memory, and a @code{length}
25828to delimit the region of memory that represents the string. The
25829difference between a @code{gdb.LazyString} and a string wrapped within
25830a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated
25831differently by @value{GDBN} when printing. A @code{gdb.LazyString} is
25832retrieved and encoded during printing, while a @code{gdb.Value}
25833wrapping a string is immediately retrieved and encoded on creation.
25834
25835A @code{gdb.LazyString} object has the following functions:
25836
d812018b 25837@defun LazyString.value ()
be759fcf
PM
25838Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value
25839will point to the string in memory, but will lose all the delayed
25840retrieval, encoding and handling that @value{GDBN} applies to a
25841@code{gdb.LazyString}.
d812018b 25842@end defun
be759fcf 25843
d812018b 25844@defvar LazyString.address
be759fcf
PM
25845This attribute holds the address of the string. This attribute is not
25846writable.
d812018b 25847@end defvar
be759fcf 25848
d812018b 25849@defvar LazyString.length
be759fcf
PM
25850This attribute holds the length of the string in characters. If the
25851length is -1, then the string will be fetched and encoded up to the
25852first null of appropriate width. This attribute is not writable.
d812018b 25853@end defvar
be759fcf 25854
d812018b 25855@defvar LazyString.encoding
be759fcf
PM
25856This attribute holds the encoding that will be applied to the string
25857when the string is printed by @value{GDBN}. If the encoding is not
25858set, or contains an empty string, then @value{GDBN} will select the
25859most appropriate encoding when the string is printed. This attribute
25860is not writable.
d812018b 25861@end defvar
be759fcf 25862
d812018b 25863@defvar LazyString.type
be759fcf
PM
25864This attribute holds the type that is represented by the lazy string's
25865type. For a lazy string this will always be a pointer type. To
25866resolve this to the lazy string's character type, use the type's
25867@code{target} method. @xref{Types In Python}. This attribute is not
25868writable.
d812018b 25869@end defvar
be759fcf 25870
bf88dd68
JK
25871@node Python Auto-loading
25872@subsection Python Auto-loading
25873@cindex Python auto-loading
8a1ea21f
DE
25874
25875When a new object file is read (for example, due to the @code{file}
25876command, or because the inferior has loaded a shared library),
25877@value{GDBN} will look for Python support scripts in several ways:
3708f05e
JK
25878@file{@var{objfile}-gdb.py} (@pxref{objfile-gdb.py file})
25879and @code{.debug_gdb_scripts} section
25880(@pxref{dotdebug_gdb_scripts section}).
8a1ea21f
DE
25881
25882The auto-loading feature is useful for supplying application-specific
25883debugging commands and scripts.
25884
dbaefcf7
DE
25885Auto-loading can be enabled or disabled,
25886and the list of auto-loaded scripts can be printed.
8a1ea21f
DE
25887
25888@table @code
bf88dd68
JK
25889@anchor{set auto-load python-scripts}
25890@kindex set auto-load python-scripts
25891@item set auto-load python-scripts [on|off]
a86caf66 25892Enable or disable the auto-loading of Python scripts.
8a1ea21f 25893
bf88dd68
JK
25894@anchor{show auto-load python-scripts}
25895@kindex show auto-load python-scripts
25896@item show auto-load python-scripts
a86caf66 25897Show whether auto-loading of Python scripts is enabled or disabled.
dbaefcf7 25898
bf88dd68
JK
25899@anchor{info auto-load python-scripts}
25900@kindex info auto-load python-scripts
25901@cindex print list of auto-loaded Python scripts
25902@item info auto-load python-scripts [@var{regexp}]
25903Print the list of all Python scripts that @value{GDBN} auto-loaded.
75fc9810 25904
bf88dd68 25905Also printed is the list of Python scripts that were mentioned in
75fc9810 25906the @code{.debug_gdb_scripts} section and were not found
8e0583c8 25907(@pxref{dotdebug_gdb_scripts section}).
75fc9810
DE
25908This is useful because their names are not printed when @value{GDBN}
25909tries to load them and fails. There may be many of them, and printing
25910an error message for each one is problematic.
25911
bf88dd68 25912If @var{regexp} is supplied only Python scripts with matching names are printed.
dbaefcf7 25913
75fc9810
DE
25914Example:
25915
dbaefcf7 25916@smallexample
bf88dd68 25917(gdb) info auto-load python-scripts
bccbefd2
JK
25918Loaded Script
25919Yes py-section-script.py
25920 full name: /tmp/py-section-script.py
25921No my-foo-pretty-printers.py
dbaefcf7 25922@end smallexample
8a1ea21f
DE
25923@end table
25924
25925When reading an auto-loaded file, @value{GDBN} sets the
25926@dfn{current objfile}. This is available via the @code{gdb.current_objfile}
25927function (@pxref{Objfiles In Python}). This can be useful for
25928registering objfile-specific pretty-printers.
25929
3708f05e
JK
25930@menu
25931* objfile-gdb.py file:: The @file{@var{objfile}-gdb.py} file
25932* dotdebug_gdb_scripts section:: The @code{.debug_gdb_scripts} section
25933* Which flavor to choose?::
25934@end menu
25935
8a1ea21f
DE
25936@node objfile-gdb.py file
25937@subsubsection The @file{@var{objfile}-gdb.py} file
25938@cindex @file{@var{objfile}-gdb.py}
25939
25940When a new object file is read, @value{GDBN} looks for
7349ff92 25941a file named @file{@var{objfile}-gdb.py} (we call it @var{script-name} below),
8a1ea21f
DE
25942where @var{objfile} is the object file's real name, formed by ensuring
25943that the file name is absolute, following all symlinks, and resolving
25944@code{.} and @code{..} components. If this file exists and is
25945readable, @value{GDBN} will evaluate it as a Python script.
25946
1564a261 25947If this file does not exist, then @value{GDBN} will look for
c1668e4e
JK
25948@var{script-name} file in all of the directories as specified below.
25949
25950Note that loading of this script file also requires accordingly configured
25951@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
7349ff92 25952
e9687799
JK
25953For object files using @file{.exe} suffix @value{GDBN} tries to load first the
25954scripts normally according to its @file{.exe} filename. But if no scripts are
25955found @value{GDBN} also tries script filenames matching the object file without
25956its @file{.exe} suffix. This @file{.exe} stripping is case insensitive and it
25957is attempted on any platform. This makes the script filenames compatible
25958between Unix and MS-Windows hosts.
25959
7349ff92
JK
25960@table @code
25961@anchor{set auto-load scripts-directory}
25962@kindex set auto-load scripts-directory
25963@item set auto-load scripts-directory @r{[}@var{directories}@r{]}
25964Control @value{GDBN} auto-loaded scripts location. Multiple directory entries
25965may be delimited by the host platform path separator in use
25966(@samp{:} on Unix, @samp{;} on MS-Windows and MS-DOS).
25967
25968Each entry here needs to be covered also by the security setting
25969@code{set auto-load safe-path} (@pxref{set auto-load safe-path}).
25970
25971@anchor{with-auto-load-dir}
1564a261
JK
25972This variable defaults to @file{$debugdir:$datadir/auto-load}. The default
25973@code{set auto-load safe-path} value can be also overriden by @value{GDBN}
25974configuration option @option{--with-auto-load-dir}.
25975
25976Any reference to @file{$debugdir} will get replaced by
25977@var{debug-file-directory} value (@pxref{Separate Debug Files}) and any
25978reference to @file{$datadir} will get replaced by @var{data-directory} which is
25979determined at @value{GDBN} startup (@pxref{Data Files}). @file{$debugdir} and
25980@file{$datadir} must be placed as a directory component --- either alone or
25981delimited by @file{/} or @file{\} directory separators, depending on the host
25982platform.
7349ff92
JK
25983
25984The list of directories uses path separator (@samp{:} on GNU and Unix
25985systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly
25986to the @env{PATH} environment variable.
25987
25988@anchor{show auto-load scripts-directory}
25989@kindex show auto-load scripts-directory
25990@item show auto-load scripts-directory
25991Show @value{GDBN} auto-loaded scripts location.
25992@end table
8a1ea21f
DE
25993
25994@value{GDBN} does not track which files it has already auto-loaded this way.
25995@value{GDBN} will load the associated script every time the corresponding
25996@var{objfile} is opened.
25997So your @file{-gdb.py} file should be careful to avoid errors if it
25998is evaluated more than once.
25999
8e0583c8 26000@node dotdebug_gdb_scripts section
8a1ea21f
DE
26001@subsubsection The @code{.debug_gdb_scripts} section
26002@cindex @code{.debug_gdb_scripts} section
26003
26004For systems using file formats like ELF and COFF,
26005when @value{GDBN} loads a new object file
26006it will look for a special section named @samp{.debug_gdb_scripts}.
26007If this section exists, its contents is a list of names of scripts to load.
26008
26009@value{GDBN} will look for each specified script file first in the
26010current directory and then along the source search path
26011(@pxref{Source Path, ,Specifying Source Directories}),
26012except that @file{$cdir} is not searched, since the compilation
26013directory is not relevant to scripts.
26014
26015Entries can be placed in section @code{.debug_gdb_scripts} with,
26016for example, this GCC macro:
26017
26018@example
a3a7127e 26019/* Note: The "MS" section flags are to remove duplicates. */
8a1ea21f
DE
26020#define DEFINE_GDB_SCRIPT(script_name) \
26021 asm("\
26022.pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\
26023.byte 1\n\
26024.asciz \"" script_name "\"\n\
26025.popsection \n\
26026");
26027@end example
26028
26029@noindent
26030Then one can reference the macro in a header or source file like this:
26031
26032@example
26033DEFINE_GDB_SCRIPT ("my-app-scripts.py")
26034@end example
26035
26036The script name may include directories if desired.
26037
c1668e4e
JK
26038Note that loading of this script file also requires accordingly configured
26039@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
26040
8a1ea21f
DE
26041If the macro is put in a header, any application or library
26042using this header will get a reference to the specified script.
26043
26044@node Which flavor to choose?
26045@subsubsection Which flavor to choose?
26046
26047Given the multiple ways of auto-loading Python scripts, it might not always
26048be clear which one to choose. This section provides some guidance.
26049
26050Benefits of the @file{-gdb.py} way:
26051
26052@itemize @bullet
26053@item
26054Can be used with file formats that don't support multiple sections.
26055
26056@item
26057Ease of finding scripts for public libraries.
26058
26059Scripts specified in the @code{.debug_gdb_scripts} section are searched for
26060in the source search path.
26061For publicly installed libraries, e.g., @file{libstdc++}, there typically
26062isn't a source directory in which to find the script.
26063
26064@item
26065Doesn't require source code additions.
26066@end itemize
26067
26068Benefits of the @code{.debug_gdb_scripts} way:
26069
26070@itemize @bullet
26071@item
26072Works with static linking.
26073
26074Scripts for libraries done the @file{-gdb.py} way require an objfile to
26075trigger their loading. When an application is statically linked the only
26076objfile available is the executable, and it is cumbersome to attach all the
26077scripts from all the input libraries to the executable's @file{-gdb.py} script.
26078
26079@item
26080Works with classes that are entirely inlined.
26081
26082Some classes can be entirely inlined, and thus there may not be an associated
26083shared library to attach a @file{-gdb.py} script to.
26084
26085@item
26086Scripts needn't be copied out of the source tree.
26087
26088In some circumstances, apps can be built out of large collections of internal
26089libraries, and the build infrastructure necessary to install the
26090@file{-gdb.py} scripts in a place where @value{GDBN} can find them is
26091cumbersome. It may be easier to specify the scripts in the
26092@code{.debug_gdb_scripts} section as relative paths, and add a path to the
26093top of the source tree to the source search path.
26094@end itemize
26095
0e3509db
DE
26096@node Python modules
26097@subsection Python modules
26098@cindex python modules
26099
fa3a4f15 26100@value{GDBN} comes with several modules to assist writing Python code.
0e3509db
DE
26101
26102@menu
7b51bc51 26103* gdb.printing:: Building and registering pretty-printers.
0e3509db 26104* gdb.types:: Utilities for working with types.
fa3a4f15 26105* gdb.prompt:: Utilities for prompt value substitution.
0e3509db
DE
26106@end menu
26107
7b51bc51
DE
26108@node gdb.printing
26109@subsubsection gdb.printing
26110@cindex gdb.printing
26111
26112This module provides a collection of utilities for working with
26113pretty-printers.
26114
26115@table @code
26116@item PrettyPrinter (@var{name}, @var{subprinters}=None)
26117This class specifies the API that makes @samp{info pretty-printer},
26118@samp{enable pretty-printer} and @samp{disable pretty-printer} work.
26119Pretty-printers should generally inherit from this class.
26120
26121@item SubPrettyPrinter (@var{name})
26122For printers that handle multiple types, this class specifies the
26123corresponding API for the subprinters.
26124
26125@item RegexpCollectionPrettyPrinter (@var{name})
26126Utility class for handling multiple printers, all recognized via
26127regular expressions.
26128@xref{Writing a Pretty-Printer}, for an example.
26129
cafec441
TT
26130@item FlagEnumerationPrinter (@var{name})
26131A pretty-printer which handles printing of @code{enum} values. Unlike
26132@value{GDBN}'s built-in @code{enum} printing, this printer attempts to
26133work properly when there is some overlap between the enumeration
26134constants. @var{name} is the name of the printer and also the name of
26135the @code{enum} type to look up.
26136
9c15afc4 26137@item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False)
7b51bc51 26138Register @var{printer} with the pretty-printer list of @var{obj}.
9c15afc4
DE
26139If @var{replace} is @code{True} then any existing copy of the printer
26140is replaced. Otherwise a @code{RuntimeError} exception is raised
26141if a printer with the same name already exists.
7b51bc51
DE
26142@end table
26143
0e3509db
DE
26144@node gdb.types
26145@subsubsection gdb.types
7b51bc51 26146@cindex gdb.types
0e3509db
DE
26147
26148This module provides a collection of utilities for working with
18a9fc12 26149@code{gdb.Type} objects.
0e3509db
DE
26150
26151@table @code
26152@item get_basic_type (@var{type})
26153Return @var{type} with const and volatile qualifiers stripped,
26154and with typedefs and C@t{++} references converted to the underlying type.
26155
26156C@t{++} example:
26157
26158@smallexample
26159typedef const int const_int;
26160const_int foo (3);
26161const_int& foo_ref (foo);
26162int main () @{ return 0; @}
26163@end smallexample
26164
26165Then in gdb:
26166
26167@smallexample
26168(gdb) start
26169(gdb) python import gdb.types
26170(gdb) python foo_ref = gdb.parse_and_eval("foo_ref")
26171(gdb) python print gdb.types.get_basic_type(foo_ref.type)
26172int
26173@end smallexample
26174
26175@item has_field (@var{type}, @var{field})
26176Return @code{True} if @var{type}, assumed to be a type with fields
26177(e.g., a structure or union), has field @var{field}.
26178
26179@item make_enum_dict (@var{enum_type})
26180Return a Python @code{dictionary} type produced from @var{enum_type}.
5110b5df 26181
0aaaf063 26182@item deep_items (@var{type})
5110b5df
PK
26183Returns a Python iterator similar to the standard
26184@code{gdb.Type.iteritems} method, except that the iterator returned
0aaaf063 26185by @code{deep_items} will recursively traverse anonymous struct or
5110b5df
PK
26186union fields. For example:
26187
26188@smallexample
26189struct A
26190@{
26191 int a;
26192 union @{
26193 int b0;
26194 int b1;
26195 @};
26196@};
26197@end smallexample
26198
26199@noindent
26200Then in @value{GDBN}:
26201@smallexample
26202(@value{GDBP}) python import gdb.types
26203(@value{GDBP}) python struct_a = gdb.lookup_type("struct A")
26204(@value{GDBP}) python print struct_a.keys ()
26205@{['a', '']@}
0aaaf063 26206(@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)]
5110b5df
PK
26207@{['a', 'b0', 'b1']@}
26208@end smallexample
26209
18a9fc12
TT
26210@item get_type_recognizers ()
26211Return a list of the enabled type recognizers for the current context.
26212This is called by @value{GDBN} during the type-printing process
26213(@pxref{Type Printing API}).
26214
26215@item apply_type_recognizers (recognizers, type_obj)
26216Apply the type recognizers, @var{recognizers}, to the type object
26217@var{type_obj}. If any recognizer returns a string, return that
26218string. Otherwise, return @code{None}. This is called by
26219@value{GDBN} during the type-printing process (@pxref{Type Printing
26220API}).
26221
26222@item register_type_printer (locus, printer)
26223This is a convenience function to register a type printer.
26224@var{printer} is the type printer to register. It must implement the
26225type printer protocol. @var{locus} is either a @code{gdb.Objfile}, in
26226which case the printer is registered with that objfile; a
26227@code{gdb.Progspace}, in which case the printer is registered with
26228that progspace; or @code{None}, in which case the printer is
26229registered globally.
26230
26231@item TypePrinter
26232This is a base class that implements the type printer protocol. Type
26233printers are encouraged, but not required, to derive from this class.
26234It defines a constructor:
26235
26236@defmethod TypePrinter __init__ (self, name)
26237Initialize the type printer with the given name. The new printer
26238starts in the enabled state.
26239@end defmethod
26240
0e3509db 26241@end table
fa3a4f15
PM
26242
26243@node gdb.prompt
26244@subsubsection gdb.prompt
26245@cindex gdb.prompt
26246
26247This module provides a method for prompt value-substitution.
26248
26249@table @code
26250@item substitute_prompt (@var{string})
26251Return @var{string} with escape sequences substituted by values. Some
26252escape sequences take arguments. You can specify arguments inside
26253``@{@}'' immediately following the escape sequence.
26254
26255The escape sequences you can pass to this function are:
26256
26257@table @code
26258@item \\
26259Substitute a backslash.
26260@item \e
26261Substitute an ESC character.
26262@item \f
26263Substitute the selected frame; an argument names a frame parameter.
26264@item \n
26265Substitute a newline.
26266@item \p
26267Substitute a parameter's value; the argument names the parameter.
26268@item \r
26269Substitute a carriage return.
26270@item \t
26271Substitute the selected thread; an argument names a thread parameter.
26272@item \v
26273Substitute the version of GDB.
26274@item \w
26275Substitute the current working directory.
26276@item \[
26277Begin a sequence of non-printing characters. These sequences are
26278typically used with the ESC character, and are not counted in the string
26279length. Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a
26280blue-colored ``(gdb)'' prompt where the length is five.
26281@item \]
26282End a sequence of non-printing characters.
26283@end table
26284
26285For example:
26286
26287@smallexample
26288substitute_prompt (``frame: \f,
26289 print arguments: \p@{print frame-arguments@}'')
26290@end smallexample
26291
26292@exdent will return the string:
26293
26294@smallexample
26295"frame: main, print arguments: scalars"
26296@end smallexample
26297@end table
0e3509db 26298
5a56e9c5
DE
26299@node Aliases
26300@section Creating new spellings of existing commands
26301@cindex aliases for commands
26302
26303It is often useful to define alternate spellings of existing commands.
26304For example, if a new @value{GDBN} command defined in Python has
26305a long name to type, it is handy to have an abbreviated version of it
26306that involves less typing.
26307
26308@value{GDBN} itself uses aliases. For example @samp{s} is an alias
26309of the @samp{step} command even though it is otherwise an ambiguous
26310abbreviation of other commands like @samp{set} and @samp{show}.
26311
26312Aliases are also used to provide shortened or more common versions
26313of multi-word commands. For example, @value{GDBN} provides the
26314@samp{tty} alias of the @samp{set inferior-tty} command.
26315
26316You can define a new alias with the @samp{alias} command.
26317
26318@table @code
26319
26320@kindex alias
26321@item alias [-a] [--] @var{ALIAS} = @var{COMMAND}
26322
26323@end table
26324
26325@var{ALIAS} specifies the name of the new alias.
26326Each word of @var{ALIAS} must consist of letters, numbers, dashes and
26327underscores.
26328
26329@var{COMMAND} specifies the name of an existing command
26330that is being aliased.
26331
26332The @samp{-a} option specifies that the new alias is an abbreviation
26333of the command. Abbreviations are not shown in command
26334lists displayed by the @samp{help} command.
26335
26336The @samp{--} option specifies the end of options,
26337and is useful when @var{ALIAS} begins with a dash.
26338
26339Here is a simple example showing how to make an abbreviation
26340of a command so that there is less to type.
26341Suppose you were tired of typing @samp{disas}, the current
26342shortest unambiguous abbreviation of the @samp{disassemble} command
26343and you wanted an even shorter version named @samp{di}.
26344The following will accomplish this.
26345
26346@smallexample
26347(gdb) alias -a di = disas
26348@end smallexample
26349
26350Note that aliases are different from user-defined commands.
26351With a user-defined command, you also need to write documentation
26352for it with the @samp{document} command.
26353An alias automatically picks up the documentation of the existing command.
26354
26355Here is an example where we make @samp{elms} an abbreviation of
26356@samp{elements} in the @samp{set print elements} command.
26357This is to show that you can make an abbreviation of any part
26358of a command.
26359
26360@smallexample
26361(gdb) alias -a set print elms = set print elements
26362(gdb) alias -a show print elms = show print elements
26363(gdb) set p elms 20
26364(gdb) show p elms
26365Limit on string chars or array elements to print is 200.
26366@end smallexample
26367
26368Note that if you are defining an alias of a @samp{set} command,
26369and you want to have an alias for the corresponding @samp{show}
26370command, then you need to define the latter separately.
26371
26372Unambiguously abbreviated commands are allowed in @var{COMMAND} and
26373@var{ALIAS}, just as they are normally.
26374
26375@smallexample
26376(gdb) alias -a set pr elms = set p ele
26377@end smallexample
26378
26379Finally, here is an example showing the creation of a one word
26380alias for a more complex command.
26381This creates alias @samp{spe} of the command @samp{set print elements}.
26382
26383@smallexample
26384(gdb) alias spe = set print elements
26385(gdb) spe 20
26386@end smallexample
26387
21c294e6
AC
26388@node Interpreters
26389@chapter Command Interpreters
26390@cindex command interpreters
26391
26392@value{GDBN} supports multiple command interpreters, and some command
26393infrastructure to allow users or user interface writers to switch
26394between interpreters or run commands in other interpreters.
26395
26396@value{GDBN} currently supports two command interpreters, the console
26397interpreter (sometimes called the command-line interpreter or @sc{cli})
26398and the machine interface interpreter (or @sc{gdb/mi}). This manual
26399describes both of these interfaces in great detail.
26400
26401By default, @value{GDBN} will start with the console interpreter.
26402However, the user may choose to start @value{GDBN} with another
26403interpreter by specifying the @option{-i} or @option{--interpreter}
26404startup options. Defined interpreters include:
26405
26406@table @code
26407@item console
26408@cindex console interpreter
26409The traditional console or command-line interpreter. This is the most often
26410used interpreter with @value{GDBN}. With no interpreter specified at runtime,
26411@value{GDBN} will use this interpreter.
26412
26413@item mi
26414@cindex mi interpreter
26415The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
26416by programs wishing to use @value{GDBN} as a backend for a debugger GUI
26417or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
26418Interface}.
26419
26420@item mi2
26421@cindex mi2 interpreter
26422The current @sc{gdb/mi} interface.
26423
26424@item mi1
26425@cindex mi1 interpreter
26426The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
26427
26428@end table
26429
26430@cindex invoke another interpreter
26431The interpreter being used by @value{GDBN} may not be dynamically
26432switched at runtime. Although possible, this could lead to a very
26433precarious situation. Consider an IDE using @sc{gdb/mi}. If a user
26434enters the command "interpreter-set console" in a console view,
26435@value{GDBN} would switch to using the console interpreter, rendering
26436the IDE inoperable!
26437
26438@kindex interpreter-exec
26439Although you may only choose a single interpreter at startup, you may execute
26440commands in any interpreter from the current interpreter using the appropriate
26441command. If you are running the console interpreter, simply use the
26442@code{interpreter-exec} command:
26443
26444@smallexample
26445interpreter-exec mi "-data-list-register-names"
26446@end smallexample
26447
26448@sc{gdb/mi} has a similar command, although it is only available in versions of
26449@value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
26450
8e04817f
AC
26451@node TUI
26452@chapter @value{GDBN} Text User Interface
26453@cindex TUI
d0d5df6f 26454@cindex Text User Interface
c906108c 26455
8e04817f
AC
26456@menu
26457* TUI Overview:: TUI overview
26458* TUI Keys:: TUI key bindings
7cf36c78 26459* TUI Single Key Mode:: TUI single key mode
db2e3e2e 26460* TUI Commands:: TUI-specific commands
8e04817f
AC
26461* TUI Configuration:: TUI configuration variables
26462@end menu
c906108c 26463
46ba6afa 26464The @value{GDBN} Text User Interface (TUI) is a terminal
d0d5df6f
AC
26465interface which uses the @code{curses} library to show the source
26466file, the assembly output, the program registers and @value{GDBN}
46ba6afa
BW
26467commands in separate text windows. The TUI mode is supported only
26468on platforms where a suitable version of the @code{curses} library
26469is available.
d0d5df6f 26470
46ba6afa 26471The TUI mode is enabled by default when you invoke @value{GDBN} as
217bff3e 26472@samp{@value{GDBP} -tui}.
46ba6afa
BW
26473You can also switch in and out of TUI mode while @value{GDBN} runs by
26474using various TUI commands and key bindings, such as @kbd{C-x C-a}.
26475@xref{TUI Keys, ,TUI Key Bindings}.
c906108c 26476
8e04817f 26477@node TUI Overview
79a6e687 26478@section TUI Overview
c906108c 26479
46ba6afa 26480In TUI mode, @value{GDBN} can display several text windows:
c906108c 26481
8e04817f
AC
26482@table @emph
26483@item command
26484This window is the @value{GDBN} command window with the @value{GDBN}
46ba6afa
BW
26485prompt and the @value{GDBN} output. The @value{GDBN} input is still
26486managed using readline.
c906108c 26487
8e04817f
AC
26488@item source
26489The source window shows the source file of the program. The current
46ba6afa 26490line and active breakpoints are displayed in this window.
c906108c 26491
8e04817f
AC
26492@item assembly
26493The assembly window shows the disassembly output of the program.
c906108c 26494
8e04817f 26495@item register
46ba6afa
BW
26496This window shows the processor registers. Registers are highlighted
26497when their values change.
c906108c
SS
26498@end table
26499
269c21fe 26500The source and assembly windows show the current program position
46ba6afa
BW
26501by highlighting the current line and marking it with a @samp{>} marker.
26502Breakpoints are indicated with two markers. The first marker
269c21fe
SC
26503indicates the breakpoint type:
26504
26505@table @code
26506@item B
26507Breakpoint which was hit at least once.
26508
26509@item b
26510Breakpoint which was never hit.
26511
26512@item H
26513Hardware breakpoint which was hit at least once.
26514
26515@item h
26516Hardware breakpoint which was never hit.
269c21fe
SC
26517@end table
26518
26519The second marker indicates whether the breakpoint is enabled or not:
26520
26521@table @code
26522@item +
26523Breakpoint is enabled.
26524
26525@item -
26526Breakpoint is disabled.
269c21fe
SC
26527@end table
26528
46ba6afa
BW
26529The source, assembly and register windows are updated when the current
26530thread changes, when the frame changes, or when the program counter
26531changes.
26532
26533These windows are not all visible at the same time. The command
26534window is always visible. The others can be arranged in several
26535layouts:
c906108c 26536
8e04817f
AC
26537@itemize @bullet
26538@item
46ba6afa 26539source only,
2df3850c 26540
8e04817f 26541@item
46ba6afa 26542assembly only,
8e04817f
AC
26543
26544@item
46ba6afa 26545source and assembly,
8e04817f
AC
26546
26547@item
46ba6afa 26548source and registers, or
c906108c 26549
8e04817f 26550@item
46ba6afa 26551assembly and registers.
8e04817f 26552@end itemize
c906108c 26553
46ba6afa 26554A status line above the command window shows the following information:
b7bb15bc
SC
26555
26556@table @emph
26557@item target
46ba6afa 26558Indicates the current @value{GDBN} target.
b7bb15bc
SC
26559(@pxref{Targets, ,Specifying a Debugging Target}).
26560
26561@item process
46ba6afa 26562Gives the current process or thread number.
b7bb15bc
SC
26563When no process is being debugged, this field is set to @code{No process}.
26564
26565@item function
26566Gives the current function name for the selected frame.
26567The name is demangled if demangling is turned on (@pxref{Print Settings}).
46ba6afa 26568When there is no symbol corresponding to the current program counter,
b7bb15bc
SC
26569the string @code{??} is displayed.
26570
26571@item line
26572Indicates the current line number for the selected frame.
46ba6afa 26573When the current line number is not known, the string @code{??} is displayed.
b7bb15bc
SC
26574
26575@item pc
26576Indicates the current program counter address.
b7bb15bc
SC
26577@end table
26578
8e04817f
AC
26579@node TUI Keys
26580@section TUI Key Bindings
26581@cindex TUI key bindings
c906108c 26582
8e04817f 26583The TUI installs several key bindings in the readline keymaps
39037522
TT
26584@ifset SYSTEM_READLINE
26585(@pxref{Command Line Editing, , , rluserman, GNU Readline Library}).
26586@end ifset
26587@ifclear SYSTEM_READLINE
26588(@pxref{Command Line Editing}).
26589@end ifclear
26590The following key bindings are installed for both TUI mode and the
26591@value{GDBN} standard mode.
c906108c 26592
8e04817f
AC
26593@table @kbd
26594@kindex C-x C-a
26595@item C-x C-a
26596@kindex C-x a
26597@itemx C-x a
26598@kindex C-x A
26599@itemx C-x A
46ba6afa
BW
26600Enter or leave the TUI mode. When leaving the TUI mode,
26601the curses window management stops and @value{GDBN} operates using
26602its standard mode, writing on the terminal directly. When reentering
26603the TUI mode, control is given back to the curses windows.
8e04817f 26604The screen is then refreshed.
c906108c 26605
8e04817f
AC
26606@kindex C-x 1
26607@item C-x 1
26608Use a TUI layout with only one window. The layout will
26609either be @samp{source} or @samp{assembly}. When the TUI mode
26610is not active, it will switch to the TUI mode.
2df3850c 26611
8e04817f 26612Think of this key binding as the Emacs @kbd{C-x 1} binding.
c906108c 26613
8e04817f
AC
26614@kindex C-x 2
26615@item C-x 2
26616Use a TUI layout with at least two windows. When the current
46ba6afa 26617layout already has two windows, the next layout with two windows is used.
8e04817f
AC
26618When a new layout is chosen, one window will always be common to the
26619previous layout and the new one.
c906108c 26620
8e04817f 26621Think of it as the Emacs @kbd{C-x 2} binding.
2df3850c 26622
72ffddc9
SC
26623@kindex C-x o
26624@item C-x o
26625Change the active window. The TUI associates several key bindings
46ba6afa 26626(like scrolling and arrow keys) with the active window. This command
72ffddc9
SC
26627gives the focus to the next TUI window.
26628
26629Think of it as the Emacs @kbd{C-x o} binding.
26630
7cf36c78
SC
26631@kindex C-x s
26632@item C-x s
46ba6afa
BW
26633Switch in and out of the TUI SingleKey mode that binds single
26634keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}).
c906108c
SS
26635@end table
26636
46ba6afa 26637The following key bindings only work in the TUI mode:
5d161b24 26638
46ba6afa 26639@table @asis
8e04817f 26640@kindex PgUp
46ba6afa 26641@item @key{PgUp}
8e04817f 26642Scroll the active window one page up.
c906108c 26643
8e04817f 26644@kindex PgDn
46ba6afa 26645@item @key{PgDn}
8e04817f 26646Scroll the active window one page down.
c906108c 26647
8e04817f 26648@kindex Up
46ba6afa 26649@item @key{Up}
8e04817f 26650Scroll the active window one line up.
c906108c 26651
8e04817f 26652@kindex Down
46ba6afa 26653@item @key{Down}
8e04817f 26654Scroll the active window one line down.
c906108c 26655
8e04817f 26656@kindex Left
46ba6afa 26657@item @key{Left}
8e04817f 26658Scroll the active window one column left.
c906108c 26659
8e04817f 26660@kindex Right
46ba6afa 26661@item @key{Right}
8e04817f 26662Scroll the active window one column right.
c906108c 26663
8e04817f 26664@kindex C-L
46ba6afa 26665@item @kbd{C-L}
8e04817f 26666Refresh the screen.
8e04817f 26667@end table
c906108c 26668
46ba6afa
BW
26669Because the arrow keys scroll the active window in the TUI mode, they
26670are not available for their normal use by readline unless the command
26671window has the focus. When another window is active, you must use
26672other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b}
26673and @kbd{C-f} to control the command window.
8e04817f 26674
7cf36c78
SC
26675@node TUI Single Key Mode
26676@section TUI Single Key Mode
26677@cindex TUI single key mode
26678
46ba6afa
BW
26679The TUI also provides a @dfn{SingleKey} mode, which binds several
26680frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to
26681switch into this mode, where the following key bindings are used:
7cf36c78
SC
26682
26683@table @kbd
26684@kindex c @r{(SingleKey TUI key)}
26685@item c
26686continue
26687
26688@kindex d @r{(SingleKey TUI key)}
26689@item d
26690down
26691
26692@kindex f @r{(SingleKey TUI key)}
26693@item f
26694finish
26695
26696@kindex n @r{(SingleKey TUI key)}
26697@item n
26698next
26699
26700@kindex q @r{(SingleKey TUI key)}
26701@item q
46ba6afa 26702exit the SingleKey mode.
7cf36c78
SC
26703
26704@kindex r @r{(SingleKey TUI key)}
26705@item r
26706run
26707
26708@kindex s @r{(SingleKey TUI key)}
26709@item s
26710step
26711
26712@kindex u @r{(SingleKey TUI key)}
26713@item u
26714up
26715
26716@kindex v @r{(SingleKey TUI key)}
26717@item v
26718info locals
26719
26720@kindex w @r{(SingleKey TUI key)}
26721@item w
26722where
7cf36c78
SC
26723@end table
26724
26725Other keys temporarily switch to the @value{GDBN} command prompt.
26726The key that was pressed is inserted in the editing buffer so that
26727it is possible to type most @value{GDBN} commands without interaction
46ba6afa
BW
26728with the TUI SingleKey mode. Once the command is entered the TUI
26729SingleKey mode is restored. The only way to permanently leave
7f9087cb 26730this mode is by typing @kbd{q} or @kbd{C-x s}.
7cf36c78
SC
26731
26732
8e04817f 26733@node TUI Commands
db2e3e2e 26734@section TUI-specific Commands
8e04817f
AC
26735@cindex TUI commands
26736
26737The TUI has specific commands to control the text windows.
46ba6afa
BW
26738These commands are always available, even when @value{GDBN} is not in
26739the TUI mode. When @value{GDBN} is in the standard mode, most
26740of these commands will automatically switch to the TUI mode.
c906108c 26741
ff12863f
PA
26742Note that if @value{GDBN}'s @code{stdout} is not connected to a
26743terminal, or @value{GDBN} has been started with the machine interface
26744interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of
26745these commands will fail with an error, because it would not be
26746possible or desirable to enable curses window management.
26747
c906108c 26748@table @code
3d757584
SC
26749@item info win
26750@kindex info win
26751List and give the size of all displayed windows.
26752
8e04817f 26753@item layout next
4644b6e3 26754@kindex layout
8e04817f 26755Display the next layout.
2df3850c 26756
8e04817f 26757@item layout prev
8e04817f 26758Display the previous layout.
c906108c 26759
8e04817f 26760@item layout src
8e04817f 26761Display the source window only.
c906108c 26762
8e04817f 26763@item layout asm
8e04817f 26764Display the assembly window only.
c906108c 26765
8e04817f 26766@item layout split
8e04817f 26767Display the source and assembly window.
c906108c 26768
8e04817f 26769@item layout regs
8e04817f
AC
26770Display the register window together with the source or assembly window.
26771
46ba6afa 26772@item focus next
8e04817f 26773@kindex focus
46ba6afa
BW
26774Make the next window active for scrolling.
26775
26776@item focus prev
26777Make the previous window active for scrolling.
26778
26779@item focus src
26780Make the source window active for scrolling.
26781
26782@item focus asm
26783Make the assembly window active for scrolling.
26784
26785@item focus regs
26786Make the register window active for scrolling.
26787
26788@item focus cmd
26789Make the command window active for scrolling.
c906108c 26790
8e04817f
AC
26791@item refresh
26792@kindex refresh
7f9087cb 26793Refresh the screen. This is similar to typing @kbd{C-L}.
c906108c 26794
6a1b180d
SC
26795@item tui reg float
26796@kindex tui reg
26797Show the floating point registers in the register window.
26798
26799@item tui reg general
26800Show the general registers in the register window.
26801
26802@item tui reg next
26803Show the next register group. The list of register groups as well as
26804their order is target specific. The predefined register groups are the
26805following: @code{general}, @code{float}, @code{system}, @code{vector},
26806@code{all}, @code{save}, @code{restore}.
26807
26808@item tui reg system
26809Show the system registers in the register window.
26810
8e04817f
AC
26811@item update
26812@kindex update
26813Update the source window and the current execution point.
c906108c 26814
8e04817f
AC
26815@item winheight @var{name} +@var{count}
26816@itemx winheight @var{name} -@var{count}
26817@kindex winheight
26818Change the height of the window @var{name} by @var{count}
26819lines. Positive counts increase the height, while negative counts
26820decrease it.
2df3850c 26821
46ba6afa
BW
26822@item tabset @var{nchars}
26823@kindex tabset
c45da7e6 26824Set the width of tab stops to be @var{nchars} characters.
c906108c
SS
26825@end table
26826
8e04817f 26827@node TUI Configuration
79a6e687 26828@section TUI Configuration Variables
8e04817f 26829@cindex TUI configuration variables
c906108c 26830
46ba6afa 26831Several configuration variables control the appearance of TUI windows.
c906108c 26832
8e04817f
AC
26833@table @code
26834@item set tui border-kind @var{kind}
26835@kindex set tui border-kind
26836Select the border appearance for the source, assembly and register windows.
26837The possible values are the following:
26838@table @code
26839@item space
26840Use a space character to draw the border.
c906108c 26841
8e04817f 26842@item ascii
46ba6afa 26843Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border.
c906108c 26844
8e04817f
AC
26845@item acs
26846Use the Alternate Character Set to draw the border. The border is
26847drawn using character line graphics if the terminal supports them.
8e04817f 26848@end table
c78b4128 26849
8e04817f
AC
26850@item set tui border-mode @var{mode}
26851@kindex set tui border-mode
46ba6afa
BW
26852@itemx set tui active-border-mode @var{mode}
26853@kindex set tui active-border-mode
26854Select the display attributes for the borders of the inactive windows
26855or the active window. The @var{mode} can be one of the following:
8e04817f
AC
26856@table @code
26857@item normal
26858Use normal attributes to display the border.
c906108c 26859
8e04817f
AC
26860@item standout
26861Use standout mode.
c906108c 26862
8e04817f
AC
26863@item reverse
26864Use reverse video mode.
c906108c 26865
8e04817f
AC
26866@item half
26867Use half bright mode.
c906108c 26868
8e04817f
AC
26869@item half-standout
26870Use half bright and standout mode.
c906108c 26871
8e04817f
AC
26872@item bold
26873Use extra bright or bold mode.
c78b4128 26874
8e04817f
AC
26875@item bold-standout
26876Use extra bright or bold and standout mode.
8e04817f 26877@end table
8e04817f 26878@end table
c78b4128 26879
8e04817f
AC
26880@node Emacs
26881@chapter Using @value{GDBN} under @sc{gnu} Emacs
c78b4128 26882
8e04817f
AC
26883@cindex Emacs
26884@cindex @sc{gnu} Emacs
26885A special interface allows you to use @sc{gnu} Emacs to view (and
26886edit) the source files for the program you are debugging with
26887@value{GDBN}.
c906108c 26888
8e04817f
AC
26889To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
26890executable file you want to debug as an argument. This command starts
26891@value{GDBN} as a subprocess of Emacs, with input and output through a newly
26892created Emacs buffer.
26893@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c 26894
5e252a2e 26895Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two
8e04817f 26896things:
c906108c 26897
8e04817f
AC
26898@itemize @bullet
26899@item
5e252a2e
NR
26900All ``terminal'' input and output goes through an Emacs buffer, called
26901the GUD buffer.
c906108c 26902
8e04817f
AC
26903This applies both to @value{GDBN} commands and their output, and to the input
26904and output done by the program you are debugging.
bf0184be 26905
8e04817f
AC
26906This is useful because it means that you can copy the text of previous
26907commands and input them again; you can even use parts of the output
26908in this way.
bf0184be 26909
8e04817f
AC
26910All the facilities of Emacs' Shell mode are available for interacting
26911with your program. In particular, you can send signals the usual
26912way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
26913stop.
bf0184be
ND
26914
26915@item
8e04817f 26916@value{GDBN} displays source code through Emacs.
bf0184be 26917
8e04817f
AC
26918Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
26919source file for that frame and puts an arrow (@samp{=>}) at the
26920left margin of the current line. Emacs uses a separate buffer for
26921source display, and splits the screen to show both your @value{GDBN} session
26922and the source.
bf0184be 26923
8e04817f
AC
26924Explicit @value{GDBN} @code{list} or search commands still produce output as
26925usual, but you probably have no reason to use them from Emacs.
5e252a2e
NR
26926@end itemize
26927
26928We call this @dfn{text command mode}. Emacs 22.1, and later, also uses
26929a graphical mode, enabled by default, which provides further buffers
26930that can control the execution and describe the state of your program.
26931@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}.
c906108c 26932
64fabec2
AC
26933If you specify an absolute file name when prompted for the @kbd{M-x
26934gdb} argument, then Emacs sets your current working directory to where
26935your program resides. If you only specify the file name, then Emacs
7a9dd1b2 26936sets your current working directory to the directory associated
64fabec2
AC
26937with the previous buffer. In this case, @value{GDBN} may find your
26938program by searching your environment's @code{PATH} variable, but on
26939some operating systems it might not find the source. So, although the
26940@value{GDBN} input and output session proceeds normally, the auxiliary
26941buffer does not display the current source and line of execution.
26942
26943The initial working directory of @value{GDBN} is printed on the top
5e252a2e
NR
26944line of the GUD buffer and this serves as a default for the commands
26945that specify files for @value{GDBN} to operate on. @xref{Files,
26946,Commands to Specify Files}.
64fabec2
AC
26947
26948By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
26949need to call @value{GDBN} by a different name (for example, if you
26950keep several configurations around, with different names) you can
26951customize the Emacs variable @code{gud-gdb-command-name} to run the
26952one you want.
8e04817f 26953
5e252a2e 26954In the GUD buffer, you can use these special Emacs commands in
8e04817f 26955addition to the standard Shell mode commands:
c906108c 26956
8e04817f
AC
26957@table @kbd
26958@item C-h m
5e252a2e 26959Describe the features of Emacs' GUD Mode.
c906108c 26960
64fabec2 26961@item C-c C-s
8e04817f
AC
26962Execute to another source line, like the @value{GDBN} @code{step} command; also
26963update the display window to show the current file and location.
c906108c 26964
64fabec2 26965@item C-c C-n
8e04817f
AC
26966Execute to next source line in this function, skipping all function
26967calls, like the @value{GDBN} @code{next} command. Then update the display window
26968to show the current file and location.
c906108c 26969
64fabec2 26970@item C-c C-i
8e04817f
AC
26971Execute one instruction, like the @value{GDBN} @code{stepi} command; update
26972display window accordingly.
c906108c 26973
8e04817f
AC
26974@item C-c C-f
26975Execute until exit from the selected stack frame, like the @value{GDBN}
26976@code{finish} command.
c906108c 26977
64fabec2 26978@item C-c C-r
8e04817f
AC
26979Continue execution of your program, like the @value{GDBN} @code{continue}
26980command.
b433d00b 26981
64fabec2 26982@item C-c <
8e04817f
AC
26983Go up the number of frames indicated by the numeric argument
26984(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
26985like the @value{GDBN} @code{up} command.
b433d00b 26986
64fabec2 26987@item C-c >
8e04817f
AC
26988Go down the number of frames indicated by the numeric argument, like the
26989@value{GDBN} @code{down} command.
8e04817f 26990@end table
c906108c 26991
7f9087cb 26992In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break})
8e04817f 26993tells @value{GDBN} to set a breakpoint on the source line point is on.
c906108c 26994
5e252a2e
NR
26995In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a
26996separate frame which shows a backtrace when the GUD buffer is current.
26997Move point to any frame in the stack and type @key{RET} to make it
26998become the current frame and display the associated source in the
26999source buffer. Alternatively, click @kbd{Mouse-2} to make the
27000selected frame become the current one. In graphical mode, the
27001speedbar displays watch expressions.
64fabec2 27002
8e04817f
AC
27003If you accidentally delete the source-display buffer, an easy way to get
27004it back is to type the command @code{f} in the @value{GDBN} buffer, to
27005request a frame display; when you run under Emacs, this recreates
27006the source buffer if necessary to show you the context of the current
27007frame.
c906108c 27008
8e04817f
AC
27009The source files displayed in Emacs are in ordinary Emacs buffers
27010which are visiting the source files in the usual way. You can edit
27011the files with these buffers if you wish; but keep in mind that @value{GDBN}
27012communicates with Emacs in terms of line numbers. If you add or
27013delete lines from the text, the line numbers that @value{GDBN} knows cease
27014to correspond properly with the code.
b383017d 27015
5e252a2e
NR
27016A more detailed description of Emacs' interaction with @value{GDBN} is
27017given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu}
27018Emacs Manual}).
c906108c 27019
8e04817f
AC
27020@c The following dropped because Epoch is nonstandard. Reactivate
27021@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
27022@ignore
27023@kindex Emacs Epoch environment
27024@kindex Epoch
27025@kindex inspect
c906108c 27026
8e04817f
AC
27027Version 18 of @sc{gnu} Emacs has a built-in window system
27028called the @code{epoch}
27029environment. Users of this environment can use a new command,
27030@code{inspect} which performs identically to @code{print} except that
27031each value is printed in its own window.
27032@end ignore
c906108c 27033
922fbb7b
AC
27034
27035@node GDB/MI
27036@chapter The @sc{gdb/mi} Interface
27037
27038@unnumberedsec Function and Purpose
27039
27040@cindex @sc{gdb/mi}, its purpose
6b5e8c01
NR
27041@sc{gdb/mi} is a line based machine oriented text interface to
27042@value{GDBN} and is activated by specifying using the
27043@option{--interpreter} command line option (@pxref{Mode Options}). It
27044is specifically intended to support the development of systems which
27045use the debugger as just one small component of a larger system.
922fbb7b
AC
27046
27047This chapter is a specification of the @sc{gdb/mi} interface. It is written
27048in the form of a reference manual.
27049
27050Note that @sc{gdb/mi} is still under construction, so some of the
af6eff6f
NR
27051features described below are incomplete and subject to change
27052(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}).
922fbb7b
AC
27053
27054@unnumberedsec Notation and Terminology
27055
27056@cindex notational conventions, for @sc{gdb/mi}
27057This chapter uses the following notation:
27058
27059@itemize @bullet
27060@item
27061@code{|} separates two alternatives.
27062
27063@item
27064@code{[ @var{something} ]} indicates that @var{something} is optional:
27065it may or may not be given.
27066
27067@item
27068@code{( @var{group} )*} means that @var{group} inside the parentheses
27069may repeat zero or more times.
27070
27071@item
27072@code{( @var{group} )+} means that @var{group} inside the parentheses
27073may repeat one or more times.
27074
27075@item
27076@code{"@var{string}"} means a literal @var{string}.
27077@end itemize
27078
27079@ignore
27080@heading Dependencies
27081@end ignore
27082
922fbb7b 27083@menu
c3b108f7 27084* GDB/MI General Design::
922fbb7b
AC
27085* GDB/MI Command Syntax::
27086* GDB/MI Compatibility with CLI::
af6eff6f 27087* GDB/MI Development and Front Ends::
922fbb7b 27088* GDB/MI Output Records::
ef21caaf 27089* GDB/MI Simple Examples::
922fbb7b 27090* GDB/MI Command Description Format::
ef21caaf 27091* GDB/MI Breakpoint Commands::
a2c02241
NR
27092* GDB/MI Program Context::
27093* GDB/MI Thread Commands::
5d77fe44 27094* GDB/MI Ada Tasking Commands::
a2c02241
NR
27095* GDB/MI Program Execution::
27096* GDB/MI Stack Manipulation::
27097* GDB/MI Variable Objects::
922fbb7b 27098* GDB/MI Data Manipulation::
a2c02241
NR
27099* GDB/MI Tracepoint Commands::
27100* GDB/MI Symbol Query::
351ff01a 27101* GDB/MI File Commands::
922fbb7b
AC
27102@ignore
27103* GDB/MI Kod Commands::
27104* GDB/MI Memory Overlay Commands::
27105* GDB/MI Signal Handling Commands::
27106@end ignore
922fbb7b 27107* GDB/MI Target Manipulation::
a6b151f1 27108* GDB/MI File Transfer Commands::
ef21caaf 27109* GDB/MI Miscellaneous Commands::
922fbb7b
AC
27110@end menu
27111
c3b108f7
VP
27112@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27113@node GDB/MI General Design
27114@section @sc{gdb/mi} General Design
27115@cindex GDB/MI General Design
27116
27117Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three
27118parts---commands sent to @value{GDBN}, responses to those commands
27119and notifications. Each command results in exactly one response,
27120indicating either successful completion of the command, or an error.
27121For the commands that do not resume the target, the response contains the
27122requested information. For the commands that resume the target, the
27123response only indicates whether the target was successfully resumed.
27124Notifications is the mechanism for reporting changes in the state of the
27125target, or in @value{GDBN} state, that cannot conveniently be associated with
27126a command and reported as part of that command response.
27127
27128The important examples of notifications are:
27129@itemize @bullet
27130
27131@item
27132Exec notifications. These are used to report changes in
27133target state---when a target is resumed, or stopped. It would not
27134be feasible to include this information in response of resuming
27135commands, because one resume commands can result in multiple events in
27136different threads. Also, quite some time may pass before any event
27137happens in the target, while a frontend needs to know whether the resuming
27138command itself was successfully executed.
27139
27140@item
27141Console output, and status notifications. Console output
27142notifications are used to report output of CLI commands, as well as
27143diagnostics for other commands. Status notifications are used to
27144report the progress of a long-running operation. Naturally, including
27145this information in command response would mean no output is produced
27146until the command is finished, which is undesirable.
27147
27148@item
27149General notifications. Commands may have various side effects on
27150the @value{GDBN} or target state beyond their official purpose. For example,
27151a command may change the selected thread. Although such changes can
27152be included in command response, using notification allows for more
27153orthogonal frontend design.
27154
27155@end itemize
27156
27157There's no guarantee that whenever an MI command reports an error,
27158@value{GDBN} or the target are in any specific state, and especially,
27159the state is not reverted to the state before the MI command was
27160processed. Therefore, whenever an MI command results in an error,
27161we recommend that the frontend refreshes all the information shown in
27162the user interface.
27163
508094de
NR
27164
27165@menu
27166* Context management::
27167* Asynchronous and non-stop modes::
27168* Thread groups::
27169@end menu
27170
27171@node Context management
c3b108f7
VP
27172@subsection Context management
27173
27174In most cases when @value{GDBN} accesses the target, this access is
27175done in context of a specific thread and frame (@pxref{Frames}).
27176Often, even when accessing global data, the target requires that a thread
27177be specified. The CLI interface maintains the selected thread and frame,
27178and supplies them to target on each command. This is convenient,
27179because a command line user would not want to specify that information
27180explicitly on each command, and because user interacts with
27181@value{GDBN} via a single terminal, so no confusion is possible as
27182to what thread and frame are the current ones.
27183
27184In the case of MI, the concept of selected thread and frame is less
27185useful. First, a frontend can easily remember this information
27186itself. Second, a graphical frontend can have more than one window,
27187each one used for debugging a different thread, and the frontend might
27188want to access additional threads for internal purposes. This
27189increases the risk that by relying on implicitly selected thread, the
27190frontend may be operating on a wrong one. Therefore, each MI command
27191should explicitly specify which thread and frame to operate on. To
27192make it possible, each MI command accepts the @samp{--thread} and
27193@samp{--frame} options, the value to each is @value{GDBN} identifier
27194for thread and frame to operate on.
27195
27196Usually, each top-level window in a frontend allows the user to select
27197a thread and a frame, and remembers the user selection for further
27198operations. However, in some cases @value{GDBN} may suggest that the
27199current thread be changed. For example, when stopping on a breakpoint
27200it is reasonable to switch to the thread where breakpoint is hit. For
27201another example, if the user issues the CLI @samp{thread} command via
27202the frontend, it is desirable to change the frontend's selected thread to the
27203one specified by user. @value{GDBN} communicates the suggestion to
27204change current thread using the @samp{=thread-selected} notification.
27205No such notification is available for the selected frame at the moment.
27206
27207Note that historically, MI shares the selected thread with CLI, so
27208frontends used the @code{-thread-select} to execute commands in the
27209right context. However, getting this to work right is cumbersome. The
27210simplest way is for frontend to emit @code{-thread-select} command
27211before every command. This doubles the number of commands that need
27212to be sent. The alternative approach is to suppress @code{-thread-select}
27213if the selected thread in @value{GDBN} is supposed to be identical to the
27214thread the frontend wants to operate on. However, getting this
27215optimization right can be tricky. In particular, if the frontend
27216sends several commands to @value{GDBN}, and one of the commands changes the
27217selected thread, then the behaviour of subsequent commands will
27218change. So, a frontend should either wait for response from such
27219problematic commands, or explicitly add @code{-thread-select} for
27220all subsequent commands. No frontend is known to do this exactly
27221right, so it is suggested to just always pass the @samp{--thread} and
27222@samp{--frame} options.
27223
508094de 27224@node Asynchronous and non-stop modes
c3b108f7
VP
27225@subsection Asynchronous command execution and non-stop mode
27226
27227On some targets, @value{GDBN} is capable of processing MI commands
27228even while the target is running. This is called @dfn{asynchronous
27229command execution} (@pxref{Background Execution}). The frontend may
27230specify a preferrence for asynchronous execution using the
27231@code{-gdb-set target-async 1} command, which should be emitted before
27232either running the executable or attaching to the target. After the
27233frontend has started the executable or attached to the target, it can
27234find if asynchronous execution is enabled using the
27235@code{-list-target-features} command.
27236
27237Even if @value{GDBN} can accept a command while target is running,
27238many commands that access the target do not work when the target is
27239running. Therefore, asynchronous command execution is most useful
27240when combined with non-stop mode (@pxref{Non-Stop Mode}). Then,
27241it is possible to examine the state of one thread, while other threads
27242are running.
27243
27244When a given thread is running, MI commands that try to access the
27245target in the context of that thread may not work, or may work only on
27246some targets. In particular, commands that try to operate on thread's
27247stack will not work, on any target. Commands that read memory, or
27248modify breakpoints, may work or not work, depending on the target. Note
27249that even commands that operate on global state, such as @code{print},
27250@code{set}, and breakpoint commands, still access the target in the
27251context of a specific thread, so frontend should try to find a
27252stopped thread and perform the operation on that thread (using the
27253@samp{--thread} option).
27254
27255Which commands will work in the context of a running thread is
27256highly target dependent. However, the two commands
27257@code{-exec-interrupt}, to stop a thread, and @code{-thread-info},
27258to find the state of a thread, will always work.
27259
508094de 27260@node Thread groups
c3b108f7
VP
27261@subsection Thread groups
27262@value{GDBN} may be used to debug several processes at the same time.
27263On some platfroms, @value{GDBN} may support debugging of several
27264hardware systems, each one having several cores with several different
27265processes running on each core. This section describes the MI
27266mechanism to support such debugging scenarios.
27267
27268The key observation is that regardless of the structure of the
27269target, MI can have a global list of threads, because most commands that
27270accept the @samp{--thread} option do not need to know what process that
27271thread belongs to. Therefore, it is not necessary to introduce
27272neither additional @samp{--process} option, nor an notion of the
27273current process in the MI interface. The only strictly new feature
27274that is required is the ability to find how the threads are grouped
27275into processes.
27276
27277To allow the user to discover such grouping, and to support arbitrary
27278hierarchy of machines/cores/processes, MI introduces the concept of a
27279@dfn{thread group}. Thread group is a collection of threads and other
27280thread groups. A thread group always has a string identifier, a type,
27281and may have additional attributes specific to the type. A new
27282command, @code{-list-thread-groups}, returns the list of top-level
27283thread groups, which correspond to processes that @value{GDBN} is
27284debugging at the moment. By passing an identifier of a thread group
27285to the @code{-list-thread-groups} command, it is possible to obtain
27286the members of specific thread group.
27287
27288To allow the user to easily discover processes, and other objects, he
27289wishes to debug, a concept of @dfn{available thread group} is
27290introduced. Available thread group is an thread group that
27291@value{GDBN} is not debugging, but that can be attached to, using the
27292@code{-target-attach} command. The list of available top-level thread
27293groups can be obtained using @samp{-list-thread-groups --available}.
27294In general, the content of a thread group may be only retrieved only
27295after attaching to that thread group.
27296
a79b8f6e
VP
27297Thread groups are related to inferiors (@pxref{Inferiors and
27298Programs}). Each inferior corresponds to a thread group of a special
27299type @samp{process}, and some additional operations are permitted on
27300such thread groups.
27301
922fbb7b
AC
27302@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27303@node GDB/MI Command Syntax
27304@section @sc{gdb/mi} Command Syntax
27305
27306@menu
27307* GDB/MI Input Syntax::
27308* GDB/MI Output Syntax::
922fbb7b
AC
27309@end menu
27310
27311@node GDB/MI Input Syntax
27312@subsection @sc{gdb/mi} Input Syntax
27313
27314@cindex input syntax for @sc{gdb/mi}
27315@cindex @sc{gdb/mi}, input syntax
27316@table @code
27317@item @var{command} @expansion{}
27318@code{@var{cli-command} | @var{mi-command}}
27319
27320@item @var{cli-command} @expansion{}
27321@code{[ @var{token} ] @var{cli-command} @var{nl}}, where
27322@var{cli-command} is any existing @value{GDBN} CLI command.
27323
27324@item @var{mi-command} @expansion{}
27325@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
27326@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
27327
27328@item @var{token} @expansion{}
27329"any sequence of digits"
27330
27331@item @var{option} @expansion{}
27332@code{"-" @var{parameter} [ " " @var{parameter} ]}
27333
27334@item @var{parameter} @expansion{}
27335@code{@var{non-blank-sequence} | @var{c-string}}
27336
27337@item @var{operation} @expansion{}
27338@emph{any of the operations described in this chapter}
27339
27340@item @var{non-blank-sequence} @expansion{}
27341@emph{anything, provided it doesn't contain special characters such as
27342"-", @var{nl}, """ and of course " "}
27343
27344@item @var{c-string} @expansion{}
27345@code{""" @var{seven-bit-iso-c-string-content} """}
27346
27347@item @var{nl} @expansion{}
27348@code{CR | CR-LF}
27349@end table
27350
27351@noindent
27352Notes:
27353
27354@itemize @bullet
27355@item
27356The CLI commands are still handled by the @sc{mi} interpreter; their
27357output is described below.
27358
27359@item
27360The @code{@var{token}}, when present, is passed back when the command
27361finishes.
27362
27363@item
27364Some @sc{mi} commands accept optional arguments as part of the parameter
27365list. Each option is identified by a leading @samp{-} (dash) and may be
27366followed by an optional argument parameter. Options occur first in the
27367parameter list and can be delimited from normal parameters using
27368@samp{--} (this is useful when some parameters begin with a dash).
27369@end itemize
27370
27371Pragmatics:
27372
27373@itemize @bullet
27374@item
27375We want easy access to the existing CLI syntax (for debugging).
27376
27377@item
27378We want it to be easy to spot a @sc{mi} operation.
27379@end itemize
27380
27381@node GDB/MI Output Syntax
27382@subsection @sc{gdb/mi} Output Syntax
27383
27384@cindex output syntax of @sc{gdb/mi}
27385@cindex @sc{gdb/mi}, output syntax
27386The output from @sc{gdb/mi} consists of zero or more out-of-band records
27387followed, optionally, by a single result record. This result record
27388is for the most recent command. The sequence of output records is
594fe323 27389terminated by @samp{(gdb)}.
922fbb7b
AC
27390
27391If an input command was prefixed with a @code{@var{token}} then the
27392corresponding output for that command will also be prefixed by that same
27393@var{token}.
27394
27395@table @code
27396@item @var{output} @expansion{}
594fe323 27397@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
922fbb7b
AC
27398
27399@item @var{result-record} @expansion{}
27400@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
27401
27402@item @var{out-of-band-record} @expansion{}
27403@code{@var{async-record} | @var{stream-record}}
27404
27405@item @var{async-record} @expansion{}
27406@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
27407
27408@item @var{exec-async-output} @expansion{}
27409@code{[ @var{token} ] "*" @var{async-output}}
27410
27411@item @var{status-async-output} @expansion{}
27412@code{[ @var{token} ] "+" @var{async-output}}
27413
27414@item @var{notify-async-output} @expansion{}
27415@code{[ @var{token} ] "=" @var{async-output}}
27416
27417@item @var{async-output} @expansion{}
27418@code{@var{async-class} ( "," @var{result} )* @var{nl}}
27419
27420@item @var{result-class} @expansion{}
27421@code{"done" | "running" | "connected" | "error" | "exit"}
27422
27423@item @var{async-class} @expansion{}
27424@code{"stopped" | @var{others}} (where @var{others} will be added
27425depending on the needs---this is still in development).
27426
27427@item @var{result} @expansion{}
27428@code{ @var{variable} "=" @var{value}}
27429
27430@item @var{variable} @expansion{}
27431@code{ @var{string} }
27432
27433@item @var{value} @expansion{}
27434@code{ @var{const} | @var{tuple} | @var{list} }
27435
27436@item @var{const} @expansion{}
27437@code{@var{c-string}}
27438
27439@item @var{tuple} @expansion{}
27440@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
27441
27442@item @var{list} @expansion{}
27443@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
27444@var{result} ( "," @var{result} )* "]" }
27445
27446@item @var{stream-record} @expansion{}
27447@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
27448
27449@item @var{console-stream-output} @expansion{}
27450@code{"~" @var{c-string}}
27451
27452@item @var{target-stream-output} @expansion{}
27453@code{"@@" @var{c-string}}
27454
27455@item @var{log-stream-output} @expansion{}
27456@code{"&" @var{c-string}}
27457
27458@item @var{nl} @expansion{}
27459@code{CR | CR-LF}
27460
27461@item @var{token} @expansion{}
27462@emph{any sequence of digits}.
27463@end table
27464
27465@noindent
27466Notes:
27467
27468@itemize @bullet
27469@item
27470All output sequences end in a single line containing a period.
27471
27472@item
721c02de
VP
27473The @code{@var{token}} is from the corresponding request. Note that
27474for all async output, while the token is allowed by the grammar and
27475may be output by future versions of @value{GDBN} for select async
27476output messages, it is generally omitted. Frontends should treat
27477all async output as reporting general changes in the state of the
27478target and there should be no need to associate async output to any
27479prior command.
922fbb7b
AC
27480
27481@item
27482@cindex status output in @sc{gdb/mi}
27483@var{status-async-output} contains on-going status information about the
27484progress of a slow operation. It can be discarded. All status output is
27485prefixed by @samp{+}.
27486
27487@item
27488@cindex async output in @sc{gdb/mi}
27489@var{exec-async-output} contains asynchronous state change on the target
27490(stopped, started, disappeared). All async output is prefixed by
27491@samp{*}.
27492
27493@item
27494@cindex notify output in @sc{gdb/mi}
27495@var{notify-async-output} contains supplementary information that the
27496client should handle (e.g., a new breakpoint information). All notify
27497output is prefixed by @samp{=}.
27498
27499@item
27500@cindex console output in @sc{gdb/mi}
27501@var{console-stream-output} is output that should be displayed as is in the
27502console. It is the textual response to a CLI command. All the console
27503output is prefixed by @samp{~}.
27504
27505@item
27506@cindex target output in @sc{gdb/mi}
27507@var{target-stream-output} is the output produced by the target program.
27508All the target output is prefixed by @samp{@@}.
27509
27510@item
27511@cindex log output in @sc{gdb/mi}
27512@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
27513instance messages that should be displayed as part of an error log. All
27514the log output is prefixed by @samp{&}.
27515
27516@item
27517@cindex list output in @sc{gdb/mi}
27518New @sc{gdb/mi} commands should only output @var{lists} containing
27519@var{values}.
27520
27521
27522@end itemize
27523
27524@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
27525details about the various output records.
27526
922fbb7b
AC
27527@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27528@node GDB/MI Compatibility with CLI
27529@section @sc{gdb/mi} Compatibility with CLI
27530
27531@cindex compatibility, @sc{gdb/mi} and CLI
27532@cindex @sc{gdb/mi}, compatibility with CLI
922fbb7b 27533
a2c02241
NR
27534For the developers convenience CLI commands can be entered directly,
27535but there may be some unexpected behaviour. For example, commands
27536that query the user will behave as if the user replied yes, breakpoint
27537command lists are not executed and some CLI commands, such as
27538@code{if}, @code{when} and @code{define}, prompt for further input with
27539@samp{>}, which is not valid MI output.
ef21caaf
NR
27540
27541This feature may be removed at some stage in the future and it is
a2c02241
NR
27542recommended that front ends use the @code{-interpreter-exec} command
27543(@pxref{-interpreter-exec}).
922fbb7b 27544
af6eff6f
NR
27545@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27546@node GDB/MI Development and Front Ends
27547@section @sc{gdb/mi} Development and Front Ends
27548@cindex @sc{gdb/mi} development
27549
27550The application which takes the MI output and presents the state of the
27551program being debugged to the user is called a @dfn{front end}.
27552
27553Although @sc{gdb/mi} is still incomplete, it is currently being used
27554by a variety of front ends to @value{GDBN}. This makes it difficult
27555to introduce new functionality without breaking existing usage. This
27556section tries to minimize the problems by describing how the protocol
27557might change.
27558
27559Some changes in MI need not break a carefully designed front end, and
27560for these the MI version will remain unchanged. The following is a
27561list of changes that may occur within one level, so front ends should
27562parse MI output in a way that can handle them:
27563
27564@itemize @bullet
27565@item
27566New MI commands may be added.
27567
27568@item
27569New fields may be added to the output of any MI command.
27570
36ece8b3
NR
27571@item
27572The range of values for fields with specified values, e.g.,
9f708cb2 27573@code{in_scope} (@pxref{-var-update}) may be extended.
36ece8b3 27574
af6eff6f
NR
27575@c The format of field's content e.g type prefix, may change so parse it
27576@c at your own risk. Yes, in general?
27577
27578@c The order of fields may change? Shouldn't really matter but it might
27579@c resolve inconsistencies.
27580@end itemize
27581
27582If the changes are likely to break front ends, the MI version level
27583will be increased by one. This will allow the front end to parse the
27584output according to the MI version. Apart from mi0, new versions of
27585@value{GDBN} will not support old versions of MI and it will be the
27586responsibility of the front end to work with the new one.
27587
27588@c Starting with mi3, add a new command -mi-version that prints the MI
27589@c version?
27590
27591The best way to avoid unexpected changes in MI that might break your front
27592end is to make your project known to @value{GDBN} developers and
7a9a6b69 27593follow development on @email{gdb@@sourceware.org} and
fa0f268d 27594@email{gdb-patches@@sourceware.org}.
af6eff6f
NR
27595@cindex mailing lists
27596
922fbb7b
AC
27597@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27598@node GDB/MI Output Records
27599@section @sc{gdb/mi} Output Records
27600
27601@menu
27602* GDB/MI Result Records::
27603* GDB/MI Stream Records::
82f68b1c 27604* GDB/MI Async Records::
c3b108f7 27605* GDB/MI Frame Information::
dc146f7c 27606* GDB/MI Thread Information::
4368ebeb 27607* GDB/MI Ada Exception Information::
922fbb7b
AC
27608@end menu
27609
27610@node GDB/MI Result Records
27611@subsection @sc{gdb/mi} Result Records
27612
27613@cindex result records in @sc{gdb/mi}
27614@cindex @sc{gdb/mi}, result records
27615In addition to a number of out-of-band notifications, the response to a
27616@sc{gdb/mi} command includes one of the following result indications:
27617
27618@table @code
27619@findex ^done
27620@item "^done" [ "," @var{results} ]
27621The synchronous operation was successful, @code{@var{results}} are the return
27622values.
27623
27624@item "^running"
27625@findex ^running
8e9c5e02
VP
27626This result record is equivalent to @samp{^done}. Historically, it
27627was output instead of @samp{^done} if the command has resumed the
27628target. This behaviour is maintained for backward compatibility, but
27629all frontends should treat @samp{^done} and @samp{^running}
27630identically and rely on the @samp{*running} output record to determine
27631which threads are resumed.
922fbb7b 27632
ef21caaf
NR
27633@item "^connected"
27634@findex ^connected
3f94c067 27635@value{GDBN} has connected to a remote target.
ef21caaf 27636
922fbb7b
AC
27637@item "^error" "," @var{c-string}
27638@findex ^error
27639The operation failed. The @code{@var{c-string}} contains the corresponding
27640error message.
ef21caaf
NR
27641
27642@item "^exit"
27643@findex ^exit
3f94c067 27644@value{GDBN} has terminated.
ef21caaf 27645
922fbb7b
AC
27646@end table
27647
27648@node GDB/MI Stream Records
27649@subsection @sc{gdb/mi} Stream Records
27650
27651@cindex @sc{gdb/mi}, stream records
27652@cindex stream records in @sc{gdb/mi}
27653@value{GDBN} internally maintains a number of output streams: the console, the
27654target, and the log. The output intended for each of these streams is
27655funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
27656
27657Each stream record begins with a unique @dfn{prefix character} which
27658identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
27659Syntax}). In addition to the prefix, each stream record contains a
27660@code{@var{string-output}}. This is either raw text (with an implicit new
27661line) or a quoted C string (which does not contain an implicit newline).
27662
27663@table @code
27664@item "~" @var{string-output}
27665The console output stream contains text that should be displayed in the
27666CLI console window. It contains the textual responses to CLI commands.
27667
27668@item "@@" @var{string-output}
27669The target output stream contains any textual output from the running
ef21caaf
NR
27670target. This is only present when GDB's event loop is truly
27671asynchronous, which is currently only the case for remote targets.
922fbb7b
AC
27672
27673@item "&" @var{string-output}
27674The log stream contains debugging messages being produced by @value{GDBN}'s
27675internals.
27676@end table
27677
82f68b1c
VP
27678@node GDB/MI Async Records
27679@subsection @sc{gdb/mi} Async Records
922fbb7b 27680
82f68b1c
VP
27681@cindex async records in @sc{gdb/mi}
27682@cindex @sc{gdb/mi}, async records
27683@dfn{Async} records are used to notify the @sc{gdb/mi} client of
922fbb7b 27684additional changes that have occurred. Those changes can either be a
82f68b1c 27685consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of
922fbb7b
AC
27686target activity (e.g., target stopped).
27687
8eb41542 27688The following is the list of possible async records:
922fbb7b
AC
27689
27690@table @code
034dad6f 27691
e1ac3328
VP
27692@item *running,thread-id="@var{thread}"
27693The target is now running. The @var{thread} field tells which
27694specific thread is now running, and can be @samp{all} if all threads
27695are running. The frontend should assume that no interaction with a
27696running thread is possible after this notification is produced.
27697The frontend should not assume that this notification is output
27698only once for any command. @value{GDBN} may emit this notification
27699several times, either for different threads, because it cannot resume
27700all threads together, or even for a single thread, if the thread must
27701be stepped though some code before letting it run freely.
27702
dc146f7c 27703@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}"
82f68b1c
VP
27704The target has stopped. The @var{reason} field can have one of the
27705following values:
034dad6f
BR
27706
27707@table @code
27708@item breakpoint-hit
27709A breakpoint was reached.
27710@item watchpoint-trigger
27711A watchpoint was triggered.
27712@item read-watchpoint-trigger
27713A read watchpoint was triggered.
27714@item access-watchpoint-trigger
27715An access watchpoint was triggered.
27716@item function-finished
27717An -exec-finish or similar CLI command was accomplished.
27718@item location-reached
27719An -exec-until or similar CLI command was accomplished.
27720@item watchpoint-scope
27721A watchpoint has gone out of scope.
27722@item end-stepping-range
27723An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or
27724similar CLI command was accomplished.
27725@item exited-signalled
27726The inferior exited because of a signal.
27727@item exited
27728The inferior exited.
27729@item exited-normally
27730The inferior exited normally.
27731@item signal-received
27732A signal was received by the inferior.
36dfb11c
TT
27733@item solib-event
27734The inferior has stopped due to a library being loaded or unloaded.
edcc5120
TT
27735This can happen when @code{stop-on-solib-events} (@pxref{Files}) is
27736set or when a @code{catch load} or @code{catch unload} catchpoint is
27737in use (@pxref{Set Catchpoints}).
36dfb11c
TT
27738@item fork
27739The inferior has forked. This is reported when @code{catch fork}
27740(@pxref{Set Catchpoints}) has been used.
27741@item vfork
27742The inferior has vforked. This is reported in when @code{catch vfork}
27743(@pxref{Set Catchpoints}) has been used.
27744@item syscall-entry
27745The inferior entered a system call. This is reported when @code{catch
27746syscall} (@pxref{Set Catchpoints}) has been used.
27747@item syscall-entry
27748The inferior returned from a system call. This is reported when
27749@code{catch syscall} (@pxref{Set Catchpoints}) has been used.
27750@item exec
27751The inferior called @code{exec}. This is reported when @code{catch exec}
27752(@pxref{Set Catchpoints}) has been used.
922fbb7b
AC
27753@end table
27754
c3b108f7
VP
27755The @var{id} field identifies the thread that directly caused the stop
27756-- for example by hitting a breakpoint. Depending on whether all-stop
27757mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either
27758stop all threads, or only the thread that directly triggered the stop.
27759If all threads are stopped, the @var{stopped} field will have the
27760value of @code{"all"}. Otherwise, the value of the @var{stopped}
27761field will be a list of thread identifiers. Presently, this list will
27762always include a single thread, but frontend should be prepared to see
dc146f7c
VP
27763several threads in the list. The @var{core} field reports the
27764processor core on which the stop event has happened. This field may be absent
27765if such information is not available.
c3b108f7 27766
a79b8f6e
VP
27767@item =thread-group-added,id="@var{id}"
27768@itemx =thread-group-removed,id="@var{id}"
27769A thread group was either added or removed. The @var{id} field
27770contains the @value{GDBN} identifier of the thread group. When a thread
27771group is added, it generally might not be associated with a running
27772process. When a thread group is removed, its id becomes invalid and
27773cannot be used in any way.
27774
27775@item =thread-group-started,id="@var{id}",pid="@var{pid}"
27776A thread group became associated with a running program,
27777either because the program was just started or the thread group
27778was attached to a program. The @var{id} field contains the
27779@value{GDBN} identifier of the thread group. The @var{pid} field
27780contains process identifier, specific to the operating system.
27781
8cf64490 27782@item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"]
a79b8f6e
VP
27783A thread group is no longer associated with a running program,
27784either because the program has exited, or because it was detached
c3b108f7 27785from. The @var{id} field contains the @value{GDBN} identifier of the
8cf64490
TT
27786thread group. @var{code} is the exit code of the inferior; it exists
27787only when the inferior exited with some code.
c3b108f7
VP
27788
27789@item =thread-created,id="@var{id}",group-id="@var{gid}"
27790@itemx =thread-exited,id="@var{id}",group-id="@var{gid}"
82f68b1c 27791A thread either was created, or has exited. The @var{id} field
c3b108f7
VP
27792contains the @value{GDBN} identifier of the thread. The @var{gid}
27793field identifies the thread group this thread belongs to.
66bb093b
VP
27794
27795@item =thread-selected,id="@var{id}"
27796Informs that the selected thread was changed as result of the last
27797command. This notification is not emitted as result of @code{-thread-select}
27798command but is emitted whenever an MI command that is not documented
27799to change the selected thread actually changes it. In particular,
27800invoking, directly or indirectly (via user-defined command), the CLI
27801@code{thread} command, will generate this notification.
27802
27803We suggest that in response to this notification, front ends
27804highlight the selected thread and cause subsequent commands to apply to
27805that thread.
27806
c86cf029
VP
27807@item =library-loaded,...
27808Reports that a new library file was loaded by the program. This
27809notification has 4 fields---@var{id}, @var{target-name},
134eb42c 27810@var{host-name}, and @var{symbols-loaded}. The @var{id} field is an
c86cf029
VP
27811opaque identifier of the library. For remote debugging case,
27812@var{target-name} and @var{host-name} fields give the name of the
134eb42c
VP
27813library file on the target, and on the host respectively. For native
27814debugging, both those fields have the same value. The
f1cbe1d3
TT
27815@var{symbols-loaded} field is emitted only for backward compatibility
27816and should not be relied on to convey any useful information. The
27817@var{thread-group} field, if present, specifies the id of the thread
27818group in whose context the library was loaded. If the field is
27819absent, it means the library was loaded in the context of all present
27820thread groups.
c86cf029
VP
27821
27822@item =library-unloaded,...
134eb42c 27823Reports that a library was unloaded by the program. This notification
c86cf029 27824has 3 fields---@var{id}, @var{target-name} and @var{host-name} with
a79b8f6e
VP
27825the same meaning as for the @code{=library-loaded} notification.
27826The @var{thread-group} field, if present, specifies the id of the
27827thread group in whose context the library was unloaded. If the field is
27828absent, it means the library was unloaded in the context of all present
27829thread groups.
c86cf029 27830
201b4506
YQ
27831@item =traceframe-changed,num=@var{tfnum},tracepoint=@var{tpnum}
27832@itemx =traceframe-changed,end
27833Reports that the trace frame was changed and its new number is
27834@var{tfnum}. The number of the tracepoint associated with this trace
27835frame is @var{tpnum}.
27836
bb25a15c
YQ
27837@item =tsv-created,name=@var{name},value=@var{value}
27838Reports that the new trace state variable @var{name} is created with
27839value @var{value}.
27840
27841@item =tsv-deleted,name=@var{name}
27842@itemx =tsv-deleted
27843Reports that the trace state variable @var{name} is deleted or all
27844trace state variables are deleted.
27845
8d3788bd
VP
27846@item =breakpoint-created,bkpt=@{...@}
27847@itemx =breakpoint-modified,bkpt=@{...@}
d9f08f52 27848@itemx =breakpoint-deleted,id=@var{number}
8d3788bd
VP
27849Reports that a breakpoint was created, modified, or deleted,
27850respectively. Only user-visible breakpoints are reported to the MI
27851user.
27852
27853The @var{bkpt} argument is of the same form as returned by the various
d9f08f52
YQ
27854breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The
27855@var{number} is the ordinal number of the breakpoint.
8d3788bd
VP
27856
27857Note that if a breakpoint is emitted in the result record of a
27858command, then it will not also be emitted in an async record.
27859
82a90ccf
YQ
27860@item =record-started,thread-group="@var{id}"
27861@itemx =record-stopped,thread-group="@var{id}"
27862Execution log recording was either started or stopped on an
27863inferior. The @var{id} is the @value{GDBN} identifier of the thread
27864group corresponding to the affected inferior.
27865
5b9afe8a
YQ
27866@item =cmd-param-changed,param=@var{param},value=@var{value}
27867Reports that a parameter of the command @code{set @var{param}} is
27868changed to @var{value}. In the multi-word @code{set} command,
27869the @var{param} is the whole parameter list to @code{set} command.
27870For example, In command @code{set check type on}, @var{param}
27871is @code{check type} and @var{value} is @code{on}.
8de0566d
YQ
27872
27873@item =memory-changed,thread-group=@var{id},addr=@var{addr},len=@var{len}[,type="code"]
27874Reports that bytes from @var{addr} to @var{data} + @var{len} were
27875written in an inferior. The @var{id} is the identifier of the
27876thread group corresponding to the affected inferior. The optional
27877@code{type="code"} part is reported if the memory written to holds
27878executable code.
82f68b1c
VP
27879@end table
27880
c3b108f7
VP
27881@node GDB/MI Frame Information
27882@subsection @sc{gdb/mi} Frame Information
27883
27884Response from many MI commands includes an information about stack
27885frame. This information is a tuple that may have the following
27886fields:
27887
27888@table @code
27889@item level
27890The level of the stack frame. The innermost frame has the level of
27891zero. This field is always present.
27892
27893@item func
27894The name of the function corresponding to the frame. This field may
27895be absent if @value{GDBN} is unable to determine the function name.
27896
27897@item addr
27898The code address for the frame. This field is always present.
27899
27900@item file
27901The name of the source files that correspond to the frame's code
27902address. This field may be absent.
27903
27904@item line
27905The source line corresponding to the frames' code address. This field
27906may be absent.
27907
27908@item from
27909The name of the binary file (either executable or shared library) the
27910corresponds to the frame's code address. This field may be absent.
27911
27912@end table
82f68b1c 27913
dc146f7c
VP
27914@node GDB/MI Thread Information
27915@subsection @sc{gdb/mi} Thread Information
27916
27917Whenever @value{GDBN} has to report an information about a thread, it
27918uses a tuple with the following fields:
27919
27920@table @code
27921@item id
27922The numeric id assigned to the thread by @value{GDBN}. This field is
27923always present.
27924
27925@item target-id
27926Target-specific string identifying the thread. This field is always present.
27927
27928@item details
27929Additional information about the thread provided by the target.
27930It is supposed to be human-readable and not interpreted by the
27931frontend. This field is optional.
27932
27933@item state
27934Either @samp{stopped} or @samp{running}, depending on whether the
27935thread is presently running. This field is always present.
27936
27937@item core
27938The value of this field is an integer number of the processor core the
27939thread was last seen on. This field is optional.
27940@end table
27941
956a9fb9
JB
27942@node GDB/MI Ada Exception Information
27943@subsection @sc{gdb/mi} Ada Exception Information
27944
27945Whenever a @code{*stopped} record is emitted because the program
27946stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}),
27947@value{GDBN} provides the name of the exception that was raised via
27948the @code{exception-name} field.
922fbb7b 27949
ef21caaf
NR
27950@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27951@node GDB/MI Simple Examples
27952@section Simple Examples of @sc{gdb/mi} Interaction
27953@cindex @sc{gdb/mi}, simple examples
27954
27955This subsection presents several simple examples of interaction using
27956the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
27957following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
27958the output received from @sc{gdb/mi}.
27959
d3e8051b 27960Note the line breaks shown in the examples are here only for
ef21caaf
NR
27961readability, they don't appear in the real output.
27962
79a6e687 27963@subheading Setting a Breakpoint
ef21caaf
NR
27964
27965Setting a breakpoint generates synchronous output which contains detailed
27966information of the breakpoint.
27967
27968@smallexample
27969-> -break-insert main
27970<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27971 enabled="y",addr="0x08048564",func="main",file="myprog.c",
27972 fullname="/home/nickrob/myprog.c",line="68",times="0"@}
27973<- (gdb)
27974@end smallexample
27975
27976@subheading Program Execution
27977
27978Program execution generates asynchronous records and MI gives the
27979reason that execution stopped.
27980
27981@smallexample
27982-> -exec-run
27983<- ^running
27984<- (gdb)
a47ec5fe 27985<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
ef21caaf
NR
27986 frame=@{addr="0x08048564",func="main",
27987 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}],
27988 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@}
27989<- (gdb)
27990-> -exec-continue
27991<- ^running
27992<- (gdb)
27993<- *stopped,reason="exited-normally"
27994<- (gdb)
27995@end smallexample
27996
3f94c067 27997@subheading Quitting @value{GDBN}
ef21caaf 27998
3f94c067 27999Quitting @value{GDBN} just prints the result class @samp{^exit}.
ef21caaf
NR
28000
28001@smallexample
28002-> (gdb)
28003<- -gdb-exit
28004<- ^exit
28005@end smallexample
28006
a6b29f87
VP
28007Please note that @samp{^exit} is printed immediately, but it might
28008take some time for @value{GDBN} to actually exit. During that time, @value{GDBN}
28009performs necessary cleanups, including killing programs being debugged
28010or disconnecting from debug hardware, so the frontend should wait till
28011@value{GDBN} exits and should only forcibly kill @value{GDBN} if it
28012fails to exit in reasonable time.
28013
a2c02241 28014@subheading A Bad Command
ef21caaf
NR
28015
28016Here's what happens if you pass a non-existent command:
28017
28018@smallexample
28019-> -rubbish
28020<- ^error,msg="Undefined MI command: rubbish"
594fe323 28021<- (gdb)
ef21caaf
NR
28022@end smallexample
28023
28024
922fbb7b
AC
28025@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28026@node GDB/MI Command Description Format
28027@section @sc{gdb/mi} Command Description Format
28028
28029The remaining sections describe blocks of commands. Each block of
28030commands is laid out in a fashion similar to this section.
28031
922fbb7b
AC
28032@subheading Motivation
28033
28034The motivation for this collection of commands.
28035
28036@subheading Introduction
28037
28038A brief introduction to this collection of commands as a whole.
28039
28040@subheading Commands
28041
28042For each command in the block, the following is described:
28043
28044@subsubheading Synopsis
28045
28046@smallexample
28047 -command @var{args}@dots{}
28048@end smallexample
28049
922fbb7b
AC
28050@subsubheading Result
28051
265eeb58 28052@subsubheading @value{GDBN} Command
922fbb7b 28053
265eeb58 28054The corresponding @value{GDBN} CLI command(s), if any.
922fbb7b
AC
28055
28056@subsubheading Example
28057
ef21caaf
NR
28058Example(s) formatted for readability. Some of the described commands have
28059not been implemented yet and these are labeled N.A.@: (not available).
28060
28061
922fbb7b 28062@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ef21caaf
NR
28063@node GDB/MI Breakpoint Commands
28064@section @sc{gdb/mi} Breakpoint Commands
922fbb7b
AC
28065
28066@cindex breakpoint commands for @sc{gdb/mi}
28067@cindex @sc{gdb/mi}, breakpoint commands
28068This section documents @sc{gdb/mi} commands for manipulating
28069breakpoints.
28070
28071@subheading The @code{-break-after} Command
28072@findex -break-after
28073
28074@subsubheading Synopsis
28075
28076@smallexample
28077 -break-after @var{number} @var{count}
28078@end smallexample
28079
28080The breakpoint number @var{number} is not in effect until it has been
28081hit @var{count} times. To see how this is reflected in the output of
28082the @samp{-break-list} command, see the description of the
28083@samp{-break-list} command below.
28084
28085@subsubheading @value{GDBN} Command
28086
28087The corresponding @value{GDBN} command is @samp{ignore}.
28088
28089@subsubheading Example
28090
28091@smallexample
594fe323 28092(gdb)
922fbb7b 28093-break-insert main
a47ec5fe
AR
28094^done,bkpt=@{number="1",type="breakpoint",disp="keep",
28095enabled="y",addr="0x000100d0",func="main",file="hello.c",
948d5102 28096fullname="/home/foo/hello.c",line="5",times="0"@}
594fe323 28097(gdb)
922fbb7b
AC
28098-break-after 1 3
28099~
28100^done
594fe323 28101(gdb)
922fbb7b
AC
28102-break-list
28103^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28104hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28105@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28106@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28107@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28108@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28109@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28110body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28111addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28112line="5",times="0",ignore="3"@}]@}
594fe323 28113(gdb)
922fbb7b
AC
28114@end smallexample
28115
28116@ignore
28117@subheading The @code{-break-catch} Command
28118@findex -break-catch
48cb2d85 28119@end ignore
922fbb7b
AC
28120
28121@subheading The @code{-break-commands} Command
28122@findex -break-commands
922fbb7b 28123
48cb2d85
VP
28124@subsubheading Synopsis
28125
28126@smallexample
28127 -break-commands @var{number} [ @var{command1} ... @var{commandN} ]
28128@end smallexample
28129
28130Specifies the CLI commands that should be executed when breakpoint
28131@var{number} is hit. The parameters @var{command1} to @var{commandN}
28132are the commands. If no command is specified, any previously-set
28133commands are cleared. @xref{Break Commands}. Typical use of this
28134functionality is tracing a program, that is, printing of values of
28135some variables whenever breakpoint is hit and then continuing.
28136
28137@subsubheading @value{GDBN} Command
28138
28139The corresponding @value{GDBN} command is @samp{commands}.
28140
28141@subsubheading Example
28142
28143@smallexample
28144(gdb)
28145-break-insert main
28146^done,bkpt=@{number="1",type="breakpoint",disp="keep",
28147enabled="y",addr="0x000100d0",func="main",file="hello.c",
28148fullname="/home/foo/hello.c",line="5",times="0"@}
28149(gdb)
28150-break-commands 1 "print v" "continue"
28151^done
28152(gdb)
28153@end smallexample
922fbb7b
AC
28154
28155@subheading The @code{-break-condition} Command
28156@findex -break-condition
28157
28158@subsubheading Synopsis
28159
28160@smallexample
28161 -break-condition @var{number} @var{expr}
28162@end smallexample
28163
28164Breakpoint @var{number} will stop the program only if the condition in
28165@var{expr} is true. The condition becomes part of the
28166@samp{-break-list} output (see the description of the @samp{-break-list}
28167command below).
28168
28169@subsubheading @value{GDBN} Command
28170
28171The corresponding @value{GDBN} command is @samp{condition}.
28172
28173@subsubheading Example
28174
28175@smallexample
594fe323 28176(gdb)
922fbb7b
AC
28177-break-condition 1 1
28178^done
594fe323 28179(gdb)
922fbb7b
AC
28180-break-list
28181^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28182hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28183@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28184@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28185@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28186@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28187@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28188body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28189addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28190line="5",cond="1",times="0",ignore="3"@}]@}
594fe323 28191(gdb)
922fbb7b
AC
28192@end smallexample
28193
28194@subheading The @code{-break-delete} Command
28195@findex -break-delete
28196
28197@subsubheading Synopsis
28198
28199@smallexample
28200 -break-delete ( @var{breakpoint} )+
28201@end smallexample
28202
28203Delete the breakpoint(s) whose number(s) are specified in the argument
28204list. This is obviously reflected in the breakpoint list.
28205
79a6e687 28206@subsubheading @value{GDBN} Command
922fbb7b
AC
28207
28208The corresponding @value{GDBN} command is @samp{delete}.
28209
28210@subsubheading Example
28211
28212@smallexample
594fe323 28213(gdb)
922fbb7b
AC
28214-break-delete 1
28215^done
594fe323 28216(gdb)
922fbb7b
AC
28217-break-list
28218^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
28219hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28220@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28221@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28222@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28223@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28224@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28225body=[]@}
594fe323 28226(gdb)
922fbb7b
AC
28227@end smallexample
28228
28229@subheading The @code{-break-disable} Command
28230@findex -break-disable
28231
28232@subsubheading Synopsis
28233
28234@smallexample
28235 -break-disable ( @var{breakpoint} )+
28236@end smallexample
28237
28238Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
28239break list is now set to @samp{n} for the named @var{breakpoint}(s).
28240
28241@subsubheading @value{GDBN} Command
28242
28243The corresponding @value{GDBN} command is @samp{disable}.
28244
28245@subsubheading Example
28246
28247@smallexample
594fe323 28248(gdb)
922fbb7b
AC
28249-break-disable 2
28250^done
594fe323 28251(gdb)
922fbb7b
AC
28252-break-list
28253^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28254hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28255@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28256@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28257@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28258@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28259@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28260body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
948d5102
NR
28261addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28262line="5",times="0"@}]@}
594fe323 28263(gdb)
922fbb7b
AC
28264@end smallexample
28265
28266@subheading The @code{-break-enable} Command
28267@findex -break-enable
28268
28269@subsubheading Synopsis
28270
28271@smallexample
28272 -break-enable ( @var{breakpoint} )+
28273@end smallexample
28274
28275Enable (previously disabled) @var{breakpoint}(s).
28276
28277@subsubheading @value{GDBN} Command
28278
28279The corresponding @value{GDBN} command is @samp{enable}.
28280
28281@subsubheading Example
28282
28283@smallexample
594fe323 28284(gdb)
922fbb7b
AC
28285-break-enable 2
28286^done
594fe323 28287(gdb)
922fbb7b
AC
28288-break-list
28289^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28290hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28291@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28292@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28293@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28294@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28295@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28296body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28297addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28298line="5",times="0"@}]@}
594fe323 28299(gdb)
922fbb7b
AC
28300@end smallexample
28301
28302@subheading The @code{-break-info} Command
28303@findex -break-info
28304
28305@subsubheading Synopsis
28306
28307@smallexample
28308 -break-info @var{breakpoint}
28309@end smallexample
28310
28311@c REDUNDANT???
28312Get information about a single breakpoint.
28313
79a6e687 28314@subsubheading @value{GDBN} Command
922fbb7b
AC
28315
28316The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
28317
28318@subsubheading Example
28319N.A.
28320
28321@subheading The @code{-break-insert} Command
28322@findex -break-insert
28323
28324@subsubheading Synopsis
28325
28326@smallexample
18148017 28327 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ]
922fbb7b 28328 [ -c @var{condition} ] [ -i @var{ignore-count} ]
472a2379 28329 [ -p @var{thread-id} ] [ @var{location} ]
922fbb7b
AC
28330@end smallexample
28331
28332@noindent
afe8ab22 28333If specified, @var{location}, can be one of:
922fbb7b
AC
28334
28335@itemize @bullet
28336@item function
28337@c @item +offset
28338@c @item -offset
28339@c @item linenum
28340@item filename:linenum
28341@item filename:function
28342@item *address
28343@end itemize
28344
28345The possible optional parameters of this command are:
28346
28347@table @samp
28348@item -t
948d5102 28349Insert a temporary breakpoint.
922fbb7b
AC
28350@item -h
28351Insert a hardware breakpoint.
afe8ab22
VP
28352@item -f
28353If @var{location} cannot be parsed (for example if it
28354refers to unknown files or functions), create a pending
28355breakpoint. Without this flag, @value{GDBN} will report
28356an error, and won't create a breakpoint, if @var{location}
28357cannot be parsed.
41447f92
VP
28358@item -d
28359Create a disabled breakpoint.
18148017
VP
28360@item -a
28361Create a tracepoint. @xref{Tracepoints}. When this parameter
28362is used together with @samp{-h}, a fast tracepoint is created.
472a2379
KS
28363@item -c @var{condition}
28364Make the breakpoint conditional on @var{condition}.
28365@item -i @var{ignore-count}
28366Initialize the @var{ignore-count}.
28367@item -p @var{thread-id}
28368Restrict the breakpoint to the specified @var{thread-id}.
922fbb7b
AC
28369@end table
28370
28371@subsubheading Result
28372
28373The result is in the form:
28374
28375@smallexample
948d5102
NR
28376^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
28377enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filename}",
ef21caaf
NR
28378fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{threadno},]
28379times="@var{times}"@}
922fbb7b
AC
28380@end smallexample
28381
28382@noindent
948d5102
NR
28383where @var{number} is the @value{GDBN} number for this breakpoint,
28384@var{funcname} is the name of the function where the breakpoint was
28385inserted, @var{filename} is the name of the source file which contains
28386this function, @var{lineno} is the source line number within that file
28387and @var{times} the number of times that the breakpoint has been hit
28388(always 0 for -break-insert but may be greater for -break-info or -break-list
28389which use the same output).
922fbb7b
AC
28390
28391Note: this format is open to change.
28392@c An out-of-band breakpoint instead of part of the result?
28393
28394@subsubheading @value{GDBN} Command
28395
28396The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
496ee73e 28397@samp{hbreak}, and @samp{thbreak}. @c and @samp{rbreak}.
922fbb7b
AC
28398
28399@subsubheading Example
28400
28401@smallexample
594fe323 28402(gdb)
922fbb7b 28403-break-insert main
948d5102
NR
28404^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
28405fullname="/home/foo/recursive2.c,line="4",times="0"@}
594fe323 28406(gdb)
922fbb7b 28407-break-insert -t foo
948d5102
NR
28408^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
28409fullname="/home/foo/recursive2.c,line="11",times="0"@}
594fe323 28410(gdb)
922fbb7b
AC
28411-break-list
28412^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28413hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28414@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28415@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28416@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28417@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28418@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28419body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28420addr="0x0001072c", func="main",file="recursive2.c",
28421fullname="/home/foo/recursive2.c,"line="4",times="0"@},
922fbb7b 28422bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
948d5102
NR
28423addr="0x00010774",func="foo",file="recursive2.c",
28424fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
594fe323 28425(gdb)
496ee73e
KS
28426@c -break-insert -r foo.*
28427@c ~int foo(int, int);
28428@c ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
28429@c "fullname="/home/foo/recursive2.c",line="11",times="0"@}
28430@c (gdb)
922fbb7b
AC
28431@end smallexample
28432
28433@subheading The @code{-break-list} Command
28434@findex -break-list
28435
28436@subsubheading Synopsis
28437
28438@smallexample
28439 -break-list
28440@end smallexample
28441
28442Displays the list of inserted breakpoints, showing the following fields:
28443
28444@table @samp
28445@item Number
28446number of the breakpoint
28447@item Type
28448type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
28449@item Disposition
28450should the breakpoint be deleted or disabled when it is hit: @samp{keep}
28451or @samp{nokeep}
28452@item Enabled
28453is the breakpoint enabled or no: @samp{y} or @samp{n}
28454@item Address
28455memory location at which the breakpoint is set
28456@item What
28457logical location of the breakpoint, expressed by function name, file
28458name, line number
28459@item Times
28460number of times the breakpoint has been hit
28461@end table
28462
28463If there are no breakpoints or watchpoints, the @code{BreakpointTable}
28464@code{body} field is an empty list.
28465
28466@subsubheading @value{GDBN} Command
28467
28468The corresponding @value{GDBN} command is @samp{info break}.
28469
28470@subsubheading Example
28471
28472@smallexample
594fe323 28473(gdb)
922fbb7b
AC
28474-break-list
28475^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28476hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28477@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28478@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28479@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28480@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28481@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28482body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28483addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
28484bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28485addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
28486line="13",times="0"@}]@}
594fe323 28487(gdb)
922fbb7b
AC
28488@end smallexample
28489
28490Here's an example of the result when there are no breakpoints:
28491
28492@smallexample
594fe323 28493(gdb)
922fbb7b
AC
28494-break-list
28495^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
28496hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28497@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28498@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28499@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28500@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28501@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28502body=[]@}
594fe323 28503(gdb)
922fbb7b
AC
28504@end smallexample
28505
18148017
VP
28506@subheading The @code{-break-passcount} Command
28507@findex -break-passcount
28508
28509@subsubheading Synopsis
28510
28511@smallexample
28512 -break-passcount @var{tracepoint-number} @var{passcount}
28513@end smallexample
28514
28515Set the passcount for tracepoint @var{tracepoint-number} to
28516@var{passcount}. If the breakpoint referred to by @var{tracepoint-number}
28517is not a tracepoint, error is emitted. This corresponds to CLI
28518command @samp{passcount}.
28519
922fbb7b
AC
28520@subheading The @code{-break-watch} Command
28521@findex -break-watch
28522
28523@subsubheading Synopsis
28524
28525@smallexample
28526 -break-watch [ -a | -r ]
28527@end smallexample
28528
28529Create a watchpoint. With the @samp{-a} option it will create an
d3e8051b 28530@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a
922fbb7b 28531read from or on a write to the memory location. With the @samp{-r}
d3e8051b 28532option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will
922fbb7b
AC
28533trigger only when the memory location is accessed for reading. Without
28534either of the options, the watchpoint created is a regular watchpoint,
d3e8051b 28535i.e., it will trigger when the memory location is accessed for writing.
79a6e687 28536@xref{Set Watchpoints, , Setting Watchpoints}.
922fbb7b
AC
28537
28538Note that @samp{-break-list} will report a single list of watchpoints and
28539breakpoints inserted.
28540
28541@subsubheading @value{GDBN} Command
28542
28543The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
28544@samp{rwatch}.
28545
28546@subsubheading Example
28547
28548Setting a watchpoint on a variable in the @code{main} function:
28549
28550@smallexample
594fe323 28551(gdb)
922fbb7b
AC
28552-break-watch x
28553^done,wpt=@{number="2",exp="x"@}
594fe323 28554(gdb)
922fbb7b
AC
28555-exec-continue
28556^running
0869d01b
NR
28557(gdb)
28558*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
922fbb7b 28559value=@{old="-268439212",new="55"@},
76ff342d 28560frame=@{func="main",args=[],file="recursive2.c",
948d5102 28561fullname="/home/foo/bar/recursive2.c",line="5"@}
594fe323 28562(gdb)
922fbb7b
AC
28563@end smallexample
28564
28565Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
28566the program execution twice: first for the variable changing value, then
28567for the watchpoint going out of scope.
28568
28569@smallexample
594fe323 28570(gdb)
922fbb7b
AC
28571-break-watch C
28572^done,wpt=@{number="5",exp="C"@}
594fe323 28573(gdb)
922fbb7b
AC
28574-exec-continue
28575^running
0869d01b
NR
28576(gdb)
28577*stopped,reason="watchpoint-trigger",
922fbb7b
AC
28578wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
28579frame=@{func="callee4",args=[],
76ff342d
DJ
28580file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28581fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 28582(gdb)
922fbb7b
AC
28583-exec-continue
28584^running
0869d01b
NR
28585(gdb)
28586*stopped,reason="watchpoint-scope",wpnum="5",
922fbb7b
AC
28587frame=@{func="callee3",args=[@{name="strarg",
28588value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
28589file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28590fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 28591(gdb)
922fbb7b
AC
28592@end smallexample
28593
28594Listing breakpoints and watchpoints, at different points in the program
28595execution. Note that once the watchpoint goes out of scope, it is
28596deleted.
28597
28598@smallexample
594fe323 28599(gdb)
922fbb7b
AC
28600-break-watch C
28601^done,wpt=@{number="2",exp="C"@}
594fe323 28602(gdb)
922fbb7b
AC
28603-break-list
28604^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28605hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28606@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28607@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28608@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28609@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28610@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28611body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28612addr="0x00010734",func="callee4",
948d5102
NR
28613file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28614fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
922fbb7b
AC
28615bkpt=@{number="2",type="watchpoint",disp="keep",
28616enabled="y",addr="",what="C",times="0"@}]@}
594fe323 28617(gdb)
922fbb7b
AC
28618-exec-continue
28619^running
0869d01b
NR
28620(gdb)
28621*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
922fbb7b
AC
28622value=@{old="-276895068",new="3"@},
28623frame=@{func="callee4",args=[],
76ff342d
DJ
28624file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28625fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 28626(gdb)
922fbb7b
AC
28627-break-list
28628^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28629hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28630@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28631@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28632@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28633@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28634@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28635body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28636addr="0x00010734",func="callee4",
948d5102
NR
28637file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28638fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
922fbb7b
AC
28639bkpt=@{number="2",type="watchpoint",disp="keep",
28640enabled="y",addr="",what="C",times="-5"@}]@}
594fe323 28641(gdb)
922fbb7b
AC
28642-exec-continue
28643^running
28644^done,reason="watchpoint-scope",wpnum="2",
28645frame=@{func="callee3",args=[@{name="strarg",
28646value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
28647file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28648fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 28649(gdb)
922fbb7b
AC
28650-break-list
28651^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28652hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28653@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28654@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28655@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28656@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28657@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28658body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28659addr="0x00010734",func="callee4",
948d5102
NR
28660file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28661fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
28662times="1"@}]@}
594fe323 28663(gdb)
922fbb7b
AC
28664@end smallexample
28665
28666@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
28667@node GDB/MI Program Context
28668@section @sc{gdb/mi} Program Context
922fbb7b 28669
a2c02241
NR
28670@subheading The @code{-exec-arguments} Command
28671@findex -exec-arguments
922fbb7b 28672
922fbb7b
AC
28673
28674@subsubheading Synopsis
28675
28676@smallexample
a2c02241 28677 -exec-arguments @var{args}
922fbb7b
AC
28678@end smallexample
28679
a2c02241
NR
28680Set the inferior program arguments, to be used in the next
28681@samp{-exec-run}.
922fbb7b 28682
a2c02241 28683@subsubheading @value{GDBN} Command
922fbb7b 28684
a2c02241 28685The corresponding @value{GDBN} command is @samp{set args}.
922fbb7b 28686
a2c02241 28687@subsubheading Example
922fbb7b 28688
fbc5282e
MK
28689@smallexample
28690(gdb)
28691-exec-arguments -v word
28692^done
28693(gdb)
28694@end smallexample
922fbb7b 28695
a2c02241 28696
9901a55b 28697@ignore
a2c02241
NR
28698@subheading The @code{-exec-show-arguments} Command
28699@findex -exec-show-arguments
28700
28701@subsubheading Synopsis
28702
28703@smallexample
28704 -exec-show-arguments
28705@end smallexample
28706
28707Print the arguments of the program.
922fbb7b
AC
28708
28709@subsubheading @value{GDBN} Command
28710
a2c02241 28711The corresponding @value{GDBN} command is @samp{show args}.
922fbb7b
AC
28712
28713@subsubheading Example
a2c02241 28714N.A.
9901a55b 28715@end ignore
922fbb7b 28716
922fbb7b 28717
a2c02241
NR
28718@subheading The @code{-environment-cd} Command
28719@findex -environment-cd
922fbb7b 28720
a2c02241 28721@subsubheading Synopsis
922fbb7b
AC
28722
28723@smallexample
a2c02241 28724 -environment-cd @var{pathdir}
922fbb7b
AC
28725@end smallexample
28726
a2c02241 28727Set @value{GDBN}'s working directory.
922fbb7b 28728
a2c02241 28729@subsubheading @value{GDBN} Command
922fbb7b 28730
a2c02241
NR
28731The corresponding @value{GDBN} command is @samp{cd}.
28732
28733@subsubheading Example
922fbb7b
AC
28734
28735@smallexample
594fe323 28736(gdb)
a2c02241
NR
28737-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
28738^done
594fe323 28739(gdb)
922fbb7b
AC
28740@end smallexample
28741
28742
a2c02241
NR
28743@subheading The @code{-environment-directory} Command
28744@findex -environment-directory
922fbb7b
AC
28745
28746@subsubheading Synopsis
28747
28748@smallexample
a2c02241 28749 -environment-directory [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
28750@end smallexample
28751
a2c02241
NR
28752Add directories @var{pathdir} to beginning of search path for source files.
28753If the @samp{-r} option is used, the search path is reset to the default
28754search path. If directories @var{pathdir} are supplied in addition to the
28755@samp{-r} option, the search path is first reset and then addition
28756occurs as normal.
28757Multiple directories may be specified, separated by blanks. Specifying
28758multiple directories in a single command
28759results in the directories added to the beginning of the
28760search path in the same order they were presented in the command.
28761If blanks are needed as
28762part of a directory name, double-quotes should be used around
28763the name. In the command output, the path will show up separated
d3e8051b 28764by the system directory-separator character. The directory-separator
a2c02241
NR
28765character must not be used
28766in any directory name.
28767If no directories are specified, the current search path is displayed.
922fbb7b
AC
28768
28769@subsubheading @value{GDBN} Command
28770
a2c02241 28771The corresponding @value{GDBN} command is @samp{dir}.
922fbb7b
AC
28772
28773@subsubheading Example
28774
922fbb7b 28775@smallexample
594fe323 28776(gdb)
a2c02241
NR
28777-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
28778^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 28779(gdb)
a2c02241
NR
28780-environment-directory ""
28781^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 28782(gdb)
a2c02241
NR
28783-environment-directory -r /home/jjohnstn/src/gdb /usr/src
28784^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
594fe323 28785(gdb)
a2c02241
NR
28786-environment-directory -r
28787^done,source-path="$cdir:$cwd"
594fe323 28788(gdb)
922fbb7b
AC
28789@end smallexample
28790
28791
a2c02241
NR
28792@subheading The @code{-environment-path} Command
28793@findex -environment-path
922fbb7b
AC
28794
28795@subsubheading Synopsis
28796
28797@smallexample
a2c02241 28798 -environment-path [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
28799@end smallexample
28800
a2c02241
NR
28801Add directories @var{pathdir} to beginning of search path for object files.
28802If the @samp{-r} option is used, the search path is reset to the original
28803search path that existed at gdb start-up. If directories @var{pathdir} are
28804supplied in addition to the
28805@samp{-r} option, the search path is first reset and then addition
28806occurs as normal.
28807Multiple directories may be specified, separated by blanks. Specifying
28808multiple directories in a single command
28809results in the directories added to the beginning of the
28810search path in the same order they were presented in the command.
28811If blanks are needed as
28812part of a directory name, double-quotes should be used around
28813the name. In the command output, the path will show up separated
d3e8051b 28814by the system directory-separator character. The directory-separator
a2c02241
NR
28815character must not be used
28816in any directory name.
28817If no directories are specified, the current path is displayed.
28818
922fbb7b
AC
28819
28820@subsubheading @value{GDBN} Command
28821
a2c02241 28822The corresponding @value{GDBN} command is @samp{path}.
922fbb7b
AC
28823
28824@subsubheading Example
28825
922fbb7b 28826@smallexample
594fe323 28827(gdb)
a2c02241
NR
28828-environment-path
28829^done,path="/usr/bin"
594fe323 28830(gdb)
a2c02241
NR
28831-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
28832^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
594fe323 28833(gdb)
a2c02241
NR
28834-environment-path -r /usr/local/bin
28835^done,path="/usr/local/bin:/usr/bin"
594fe323 28836(gdb)
922fbb7b
AC
28837@end smallexample
28838
28839
a2c02241
NR
28840@subheading The @code{-environment-pwd} Command
28841@findex -environment-pwd
922fbb7b
AC
28842
28843@subsubheading Synopsis
28844
28845@smallexample
a2c02241 28846 -environment-pwd
922fbb7b
AC
28847@end smallexample
28848
a2c02241 28849Show the current working directory.
922fbb7b 28850
79a6e687 28851@subsubheading @value{GDBN} Command
922fbb7b 28852
a2c02241 28853The corresponding @value{GDBN} command is @samp{pwd}.
922fbb7b
AC
28854
28855@subsubheading Example
28856
922fbb7b 28857@smallexample
594fe323 28858(gdb)
a2c02241
NR
28859-environment-pwd
28860^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
594fe323 28861(gdb)
922fbb7b
AC
28862@end smallexample
28863
a2c02241
NR
28864@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28865@node GDB/MI Thread Commands
28866@section @sc{gdb/mi} Thread Commands
28867
28868
28869@subheading The @code{-thread-info} Command
28870@findex -thread-info
922fbb7b
AC
28871
28872@subsubheading Synopsis
28873
28874@smallexample
8e8901c5 28875 -thread-info [ @var{thread-id} ]
922fbb7b
AC
28876@end smallexample
28877
8e8901c5
VP
28878Reports information about either a specific thread, if
28879the @var{thread-id} parameter is present, or about all
28880threads. When printing information about all threads,
28881also reports the current thread.
28882
79a6e687 28883@subsubheading @value{GDBN} Command
922fbb7b 28884
8e8901c5
VP
28885The @samp{info thread} command prints the same information
28886about all threads.
922fbb7b 28887
4694da01 28888@subsubheading Result
922fbb7b 28889
4694da01
TT
28890The result is a list of threads. The following attributes are
28891defined for a given thread:
28892
28893@table @samp
28894@item current
28895This field exists only for the current thread. It has the value @samp{*}.
28896
28897@item id
28898The identifier that @value{GDBN} uses to refer to the thread.
28899
28900@item target-id
28901The identifier that the target uses to refer to the thread.
28902
28903@item details
28904Extra information about the thread, in a target-specific format. This
28905field is optional.
28906
28907@item name
28908The name of the thread. If the user specified a name using the
28909@code{thread name} command, then this name is given. Otherwise, if
28910@value{GDBN} can extract the thread name from the target, then that
28911name is given. If @value{GDBN} cannot find the thread name, then this
28912field is omitted.
28913
28914@item frame
28915The stack frame currently executing in the thread.
922fbb7b 28916
4694da01
TT
28917@item state
28918The thread's state. The @samp{state} field may have the following
28919values:
c3b108f7
VP
28920
28921@table @code
28922@item stopped
28923The thread is stopped. Frame information is available for stopped
28924threads.
28925
28926@item running
28927The thread is running. There's no frame information for running
28928threads.
28929
28930@end table
28931
4694da01
TT
28932@item core
28933If @value{GDBN} can find the CPU core on which this thread is running,
28934then this field is the core identifier. This field is optional.
28935
28936@end table
28937
28938@subsubheading Example
28939
28940@smallexample
28941-thread-info
28942^done,threads=[
28943@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
28944 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",
28945 args=[]@},state="running"@},
28946@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
28947 frame=@{level="0",addr="0x0804891f",func="foo",
28948 args=[@{name="i",value="10"@}],
28949 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},
28950 state="running"@}],
28951current-thread-id="1"
28952(gdb)
28953@end smallexample
28954
a2c02241
NR
28955@subheading The @code{-thread-list-ids} Command
28956@findex -thread-list-ids
922fbb7b 28957
a2c02241 28958@subsubheading Synopsis
922fbb7b 28959
a2c02241
NR
28960@smallexample
28961 -thread-list-ids
28962@end smallexample
922fbb7b 28963
a2c02241
NR
28964Produces a list of the currently known @value{GDBN} thread ids. At the
28965end of the list it also prints the total number of such threads.
922fbb7b 28966
c3b108f7
VP
28967This command is retained for historical reasons, the
28968@code{-thread-info} command should be used instead.
28969
922fbb7b
AC
28970@subsubheading @value{GDBN} Command
28971
a2c02241 28972Part of @samp{info threads} supplies the same information.
922fbb7b
AC
28973
28974@subsubheading Example
28975
922fbb7b 28976@smallexample
594fe323 28977(gdb)
a2c02241
NR
28978-thread-list-ids
28979^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
592375cd 28980current-thread-id="1",number-of-threads="3"
594fe323 28981(gdb)
922fbb7b
AC
28982@end smallexample
28983
a2c02241
NR
28984
28985@subheading The @code{-thread-select} Command
28986@findex -thread-select
922fbb7b
AC
28987
28988@subsubheading Synopsis
28989
28990@smallexample
a2c02241 28991 -thread-select @var{threadnum}
922fbb7b
AC
28992@end smallexample
28993
a2c02241
NR
28994Make @var{threadnum} the current thread. It prints the number of the new
28995current thread, and the topmost frame for that thread.
922fbb7b 28996
c3b108f7
VP
28997This command is deprecated in favor of explicitly using the
28998@samp{--thread} option to each command.
28999
922fbb7b
AC
29000@subsubheading @value{GDBN} Command
29001
a2c02241 29002The corresponding @value{GDBN} command is @samp{thread}.
922fbb7b
AC
29003
29004@subsubheading Example
922fbb7b
AC
29005
29006@smallexample
594fe323 29007(gdb)
a2c02241
NR
29008-exec-next
29009^running
594fe323 29010(gdb)
a2c02241
NR
29011*stopped,reason="end-stepping-range",thread-id="2",line="187",
29012file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
594fe323 29013(gdb)
a2c02241
NR
29014-thread-list-ids
29015^done,
29016thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
29017number-of-threads="3"
594fe323 29018(gdb)
a2c02241
NR
29019-thread-select 3
29020^done,new-thread-id="3",
29021frame=@{level="0",func="vprintf",
29022args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
29023@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
594fe323 29024(gdb)
922fbb7b
AC
29025@end smallexample
29026
5d77fe44
JB
29027@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29028@node GDB/MI Ada Tasking Commands
29029@section @sc{gdb/mi} Ada Tasking Commands
29030
29031@subheading The @code{-ada-task-info} Command
29032@findex -ada-task-info
29033
29034@subsubheading Synopsis
29035
29036@smallexample
29037 -ada-task-info [ @var{task-id} ]
29038@end smallexample
29039
29040Reports information about either a specific Ada task, if the
29041@var{task-id} parameter is present, or about all Ada tasks.
29042
29043@subsubheading @value{GDBN} Command
29044
29045The @samp{info tasks} command prints the same information
29046about all Ada tasks (@pxref{Ada Tasks}).
29047
29048@subsubheading Result
29049
29050The result is a table of Ada tasks. The following columns are
29051defined for each Ada task:
29052
29053@table @samp
29054@item current
29055This field exists only for the current thread. It has the value @samp{*}.
29056
29057@item id
29058The identifier that @value{GDBN} uses to refer to the Ada task.
29059
29060@item task-id
29061The identifier that the target uses to refer to the Ada task.
29062
29063@item thread-id
29064The identifier of the thread corresponding to the Ada task.
29065
29066This field should always exist, as Ada tasks are always implemented
29067on top of a thread. But if @value{GDBN} cannot find this corresponding
29068thread for any reason, the field is omitted.
29069
29070@item parent-id
29071This field exists only when the task was created by another task.
29072In this case, it provides the ID of the parent task.
29073
29074@item priority
29075The base priority of the task.
29076
29077@item state
29078The current state of the task. For a detailed description of the
29079possible states, see @ref{Ada Tasks}.
29080
29081@item name
29082The name of the task.
29083
29084@end table
29085
29086@subsubheading Example
29087
29088@smallexample
29089-ada-task-info
29090^done,tasks=@{nr_rows="3",nr_cols="8",
29091hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@},
29092@{width="3",alignment="1",col_name="id",colhdr="ID"@},
29093@{width="9",alignment="1",col_name="task-id",colhdr="TID"@},
29094@{width="4",alignment="1",col_name="thread-id",colhdr=""@},
29095@{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@},
29096@{width="3",alignment="1",col_name="priority",colhdr="Pri"@},
29097@{width="22",alignment="-1",col_name="state",colhdr="State"@},
29098@{width="1",alignment="2",col_name="name",colhdr="Name"@}],
29099body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48",
29100state="Child Termination Wait",name="main_task"@}]@}
29101(gdb)
29102@end smallexample
29103
a2c02241
NR
29104@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29105@node GDB/MI Program Execution
29106@section @sc{gdb/mi} Program Execution
922fbb7b 29107
ef21caaf 29108These are the asynchronous commands which generate the out-of-band
3f94c067 29109record @samp{*stopped}. Currently @value{GDBN} only really executes
ef21caaf
NR
29110asynchronously with remote targets and this interaction is mimicked in
29111other cases.
922fbb7b 29112
922fbb7b
AC
29113@subheading The @code{-exec-continue} Command
29114@findex -exec-continue
29115
29116@subsubheading Synopsis
29117
29118@smallexample
540aa8e7 29119 -exec-continue [--reverse] [--all|--thread-group N]
922fbb7b
AC
29120@end smallexample
29121
540aa8e7
MS
29122Resumes the execution of the inferior program, which will continue
29123to execute until it reaches a debugger stop event. If the
29124@samp{--reverse} option is specified, execution resumes in reverse until
29125it reaches a stop event. Stop events may include
29126@itemize @bullet
29127@item
29128breakpoints or watchpoints
29129@item
29130signals or exceptions
29131@item
29132the end of the process (or its beginning under @samp{--reverse})
29133@item
29134the end or beginning of a replay log if one is being used.
29135@end itemize
29136In all-stop mode (@pxref{All-Stop
29137Mode}), may resume only one thread, or all threads, depending on the
29138value of the @samp{scheduler-locking} variable. If @samp{--all} is
a79b8f6e 29139specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is
540aa8e7
MS
29140ignored in all-stop mode. If the @samp{--thread-group} options is
29141specified, then all threads in that thread group are resumed.
922fbb7b
AC
29142
29143@subsubheading @value{GDBN} Command
29144
29145The corresponding @value{GDBN} corresponding is @samp{continue}.
29146
29147@subsubheading Example
29148
29149@smallexample
29150-exec-continue
29151^running
594fe323 29152(gdb)
922fbb7b 29153@@Hello world
a47ec5fe
AR
29154*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{
29155func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
29156line="13"@}
594fe323 29157(gdb)
922fbb7b
AC
29158@end smallexample
29159
29160
29161@subheading The @code{-exec-finish} Command
29162@findex -exec-finish
29163
29164@subsubheading Synopsis
29165
29166@smallexample
540aa8e7 29167 -exec-finish [--reverse]
922fbb7b
AC
29168@end smallexample
29169
ef21caaf
NR
29170Resumes the execution of the inferior program until the current
29171function is exited. Displays the results returned by the function.
540aa8e7
MS
29172If the @samp{--reverse} option is specified, resumes the reverse
29173execution of the inferior program until the point where current
29174function was called.
922fbb7b
AC
29175
29176@subsubheading @value{GDBN} Command
29177
29178The corresponding @value{GDBN} command is @samp{finish}.
29179
29180@subsubheading Example
29181
29182Function returning @code{void}.
29183
29184@smallexample
29185-exec-finish
29186^running
594fe323 29187(gdb)
922fbb7b
AC
29188@@hello from foo
29189*stopped,reason="function-finished",frame=@{func="main",args=[],
948d5102 29190file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@}
594fe323 29191(gdb)
922fbb7b
AC
29192@end smallexample
29193
29194Function returning other than @code{void}. The name of the internal
29195@value{GDBN} variable storing the result is printed, together with the
29196value itself.
29197
29198@smallexample
29199-exec-finish
29200^running
594fe323 29201(gdb)
922fbb7b
AC
29202*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
29203args=[@{name="a",value="1"],@{name="b",value="9"@}@},
948d5102 29204file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
922fbb7b 29205gdb-result-var="$1",return-value="0"
594fe323 29206(gdb)
922fbb7b
AC
29207@end smallexample
29208
29209
29210@subheading The @code{-exec-interrupt} Command
29211@findex -exec-interrupt
29212
29213@subsubheading Synopsis
29214
29215@smallexample
c3b108f7 29216 -exec-interrupt [--all|--thread-group N]
922fbb7b
AC
29217@end smallexample
29218
ef21caaf
NR
29219Interrupts the background execution of the target. Note how the token
29220associated with the stop message is the one for the execution command
29221that has been interrupted. The token for the interrupt itself only
29222appears in the @samp{^done} output. If the user is trying to
922fbb7b
AC
29223interrupt a non-running program, an error message will be printed.
29224
c3b108f7
VP
29225Note that when asynchronous execution is enabled, this command is
29226asynchronous just like other execution commands. That is, first the
29227@samp{^done} response will be printed, and the target stop will be
29228reported after that using the @samp{*stopped} notification.
29229
29230In non-stop mode, only the context thread is interrupted by default.
a79b8f6e
VP
29231All threads (in all inferiors) will be interrupted if the
29232@samp{--all} option is specified. If the @samp{--thread-group}
29233option is specified, all threads in that group will be interrupted.
c3b108f7 29234
922fbb7b
AC
29235@subsubheading @value{GDBN} Command
29236
29237The corresponding @value{GDBN} command is @samp{interrupt}.
29238
29239@subsubheading Example
29240
29241@smallexample
594fe323 29242(gdb)
922fbb7b
AC
29243111-exec-continue
29244111^running
29245
594fe323 29246(gdb)
922fbb7b
AC
29247222-exec-interrupt
29248222^done
594fe323 29249(gdb)
922fbb7b 29250111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
76ff342d 29251frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
948d5102 29252fullname="/home/foo/bar/try.c",line="13"@}
594fe323 29253(gdb)
922fbb7b 29254
594fe323 29255(gdb)
922fbb7b
AC
29256-exec-interrupt
29257^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
594fe323 29258(gdb)
922fbb7b
AC
29259@end smallexample
29260
83eba9b7
VP
29261@subheading The @code{-exec-jump} Command
29262@findex -exec-jump
29263
29264@subsubheading Synopsis
29265
29266@smallexample
29267 -exec-jump @var{location}
29268@end smallexample
29269
29270Resumes execution of the inferior program at the location specified by
29271parameter. @xref{Specify Location}, for a description of the
29272different forms of @var{location}.
29273
29274@subsubheading @value{GDBN} Command
29275
29276The corresponding @value{GDBN} command is @samp{jump}.
29277
29278@subsubheading Example
29279
29280@smallexample
29281-exec-jump foo.c:10
29282*running,thread-id="all"
29283^running
29284@end smallexample
29285
922fbb7b
AC
29286
29287@subheading The @code{-exec-next} Command
29288@findex -exec-next
29289
29290@subsubheading Synopsis
29291
29292@smallexample
540aa8e7 29293 -exec-next [--reverse]
922fbb7b
AC
29294@end smallexample
29295
ef21caaf
NR
29296Resumes execution of the inferior program, stopping when the beginning
29297of the next source line is reached.
922fbb7b 29298
540aa8e7
MS
29299If the @samp{--reverse} option is specified, resumes reverse execution
29300of the inferior program, stopping at the beginning of the previous
29301source line. If you issue this command on the first line of a
29302function, it will take you back to the caller of that function, to the
29303source line where the function was called.
29304
29305
922fbb7b
AC
29306@subsubheading @value{GDBN} Command
29307
29308The corresponding @value{GDBN} command is @samp{next}.
29309
29310@subsubheading Example
29311
29312@smallexample
29313-exec-next
29314^running
594fe323 29315(gdb)
922fbb7b 29316*stopped,reason="end-stepping-range",line="8",file="hello.c"
594fe323 29317(gdb)
922fbb7b
AC
29318@end smallexample
29319
29320
29321@subheading The @code{-exec-next-instruction} Command
29322@findex -exec-next-instruction
29323
29324@subsubheading Synopsis
29325
29326@smallexample
540aa8e7 29327 -exec-next-instruction [--reverse]
922fbb7b
AC
29328@end smallexample
29329
ef21caaf
NR
29330Executes one machine instruction. If the instruction is a function
29331call, continues until the function returns. If the program stops at an
29332instruction in the middle of a source line, the address will be
29333printed as well.
922fbb7b 29334
540aa8e7
MS
29335If the @samp{--reverse} option is specified, resumes reverse execution
29336of the inferior program, stopping at the previous instruction. If the
29337previously executed instruction was a return from another function,
29338it will continue to execute in reverse until the call to that function
29339(from the current stack frame) is reached.
29340
922fbb7b
AC
29341@subsubheading @value{GDBN} Command
29342
29343The corresponding @value{GDBN} command is @samp{nexti}.
29344
29345@subsubheading Example
29346
29347@smallexample
594fe323 29348(gdb)
922fbb7b
AC
29349-exec-next-instruction
29350^running
29351
594fe323 29352(gdb)
922fbb7b
AC
29353*stopped,reason="end-stepping-range",
29354addr="0x000100d4",line="5",file="hello.c"
594fe323 29355(gdb)
922fbb7b
AC
29356@end smallexample
29357
29358
29359@subheading The @code{-exec-return} Command
29360@findex -exec-return
29361
29362@subsubheading Synopsis
29363
29364@smallexample
29365 -exec-return
29366@end smallexample
29367
29368Makes current function return immediately. Doesn't execute the inferior.
29369Displays the new current frame.
29370
29371@subsubheading @value{GDBN} Command
29372
29373The corresponding @value{GDBN} command is @samp{return}.
29374
29375@subsubheading Example
29376
29377@smallexample
594fe323 29378(gdb)
922fbb7b
AC
29379200-break-insert callee4
29380200^done,bkpt=@{number="1",addr="0x00010734",
29381file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 29382(gdb)
922fbb7b
AC
29383000-exec-run
29384000^running
594fe323 29385(gdb)
a47ec5fe 29386000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
922fbb7b 29387frame=@{func="callee4",args=[],
76ff342d
DJ
29388file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29389fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 29390(gdb)
922fbb7b
AC
29391205-break-delete
29392205^done
594fe323 29393(gdb)
922fbb7b
AC
29394111-exec-return
29395111^done,frame=@{level="0",func="callee3",
29396args=[@{name="strarg",
29397value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
29398file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29399fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 29400(gdb)
922fbb7b
AC
29401@end smallexample
29402
29403
29404@subheading The @code{-exec-run} Command
29405@findex -exec-run
29406
29407@subsubheading Synopsis
29408
29409@smallexample
a79b8f6e 29410 -exec-run [--all | --thread-group N]
922fbb7b
AC
29411@end smallexample
29412
ef21caaf
NR
29413Starts execution of the inferior from the beginning. The inferior
29414executes until either a breakpoint is encountered or the program
29415exits. In the latter case the output will include an exit code, if
29416the program has exited exceptionally.
922fbb7b 29417
a79b8f6e
VP
29418When no option is specified, the current inferior is started. If the
29419@samp{--thread-group} option is specified, it should refer to a thread
29420group of type @samp{process}, and that thread group will be started.
29421If the @samp{--all} option is specified, then all inferiors will be started.
29422
922fbb7b
AC
29423@subsubheading @value{GDBN} Command
29424
29425The corresponding @value{GDBN} command is @samp{run}.
29426
ef21caaf 29427@subsubheading Examples
922fbb7b
AC
29428
29429@smallexample
594fe323 29430(gdb)
922fbb7b
AC
29431-break-insert main
29432^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
594fe323 29433(gdb)
922fbb7b
AC
29434-exec-run
29435^running
594fe323 29436(gdb)
a47ec5fe 29437*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
76ff342d 29438frame=@{func="main",args=[],file="recursive2.c",
948d5102 29439fullname="/home/foo/bar/recursive2.c",line="4"@}
594fe323 29440(gdb)
922fbb7b
AC
29441@end smallexample
29442
ef21caaf
NR
29443@noindent
29444Program exited normally:
29445
29446@smallexample
594fe323 29447(gdb)
ef21caaf
NR
29448-exec-run
29449^running
594fe323 29450(gdb)
ef21caaf
NR
29451x = 55
29452*stopped,reason="exited-normally"
594fe323 29453(gdb)
ef21caaf
NR
29454@end smallexample
29455
29456@noindent
29457Program exited exceptionally:
29458
29459@smallexample
594fe323 29460(gdb)
ef21caaf
NR
29461-exec-run
29462^running
594fe323 29463(gdb)
ef21caaf
NR
29464x = 55
29465*stopped,reason="exited",exit-code="01"
594fe323 29466(gdb)
ef21caaf
NR
29467@end smallexample
29468
29469Another way the program can terminate is if it receives a signal such as
29470@code{SIGINT}. In this case, @sc{gdb/mi} displays this:
29471
29472@smallexample
594fe323 29473(gdb)
ef21caaf
NR
29474*stopped,reason="exited-signalled",signal-name="SIGINT",
29475signal-meaning="Interrupt"
29476@end smallexample
29477
922fbb7b 29478
a2c02241
NR
29479@c @subheading -exec-signal
29480
29481
29482@subheading The @code{-exec-step} Command
29483@findex -exec-step
922fbb7b
AC
29484
29485@subsubheading Synopsis
29486
29487@smallexample
540aa8e7 29488 -exec-step [--reverse]
922fbb7b
AC
29489@end smallexample
29490
a2c02241
NR
29491Resumes execution of the inferior program, stopping when the beginning
29492of the next source line is reached, if the next source line is not a
29493function call. If it is, stop at the first instruction of the called
540aa8e7
MS
29494function. If the @samp{--reverse} option is specified, resumes reverse
29495execution of the inferior program, stopping at the beginning of the
29496previously executed source line.
922fbb7b
AC
29497
29498@subsubheading @value{GDBN} Command
29499
a2c02241 29500The corresponding @value{GDBN} command is @samp{step}.
922fbb7b
AC
29501
29502@subsubheading Example
29503
29504Stepping into a function:
29505
29506@smallexample
29507-exec-step
29508^running
594fe323 29509(gdb)
922fbb7b
AC
29510*stopped,reason="end-stepping-range",
29511frame=@{func="foo",args=[@{name="a",value="10"@},
76ff342d 29512@{name="b",value="0"@}],file="recursive2.c",
948d5102 29513fullname="/home/foo/bar/recursive2.c",line="11"@}
594fe323 29514(gdb)
922fbb7b
AC
29515@end smallexample
29516
29517Regular stepping:
29518
29519@smallexample
29520-exec-step
29521^running
594fe323 29522(gdb)
922fbb7b 29523*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
594fe323 29524(gdb)
922fbb7b
AC
29525@end smallexample
29526
29527
29528@subheading The @code{-exec-step-instruction} Command
29529@findex -exec-step-instruction
29530
29531@subsubheading Synopsis
29532
29533@smallexample
540aa8e7 29534 -exec-step-instruction [--reverse]
922fbb7b
AC
29535@end smallexample
29536
540aa8e7
MS
29537Resumes the inferior which executes one machine instruction. If the
29538@samp{--reverse} option is specified, resumes reverse execution of the
29539inferior program, stopping at the previously executed instruction.
29540The output, once @value{GDBN} has stopped, will vary depending on
29541whether we have stopped in the middle of a source line or not. In the
29542former case, the address at which the program stopped will be printed
29543as well.
922fbb7b
AC
29544
29545@subsubheading @value{GDBN} Command
29546
29547The corresponding @value{GDBN} command is @samp{stepi}.
29548
29549@subsubheading Example
29550
29551@smallexample
594fe323 29552(gdb)
922fbb7b
AC
29553-exec-step-instruction
29554^running
29555
594fe323 29556(gdb)
922fbb7b 29557*stopped,reason="end-stepping-range",
76ff342d 29558frame=@{func="foo",args=[],file="try.c",
948d5102 29559fullname="/home/foo/bar/try.c",line="10"@}
594fe323 29560(gdb)
922fbb7b
AC
29561-exec-step-instruction
29562^running
29563
594fe323 29564(gdb)
922fbb7b 29565*stopped,reason="end-stepping-range",
76ff342d 29566frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
948d5102 29567fullname="/home/foo/bar/try.c",line="10"@}
594fe323 29568(gdb)
922fbb7b
AC
29569@end smallexample
29570
29571
29572@subheading The @code{-exec-until} Command
29573@findex -exec-until
29574
29575@subsubheading Synopsis
29576
29577@smallexample
29578 -exec-until [ @var{location} ]
29579@end smallexample
29580
ef21caaf
NR
29581Executes the inferior until the @var{location} specified in the
29582argument is reached. If there is no argument, the inferior executes
29583until a source line greater than the current one is reached. The
29584reason for stopping in this case will be @samp{location-reached}.
922fbb7b
AC
29585
29586@subsubheading @value{GDBN} Command
29587
29588The corresponding @value{GDBN} command is @samp{until}.
29589
29590@subsubheading Example
29591
29592@smallexample
594fe323 29593(gdb)
922fbb7b
AC
29594-exec-until recursive2.c:6
29595^running
594fe323 29596(gdb)
922fbb7b
AC
29597x = 55
29598*stopped,reason="location-reached",frame=@{func="main",args=[],
948d5102 29599file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@}
594fe323 29600(gdb)
922fbb7b
AC
29601@end smallexample
29602
29603@ignore
29604@subheading -file-clear
29605Is this going away????
29606@end ignore
29607
351ff01a 29608@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
29609@node GDB/MI Stack Manipulation
29610@section @sc{gdb/mi} Stack Manipulation Commands
351ff01a 29611
922fbb7b 29612
a2c02241
NR
29613@subheading The @code{-stack-info-frame} Command
29614@findex -stack-info-frame
922fbb7b
AC
29615
29616@subsubheading Synopsis
29617
29618@smallexample
a2c02241 29619 -stack-info-frame
922fbb7b
AC
29620@end smallexample
29621
a2c02241 29622Get info on the selected frame.
922fbb7b
AC
29623
29624@subsubheading @value{GDBN} Command
29625
a2c02241
NR
29626The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
29627(without arguments).
922fbb7b
AC
29628
29629@subsubheading Example
29630
29631@smallexample
594fe323 29632(gdb)
a2c02241
NR
29633-stack-info-frame
29634^done,frame=@{level="1",addr="0x0001076c",func="callee3",
29635file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29636fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
594fe323 29637(gdb)
922fbb7b
AC
29638@end smallexample
29639
a2c02241
NR
29640@subheading The @code{-stack-info-depth} Command
29641@findex -stack-info-depth
922fbb7b
AC
29642
29643@subsubheading Synopsis
29644
29645@smallexample
a2c02241 29646 -stack-info-depth [ @var{max-depth} ]
922fbb7b
AC
29647@end smallexample
29648
a2c02241
NR
29649Return the depth of the stack. If the integer argument @var{max-depth}
29650is specified, do not count beyond @var{max-depth} frames.
922fbb7b
AC
29651
29652@subsubheading @value{GDBN} Command
29653
a2c02241 29654There's no equivalent @value{GDBN} command.
922fbb7b
AC
29655
29656@subsubheading Example
29657
a2c02241
NR
29658For a stack with frame levels 0 through 11:
29659
922fbb7b 29660@smallexample
594fe323 29661(gdb)
a2c02241
NR
29662-stack-info-depth
29663^done,depth="12"
594fe323 29664(gdb)
a2c02241
NR
29665-stack-info-depth 4
29666^done,depth="4"
594fe323 29667(gdb)
a2c02241
NR
29668-stack-info-depth 12
29669^done,depth="12"
594fe323 29670(gdb)
a2c02241
NR
29671-stack-info-depth 11
29672^done,depth="11"
594fe323 29673(gdb)
a2c02241
NR
29674-stack-info-depth 13
29675^done,depth="12"
594fe323 29676(gdb)
922fbb7b
AC
29677@end smallexample
29678
a2c02241
NR
29679@subheading The @code{-stack-list-arguments} Command
29680@findex -stack-list-arguments
922fbb7b
AC
29681
29682@subsubheading Synopsis
29683
29684@smallexample
3afae151 29685 -stack-list-arguments @var{print-values}
a2c02241 29686 [ @var{low-frame} @var{high-frame} ]
922fbb7b
AC
29687@end smallexample
29688
a2c02241
NR
29689Display a list of the arguments for the frames between @var{low-frame}
29690and @var{high-frame} (inclusive). If @var{low-frame} and
2f1acb09
VP
29691@var{high-frame} are not provided, list the arguments for the whole
29692call stack. If the two arguments are equal, show the single frame
29693at the corresponding level. It is an error if @var{low-frame} is
29694larger than the actual number of frames. On the other hand,
29695@var{high-frame} may be larger than the actual number of frames, in
29696which case only existing frames will be returned.
a2c02241 29697
3afae151
VP
29698If @var{print-values} is 0 or @code{--no-values}, print only the names of
29699the variables; if it is 1 or @code{--all-values}, print also their
29700values; and if it is 2 or @code{--simple-values}, print the name,
29701type and value for simple data types, and the name and type for arrays,
29702structures and unions.
922fbb7b 29703
b3372f91
VP
29704Use of this command to obtain arguments in a single frame is
29705deprecated in favor of the @samp{-stack-list-variables} command.
29706
922fbb7b
AC
29707@subsubheading @value{GDBN} Command
29708
a2c02241
NR
29709@value{GDBN} does not have an equivalent command. @code{gdbtk} has a
29710@samp{gdb_get_args} command which partially overlaps with the
29711functionality of @samp{-stack-list-arguments}.
922fbb7b
AC
29712
29713@subsubheading Example
922fbb7b 29714
a2c02241 29715@smallexample
594fe323 29716(gdb)
a2c02241
NR
29717-stack-list-frames
29718^done,
29719stack=[
29720frame=@{level="0",addr="0x00010734",func="callee4",
29721file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29722fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
29723frame=@{level="1",addr="0x0001076c",func="callee3",
29724file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29725fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
29726frame=@{level="2",addr="0x0001078c",func="callee2",
29727file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29728fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
29729frame=@{level="3",addr="0x000107b4",func="callee1",
29730file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29731fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
29732frame=@{level="4",addr="0x000107e0",func="main",
29733file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29734fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
594fe323 29735(gdb)
a2c02241
NR
29736-stack-list-arguments 0
29737^done,
29738stack-args=[
29739frame=@{level="0",args=[]@},
29740frame=@{level="1",args=[name="strarg"]@},
29741frame=@{level="2",args=[name="intarg",name="strarg"]@},
29742frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
29743frame=@{level="4",args=[]@}]
594fe323 29744(gdb)
a2c02241
NR
29745-stack-list-arguments 1
29746^done,
29747stack-args=[
29748frame=@{level="0",args=[]@},
29749frame=@{level="1",
29750 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
29751frame=@{level="2",args=[
29752@{name="intarg",value="2"@},
29753@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
29754@{frame=@{level="3",args=[
29755@{name="intarg",value="2"@},
29756@{name="strarg",value="0x11940 \"A string argument.\""@},
29757@{name="fltarg",value="3.5"@}]@},
29758frame=@{level="4",args=[]@}]
594fe323 29759(gdb)
a2c02241
NR
29760-stack-list-arguments 0 2 2
29761^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
594fe323 29762(gdb)
a2c02241
NR
29763-stack-list-arguments 1 2 2
29764^done,stack-args=[frame=@{level="2",
29765args=[@{name="intarg",value="2"@},
29766@{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
594fe323 29767(gdb)
a2c02241
NR
29768@end smallexample
29769
29770@c @subheading -stack-list-exception-handlers
922fbb7b 29771
a2c02241
NR
29772
29773@subheading The @code{-stack-list-frames} Command
29774@findex -stack-list-frames
1abaf70c
BR
29775
29776@subsubheading Synopsis
29777
29778@smallexample
a2c02241 29779 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
1abaf70c
BR
29780@end smallexample
29781
a2c02241
NR
29782List the frames currently on the stack. For each frame it displays the
29783following info:
29784
29785@table @samp
29786@item @var{level}
d3e8051b 29787The frame number, 0 being the topmost frame, i.e., the innermost function.
a2c02241
NR
29788@item @var{addr}
29789The @code{$pc} value for that frame.
29790@item @var{func}
29791Function name.
29792@item @var{file}
29793File name of the source file where the function lives.
7d288aaa
TT
29794@item @var{fullname}
29795The full file name of the source file where the function lives.
a2c02241
NR
29796@item @var{line}
29797Line number corresponding to the @code{$pc}.
7d288aaa
TT
29798@item @var{from}
29799The shared library where this function is defined. This is only given
29800if the frame's function is not known.
a2c02241
NR
29801@end table
29802
29803If invoked without arguments, this command prints a backtrace for the
29804whole stack. If given two integer arguments, it shows the frames whose
29805levels are between the two arguments (inclusive). If the two arguments
2ab1eb7a
VP
29806are equal, it shows the single frame at the corresponding level. It is
29807an error if @var{low-frame} is larger than the actual number of
a5451f4e 29808frames. On the other hand, @var{high-frame} may be larger than the
2ab1eb7a 29809actual number of frames, in which case only existing frames will be returned.
1abaf70c
BR
29810
29811@subsubheading @value{GDBN} Command
29812
a2c02241 29813The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
1abaf70c
BR
29814
29815@subsubheading Example
29816
a2c02241
NR
29817Full stack backtrace:
29818
1abaf70c 29819@smallexample
594fe323 29820(gdb)
a2c02241
NR
29821-stack-list-frames
29822^done,stack=
29823[frame=@{level="0",addr="0x0001076c",func="foo",
29824 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@},
29825frame=@{level="1",addr="0x000107a4",func="foo",
29826 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29827frame=@{level="2",addr="0x000107a4",func="foo",
29828 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29829frame=@{level="3",addr="0x000107a4",func="foo",
29830 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29831frame=@{level="4",addr="0x000107a4",func="foo",
29832 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29833frame=@{level="5",addr="0x000107a4",func="foo",
29834 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29835frame=@{level="6",addr="0x000107a4",func="foo",
29836 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29837frame=@{level="7",addr="0x000107a4",func="foo",
29838 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29839frame=@{level="8",addr="0x000107a4",func="foo",
29840 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29841frame=@{level="9",addr="0x000107a4",func="foo",
29842 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29843frame=@{level="10",addr="0x000107a4",func="foo",
29844 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29845frame=@{level="11",addr="0x00010738",func="main",
29846 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}]
594fe323 29847(gdb)
1abaf70c
BR
29848@end smallexample
29849
a2c02241 29850Show frames between @var{low_frame} and @var{high_frame}:
1abaf70c 29851
a2c02241 29852@smallexample
594fe323 29853(gdb)
a2c02241
NR
29854-stack-list-frames 3 5
29855^done,stack=
29856[frame=@{level="3",addr="0x000107a4",func="foo",
29857 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29858frame=@{level="4",addr="0x000107a4",func="foo",
29859 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29860frame=@{level="5",addr="0x000107a4",func="foo",
29861 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 29862(gdb)
a2c02241 29863@end smallexample
922fbb7b 29864
a2c02241 29865Show a single frame:
922fbb7b
AC
29866
29867@smallexample
594fe323 29868(gdb)
a2c02241
NR
29869-stack-list-frames 3 3
29870^done,stack=
29871[frame=@{level="3",addr="0x000107a4",func="foo",
29872 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 29873(gdb)
922fbb7b
AC
29874@end smallexample
29875
922fbb7b 29876
a2c02241
NR
29877@subheading The @code{-stack-list-locals} Command
29878@findex -stack-list-locals
57c22c6c 29879
a2c02241 29880@subsubheading Synopsis
922fbb7b
AC
29881
29882@smallexample
a2c02241 29883 -stack-list-locals @var{print-values}
922fbb7b
AC
29884@end smallexample
29885
a2c02241
NR
29886Display the local variable names for the selected frame. If
29887@var{print-values} is 0 or @code{--no-values}, print only the names of
29888the variables; if it is 1 or @code{--all-values}, print also their
29889values; and if it is 2 or @code{--simple-values}, print the name,
3afae151 29890type and value for simple data types, and the name and type for arrays,
a2c02241
NR
29891structures and unions. In this last case, a frontend can immediately
29892display the value of simple data types and create variable objects for
d3e8051b 29893other data types when the user wishes to explore their values in
a2c02241 29894more detail.
922fbb7b 29895
b3372f91
VP
29896This command is deprecated in favor of the
29897@samp{-stack-list-variables} command.
29898
922fbb7b
AC
29899@subsubheading @value{GDBN} Command
29900
a2c02241 29901@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
922fbb7b
AC
29902
29903@subsubheading Example
922fbb7b
AC
29904
29905@smallexample
594fe323 29906(gdb)
a2c02241
NR
29907-stack-list-locals 0
29908^done,locals=[name="A",name="B",name="C"]
594fe323 29909(gdb)
a2c02241
NR
29910-stack-list-locals --all-values
29911^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
29912 @{name="C",value="@{1, 2, 3@}"@}]
29913-stack-list-locals --simple-values
29914^done,locals=[@{name="A",type="int",value="1"@},
29915 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
594fe323 29916(gdb)
922fbb7b
AC
29917@end smallexample
29918
b3372f91
VP
29919@subheading The @code{-stack-list-variables} Command
29920@findex -stack-list-variables
29921
29922@subsubheading Synopsis
29923
29924@smallexample
29925 -stack-list-variables @var{print-values}
29926@end smallexample
29927
29928Display the names of local variables and function arguments for the selected frame. If
29929@var{print-values} is 0 or @code{--no-values}, print only the names of
29930the variables; if it is 1 or @code{--all-values}, print also their
29931values; and if it is 2 or @code{--simple-values}, print the name,
3afae151 29932type and value for simple data types, and the name and type for arrays,
b3372f91
VP
29933structures and unions.
29934
29935@subsubheading Example
29936
29937@smallexample
29938(gdb)
29939-stack-list-variables --thread 1 --frame 0 --all-values
4f412fd0 29940^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}]
b3372f91
VP
29941(gdb)
29942@end smallexample
29943
922fbb7b 29944
a2c02241
NR
29945@subheading The @code{-stack-select-frame} Command
29946@findex -stack-select-frame
922fbb7b
AC
29947
29948@subsubheading Synopsis
29949
29950@smallexample
a2c02241 29951 -stack-select-frame @var{framenum}
922fbb7b
AC
29952@end smallexample
29953
a2c02241
NR
29954Change the selected frame. Select a different frame @var{framenum} on
29955the stack.
922fbb7b 29956
c3b108f7
VP
29957This command in deprecated in favor of passing the @samp{--frame}
29958option to every command.
29959
922fbb7b
AC
29960@subsubheading @value{GDBN} Command
29961
a2c02241
NR
29962The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
29963@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
922fbb7b
AC
29964
29965@subsubheading Example
29966
29967@smallexample
594fe323 29968(gdb)
a2c02241 29969-stack-select-frame 2
922fbb7b 29970^done
594fe323 29971(gdb)
922fbb7b
AC
29972@end smallexample
29973
29974@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
29975@node GDB/MI Variable Objects
29976@section @sc{gdb/mi} Variable Objects
922fbb7b 29977
a1b5960f 29978@ignore
922fbb7b 29979
a2c02241 29980@subheading Motivation for Variable Objects in @sc{gdb/mi}
922fbb7b 29981
a2c02241
NR
29982For the implementation of a variable debugger window (locals, watched
29983expressions, etc.), we are proposing the adaptation of the existing code
29984used by @code{Insight}.
922fbb7b 29985
a2c02241 29986The two main reasons for that are:
922fbb7b 29987
a2c02241
NR
29988@enumerate 1
29989@item
29990It has been proven in practice (it is already on its second generation).
922fbb7b 29991
a2c02241
NR
29992@item
29993It will shorten development time (needless to say how important it is
29994now).
29995@end enumerate
922fbb7b 29996
a2c02241
NR
29997The original interface was designed to be used by Tcl code, so it was
29998slightly changed so it could be used through @sc{gdb/mi}. This section
29999describes the @sc{gdb/mi} operations that will be available and gives some
30000hints about their use.
922fbb7b 30001
a2c02241
NR
30002@emph{Note}: In addition to the set of operations described here, we
30003expect the @sc{gui} implementation of a variable window to require, at
30004least, the following operations:
922fbb7b 30005
a2c02241
NR
30006@itemize @bullet
30007@item @code{-gdb-show} @code{output-radix}
30008@item @code{-stack-list-arguments}
30009@item @code{-stack-list-locals}
30010@item @code{-stack-select-frame}
30011@end itemize
922fbb7b 30012
a1b5960f
VP
30013@end ignore
30014
c8b2f53c 30015@subheading Introduction to Variable Objects
922fbb7b 30016
a2c02241 30017@cindex variable objects in @sc{gdb/mi}
c8b2f53c
VP
30018
30019Variable objects are "object-oriented" MI interface for examining and
30020changing values of expressions. Unlike some other MI interfaces that
30021work with expressions, variable objects are specifically designed for
30022simple and efficient presentation in the frontend. A variable object
30023is identified by string name. When a variable object is created, the
30024frontend specifies the expression for that variable object. The
30025expression can be a simple variable, or it can be an arbitrary complex
30026expression, and can even involve CPU registers. After creating a
30027variable object, the frontend can invoke other variable object
30028operations---for example to obtain or change the value of a variable
30029object, or to change display format.
30030
30031Variable objects have hierarchical tree structure. Any variable object
30032that corresponds to a composite type, such as structure in C, has
30033a number of child variable objects, for example corresponding to each
30034element of a structure. A child variable object can itself have
30035children, recursively. Recursion ends when we reach
25d5ea92
VP
30036leaf variable objects, which always have built-in types. Child variable
30037objects are created only by explicit request, so if a frontend
30038is not interested in the children of a particular variable object, no
30039child will be created.
c8b2f53c
VP
30040
30041For a leaf variable object it is possible to obtain its value as a
30042string, or set the value from a string. String value can be also
30043obtained for a non-leaf variable object, but it's generally a string
30044that only indicates the type of the object, and does not list its
30045contents. Assignment to a non-leaf variable object is not allowed.
30046
30047A frontend does not need to read the values of all variable objects each time
30048the program stops. Instead, MI provides an update command that lists all
30049variable objects whose values has changed since the last update
30050operation. This considerably reduces the amount of data that must
25d5ea92
VP
30051be transferred to the frontend. As noted above, children variable
30052objects are created on demand, and only leaf variable objects have a
30053real value. As result, gdb will read target memory only for leaf
30054variables that frontend has created.
30055
30056The automatic update is not always desirable. For example, a frontend
30057might want to keep a value of some expression for future reference,
30058and never update it. For another example, fetching memory is
30059relatively slow for embedded targets, so a frontend might want
30060to disable automatic update for the variables that are either not
30061visible on the screen, or ``closed''. This is possible using so
30062called ``frozen variable objects''. Such variable objects are never
30063implicitly updated.
922fbb7b 30064
c3b108f7
VP
30065Variable objects can be either @dfn{fixed} or @dfn{floating}. For the
30066fixed variable object, the expression is parsed when the variable
30067object is created, including associating identifiers to specific
30068variables. The meaning of expression never changes. For a floating
30069variable object the values of variables whose names appear in the
30070expressions are re-evaluated every time in the context of the current
30071frame. Consider this example:
30072
30073@smallexample
30074void do_work(...)
30075@{
30076 struct work_state state;
30077
30078 if (...)
30079 do_work(...);
30080@}
30081@end smallexample
30082
30083If a fixed variable object for the @code{state} variable is created in
7a9dd1b2 30084this function, and we enter the recursive call, the variable
c3b108f7
VP
30085object will report the value of @code{state} in the top-level
30086@code{do_work} invocation. On the other hand, a floating variable
30087object will report the value of @code{state} in the current frame.
30088
30089If an expression specified when creating a fixed variable object
30090refers to a local variable, the variable object becomes bound to the
30091thread and frame in which the variable object is created. When such
30092variable object is updated, @value{GDBN} makes sure that the
30093thread/frame combination the variable object is bound to still exists,
30094and re-evaluates the variable object in context of that thread/frame.
30095
a2c02241
NR
30096The following is the complete set of @sc{gdb/mi} operations defined to
30097access this functionality:
922fbb7b 30098
a2c02241
NR
30099@multitable @columnfractions .4 .6
30100@item @strong{Operation}
30101@tab @strong{Description}
922fbb7b 30102
0cc7d26f
TT
30103@item @code{-enable-pretty-printing}
30104@tab enable Python-based pretty-printing
a2c02241
NR
30105@item @code{-var-create}
30106@tab create a variable object
30107@item @code{-var-delete}
22d8a470 30108@tab delete the variable object and/or its children
a2c02241
NR
30109@item @code{-var-set-format}
30110@tab set the display format of this variable
30111@item @code{-var-show-format}
30112@tab show the display format of this variable
30113@item @code{-var-info-num-children}
30114@tab tells how many children this object has
30115@item @code{-var-list-children}
30116@tab return a list of the object's children
30117@item @code{-var-info-type}
30118@tab show the type of this variable object
30119@item @code{-var-info-expression}
02142340
VP
30120@tab print parent-relative expression that this variable object represents
30121@item @code{-var-info-path-expression}
30122@tab print full expression that this variable object represents
a2c02241
NR
30123@item @code{-var-show-attributes}
30124@tab is this variable editable? does it exist here?
30125@item @code{-var-evaluate-expression}
30126@tab get the value of this variable
30127@item @code{-var-assign}
30128@tab set the value of this variable
30129@item @code{-var-update}
30130@tab update the variable and its children
25d5ea92
VP
30131@item @code{-var-set-frozen}
30132@tab set frozeness attribute
0cc7d26f
TT
30133@item @code{-var-set-update-range}
30134@tab set range of children to display on update
a2c02241 30135@end multitable
922fbb7b 30136
a2c02241
NR
30137In the next subsection we describe each operation in detail and suggest
30138how it can be used.
922fbb7b 30139
a2c02241 30140@subheading Description And Use of Operations on Variable Objects
922fbb7b 30141
0cc7d26f
TT
30142@subheading The @code{-enable-pretty-printing} Command
30143@findex -enable-pretty-printing
30144
30145@smallexample
30146-enable-pretty-printing
30147@end smallexample
30148
30149@value{GDBN} allows Python-based visualizers to affect the output of the
30150MI variable object commands. However, because there was no way to
30151implement this in a fully backward-compatible way, a front end must
30152request that this functionality be enabled.
30153
30154Once enabled, this feature cannot be disabled.
30155
30156Note that if Python support has not been compiled into @value{GDBN},
30157this command will still succeed (and do nothing).
30158
f43030c4
TT
30159This feature is currently (as of @value{GDBN} 7.0) experimental, and
30160may work differently in future versions of @value{GDBN}.
30161
a2c02241
NR
30162@subheading The @code{-var-create} Command
30163@findex -var-create
ef21caaf 30164
a2c02241 30165@subsubheading Synopsis
ef21caaf 30166
a2c02241
NR
30167@smallexample
30168 -var-create @{@var{name} | "-"@}
c3b108f7 30169 @{@var{frame-addr} | "*" | "@@"@} @var{expression}
a2c02241
NR
30170@end smallexample
30171
30172This operation creates a variable object, which allows the monitoring of
30173a variable, the result of an expression, a memory cell or a CPU
30174register.
ef21caaf 30175
a2c02241
NR
30176The @var{name} parameter is the string by which the object can be
30177referenced. It must be unique. If @samp{-} is specified, the varobj
30178system will generate a string ``varNNNNNN'' automatically. It will be
c3b108f7 30179unique provided that one does not specify @var{name} of that format.
a2c02241 30180The command fails if a duplicate name is found.
ef21caaf 30181
a2c02241
NR
30182The frame under which the expression should be evaluated can be
30183specified by @var{frame-addr}. A @samp{*} indicates that the current
c3b108f7
VP
30184frame should be used. A @samp{@@} indicates that a floating variable
30185object must be created.
922fbb7b 30186
a2c02241
NR
30187@var{expression} is any expression valid on the current language set (must not
30188begin with a @samp{*}), or one of the following:
922fbb7b 30189
a2c02241
NR
30190@itemize @bullet
30191@item
30192@samp{*@var{addr}}, where @var{addr} is the address of a memory cell
922fbb7b 30193
a2c02241
NR
30194@item
30195@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
922fbb7b 30196
a2c02241
NR
30197@item
30198@samp{$@var{regname}} --- a CPU register name
30199@end itemize
922fbb7b 30200
0cc7d26f
TT
30201@cindex dynamic varobj
30202A varobj's contents may be provided by a Python-based pretty-printer. In this
30203case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs
30204have slightly different semantics in some cases. If the
30205@code{-enable-pretty-printing} command is not sent, then @value{GDBN}
30206will never create a dynamic varobj. This ensures backward
30207compatibility for existing clients.
30208
a2c02241 30209@subsubheading Result
922fbb7b 30210
0cc7d26f
TT
30211This operation returns attributes of the newly-created varobj. These
30212are:
30213
30214@table @samp
30215@item name
30216The name of the varobj.
30217
30218@item numchild
30219The number of children of the varobj. This number is not necessarily
30220reliable for a dynamic varobj. Instead, you must examine the
30221@samp{has_more} attribute.
30222
30223@item value
30224The varobj's scalar value. For a varobj whose type is some sort of
30225aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value
30226will not be interesting.
30227
30228@item type
30229The varobj's type. This is a string representation of the type, as
8264ba82
AG
30230would be printed by the @value{GDBN} CLI. If @samp{print object}
30231(@pxref{Print Settings, set print object}) is set to @code{on}, the
30232@emph{actual} (derived) type of the object is shown rather than the
30233@emph{declared} one.
0cc7d26f
TT
30234
30235@item thread-id
30236If a variable object is bound to a specific thread, then this is the
30237thread's identifier.
30238
30239@item has_more
30240For a dynamic varobj, this indicates whether there appear to be any
30241children available. For a non-dynamic varobj, this will be 0.
30242
30243@item dynamic
30244This attribute will be present and have the value @samp{1} if the
30245varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30246then this attribute will not be present.
30247
30248@item displayhint
30249A dynamic varobj can supply a display hint to the front end. The
30250value comes directly from the Python pretty-printer object's
4c374409 30251@code{display_hint} method. @xref{Pretty Printing API}.
0cc7d26f
TT
30252@end table
30253
30254Typical output will look like this:
922fbb7b
AC
30255
30256@smallexample
0cc7d26f
TT
30257 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}",
30258 has_more="@var{has_more}"
dcaaae04
NR
30259@end smallexample
30260
a2c02241
NR
30261
30262@subheading The @code{-var-delete} Command
30263@findex -var-delete
922fbb7b
AC
30264
30265@subsubheading Synopsis
30266
30267@smallexample
22d8a470 30268 -var-delete [ -c ] @var{name}
922fbb7b
AC
30269@end smallexample
30270
a2c02241 30271Deletes a previously created variable object and all of its children.
22d8a470 30272With the @samp{-c} option, just deletes the children.
922fbb7b 30273
a2c02241 30274Returns an error if the object @var{name} is not found.
922fbb7b 30275
922fbb7b 30276
a2c02241
NR
30277@subheading The @code{-var-set-format} Command
30278@findex -var-set-format
922fbb7b 30279
a2c02241 30280@subsubheading Synopsis
922fbb7b
AC
30281
30282@smallexample
a2c02241 30283 -var-set-format @var{name} @var{format-spec}
922fbb7b
AC
30284@end smallexample
30285
a2c02241
NR
30286Sets the output format for the value of the object @var{name} to be
30287@var{format-spec}.
30288
de051565 30289@anchor{-var-set-format}
a2c02241
NR
30290The syntax for the @var{format-spec} is as follows:
30291
30292@smallexample
30293 @var{format-spec} @expansion{}
30294 @{binary | decimal | hexadecimal | octal | natural@}
30295@end smallexample
30296
c8b2f53c
VP
30297The natural format is the default format choosen automatically
30298based on the variable type (like decimal for an @code{int}, hex
30299for pointers, etc.).
30300
30301For a variable with children, the format is set only on the
30302variable itself, and the children are not affected.
a2c02241
NR
30303
30304@subheading The @code{-var-show-format} Command
30305@findex -var-show-format
922fbb7b
AC
30306
30307@subsubheading Synopsis
30308
30309@smallexample
a2c02241 30310 -var-show-format @var{name}
922fbb7b
AC
30311@end smallexample
30312
a2c02241 30313Returns the format used to display the value of the object @var{name}.
922fbb7b 30314
a2c02241
NR
30315@smallexample
30316 @var{format} @expansion{}
30317 @var{format-spec}
30318@end smallexample
922fbb7b 30319
922fbb7b 30320
a2c02241
NR
30321@subheading The @code{-var-info-num-children} Command
30322@findex -var-info-num-children
30323
30324@subsubheading Synopsis
30325
30326@smallexample
30327 -var-info-num-children @var{name}
30328@end smallexample
30329
30330Returns the number of children of a variable object @var{name}:
30331
30332@smallexample
30333 numchild=@var{n}
30334@end smallexample
30335
0cc7d26f
TT
30336Note that this number is not completely reliable for a dynamic varobj.
30337It will return the current number of children, but more children may
30338be available.
30339
a2c02241
NR
30340
30341@subheading The @code{-var-list-children} Command
30342@findex -var-list-children
30343
30344@subsubheading Synopsis
30345
30346@smallexample
0cc7d26f 30347 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}]
a2c02241 30348@end smallexample
b569d230 30349@anchor{-var-list-children}
a2c02241
NR
30350
30351Return a list of the children of the specified variable object and
30352create variable objects for them, if they do not already exist. With
f5011d11 30353a single argument or if @var{print-values} has a value of 0 or
a2c02241
NR
30354@code{--no-values}, print only the names of the variables; if
30355@var{print-values} is 1 or @code{--all-values}, also print their
30356values; and if it is 2 or @code{--simple-values} print the name and
30357value for simple data types and just the name for arrays, structures
30358and unions.
922fbb7b 30359
0cc7d26f
TT
30360@var{from} and @var{to}, if specified, indicate the range of children
30361to report. If @var{from} or @var{to} is less than zero, the range is
30362reset and all children will be reported. Otherwise, children starting
30363at @var{from} (zero-based) and up to and excluding @var{to} will be
30364reported.
30365
30366If a child range is requested, it will only affect the current call to
30367@code{-var-list-children}, but not future calls to @code{-var-update}.
30368For this, you must instead use @code{-var-set-update-range}. The
30369intent of this approach is to enable a front end to implement any
30370update approach it likes; for example, scrolling a view may cause the
30371front end to request more children with @code{-var-list-children}, and
30372then the front end could call @code{-var-set-update-range} with a
30373different range to ensure that future updates are restricted to just
30374the visible items.
30375
b569d230
EZ
30376For each child the following results are returned:
30377
30378@table @var
30379
30380@item name
30381Name of the variable object created for this child.
30382
30383@item exp
30384The expression to be shown to the user by the front end to designate this child.
30385For example this may be the name of a structure member.
30386
0cc7d26f
TT
30387For a dynamic varobj, this value cannot be used to form an
30388expression. There is no way to do this at all with a dynamic varobj.
30389
b569d230
EZ
30390For C/C@t{++} structures there are several pseudo children returned to
30391designate access qualifiers. For these pseudo children @var{exp} is
30392@samp{public}, @samp{private}, or @samp{protected}. In this case the
30393type and value are not present.
30394
0cc7d26f
TT
30395A dynamic varobj will not report the access qualifying
30396pseudo-children, regardless of the language. This information is not
30397available at all with a dynamic varobj.
30398
b569d230 30399@item numchild
0cc7d26f
TT
30400Number of children this child has. For a dynamic varobj, this will be
304010.
b569d230
EZ
30402
30403@item type
8264ba82
AG
30404The type of the child. If @samp{print object}
30405(@pxref{Print Settings, set print object}) is set to @code{on}, the
30406@emph{actual} (derived) type of the object is shown rather than the
30407@emph{declared} one.
b569d230
EZ
30408
30409@item value
30410If values were requested, this is the value.
30411
30412@item thread-id
30413If this variable object is associated with a thread, this is the thread id.
30414Otherwise this result is not present.
30415
30416@item frozen
30417If the variable object is frozen, this variable will be present with a value of 1.
30418@end table
30419
0cc7d26f
TT
30420The result may have its own attributes:
30421
30422@table @samp
30423@item displayhint
30424A dynamic varobj can supply a display hint to the front end. The
30425value comes directly from the Python pretty-printer object's
4c374409 30426@code{display_hint} method. @xref{Pretty Printing API}.
0cc7d26f
TT
30427
30428@item has_more
30429This is an integer attribute which is nonzero if there are children
30430remaining after the end of the selected range.
30431@end table
30432
922fbb7b
AC
30433@subsubheading Example
30434
30435@smallexample
594fe323 30436(gdb)
a2c02241 30437 -var-list-children n
b569d230 30438 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 30439 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
594fe323 30440(gdb)
a2c02241 30441 -var-list-children --all-values n
b569d230 30442 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 30443 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
922fbb7b
AC
30444@end smallexample
30445
922fbb7b 30446
a2c02241
NR
30447@subheading The @code{-var-info-type} Command
30448@findex -var-info-type
922fbb7b 30449
a2c02241
NR
30450@subsubheading Synopsis
30451
30452@smallexample
30453 -var-info-type @var{name}
30454@end smallexample
30455
30456Returns the type of the specified variable @var{name}. The type is
30457returned as a string in the same format as it is output by the
30458@value{GDBN} CLI:
30459
30460@smallexample
30461 type=@var{typename}
30462@end smallexample
30463
30464
30465@subheading The @code{-var-info-expression} Command
30466@findex -var-info-expression
922fbb7b
AC
30467
30468@subsubheading Synopsis
30469
30470@smallexample
a2c02241 30471 -var-info-expression @var{name}
922fbb7b
AC
30472@end smallexample
30473
02142340
VP
30474Returns a string that is suitable for presenting this
30475variable object in user interface. The string is generally
30476not valid expression in the current language, and cannot be evaluated.
30477
30478For example, if @code{a} is an array, and variable object
30479@code{A} was created for @code{a}, then we'll get this output:
922fbb7b 30480
a2c02241 30481@smallexample
02142340
VP
30482(gdb) -var-info-expression A.1
30483^done,lang="C",exp="1"
a2c02241 30484@end smallexample
922fbb7b 30485
a2c02241 30486@noindent
02142340
VP
30487Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}.
30488
30489Note that the output of the @code{-var-list-children} command also
30490includes those expressions, so the @code{-var-info-expression} command
30491is of limited use.
30492
30493@subheading The @code{-var-info-path-expression} Command
30494@findex -var-info-path-expression
30495
30496@subsubheading Synopsis
30497
30498@smallexample
30499 -var-info-path-expression @var{name}
30500@end smallexample
30501
30502Returns an expression that can be evaluated in the current
30503context and will yield the same value that a variable object has.
30504Compare this with the @code{-var-info-expression} command, which
30505result can be used only for UI presentation. Typical use of
30506the @code{-var-info-path-expression} command is creating a
30507watchpoint from a variable object.
30508
0cc7d26f
TT
30509This command is currently not valid for children of a dynamic varobj,
30510and will give an error when invoked on one.
30511
02142340
VP
30512For example, suppose @code{C} is a C@t{++} class, derived from class
30513@code{Base}, and that the @code{Base} class has a member called
30514@code{m_size}. Assume a variable @code{c} is has the type of
30515@code{C} and a variable object @code{C} was created for variable
30516@code{c}. Then, we'll get this output:
30517@smallexample
30518(gdb) -var-info-path-expression C.Base.public.m_size
30519^done,path_expr=((Base)c).m_size)
30520@end smallexample
922fbb7b 30521
a2c02241
NR
30522@subheading The @code{-var-show-attributes} Command
30523@findex -var-show-attributes
922fbb7b 30524
a2c02241 30525@subsubheading Synopsis
922fbb7b 30526
a2c02241
NR
30527@smallexample
30528 -var-show-attributes @var{name}
30529@end smallexample
922fbb7b 30530
a2c02241 30531List attributes of the specified variable object @var{name}:
922fbb7b
AC
30532
30533@smallexample
a2c02241 30534 status=@var{attr} [ ( ,@var{attr} )* ]
922fbb7b
AC
30535@end smallexample
30536
a2c02241
NR
30537@noindent
30538where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
30539
30540@subheading The @code{-var-evaluate-expression} Command
30541@findex -var-evaluate-expression
30542
30543@subsubheading Synopsis
30544
30545@smallexample
de051565 30546 -var-evaluate-expression [-f @var{format-spec}] @var{name}
a2c02241
NR
30547@end smallexample
30548
30549Evaluates the expression that is represented by the specified variable
de051565
MK
30550object and returns its value as a string. The format of the string
30551can be specified with the @samp{-f} option. The possible values of
30552this option are the same as for @code{-var-set-format}
30553(@pxref{-var-set-format}). If the @samp{-f} option is not specified,
30554the current display format will be used. The current display format
30555can be changed using the @code{-var-set-format} command.
a2c02241
NR
30556
30557@smallexample
30558 value=@var{value}
30559@end smallexample
30560
30561Note that one must invoke @code{-var-list-children} for a variable
30562before the value of a child variable can be evaluated.
30563
30564@subheading The @code{-var-assign} Command
30565@findex -var-assign
30566
30567@subsubheading Synopsis
30568
30569@smallexample
30570 -var-assign @var{name} @var{expression}
30571@end smallexample
30572
30573Assigns the value of @var{expression} to the variable object specified
30574by @var{name}. The object must be @samp{editable}. If the variable's
30575value is altered by the assign, the variable will show up in any
30576subsequent @code{-var-update} list.
30577
30578@subsubheading Example
922fbb7b
AC
30579
30580@smallexample
594fe323 30581(gdb)
a2c02241
NR
30582-var-assign var1 3
30583^done,value="3"
594fe323 30584(gdb)
a2c02241
NR
30585-var-update *
30586^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
594fe323 30587(gdb)
922fbb7b
AC
30588@end smallexample
30589
a2c02241
NR
30590@subheading The @code{-var-update} Command
30591@findex -var-update
30592
30593@subsubheading Synopsis
30594
30595@smallexample
30596 -var-update [@var{print-values}] @{@var{name} | "*"@}
30597@end smallexample
30598
c8b2f53c
VP
30599Reevaluate the expressions corresponding to the variable object
30600@var{name} and all its direct and indirect children, and return the
36ece8b3
NR
30601list of variable objects whose values have changed; @var{name} must
30602be a root variable object. Here, ``changed'' means that the result of
30603@code{-var-evaluate-expression} before and after the
30604@code{-var-update} is different. If @samp{*} is used as the variable
9f708cb2
VP
30605object names, all existing variable objects are updated, except
30606for frozen ones (@pxref{-var-set-frozen}). The option
36ece8b3 30607@var{print-values} determines whether both names and values, or just
de051565 30608names are printed. The possible values of this option are the same
36ece8b3
NR
30609as for @code{-var-list-children} (@pxref{-var-list-children}). It is
30610recommended to use the @samp{--all-values} option, to reduce the
30611number of MI commands needed on each program stop.
c8b2f53c 30612
c3b108f7
VP
30613With the @samp{*} parameter, if a variable object is bound to a
30614currently running thread, it will not be updated, without any
30615diagnostic.
a2c02241 30616
0cc7d26f
TT
30617If @code{-var-set-update-range} was previously used on a varobj, then
30618only the selected range of children will be reported.
922fbb7b 30619
0cc7d26f
TT
30620@code{-var-update} reports all the changed varobjs in a tuple named
30621@samp{changelist}.
30622
30623Each item in the change list is itself a tuple holding:
30624
30625@table @samp
30626@item name
30627The name of the varobj.
30628
30629@item value
30630If values were requested for this update, then this field will be
30631present and will hold the value of the varobj.
922fbb7b 30632
0cc7d26f 30633@item in_scope
9f708cb2 30634@anchor{-var-update}
0cc7d26f 30635This field is a string which may take one of three values:
36ece8b3
NR
30636
30637@table @code
30638@item "true"
30639The variable object's current value is valid.
30640
30641@item "false"
30642The variable object does not currently hold a valid value but it may
30643hold one in the future if its associated expression comes back into
30644scope.
30645
30646@item "invalid"
30647The variable object no longer holds a valid value.
30648This can occur when the executable file being debugged has changed,
30649either through recompilation or by using the @value{GDBN} @code{file}
30650command. The front end should normally choose to delete these variable
30651objects.
30652@end table
30653
30654In the future new values may be added to this list so the front should
30655be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}.
30656
0cc7d26f
TT
30657@item type_changed
30658This is only present if the varobj is still valid. If the type
30659changed, then this will be the string @samp{true}; otherwise it will
30660be @samp{false}.
30661
7191c139
JB
30662When a varobj's type changes, its children are also likely to have
30663become incorrect. Therefore, the varobj's children are automatically
30664deleted when this attribute is @samp{true}. Also, the varobj's update
30665range, when set using the @code{-var-set-update-range} command, is
30666unset.
30667
0cc7d26f
TT
30668@item new_type
30669If the varobj's type changed, then this field will be present and will
30670hold the new type.
30671
30672@item new_num_children
30673For a dynamic varobj, if the number of children changed, or if the
30674type changed, this will be the new number of children.
30675
30676The @samp{numchild} field in other varobj responses is generally not
30677valid for a dynamic varobj -- it will show the number of children that
30678@value{GDBN} knows about, but because dynamic varobjs lazily
30679instantiate their children, this will not reflect the number of
30680children which may be available.
30681
30682The @samp{new_num_children} attribute only reports changes to the
30683number of children known by @value{GDBN}. This is the only way to
30684detect whether an update has removed children (which necessarily can
30685only happen at the end of the update range).
30686
30687@item displayhint
30688The display hint, if any.
30689
30690@item has_more
30691This is an integer value, which will be 1 if there are more children
30692available outside the varobj's update range.
30693
30694@item dynamic
30695This attribute will be present and have the value @samp{1} if the
30696varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30697then this attribute will not be present.
30698
30699@item new_children
30700If new children were added to a dynamic varobj within the selected
30701update range (as set by @code{-var-set-update-range}), then they will
30702be listed in this attribute.
30703@end table
30704
30705@subsubheading Example
30706
30707@smallexample
30708(gdb)
30709-var-assign var1 3
30710^done,value="3"
30711(gdb)
30712-var-update --all-values var1
30713^done,changelist=[@{name="var1",value="3",in_scope="true",
30714type_changed="false"@}]
30715(gdb)
30716@end smallexample
30717
25d5ea92
VP
30718@subheading The @code{-var-set-frozen} Command
30719@findex -var-set-frozen
9f708cb2 30720@anchor{-var-set-frozen}
25d5ea92
VP
30721
30722@subsubheading Synopsis
30723
30724@smallexample
9f708cb2 30725 -var-set-frozen @var{name} @var{flag}
25d5ea92
VP
30726@end smallexample
30727
9f708cb2 30728Set the frozenness flag on the variable object @var{name}. The
25d5ea92 30729@var{flag} parameter should be either @samp{1} to make the variable
9f708cb2 30730frozen or @samp{0} to make it unfrozen. If a variable object is
25d5ea92 30731frozen, then neither itself, nor any of its children, are
9f708cb2 30732implicitly updated by @code{-var-update} of
25d5ea92
VP
30733a parent variable or by @code{-var-update *}. Only
30734@code{-var-update} of the variable itself will update its value and
30735values of its children. After a variable object is unfrozen, it is
30736implicitly updated by all subsequent @code{-var-update} operations.
30737Unfreezing a variable does not update it, only subsequent
30738@code{-var-update} does.
30739
30740@subsubheading Example
30741
30742@smallexample
30743(gdb)
30744-var-set-frozen V 1
30745^done
30746(gdb)
30747@end smallexample
30748
0cc7d26f
TT
30749@subheading The @code{-var-set-update-range} command
30750@findex -var-set-update-range
30751@anchor{-var-set-update-range}
30752
30753@subsubheading Synopsis
30754
30755@smallexample
30756 -var-set-update-range @var{name} @var{from} @var{to}
30757@end smallexample
30758
30759Set the range of children to be returned by future invocations of
30760@code{-var-update}.
30761
30762@var{from} and @var{to} indicate the range of children to report. If
30763@var{from} or @var{to} is less than zero, the range is reset and all
30764children will be reported. Otherwise, children starting at @var{from}
30765(zero-based) and up to and excluding @var{to} will be reported.
30766
30767@subsubheading Example
30768
30769@smallexample
30770(gdb)
30771-var-set-update-range V 1 2
30772^done
30773@end smallexample
30774
b6313243
TT
30775@subheading The @code{-var-set-visualizer} command
30776@findex -var-set-visualizer
30777@anchor{-var-set-visualizer}
30778
30779@subsubheading Synopsis
30780
30781@smallexample
30782 -var-set-visualizer @var{name} @var{visualizer}
30783@end smallexample
30784
30785Set a visualizer for the variable object @var{name}.
30786
30787@var{visualizer} is the visualizer to use. The special value
30788@samp{None} means to disable any visualizer in use.
30789
30790If not @samp{None}, @var{visualizer} must be a Python expression.
30791This expression must evaluate to a callable object which accepts a
30792single argument. @value{GDBN} will call this object with the value of
30793the varobj @var{name} as an argument (this is done so that the same
30794Python pretty-printing code can be used for both the CLI and MI).
30795When called, this object must return an object which conforms to the
4c374409 30796pretty-printing interface (@pxref{Pretty Printing API}).
b6313243
TT
30797
30798The pre-defined function @code{gdb.default_visualizer} may be used to
30799select a visualizer by following the built-in process
30800(@pxref{Selecting Pretty-Printers}). This is done automatically when
30801a varobj is created, and so ordinarily is not needed.
30802
30803This feature is only available if Python support is enabled. The MI
30804command @code{-list-features} (@pxref{GDB/MI Miscellaneous Commands})
30805can be used to check this.
30806
30807@subsubheading Example
30808
30809Resetting the visualizer:
30810
30811@smallexample
30812(gdb)
30813-var-set-visualizer V None
30814^done
30815@end smallexample
30816
30817Reselecting the default (type-based) visualizer:
30818
30819@smallexample
30820(gdb)
30821-var-set-visualizer V gdb.default_visualizer
30822^done
30823@end smallexample
30824
30825Suppose @code{SomeClass} is a visualizer class. A lambda expression
30826can be used to instantiate this class for a varobj:
30827
30828@smallexample
30829(gdb)
30830-var-set-visualizer V "lambda val: SomeClass()"
30831^done
30832@end smallexample
25d5ea92 30833
a2c02241
NR
30834@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30835@node GDB/MI Data Manipulation
30836@section @sc{gdb/mi} Data Manipulation
922fbb7b 30837
a2c02241
NR
30838@cindex data manipulation, in @sc{gdb/mi}
30839@cindex @sc{gdb/mi}, data manipulation
30840This section describes the @sc{gdb/mi} commands that manipulate data:
30841examine memory and registers, evaluate expressions, etc.
30842
30843@c REMOVED FROM THE INTERFACE.
30844@c @subheading -data-assign
30845@c Change the value of a program variable. Plenty of side effects.
79a6e687 30846@c @subsubheading GDB Command
a2c02241
NR
30847@c set variable
30848@c @subsubheading Example
30849@c N.A.
30850
30851@subheading The @code{-data-disassemble} Command
30852@findex -data-disassemble
922fbb7b
AC
30853
30854@subsubheading Synopsis
30855
30856@smallexample
a2c02241
NR
30857 -data-disassemble
30858 [ -s @var{start-addr} -e @var{end-addr} ]
30859 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
30860 -- @var{mode}
922fbb7b
AC
30861@end smallexample
30862
a2c02241
NR
30863@noindent
30864Where:
30865
30866@table @samp
30867@item @var{start-addr}
30868is the beginning address (or @code{$pc})
30869@item @var{end-addr}
30870is the end address
30871@item @var{filename}
30872is the name of the file to disassemble
30873@item @var{linenum}
30874is the line number to disassemble around
30875@item @var{lines}
d3e8051b 30876is the number of disassembly lines to be produced. If it is -1,
a2c02241
NR
30877the whole function will be disassembled, in case no @var{end-addr} is
30878specified. If @var{end-addr} is specified as a non-zero value, and
30879@var{lines} is lower than the number of disassembly lines between
30880@var{start-addr} and @var{end-addr}, only @var{lines} lines are
30881displayed; if @var{lines} is higher than the number of lines between
30882@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
30883are displayed.
30884@item @var{mode}
b716877b
AB
30885is either 0 (meaning only disassembly), 1 (meaning mixed source and
30886disassembly), 2 (meaning disassembly with raw opcodes), or 3 (meaning
30887mixed source and disassembly with raw opcodes).
a2c02241
NR
30888@end table
30889
30890@subsubheading Result
30891
ed8a1c2d
AB
30892The result of the @code{-data-disassemble} command will be a list named
30893@samp{asm_insns}, the contents of this list depend on the @var{mode}
30894used with the @code{-data-disassemble} command.
a2c02241 30895
ed8a1c2d
AB
30896For modes 0 and 2 the @samp{asm_insns} list contains tuples with the
30897following fields:
30898
30899@table @code
30900@item address
30901The address at which this instruction was disassembled.
30902
30903@item func-name
30904The name of the function this instruction is within.
30905
30906@item offset
30907The decimal offset in bytes from the start of @samp{func-name}.
30908
30909@item inst
30910The text disassembly for this @samp{address}.
30911
30912@item opcodes
30913This field is only present for mode 2. This contains the raw opcode
30914bytes for the @samp{inst} field.
30915
30916@end table
30917
30918For modes 1 and 3 the @samp{asm_insns} list contains tuples named
30919@samp{src_and_asm_line}, each of which has the following fields:
a2c02241 30920
ed8a1c2d
AB
30921@table @code
30922@item line
30923The line number within @samp{file}.
30924
30925@item file
30926The file name from the compilation unit. This might be an absolute
30927file name or a relative file name depending on the compile command
30928used.
30929
30930@item fullname
30931This field is optional. If it is present it will contain an absolute
30932file name of @samp{file}. If this field is not present then
30933@value{GDBN} was unable to determine the absolute file name.
30934
30935@item line_asm_insn
30936This is a list of tuples containing the disassembly for @samp{line} in
30937@samp{file}. The fields of each tuple are the same as for
30938@code{-data-disassemble} in @var{mode} 0 and 2, so @samp{address},
30939@samp{func-name}, @samp{offset}, @samp{inst}, and optionally
30940@samp{opcodes}.
30941
30942@end table
30943
30944Note that whatever included in the @samp{inst} field, is not
30945manipulated directly by @sc{gdb/mi}, i.e., it is not possible to
30946adjust its format.
922fbb7b
AC
30947
30948@subsubheading @value{GDBN} Command
30949
ed8a1c2d 30950The corresponding @value{GDBN} command is @samp{disassemble}.
922fbb7b
AC
30951
30952@subsubheading Example
30953
a2c02241
NR
30954Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
30955
922fbb7b 30956@smallexample
594fe323 30957(gdb)
a2c02241
NR
30958-data-disassemble -s $pc -e "$pc + 20" -- 0
30959^done,
30960asm_insns=[
30961@{address="0x000107c0",func-name="main",offset="4",
30962inst="mov 2, %o0"@},
30963@{address="0x000107c4",func-name="main",offset="8",
30964inst="sethi %hi(0x11800), %o2"@},
30965@{address="0x000107c8",func-name="main",offset="12",
30966inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
30967@{address="0x000107cc",func-name="main",offset="16",
30968inst="sethi %hi(0x11800), %o2"@},
30969@{address="0x000107d0",func-name="main",offset="20",
30970inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
594fe323 30971(gdb)
a2c02241
NR
30972@end smallexample
30973
30974Disassemble the whole @code{main} function. Line 32 is part of
30975@code{main}.
30976
30977@smallexample
30978-data-disassemble -f basics.c -l 32 -- 0
30979^done,asm_insns=[
30980@{address="0x000107bc",func-name="main",offset="0",
30981inst="save %sp, -112, %sp"@},
30982@{address="0x000107c0",func-name="main",offset="4",
30983inst="mov 2, %o0"@},
30984@{address="0x000107c4",func-name="main",offset="8",
30985inst="sethi %hi(0x11800), %o2"@},
30986[@dots{}]
30987@{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
30988@{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
594fe323 30989(gdb)
922fbb7b
AC
30990@end smallexample
30991
a2c02241 30992Disassemble 3 instructions from the start of @code{main}:
922fbb7b 30993
a2c02241 30994@smallexample
594fe323 30995(gdb)
a2c02241
NR
30996-data-disassemble -f basics.c -l 32 -n 3 -- 0
30997^done,asm_insns=[
30998@{address="0x000107bc",func-name="main",offset="0",
30999inst="save %sp, -112, %sp"@},
31000@{address="0x000107c0",func-name="main",offset="4",
31001inst="mov 2, %o0"@},
31002@{address="0x000107c4",func-name="main",offset="8",
31003inst="sethi %hi(0x11800), %o2"@}]
594fe323 31004(gdb)
a2c02241
NR
31005@end smallexample
31006
31007Disassemble 3 instructions from the start of @code{main} in mixed mode:
31008
31009@smallexample
594fe323 31010(gdb)
a2c02241
NR
31011-data-disassemble -f basics.c -l 32 -n 3 -- 1
31012^done,asm_insns=[
31013src_and_asm_line=@{line="31",
ed8a1c2d
AB
31014file="../../../src/gdb/testsuite/gdb.mi/basics.c",
31015fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
31016line_asm_insn=[@{address="0x000107bc",
31017func-name="main",offset="0",inst="save %sp, -112, %sp"@}]@},
a2c02241 31018src_and_asm_line=@{line="32",
ed8a1c2d
AB
31019file="../../../src/gdb/testsuite/gdb.mi/basics.c",
31020fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
31021line_asm_insn=[@{address="0x000107c0",
31022func-name="main",offset="4",inst="mov 2, %o0"@},
a2c02241
NR
31023@{address="0x000107c4",func-name="main",offset="8",
31024inst="sethi %hi(0x11800), %o2"@}]@}]
594fe323 31025(gdb)
a2c02241
NR
31026@end smallexample
31027
31028
31029@subheading The @code{-data-evaluate-expression} Command
31030@findex -data-evaluate-expression
922fbb7b
AC
31031
31032@subsubheading Synopsis
31033
31034@smallexample
a2c02241 31035 -data-evaluate-expression @var{expr}
922fbb7b
AC
31036@end smallexample
31037
a2c02241
NR
31038Evaluate @var{expr} as an expression. The expression could contain an
31039inferior function call. The function call will execute synchronously.
31040If the expression contains spaces, it must be enclosed in double quotes.
922fbb7b
AC
31041
31042@subsubheading @value{GDBN} Command
31043
a2c02241
NR
31044The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
31045@samp{call}. In @code{gdbtk} only, there's a corresponding
31046@samp{gdb_eval} command.
922fbb7b
AC
31047
31048@subsubheading Example
31049
a2c02241
NR
31050In the following example, the numbers that precede the commands are the
31051@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
31052Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
31053output.
31054
922fbb7b 31055@smallexample
a2c02241
NR
31056211-data-evaluate-expression A
31057211^done,value="1"
594fe323 31058(gdb)
a2c02241
NR
31059311-data-evaluate-expression &A
31060311^done,value="0xefffeb7c"
594fe323 31061(gdb)
a2c02241
NR
31062411-data-evaluate-expression A+3
31063411^done,value="4"
594fe323 31064(gdb)
a2c02241
NR
31065511-data-evaluate-expression "A + 3"
31066511^done,value="4"
594fe323 31067(gdb)
a2c02241 31068@end smallexample
922fbb7b
AC
31069
31070
a2c02241
NR
31071@subheading The @code{-data-list-changed-registers} Command
31072@findex -data-list-changed-registers
922fbb7b
AC
31073
31074@subsubheading Synopsis
31075
31076@smallexample
a2c02241 31077 -data-list-changed-registers
922fbb7b
AC
31078@end smallexample
31079
a2c02241 31080Display a list of the registers that have changed.
922fbb7b
AC
31081
31082@subsubheading @value{GDBN} Command
31083
a2c02241
NR
31084@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
31085has the corresponding command @samp{gdb_changed_register_list}.
922fbb7b
AC
31086
31087@subsubheading Example
922fbb7b 31088
a2c02241 31089On a PPC MBX board:
922fbb7b
AC
31090
31091@smallexample
594fe323 31092(gdb)
a2c02241
NR
31093-exec-continue
31094^running
922fbb7b 31095
594fe323 31096(gdb)
a47ec5fe
AR
31097*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{
31098func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
31099line="5"@}
594fe323 31100(gdb)
a2c02241
NR
31101-data-list-changed-registers
31102^done,changed-registers=["0","1","2","4","5","6","7","8","9",
31103"10","11","13","14","15","16","17","18","19","20","21","22","23",
31104"24","25","26","27","28","30","31","64","65","66","67","69"]
594fe323 31105(gdb)
a2c02241 31106@end smallexample
922fbb7b
AC
31107
31108
a2c02241
NR
31109@subheading The @code{-data-list-register-names} Command
31110@findex -data-list-register-names
922fbb7b
AC
31111
31112@subsubheading Synopsis
31113
31114@smallexample
a2c02241 31115 -data-list-register-names [ ( @var{regno} )+ ]
922fbb7b
AC
31116@end smallexample
31117
a2c02241
NR
31118Show a list of register names for the current target. If no arguments
31119are given, it shows a list of the names of all the registers. If
31120integer numbers are given as arguments, it will print a list of the
31121names of the registers corresponding to the arguments. To ensure
31122consistency between a register name and its number, the output list may
31123include empty register names.
922fbb7b
AC
31124
31125@subsubheading @value{GDBN} Command
31126
a2c02241
NR
31127@value{GDBN} does not have a command which corresponds to
31128@samp{-data-list-register-names}. In @code{gdbtk} there is a
31129corresponding command @samp{gdb_regnames}.
922fbb7b
AC
31130
31131@subsubheading Example
922fbb7b 31132
a2c02241
NR
31133For the PPC MBX board:
31134@smallexample
594fe323 31135(gdb)
a2c02241
NR
31136-data-list-register-names
31137^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
31138"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
31139"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
31140"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
31141"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
31142"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
31143"", "pc","ps","cr","lr","ctr","xer"]
594fe323 31144(gdb)
a2c02241
NR
31145-data-list-register-names 1 2 3
31146^done,register-names=["r1","r2","r3"]
594fe323 31147(gdb)
a2c02241 31148@end smallexample
922fbb7b 31149
a2c02241
NR
31150@subheading The @code{-data-list-register-values} Command
31151@findex -data-list-register-values
922fbb7b
AC
31152
31153@subsubheading Synopsis
31154
31155@smallexample
a2c02241 31156 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
922fbb7b
AC
31157@end smallexample
31158
a2c02241
NR
31159Display the registers' contents. @var{fmt} is the format according to
31160which the registers' contents are to be returned, followed by an optional
31161list of numbers specifying the registers to display. A missing list of
31162numbers indicates that the contents of all the registers must be returned.
31163
31164Allowed formats for @var{fmt} are:
31165
31166@table @code
31167@item x
31168Hexadecimal
31169@item o
31170Octal
31171@item t
31172Binary
31173@item d
31174Decimal
31175@item r
31176Raw
31177@item N
31178Natural
31179@end table
922fbb7b
AC
31180
31181@subsubheading @value{GDBN} Command
31182
a2c02241
NR
31183The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
31184all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
922fbb7b
AC
31185
31186@subsubheading Example
922fbb7b 31187
a2c02241
NR
31188For a PPC MBX board (note: line breaks are for readability only, they
31189don't appear in the actual output):
31190
31191@smallexample
594fe323 31192(gdb)
a2c02241
NR
31193-data-list-register-values r 64 65
31194^done,register-values=[@{number="64",value="0xfe00a300"@},
31195@{number="65",value="0x00029002"@}]
594fe323 31196(gdb)
a2c02241
NR
31197-data-list-register-values x
31198^done,register-values=[@{number="0",value="0xfe0043c8"@},
31199@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
31200@{number="3",value="0x0"@},@{number="4",value="0xa"@},
31201@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
31202@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
31203@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
31204@{number="11",value="0x1"@},@{number="12",value="0x0"@},
31205@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
31206@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
31207@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
31208@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
31209@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
31210@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
31211@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
31212@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
31213@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
31214@{number="31",value="0x0"@},@{number="32",value="0x0"@},
31215@{number="33",value="0x0"@},@{number="34",value="0x0"@},
31216@{number="35",value="0x0"@},@{number="36",value="0x0"@},
31217@{number="37",value="0x0"@},@{number="38",value="0x0"@},
31218@{number="39",value="0x0"@},@{number="40",value="0x0"@},
31219@{number="41",value="0x0"@},@{number="42",value="0x0"@},
31220@{number="43",value="0x0"@},@{number="44",value="0x0"@},
31221@{number="45",value="0x0"@},@{number="46",value="0x0"@},
31222@{number="47",value="0x0"@},@{number="48",value="0x0"@},
31223@{number="49",value="0x0"@},@{number="50",value="0x0"@},
31224@{number="51",value="0x0"@},@{number="52",value="0x0"@},
31225@{number="53",value="0x0"@},@{number="54",value="0x0"@},
31226@{number="55",value="0x0"@},@{number="56",value="0x0"@},
31227@{number="57",value="0x0"@},@{number="58",value="0x0"@},
31228@{number="59",value="0x0"@},@{number="60",value="0x0"@},
31229@{number="61",value="0x0"@},@{number="62",value="0x0"@},
31230@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
31231@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
31232@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
31233@{number="69",value="0x20002b03"@}]
594fe323 31234(gdb)
a2c02241 31235@end smallexample
922fbb7b 31236
a2c02241
NR
31237
31238@subheading The @code{-data-read-memory} Command
31239@findex -data-read-memory
922fbb7b 31240
8dedea02
VP
31241This command is deprecated, use @code{-data-read-memory-bytes} instead.
31242
922fbb7b
AC
31243@subsubheading Synopsis
31244
31245@smallexample
a2c02241
NR
31246 -data-read-memory [ -o @var{byte-offset} ]
31247 @var{address} @var{word-format} @var{word-size}
31248 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
922fbb7b
AC
31249@end smallexample
31250
a2c02241
NR
31251@noindent
31252where:
922fbb7b 31253
a2c02241
NR
31254@table @samp
31255@item @var{address}
31256An expression specifying the address of the first memory word to be
31257read. Complex expressions containing embedded white space should be
31258quoted using the C convention.
922fbb7b 31259
a2c02241
NR
31260@item @var{word-format}
31261The format to be used to print the memory words. The notation is the
31262same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
79a6e687 31263,Output Formats}).
922fbb7b 31264
a2c02241
NR
31265@item @var{word-size}
31266The size of each memory word in bytes.
922fbb7b 31267
a2c02241
NR
31268@item @var{nr-rows}
31269The number of rows in the output table.
922fbb7b 31270
a2c02241
NR
31271@item @var{nr-cols}
31272The number of columns in the output table.
922fbb7b 31273
a2c02241
NR
31274@item @var{aschar}
31275If present, indicates that each row should include an @sc{ascii} dump. The
31276value of @var{aschar} is used as a padding character when a byte is not a
31277member of the printable @sc{ascii} character set (printable @sc{ascii}
31278characters are those whose code is between 32 and 126, inclusively).
922fbb7b 31279
a2c02241
NR
31280@item @var{byte-offset}
31281An offset to add to the @var{address} before fetching memory.
31282@end table
922fbb7b 31283
a2c02241
NR
31284This command displays memory contents as a table of @var{nr-rows} by
31285@var{nr-cols} words, each word being @var{word-size} bytes. In total,
31286@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
31287(returned as @samp{total-bytes}). Should less than the requested number
31288of bytes be returned by the target, the missing words are identified
31289using @samp{N/A}. The number of bytes read from the target is returned
31290in @samp{nr-bytes} and the starting address used to read memory in
31291@samp{addr}.
31292
31293The address of the next/previous row or page is available in
31294@samp{next-row} and @samp{prev-row}, @samp{next-page} and
31295@samp{prev-page}.
922fbb7b
AC
31296
31297@subsubheading @value{GDBN} Command
31298
a2c02241
NR
31299The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
31300@samp{gdb_get_mem} memory read command.
922fbb7b
AC
31301
31302@subsubheading Example
32e7087d 31303
a2c02241
NR
31304Read six bytes of memory starting at @code{bytes+6} but then offset by
31305@code{-6} bytes. Format as three rows of two columns. One byte per
31306word. Display each word in hex.
32e7087d
JB
31307
31308@smallexample
594fe323 31309(gdb)
a2c02241
NR
313109-data-read-memory -o -6 -- bytes+6 x 1 3 2
313119^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
31312next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
31313prev-page="0x0000138a",memory=[
31314@{addr="0x00001390",data=["0x00","0x01"]@},
31315@{addr="0x00001392",data=["0x02","0x03"]@},
31316@{addr="0x00001394",data=["0x04","0x05"]@}]
594fe323 31317(gdb)
32e7087d
JB
31318@end smallexample
31319
a2c02241
NR
31320Read two bytes of memory starting at address @code{shorts + 64} and
31321display as a single word formatted in decimal.
32e7087d 31322
32e7087d 31323@smallexample
594fe323 31324(gdb)
a2c02241
NR
313255-data-read-memory shorts+64 d 2 1 1
313265^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
31327next-row="0x00001512",prev-row="0x0000150e",
31328next-page="0x00001512",prev-page="0x0000150e",memory=[
31329@{addr="0x00001510",data=["128"]@}]
594fe323 31330(gdb)
32e7087d
JB
31331@end smallexample
31332
a2c02241
NR
31333Read thirty two bytes of memory starting at @code{bytes+16} and format
31334as eight rows of four columns. Include a string encoding with @samp{x}
31335used as the non-printable character.
922fbb7b
AC
31336
31337@smallexample
594fe323 31338(gdb)
a2c02241
NR
313394-data-read-memory bytes+16 x 1 8 4 x
313404^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
31341next-row="0x000013c0",prev-row="0x0000139c",
31342next-page="0x000013c0",prev-page="0x00001380",memory=[
31343@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
31344@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
31345@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
31346@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
31347@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
31348@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
31349@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
31350@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
594fe323 31351(gdb)
922fbb7b
AC
31352@end smallexample
31353
8dedea02
VP
31354@subheading The @code{-data-read-memory-bytes} Command
31355@findex -data-read-memory-bytes
31356
31357@subsubheading Synopsis
31358
31359@smallexample
31360 -data-read-memory-bytes [ -o @var{byte-offset} ]
31361 @var{address} @var{count}
31362@end smallexample
31363
31364@noindent
31365where:
31366
31367@table @samp
31368@item @var{address}
31369An expression specifying the address of the first memory word to be
31370read. Complex expressions containing embedded white space should be
31371quoted using the C convention.
31372
31373@item @var{count}
31374The number of bytes to read. This should be an integer literal.
31375
31376@item @var{byte-offset}
31377The offsets in bytes relative to @var{address} at which to start
31378reading. This should be an integer literal. This option is provided
31379so that a frontend is not required to first evaluate address and then
31380perform address arithmetics itself.
31381
31382@end table
31383
31384This command attempts to read all accessible memory regions in the
31385specified range. First, all regions marked as unreadable in the memory
31386map (if one is defined) will be skipped. @xref{Memory Region
31387Attributes}. Second, @value{GDBN} will attempt to read the remaining
31388regions. For each one, if reading full region results in an errors,
31389@value{GDBN} will try to read a subset of the region.
31390
31391In general, every single byte in the region may be readable or not,
31392and the only way to read every readable byte is to try a read at
31393every address, which is not practical. Therefore, @value{GDBN} will
31394attempt to read all accessible bytes at either beginning or the end
31395of the region, using a binary division scheme. This heuristic works
31396well for reading accross a memory map boundary. Note that if a region
31397has a readable range that is neither at the beginning or the end,
31398@value{GDBN} will not read it.
31399
31400The result record (@pxref{GDB/MI Result Records}) that is output of
31401the command includes a field named @samp{memory} whose content is a
31402list of tuples. Each tuple represent a successfully read memory block
31403and has the following fields:
31404
31405@table @code
31406@item begin
31407The start address of the memory block, as hexadecimal literal.
31408
31409@item end
31410The end address of the memory block, as hexadecimal literal.
31411
31412@item offset
31413The offset of the memory block, as hexadecimal literal, relative to
31414the start address passed to @code{-data-read-memory-bytes}.
31415
31416@item contents
31417The contents of the memory block, in hex.
31418
31419@end table
31420
31421
31422
31423@subsubheading @value{GDBN} Command
31424
31425The corresponding @value{GDBN} command is @samp{x}.
31426
31427@subsubheading Example
31428
31429@smallexample
31430(gdb)
31431-data-read-memory-bytes &a 10
31432^done,memory=[@{begin="0xbffff154",offset="0x00000000",
31433 end="0xbffff15e",
31434 contents="01000000020000000300"@}]
31435(gdb)
31436@end smallexample
31437
31438
31439@subheading The @code{-data-write-memory-bytes} Command
31440@findex -data-write-memory-bytes
31441
31442@subsubheading Synopsis
31443
31444@smallexample
31445 -data-write-memory-bytes @var{address} @var{contents}
62747a60 31446 -data-write-memory-bytes @var{address} @var{contents} @r{[}@var{count}@r{]}
8dedea02
VP
31447@end smallexample
31448
31449@noindent
31450where:
31451
31452@table @samp
31453@item @var{address}
31454An expression specifying the address of the first memory word to be
31455read. Complex expressions containing embedded white space should be
31456quoted using the C convention.
31457
31458@item @var{contents}
31459The hex-encoded bytes to write.
31460
62747a60
TT
31461@item @var{count}
31462Optional argument indicating the number of bytes to be written. If @var{count}
31463is greater than @var{contents}' length, @value{GDBN} will repeatedly
31464write @var{contents} until it fills @var{count} bytes.
31465
8dedea02
VP
31466@end table
31467
31468@subsubheading @value{GDBN} Command
31469
31470There's no corresponding @value{GDBN} command.
31471
31472@subsubheading Example
31473
31474@smallexample
31475(gdb)
31476-data-write-memory-bytes &a "aabbccdd"
31477^done
31478(gdb)
31479@end smallexample
31480
62747a60
TT
31481@smallexample
31482(gdb)
31483-data-write-memory-bytes &a "aabbccdd" 16e
31484^done
31485(gdb)
31486@end smallexample
8dedea02 31487
a2c02241
NR
31488@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31489@node GDB/MI Tracepoint Commands
31490@section @sc{gdb/mi} Tracepoint Commands
922fbb7b 31491
18148017
VP
31492The commands defined in this section implement MI support for
31493tracepoints. For detailed introduction, see @ref{Tracepoints}.
31494
31495@subheading The @code{-trace-find} Command
31496@findex -trace-find
31497
31498@subsubheading Synopsis
31499
31500@smallexample
31501 -trace-find @var{mode} [@var{parameters}@dots{}]
31502@end smallexample
31503
31504Find a trace frame using criteria defined by @var{mode} and
31505@var{parameters}. The following table lists permissible
31506modes and their parameters. For details of operation, see @ref{tfind}.
31507
31508@table @samp
31509
31510@item none
31511No parameters are required. Stops examining trace frames.
31512
31513@item frame-number
31514An integer is required as parameter. Selects tracepoint frame with
31515that index.
31516
31517@item tracepoint-number
31518An integer is required as parameter. Finds next
31519trace frame that corresponds to tracepoint with the specified number.
31520
31521@item pc
31522An address is required as parameter. Finds
31523next trace frame that corresponds to any tracepoint at the specified
31524address.
31525
31526@item pc-inside-range
31527Two addresses are required as parameters. Finds next trace
31528frame that corresponds to a tracepoint at an address inside the
31529specified range. Both bounds are considered to be inside the range.
31530
31531@item pc-outside-range
31532Two addresses are required as parameters. Finds
31533next trace frame that corresponds to a tracepoint at an address outside
31534the specified range. Both bounds are considered to be inside the range.
31535
31536@item line
31537Line specification is required as parameter. @xref{Specify Location}.
31538Finds next trace frame that corresponds to a tracepoint at
31539the specified location.
31540
31541@end table
31542
31543If @samp{none} was passed as @var{mode}, the response does not
31544have fields. Otherwise, the response may have the following fields:
31545
31546@table @samp
31547@item found
31548This field has either @samp{0} or @samp{1} as the value, depending
31549on whether a matching tracepoint was found.
31550
31551@item traceframe
31552The index of the found traceframe. This field is present iff
31553the @samp{found} field has value of @samp{1}.
31554
31555@item tracepoint
31556The index of the found tracepoint. This field is present iff
31557the @samp{found} field has value of @samp{1}.
31558
31559@item frame
31560The information about the frame corresponding to the found trace
31561frame. This field is present only if a trace frame was found.
cd64ee31 31562@xref{GDB/MI Frame Information}, for description of this field.
18148017
VP
31563
31564@end table
31565
7d13fe92
SS
31566@subsubheading @value{GDBN} Command
31567
31568The corresponding @value{GDBN} command is @samp{tfind}.
31569
18148017
VP
31570@subheading -trace-define-variable
31571@findex -trace-define-variable
31572
31573@subsubheading Synopsis
31574
31575@smallexample
31576 -trace-define-variable @var{name} [ @var{value} ]
31577@end smallexample
31578
31579Create trace variable @var{name} if it does not exist. If
31580@var{value} is specified, sets the initial value of the specified
31581trace variable to that value. Note that the @var{name} should start
31582with the @samp{$} character.
31583
7d13fe92
SS
31584@subsubheading @value{GDBN} Command
31585
31586The corresponding @value{GDBN} command is @samp{tvariable}.
31587
18148017
VP
31588@subheading -trace-list-variables
31589@findex -trace-list-variables
922fbb7b 31590
18148017 31591@subsubheading Synopsis
922fbb7b 31592
18148017
VP
31593@smallexample
31594 -trace-list-variables
31595@end smallexample
922fbb7b 31596
18148017
VP
31597Return a table of all defined trace variables. Each element of the
31598table has the following fields:
922fbb7b 31599
18148017
VP
31600@table @samp
31601@item name
31602The name of the trace variable. This field is always present.
922fbb7b 31603
18148017
VP
31604@item initial
31605The initial value. This is a 64-bit signed integer. This
31606field is always present.
922fbb7b 31607
18148017
VP
31608@item current
31609The value the trace variable has at the moment. This is a 64-bit
31610signed integer. This field is absent iff current value is
31611not defined, for example if the trace was never run, or is
31612presently running.
922fbb7b 31613
18148017 31614@end table
922fbb7b 31615
7d13fe92
SS
31616@subsubheading @value{GDBN} Command
31617
31618The corresponding @value{GDBN} command is @samp{tvariables}.
31619
18148017 31620@subsubheading Example
922fbb7b 31621
18148017
VP
31622@smallexample
31623(gdb)
31624-trace-list-variables
31625^done,trace-variables=@{nr_rows="1",nr_cols="3",
31626hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@},
31627 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@},
31628 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}],
31629body=[variable=@{name="$trace_timestamp",initial="0"@}
31630 variable=@{name="$foo",initial="10",current="15"@}]@}
31631(gdb)
31632@end smallexample
922fbb7b 31633
18148017
VP
31634@subheading -trace-save
31635@findex -trace-save
922fbb7b 31636
18148017
VP
31637@subsubheading Synopsis
31638
31639@smallexample
31640 -trace-save [-r ] @var{filename}
31641@end smallexample
31642
31643Saves the collected trace data to @var{filename}. Without the
31644@samp{-r} option, the data is downloaded from the target and saved
31645in a local file. With the @samp{-r} option the target is asked
31646to perform the save.
31647
7d13fe92
SS
31648@subsubheading @value{GDBN} Command
31649
31650The corresponding @value{GDBN} command is @samp{tsave}.
31651
18148017
VP
31652
31653@subheading -trace-start
31654@findex -trace-start
31655
31656@subsubheading Synopsis
31657
31658@smallexample
31659 -trace-start
31660@end smallexample
922fbb7b 31661
18148017
VP
31662Starts a tracing experiments. The result of this command does not
31663have any fields.
922fbb7b 31664
7d13fe92
SS
31665@subsubheading @value{GDBN} Command
31666
31667The corresponding @value{GDBN} command is @samp{tstart}.
31668
18148017
VP
31669@subheading -trace-status
31670@findex -trace-status
922fbb7b 31671
18148017
VP
31672@subsubheading Synopsis
31673
31674@smallexample
31675 -trace-status
31676@end smallexample
31677
a97153c7 31678Obtains the status of a tracing experiment. The result may include
18148017
VP
31679the following fields:
31680
31681@table @samp
31682
31683@item supported
31684May have a value of either @samp{0}, when no tracing operations are
31685supported, @samp{1}, when all tracing operations are supported, or
31686@samp{file} when examining trace file. In the latter case, examining
31687of trace frame is possible but new tracing experiement cannot be
31688started. This field is always present.
31689
31690@item running
31691May have a value of either @samp{0} or @samp{1} depending on whether
31692tracing experiement is in progress on target. This field is present
31693if @samp{supported} field is not @samp{0}.
31694
31695@item stop-reason
31696Report the reason why the tracing was stopped last time. This field
31697may be absent iff tracing was never stopped on target yet. The
31698value of @samp{request} means the tracing was stopped as result of
31699the @code{-trace-stop} command. The value of @samp{overflow} means
31700the tracing buffer is full. The value of @samp{disconnection} means
31701tracing was automatically stopped when @value{GDBN} has disconnected.
31702The value of @samp{passcount} means tracing was stopped when a
31703tracepoint was passed a maximal number of times for that tracepoint.
31704This field is present if @samp{supported} field is not @samp{0}.
31705
31706@item stopping-tracepoint
31707The number of tracepoint whose passcount as exceeded. This field is
31708present iff the @samp{stop-reason} field has the value of
31709@samp{passcount}.
31710
31711@item frames
87290684
SS
31712@itemx frames-created
31713The @samp{frames} field is a count of the total number of trace frames
31714in the trace buffer, while @samp{frames-created} is the total created
31715during the run, including ones that were discarded, such as when a
31716circular trace buffer filled up. Both fields are optional.
18148017
VP
31717
31718@item buffer-size
31719@itemx buffer-free
31720These fields tell the current size of the tracing buffer and the
87290684 31721remaining space. These fields are optional.
18148017 31722
a97153c7
PA
31723@item circular
31724The value of the circular trace buffer flag. @code{1} means that the
31725trace buffer is circular and old trace frames will be discarded if
31726necessary to make room, @code{0} means that the trace buffer is linear
31727and may fill up.
31728
31729@item disconnected
31730The value of the disconnected tracing flag. @code{1} means that
31731tracing will continue after @value{GDBN} disconnects, @code{0} means
31732that the trace run will stop.
31733
18148017
VP
31734@end table
31735
7d13fe92
SS
31736@subsubheading @value{GDBN} Command
31737
31738The corresponding @value{GDBN} command is @samp{tstatus}.
31739
18148017
VP
31740@subheading -trace-stop
31741@findex -trace-stop
31742
31743@subsubheading Synopsis
31744
31745@smallexample
31746 -trace-stop
31747@end smallexample
922fbb7b 31748
18148017
VP
31749Stops a tracing experiment. The result of this command has the same
31750fields as @code{-trace-status}, except that the @samp{supported} and
31751@samp{running} fields are not output.
922fbb7b 31752
7d13fe92
SS
31753@subsubheading @value{GDBN} Command
31754
31755The corresponding @value{GDBN} command is @samp{tstop}.
31756
922fbb7b 31757
a2c02241
NR
31758@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31759@node GDB/MI Symbol Query
31760@section @sc{gdb/mi} Symbol Query Commands
922fbb7b
AC
31761
31762
9901a55b 31763@ignore
a2c02241
NR
31764@subheading The @code{-symbol-info-address} Command
31765@findex -symbol-info-address
922fbb7b
AC
31766
31767@subsubheading Synopsis
31768
31769@smallexample
a2c02241 31770 -symbol-info-address @var{symbol}
922fbb7b
AC
31771@end smallexample
31772
a2c02241 31773Describe where @var{symbol} is stored.
922fbb7b
AC
31774
31775@subsubheading @value{GDBN} Command
31776
a2c02241 31777The corresponding @value{GDBN} command is @samp{info address}.
922fbb7b
AC
31778
31779@subsubheading Example
31780N.A.
31781
31782
a2c02241
NR
31783@subheading The @code{-symbol-info-file} Command
31784@findex -symbol-info-file
922fbb7b
AC
31785
31786@subsubheading Synopsis
31787
31788@smallexample
a2c02241 31789 -symbol-info-file
922fbb7b
AC
31790@end smallexample
31791
a2c02241 31792Show the file for the symbol.
922fbb7b 31793
a2c02241 31794@subsubheading @value{GDBN} Command
922fbb7b 31795
a2c02241
NR
31796There's no equivalent @value{GDBN} command. @code{gdbtk} has
31797@samp{gdb_find_file}.
922fbb7b
AC
31798
31799@subsubheading Example
31800N.A.
31801
31802
a2c02241
NR
31803@subheading The @code{-symbol-info-function} Command
31804@findex -symbol-info-function
922fbb7b
AC
31805
31806@subsubheading Synopsis
31807
31808@smallexample
a2c02241 31809 -symbol-info-function
922fbb7b
AC
31810@end smallexample
31811
a2c02241 31812Show which function the symbol lives in.
922fbb7b
AC
31813
31814@subsubheading @value{GDBN} Command
31815
a2c02241 31816@samp{gdb_get_function} in @code{gdbtk}.
922fbb7b
AC
31817
31818@subsubheading Example
31819N.A.
31820
31821
a2c02241
NR
31822@subheading The @code{-symbol-info-line} Command
31823@findex -symbol-info-line
922fbb7b
AC
31824
31825@subsubheading Synopsis
31826
31827@smallexample
a2c02241 31828 -symbol-info-line
922fbb7b
AC
31829@end smallexample
31830
a2c02241 31831Show the core addresses of the code for a source line.
922fbb7b 31832
a2c02241 31833@subsubheading @value{GDBN} Command
922fbb7b 31834
a2c02241
NR
31835The corresponding @value{GDBN} command is @samp{info line}.
31836@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
922fbb7b
AC
31837
31838@subsubheading Example
a2c02241 31839N.A.
922fbb7b
AC
31840
31841
a2c02241
NR
31842@subheading The @code{-symbol-info-symbol} Command
31843@findex -symbol-info-symbol
07f31aa6
DJ
31844
31845@subsubheading Synopsis
31846
a2c02241
NR
31847@smallexample
31848 -symbol-info-symbol @var{addr}
31849@end smallexample
07f31aa6 31850
a2c02241 31851Describe what symbol is at location @var{addr}.
07f31aa6 31852
a2c02241 31853@subsubheading @value{GDBN} Command
07f31aa6 31854
a2c02241 31855The corresponding @value{GDBN} command is @samp{info symbol}.
07f31aa6
DJ
31856
31857@subsubheading Example
a2c02241 31858N.A.
07f31aa6
DJ
31859
31860
a2c02241
NR
31861@subheading The @code{-symbol-list-functions} Command
31862@findex -symbol-list-functions
922fbb7b
AC
31863
31864@subsubheading Synopsis
31865
31866@smallexample
a2c02241 31867 -symbol-list-functions
922fbb7b
AC
31868@end smallexample
31869
a2c02241 31870List the functions in the executable.
922fbb7b
AC
31871
31872@subsubheading @value{GDBN} Command
31873
a2c02241
NR
31874@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
31875@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
31876
31877@subsubheading Example
a2c02241 31878N.A.
9901a55b 31879@end ignore
922fbb7b
AC
31880
31881
a2c02241
NR
31882@subheading The @code{-symbol-list-lines} Command
31883@findex -symbol-list-lines
922fbb7b
AC
31884
31885@subsubheading Synopsis
31886
31887@smallexample
a2c02241 31888 -symbol-list-lines @var{filename}
922fbb7b
AC
31889@end smallexample
31890
a2c02241
NR
31891Print the list of lines that contain code and their associated program
31892addresses for the given source filename. The entries are sorted in
31893ascending PC order.
922fbb7b
AC
31894
31895@subsubheading @value{GDBN} Command
31896
a2c02241 31897There is no corresponding @value{GDBN} command.
922fbb7b
AC
31898
31899@subsubheading Example
a2c02241 31900@smallexample
594fe323 31901(gdb)
a2c02241
NR
31902-symbol-list-lines basics.c
31903^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
594fe323 31904(gdb)
a2c02241 31905@end smallexample
922fbb7b
AC
31906
31907
9901a55b 31908@ignore
a2c02241
NR
31909@subheading The @code{-symbol-list-types} Command
31910@findex -symbol-list-types
922fbb7b
AC
31911
31912@subsubheading Synopsis
31913
31914@smallexample
a2c02241 31915 -symbol-list-types
922fbb7b
AC
31916@end smallexample
31917
a2c02241 31918List all the type names.
922fbb7b
AC
31919
31920@subsubheading @value{GDBN} Command
31921
a2c02241
NR
31922The corresponding commands are @samp{info types} in @value{GDBN},
31923@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
31924
31925@subsubheading Example
31926N.A.
31927
31928
a2c02241
NR
31929@subheading The @code{-symbol-list-variables} Command
31930@findex -symbol-list-variables
922fbb7b
AC
31931
31932@subsubheading Synopsis
31933
31934@smallexample
a2c02241 31935 -symbol-list-variables
922fbb7b
AC
31936@end smallexample
31937
a2c02241 31938List all the global and static variable names.
922fbb7b
AC
31939
31940@subsubheading @value{GDBN} Command
31941
a2c02241 31942@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
31943
31944@subsubheading Example
31945N.A.
31946
31947
a2c02241
NR
31948@subheading The @code{-symbol-locate} Command
31949@findex -symbol-locate
922fbb7b
AC
31950
31951@subsubheading Synopsis
31952
31953@smallexample
a2c02241 31954 -symbol-locate
922fbb7b
AC
31955@end smallexample
31956
922fbb7b
AC
31957@subsubheading @value{GDBN} Command
31958
a2c02241 31959@samp{gdb_loc} in @code{gdbtk}.
922fbb7b
AC
31960
31961@subsubheading Example
31962N.A.
31963
31964
a2c02241
NR
31965@subheading The @code{-symbol-type} Command
31966@findex -symbol-type
922fbb7b
AC
31967
31968@subsubheading Synopsis
31969
31970@smallexample
a2c02241 31971 -symbol-type @var{variable}
922fbb7b
AC
31972@end smallexample
31973
a2c02241 31974Show type of @var{variable}.
922fbb7b 31975
a2c02241 31976@subsubheading @value{GDBN} Command
922fbb7b 31977
a2c02241
NR
31978The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
31979@samp{gdb_obj_variable}.
31980
31981@subsubheading Example
31982N.A.
9901a55b 31983@end ignore
a2c02241
NR
31984
31985
31986@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31987@node GDB/MI File Commands
31988@section @sc{gdb/mi} File Commands
31989
31990This section describes the GDB/MI commands to specify executable file names
31991and to read in and obtain symbol table information.
31992
31993@subheading The @code{-file-exec-and-symbols} Command
31994@findex -file-exec-and-symbols
31995
31996@subsubheading Synopsis
922fbb7b
AC
31997
31998@smallexample
a2c02241 31999 -file-exec-and-symbols @var{file}
922fbb7b
AC
32000@end smallexample
32001
a2c02241
NR
32002Specify the executable file to be debugged. This file is the one from
32003which the symbol table is also read. If no file is specified, the
32004command clears the executable and symbol information. If breakpoints
32005are set when using this command with no arguments, @value{GDBN} will produce
32006error messages. Otherwise, no output is produced, except a completion
32007notification.
32008
922fbb7b
AC
32009@subsubheading @value{GDBN} Command
32010
a2c02241 32011The corresponding @value{GDBN} command is @samp{file}.
922fbb7b
AC
32012
32013@subsubheading Example
32014
32015@smallexample
594fe323 32016(gdb)
a2c02241
NR
32017-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32018^done
594fe323 32019(gdb)
922fbb7b
AC
32020@end smallexample
32021
922fbb7b 32022
a2c02241
NR
32023@subheading The @code{-file-exec-file} Command
32024@findex -file-exec-file
922fbb7b
AC
32025
32026@subsubheading Synopsis
32027
32028@smallexample
a2c02241 32029 -file-exec-file @var{file}
922fbb7b
AC
32030@end smallexample
32031
a2c02241
NR
32032Specify the executable file to be debugged. Unlike
32033@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
32034from this file. If used without argument, @value{GDBN} clears the information
32035about the executable file. No output is produced, except a completion
32036notification.
922fbb7b 32037
a2c02241
NR
32038@subsubheading @value{GDBN} Command
32039
32040The corresponding @value{GDBN} command is @samp{exec-file}.
922fbb7b
AC
32041
32042@subsubheading Example
a2c02241
NR
32043
32044@smallexample
594fe323 32045(gdb)
a2c02241
NR
32046-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32047^done
594fe323 32048(gdb)
a2c02241 32049@end smallexample
922fbb7b
AC
32050
32051
9901a55b 32052@ignore
a2c02241
NR
32053@subheading The @code{-file-list-exec-sections} Command
32054@findex -file-list-exec-sections
922fbb7b
AC
32055
32056@subsubheading Synopsis
32057
32058@smallexample
a2c02241 32059 -file-list-exec-sections
922fbb7b
AC
32060@end smallexample
32061
a2c02241
NR
32062List the sections of the current executable file.
32063
922fbb7b
AC
32064@subsubheading @value{GDBN} Command
32065
a2c02241
NR
32066The @value{GDBN} command @samp{info file} shows, among the rest, the same
32067information as this command. @code{gdbtk} has a corresponding command
32068@samp{gdb_load_info}.
922fbb7b
AC
32069
32070@subsubheading Example
32071N.A.
9901a55b 32072@end ignore
922fbb7b
AC
32073
32074
a2c02241
NR
32075@subheading The @code{-file-list-exec-source-file} Command
32076@findex -file-list-exec-source-file
922fbb7b
AC
32077
32078@subsubheading Synopsis
32079
32080@smallexample
a2c02241 32081 -file-list-exec-source-file
922fbb7b
AC
32082@end smallexample
32083
a2c02241 32084List the line number, the current source file, and the absolute path
44288b44
NR
32085to the current source file for the current executable. The macro
32086information field has a value of @samp{1} or @samp{0} depending on
32087whether or not the file includes preprocessor macro information.
922fbb7b
AC
32088
32089@subsubheading @value{GDBN} Command
32090
a2c02241 32091The @value{GDBN} equivalent is @samp{info source}
922fbb7b
AC
32092
32093@subsubheading Example
32094
922fbb7b 32095@smallexample
594fe323 32096(gdb)
a2c02241 32097123-file-list-exec-source-file
44288b44 32098123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
594fe323 32099(gdb)
922fbb7b
AC
32100@end smallexample
32101
32102
a2c02241
NR
32103@subheading The @code{-file-list-exec-source-files} Command
32104@findex -file-list-exec-source-files
922fbb7b
AC
32105
32106@subsubheading Synopsis
32107
32108@smallexample
a2c02241 32109 -file-list-exec-source-files
922fbb7b
AC
32110@end smallexample
32111
a2c02241
NR
32112List the source files for the current executable.
32113
3f94c067
BW
32114It will always output the filename, but only when @value{GDBN} can find
32115the absolute file name of a source file, will it output the fullname.
922fbb7b
AC
32116
32117@subsubheading @value{GDBN} Command
32118
a2c02241
NR
32119The @value{GDBN} equivalent is @samp{info sources}.
32120@code{gdbtk} has an analogous command @samp{gdb_listfiles}.
922fbb7b
AC
32121
32122@subsubheading Example
922fbb7b 32123@smallexample
594fe323 32124(gdb)
a2c02241
NR
32125-file-list-exec-source-files
32126^done,files=[
32127@{file=foo.c,fullname=/home/foo.c@},
32128@{file=/home/bar.c,fullname=/home/bar.c@},
32129@{file=gdb_could_not_find_fullpath.c@}]
594fe323 32130(gdb)
922fbb7b
AC
32131@end smallexample
32132
9901a55b 32133@ignore
a2c02241
NR
32134@subheading The @code{-file-list-shared-libraries} Command
32135@findex -file-list-shared-libraries
922fbb7b 32136
a2c02241 32137@subsubheading Synopsis
922fbb7b 32138
a2c02241
NR
32139@smallexample
32140 -file-list-shared-libraries
32141@end smallexample
922fbb7b 32142
a2c02241 32143List the shared libraries in the program.
922fbb7b 32144
a2c02241 32145@subsubheading @value{GDBN} Command
922fbb7b 32146
a2c02241 32147The corresponding @value{GDBN} command is @samp{info shared}.
922fbb7b 32148
a2c02241
NR
32149@subsubheading Example
32150N.A.
922fbb7b
AC
32151
32152
a2c02241
NR
32153@subheading The @code{-file-list-symbol-files} Command
32154@findex -file-list-symbol-files
922fbb7b 32155
a2c02241 32156@subsubheading Synopsis
922fbb7b 32157
a2c02241
NR
32158@smallexample
32159 -file-list-symbol-files
32160@end smallexample
922fbb7b 32161
a2c02241 32162List symbol files.
922fbb7b 32163
a2c02241 32164@subsubheading @value{GDBN} Command
922fbb7b 32165
a2c02241 32166The corresponding @value{GDBN} command is @samp{info file} (part of it).
922fbb7b 32167
a2c02241
NR
32168@subsubheading Example
32169N.A.
9901a55b 32170@end ignore
922fbb7b 32171
922fbb7b 32172
a2c02241
NR
32173@subheading The @code{-file-symbol-file} Command
32174@findex -file-symbol-file
922fbb7b 32175
a2c02241 32176@subsubheading Synopsis
922fbb7b 32177
a2c02241
NR
32178@smallexample
32179 -file-symbol-file @var{file}
32180@end smallexample
922fbb7b 32181
a2c02241
NR
32182Read symbol table info from the specified @var{file} argument. When
32183used without arguments, clears @value{GDBN}'s symbol table info. No output is
32184produced, except for a completion notification.
922fbb7b 32185
a2c02241 32186@subsubheading @value{GDBN} Command
922fbb7b 32187
a2c02241 32188The corresponding @value{GDBN} command is @samp{symbol-file}.
922fbb7b 32189
a2c02241 32190@subsubheading Example
922fbb7b 32191
a2c02241 32192@smallexample
594fe323 32193(gdb)
a2c02241
NR
32194-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32195^done
594fe323 32196(gdb)
a2c02241 32197@end smallexample
922fbb7b 32198
a2c02241 32199@ignore
a2c02241
NR
32200@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32201@node GDB/MI Memory Overlay Commands
32202@section @sc{gdb/mi} Memory Overlay Commands
922fbb7b 32203
a2c02241 32204The memory overlay commands are not implemented.
922fbb7b 32205
a2c02241 32206@c @subheading -overlay-auto
922fbb7b 32207
a2c02241 32208@c @subheading -overlay-list-mapping-state
922fbb7b 32209
a2c02241 32210@c @subheading -overlay-list-overlays
922fbb7b 32211
a2c02241 32212@c @subheading -overlay-map
922fbb7b 32213
a2c02241 32214@c @subheading -overlay-off
922fbb7b 32215
a2c02241 32216@c @subheading -overlay-on
922fbb7b 32217
a2c02241 32218@c @subheading -overlay-unmap
922fbb7b 32219
a2c02241
NR
32220@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32221@node GDB/MI Signal Handling Commands
32222@section @sc{gdb/mi} Signal Handling Commands
922fbb7b 32223
a2c02241 32224Signal handling commands are not implemented.
922fbb7b 32225
a2c02241 32226@c @subheading -signal-handle
922fbb7b 32227
a2c02241 32228@c @subheading -signal-list-handle-actions
922fbb7b 32229
a2c02241
NR
32230@c @subheading -signal-list-signal-types
32231@end ignore
922fbb7b 32232
922fbb7b 32233
a2c02241
NR
32234@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32235@node GDB/MI Target Manipulation
32236@section @sc{gdb/mi} Target Manipulation Commands
922fbb7b
AC
32237
32238
a2c02241
NR
32239@subheading The @code{-target-attach} Command
32240@findex -target-attach
922fbb7b
AC
32241
32242@subsubheading Synopsis
32243
32244@smallexample
c3b108f7 32245 -target-attach @var{pid} | @var{gid} | @var{file}
922fbb7b
AC
32246@end smallexample
32247
c3b108f7
VP
32248Attach to a process @var{pid} or a file @var{file} outside of
32249@value{GDBN}, or a thread group @var{gid}. If attaching to a thread
32250group, the id previously returned by
32251@samp{-list-thread-groups --available} must be used.
922fbb7b 32252
79a6e687 32253@subsubheading @value{GDBN} Command
922fbb7b 32254
a2c02241 32255The corresponding @value{GDBN} command is @samp{attach}.
922fbb7b 32256
a2c02241 32257@subsubheading Example
b56e7235
VP
32258@smallexample
32259(gdb)
32260-target-attach 34
32261=thread-created,id="1"
5ae4183a 32262*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@}
b56e7235
VP
32263^done
32264(gdb)
32265@end smallexample
a2c02241 32266
9901a55b 32267@ignore
a2c02241
NR
32268@subheading The @code{-target-compare-sections} Command
32269@findex -target-compare-sections
922fbb7b
AC
32270
32271@subsubheading Synopsis
32272
32273@smallexample
a2c02241 32274 -target-compare-sections [ @var{section} ]
922fbb7b
AC
32275@end smallexample
32276
a2c02241
NR
32277Compare data of section @var{section} on target to the exec file.
32278Without the argument, all sections are compared.
922fbb7b 32279
a2c02241 32280@subsubheading @value{GDBN} Command
922fbb7b 32281
a2c02241 32282The @value{GDBN} equivalent is @samp{compare-sections}.
922fbb7b 32283
a2c02241
NR
32284@subsubheading Example
32285N.A.
9901a55b 32286@end ignore
a2c02241
NR
32287
32288
32289@subheading The @code{-target-detach} Command
32290@findex -target-detach
922fbb7b
AC
32291
32292@subsubheading Synopsis
32293
32294@smallexample
c3b108f7 32295 -target-detach [ @var{pid} | @var{gid} ]
922fbb7b
AC
32296@end smallexample
32297
a2c02241 32298Detach from the remote target which normally resumes its execution.
c3b108f7
VP
32299If either @var{pid} or @var{gid} is specified, detaches from either
32300the specified process, or specified thread group. There's no output.
a2c02241 32301
79a6e687 32302@subsubheading @value{GDBN} Command
a2c02241
NR
32303
32304The corresponding @value{GDBN} command is @samp{detach}.
32305
32306@subsubheading Example
922fbb7b
AC
32307
32308@smallexample
594fe323 32309(gdb)
a2c02241
NR
32310-target-detach
32311^done
594fe323 32312(gdb)
922fbb7b
AC
32313@end smallexample
32314
32315
a2c02241
NR
32316@subheading The @code{-target-disconnect} Command
32317@findex -target-disconnect
922fbb7b
AC
32318
32319@subsubheading Synopsis
32320
123dc839 32321@smallexample
a2c02241 32322 -target-disconnect
123dc839 32323@end smallexample
922fbb7b 32324
a2c02241
NR
32325Disconnect from the remote target. There's no output and the target is
32326generally not resumed.
32327
79a6e687 32328@subsubheading @value{GDBN} Command
a2c02241
NR
32329
32330The corresponding @value{GDBN} command is @samp{disconnect}.
bc8ced35
NR
32331
32332@subsubheading Example
922fbb7b
AC
32333
32334@smallexample
594fe323 32335(gdb)
a2c02241
NR
32336-target-disconnect
32337^done
594fe323 32338(gdb)
922fbb7b
AC
32339@end smallexample
32340
32341
a2c02241
NR
32342@subheading The @code{-target-download} Command
32343@findex -target-download
922fbb7b
AC
32344
32345@subsubheading Synopsis
32346
32347@smallexample
a2c02241 32348 -target-download
922fbb7b
AC
32349@end smallexample
32350
a2c02241
NR
32351Loads the executable onto the remote target.
32352It prints out an update message every half second, which includes the fields:
32353
32354@table @samp
32355@item section
32356The name of the section.
32357@item section-sent
32358The size of what has been sent so far for that section.
32359@item section-size
32360The size of the section.
32361@item total-sent
32362The total size of what was sent so far (the current and the previous sections).
32363@item total-size
32364The size of the overall executable to download.
32365@end table
32366
32367@noindent
32368Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
32369@sc{gdb/mi} Output Syntax}).
32370
32371In addition, it prints the name and size of the sections, as they are
32372downloaded. These messages include the following fields:
32373
32374@table @samp
32375@item section
32376The name of the section.
32377@item section-size
32378The size of the section.
32379@item total-size
32380The size of the overall executable to download.
32381@end table
32382
32383@noindent
32384At the end, a summary is printed.
32385
32386@subsubheading @value{GDBN} Command
32387
32388The corresponding @value{GDBN} command is @samp{load}.
32389
32390@subsubheading Example
32391
32392Note: each status message appears on a single line. Here the messages
32393have been broken down so that they can fit onto a page.
922fbb7b
AC
32394
32395@smallexample
594fe323 32396(gdb)
a2c02241
NR
32397-target-download
32398+download,@{section=".text",section-size="6668",total-size="9880"@}
32399+download,@{section=".text",section-sent="512",section-size="6668",
32400total-sent="512",total-size="9880"@}
32401+download,@{section=".text",section-sent="1024",section-size="6668",
32402total-sent="1024",total-size="9880"@}
32403+download,@{section=".text",section-sent="1536",section-size="6668",
32404total-sent="1536",total-size="9880"@}
32405+download,@{section=".text",section-sent="2048",section-size="6668",
32406total-sent="2048",total-size="9880"@}
32407+download,@{section=".text",section-sent="2560",section-size="6668",
32408total-sent="2560",total-size="9880"@}
32409+download,@{section=".text",section-sent="3072",section-size="6668",
32410total-sent="3072",total-size="9880"@}
32411+download,@{section=".text",section-sent="3584",section-size="6668",
32412total-sent="3584",total-size="9880"@}
32413+download,@{section=".text",section-sent="4096",section-size="6668",
32414total-sent="4096",total-size="9880"@}
32415+download,@{section=".text",section-sent="4608",section-size="6668",
32416total-sent="4608",total-size="9880"@}
32417+download,@{section=".text",section-sent="5120",section-size="6668",
32418total-sent="5120",total-size="9880"@}
32419+download,@{section=".text",section-sent="5632",section-size="6668",
32420total-sent="5632",total-size="9880"@}
32421+download,@{section=".text",section-sent="6144",section-size="6668",
32422total-sent="6144",total-size="9880"@}
32423+download,@{section=".text",section-sent="6656",section-size="6668",
32424total-sent="6656",total-size="9880"@}
32425+download,@{section=".init",section-size="28",total-size="9880"@}
32426+download,@{section=".fini",section-size="28",total-size="9880"@}
32427+download,@{section=".data",section-size="3156",total-size="9880"@}
32428+download,@{section=".data",section-sent="512",section-size="3156",
32429total-sent="7236",total-size="9880"@}
32430+download,@{section=".data",section-sent="1024",section-size="3156",
32431total-sent="7748",total-size="9880"@}
32432+download,@{section=".data",section-sent="1536",section-size="3156",
32433total-sent="8260",total-size="9880"@}
32434+download,@{section=".data",section-sent="2048",section-size="3156",
32435total-sent="8772",total-size="9880"@}
32436+download,@{section=".data",section-sent="2560",section-size="3156",
32437total-sent="9284",total-size="9880"@}
32438+download,@{section=".data",section-sent="3072",section-size="3156",
32439total-sent="9796",total-size="9880"@}
32440^done,address="0x10004",load-size="9880",transfer-rate="6586",
32441write-rate="429"
594fe323 32442(gdb)
922fbb7b
AC
32443@end smallexample
32444
32445
9901a55b 32446@ignore
a2c02241
NR
32447@subheading The @code{-target-exec-status} Command
32448@findex -target-exec-status
922fbb7b
AC
32449
32450@subsubheading Synopsis
32451
32452@smallexample
a2c02241 32453 -target-exec-status
922fbb7b
AC
32454@end smallexample
32455
a2c02241
NR
32456Provide information on the state of the target (whether it is running or
32457not, for instance).
922fbb7b 32458
a2c02241 32459@subsubheading @value{GDBN} Command
922fbb7b 32460
a2c02241
NR
32461There's no equivalent @value{GDBN} command.
32462
32463@subsubheading Example
32464N.A.
922fbb7b 32465
a2c02241
NR
32466
32467@subheading The @code{-target-list-available-targets} Command
32468@findex -target-list-available-targets
922fbb7b
AC
32469
32470@subsubheading Synopsis
32471
32472@smallexample
a2c02241 32473 -target-list-available-targets
922fbb7b
AC
32474@end smallexample
32475
a2c02241 32476List the possible targets to connect to.
922fbb7b 32477
a2c02241 32478@subsubheading @value{GDBN} Command
922fbb7b 32479
a2c02241 32480The corresponding @value{GDBN} command is @samp{help target}.
922fbb7b 32481
a2c02241
NR
32482@subsubheading Example
32483N.A.
32484
32485
32486@subheading The @code{-target-list-current-targets} Command
32487@findex -target-list-current-targets
922fbb7b
AC
32488
32489@subsubheading Synopsis
32490
32491@smallexample
a2c02241 32492 -target-list-current-targets
922fbb7b
AC
32493@end smallexample
32494
a2c02241 32495Describe the current target.
922fbb7b 32496
a2c02241 32497@subsubheading @value{GDBN} Command
922fbb7b 32498
a2c02241
NR
32499The corresponding information is printed by @samp{info file} (among
32500other things).
922fbb7b 32501
a2c02241
NR
32502@subsubheading Example
32503N.A.
32504
32505
32506@subheading The @code{-target-list-parameters} Command
32507@findex -target-list-parameters
922fbb7b
AC
32508
32509@subsubheading Synopsis
32510
32511@smallexample
a2c02241 32512 -target-list-parameters
922fbb7b
AC
32513@end smallexample
32514
a2c02241 32515@c ????
9901a55b 32516@end ignore
a2c02241
NR
32517
32518@subsubheading @value{GDBN} Command
32519
32520No equivalent.
922fbb7b
AC
32521
32522@subsubheading Example
a2c02241
NR
32523N.A.
32524
32525
32526@subheading The @code{-target-select} Command
32527@findex -target-select
32528
32529@subsubheading Synopsis
922fbb7b
AC
32530
32531@smallexample
a2c02241 32532 -target-select @var{type} @var{parameters @dots{}}
922fbb7b
AC
32533@end smallexample
32534
a2c02241 32535Connect @value{GDBN} to the remote target. This command takes two args:
922fbb7b 32536
a2c02241
NR
32537@table @samp
32538@item @var{type}
75c99385 32539The type of target, for instance @samp{remote}, etc.
a2c02241
NR
32540@item @var{parameters}
32541Device names, host names and the like. @xref{Target Commands, ,
79a6e687 32542Commands for Managing Targets}, for more details.
a2c02241
NR
32543@end table
32544
32545The output is a connection notification, followed by the address at
32546which the target program is, in the following form:
922fbb7b
AC
32547
32548@smallexample
a2c02241
NR
32549^connected,addr="@var{address}",func="@var{function name}",
32550 args=[@var{arg list}]
922fbb7b
AC
32551@end smallexample
32552
a2c02241
NR
32553@subsubheading @value{GDBN} Command
32554
32555The corresponding @value{GDBN} command is @samp{target}.
265eeb58
NR
32556
32557@subsubheading Example
922fbb7b 32558
265eeb58 32559@smallexample
594fe323 32560(gdb)
75c99385 32561-target-select remote /dev/ttya
a2c02241 32562^connected,addr="0xfe00a300",func="??",args=[]
594fe323 32563(gdb)
265eeb58 32564@end smallexample
ef21caaf 32565
a6b151f1
DJ
32566@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32567@node GDB/MI File Transfer Commands
32568@section @sc{gdb/mi} File Transfer Commands
32569
32570
32571@subheading The @code{-target-file-put} Command
32572@findex -target-file-put
32573
32574@subsubheading Synopsis
32575
32576@smallexample
32577 -target-file-put @var{hostfile} @var{targetfile}
32578@end smallexample
32579
32580Copy file @var{hostfile} from the host system (the machine running
32581@value{GDBN}) to @var{targetfile} on the target system.
32582
32583@subsubheading @value{GDBN} Command
32584
32585The corresponding @value{GDBN} command is @samp{remote put}.
32586
32587@subsubheading Example
32588
32589@smallexample
32590(gdb)
32591-target-file-put localfile remotefile
32592^done
32593(gdb)
32594@end smallexample
32595
32596
1763a388 32597@subheading The @code{-target-file-get} Command
a6b151f1
DJ
32598@findex -target-file-get
32599
32600@subsubheading Synopsis
32601
32602@smallexample
32603 -target-file-get @var{targetfile} @var{hostfile}
32604@end smallexample
32605
32606Copy file @var{targetfile} from the target system to @var{hostfile}
32607on the host system.
32608
32609@subsubheading @value{GDBN} Command
32610
32611The corresponding @value{GDBN} command is @samp{remote get}.
32612
32613@subsubheading Example
32614
32615@smallexample
32616(gdb)
32617-target-file-get remotefile localfile
32618^done
32619(gdb)
32620@end smallexample
32621
32622
32623@subheading The @code{-target-file-delete} Command
32624@findex -target-file-delete
32625
32626@subsubheading Synopsis
32627
32628@smallexample
32629 -target-file-delete @var{targetfile}
32630@end smallexample
32631
32632Delete @var{targetfile} from the target system.
32633
32634@subsubheading @value{GDBN} Command
32635
32636The corresponding @value{GDBN} command is @samp{remote delete}.
32637
32638@subsubheading Example
32639
32640@smallexample
32641(gdb)
32642-target-file-delete remotefile
32643^done
32644(gdb)
32645@end smallexample
32646
32647
ef21caaf
NR
32648@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32649@node GDB/MI Miscellaneous Commands
32650@section Miscellaneous @sc{gdb/mi} Commands
32651
32652@c @subheading -gdb-complete
32653
32654@subheading The @code{-gdb-exit} Command
32655@findex -gdb-exit
32656
32657@subsubheading Synopsis
32658
32659@smallexample
32660 -gdb-exit
32661@end smallexample
32662
32663Exit @value{GDBN} immediately.
32664
32665@subsubheading @value{GDBN} Command
32666
32667Approximately corresponds to @samp{quit}.
32668
32669@subsubheading Example
32670
32671@smallexample
594fe323 32672(gdb)
ef21caaf
NR
32673-gdb-exit
32674^exit
32675@end smallexample
32676
a2c02241 32677
9901a55b 32678@ignore
a2c02241
NR
32679@subheading The @code{-exec-abort} Command
32680@findex -exec-abort
32681
32682@subsubheading Synopsis
32683
32684@smallexample
32685 -exec-abort
32686@end smallexample
32687
32688Kill the inferior running program.
32689
32690@subsubheading @value{GDBN} Command
32691
32692The corresponding @value{GDBN} command is @samp{kill}.
32693
32694@subsubheading Example
32695N.A.
9901a55b 32696@end ignore
a2c02241
NR
32697
32698
ef21caaf
NR
32699@subheading The @code{-gdb-set} Command
32700@findex -gdb-set
32701
32702@subsubheading Synopsis
32703
32704@smallexample
32705 -gdb-set
32706@end smallexample
32707
32708Set an internal @value{GDBN} variable.
32709@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
32710
32711@subsubheading @value{GDBN} Command
32712
32713The corresponding @value{GDBN} command is @samp{set}.
32714
32715@subsubheading Example
32716
32717@smallexample
594fe323 32718(gdb)
ef21caaf
NR
32719-gdb-set $foo=3
32720^done
594fe323 32721(gdb)
ef21caaf
NR
32722@end smallexample
32723
32724
32725@subheading The @code{-gdb-show} Command
32726@findex -gdb-show
32727
32728@subsubheading Synopsis
32729
32730@smallexample
32731 -gdb-show
32732@end smallexample
32733
32734Show the current value of a @value{GDBN} variable.
32735
79a6e687 32736@subsubheading @value{GDBN} Command
ef21caaf
NR
32737
32738The corresponding @value{GDBN} command is @samp{show}.
32739
32740@subsubheading Example
32741
32742@smallexample
594fe323 32743(gdb)
ef21caaf
NR
32744-gdb-show annotate
32745^done,value="0"
594fe323 32746(gdb)
ef21caaf
NR
32747@end smallexample
32748
32749@c @subheading -gdb-source
32750
32751
32752@subheading The @code{-gdb-version} Command
32753@findex -gdb-version
32754
32755@subsubheading Synopsis
32756
32757@smallexample
32758 -gdb-version
32759@end smallexample
32760
32761Show version information for @value{GDBN}. Used mostly in testing.
32762
32763@subsubheading @value{GDBN} Command
32764
32765The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by
32766default shows this information when you start an interactive session.
32767
32768@subsubheading Example
32769
32770@c This example modifies the actual output from GDB to avoid overfull
32771@c box in TeX.
32772@smallexample
594fe323 32773(gdb)
ef21caaf
NR
32774-gdb-version
32775~GNU gdb 5.2.1
32776~Copyright 2000 Free Software Foundation, Inc.
32777~GDB is free software, covered by the GNU General Public License, and
32778~you are welcome to change it and/or distribute copies of it under
32779~ certain conditions.
32780~Type "show copying" to see the conditions.
32781~There is absolutely no warranty for GDB. Type "show warranty" for
32782~ details.
32783~This GDB was configured as
32784 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
32785^done
594fe323 32786(gdb)
ef21caaf
NR
32787@end smallexample
32788
084344da
VP
32789@subheading The @code{-list-features} Command
32790@findex -list-features
32791
32792Returns a list of particular features of the MI protocol that
32793this version of gdb implements. A feature can be a command,
32794or a new field in an output of some command, or even an
32795important bugfix. While a frontend can sometimes detect presence
32796of a feature at runtime, it is easier to perform detection at debugger
32797startup.
32798
32799The command returns a list of strings, with each string naming an
32800available feature. Each returned string is just a name, it does not
32801have any internal structure. The list of possible feature names
32802is given below.
32803
32804Example output:
32805
32806@smallexample
32807(gdb) -list-features
32808^done,result=["feature1","feature2"]
32809@end smallexample
32810
32811The current list of features is:
32812
30e026bb
VP
32813@table @samp
32814@item frozen-varobjs
a05336a1
JB
32815Indicates support for the @code{-var-set-frozen} command, as well
32816as possible presense of the @code{frozen} field in the output
30e026bb
VP
32817of @code{-varobj-create}.
32818@item pending-breakpoints
a05336a1
JB
32819Indicates support for the @option{-f} option to the @code{-break-insert}
32820command.
b6313243 32821@item python
a05336a1 32822Indicates Python scripting support, Python-based
b6313243
TT
32823pretty-printing commands, and possible presence of the
32824@samp{display_hint} field in the output of @code{-var-list-children}
30e026bb 32825@item thread-info
a05336a1 32826Indicates support for the @code{-thread-info} command.
8dedea02 32827@item data-read-memory-bytes
a05336a1 32828Indicates support for the @code{-data-read-memory-bytes} and the
8dedea02 32829@code{-data-write-memory-bytes} commands.
39c4d40a
TT
32830@item breakpoint-notifications
32831Indicates that changes to breakpoints and breakpoints created via the
32832CLI will be announced via async records.
5d77fe44
JB
32833@item ada-task-info
32834Indicates support for the @code{-ada-task-info} command.
30e026bb 32835@end table
084344da 32836
c6ebd6cf
VP
32837@subheading The @code{-list-target-features} Command
32838@findex -list-target-features
32839
32840Returns a list of particular features that are supported by the
32841target. Those features affect the permitted MI commands, but
32842unlike the features reported by the @code{-list-features} command, the
32843features depend on which target GDB is using at the moment. Whenever
32844a target can change, due to commands such as @code{-target-select},
32845@code{-target-attach} or @code{-exec-run}, the list of target features
32846may change, and the frontend should obtain it again.
32847Example output:
32848
32849@smallexample
32850(gdb) -list-features
32851^done,result=["async"]
32852@end smallexample
32853
32854The current list of features is:
32855
32856@table @samp
32857@item async
32858Indicates that the target is capable of asynchronous command
32859execution, which means that @value{GDBN} will accept further commands
32860while the target is running.
32861
f75d858b
MK
32862@item reverse
32863Indicates that the target is capable of reverse execution.
32864@xref{Reverse Execution}, for more information.
32865
c6ebd6cf
VP
32866@end table
32867
c3b108f7
VP
32868@subheading The @code{-list-thread-groups} Command
32869@findex -list-thread-groups
32870
32871@subheading Synopsis
32872
32873@smallexample
dc146f7c 32874-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ]
c3b108f7
VP
32875@end smallexample
32876
dc146f7c
VP
32877Lists thread groups (@pxref{Thread groups}). When a single thread
32878group is passed as the argument, lists the children of that group.
32879When several thread group are passed, lists information about those
32880thread groups. Without any parameters, lists information about all
32881top-level thread groups.
32882
32883Normally, thread groups that are being debugged are reported.
32884With the @samp{--available} option, @value{GDBN} reports thread groups
32885available on the target.
32886
32887The output of this command may have either a @samp{threads} result or
32888a @samp{groups} result. The @samp{thread} result has a list of tuples
32889as value, with each tuple describing a thread (@pxref{GDB/MI Thread
32890Information}). The @samp{groups} result has a list of tuples as value,
32891each tuple describing a thread group. If top-level groups are
32892requested (that is, no parameter is passed), or when several groups
32893are passed, the output always has a @samp{groups} result. The format
32894of the @samp{group} result is described below.
32895
32896To reduce the number of roundtrips it's possible to list thread groups
32897together with their children, by passing the @samp{--recurse} option
32898and the recursion depth. Presently, only recursion depth of 1 is
32899permitted. If this option is present, then every reported thread group
32900will also include its children, either as @samp{group} or
32901@samp{threads} field.
32902
32903In general, any combination of option and parameters is permitted, with
32904the following caveats:
32905
32906@itemize @bullet
32907@item
32908When a single thread group is passed, the output will typically
32909be the @samp{threads} result. Because threads may not contain
32910anything, the @samp{recurse} option will be ignored.
32911
32912@item
32913When the @samp{--available} option is passed, limited information may
32914be available. In particular, the list of threads of a process might
32915be inaccessible. Further, specifying specific thread groups might
32916not give any performance advantage over listing all thread groups.
32917The frontend should assume that @samp{-list-thread-groups --available}
32918is always an expensive operation and cache the results.
32919
32920@end itemize
32921
32922The @samp{groups} result is a list of tuples, where each tuple may
32923have the following fields:
32924
32925@table @code
32926@item id
32927Identifier of the thread group. This field is always present.
a79b8f6e
VP
32928The identifier is an opaque string; frontends should not try to
32929convert it to an integer, even though it might look like one.
dc146f7c
VP
32930
32931@item type
32932The type of the thread group. At present, only @samp{process} is a
32933valid type.
32934
32935@item pid
32936The target-specific process identifier. This field is only present
a79b8f6e 32937for thread groups of type @samp{process} and only if the process exists.
c3b108f7 32938
dc146f7c
VP
32939@item num_children
32940The number of children this thread group has. This field may be
32941absent for an available thread group.
32942
32943@item threads
32944This field has a list of tuples as value, each tuple describing a
32945thread. It may be present if the @samp{--recurse} option is
32946specified, and it's actually possible to obtain the threads.
32947
32948@item cores
32949This field is a list of integers, each identifying a core that one
32950thread of the group is running on. This field may be absent if
32951such information is not available.
32952
a79b8f6e
VP
32953@item executable
32954The name of the executable file that corresponds to this thread group.
32955The field is only present for thread groups of type @samp{process},
32956and only if there is a corresponding executable file.
32957
dc146f7c 32958@end table
c3b108f7
VP
32959
32960@subheading Example
32961
32962@smallexample
32963@value{GDBP}
32964-list-thread-groups
32965^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}]
32966-list-thread-groups 17
32967^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
32968 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
32969@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
32970 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
32971 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]]
dc146f7c
VP
32972-list-thread-groups --available
32973^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}]
32974-list-thread-groups --available --recurse 1
32975 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
32976 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
32977 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..]
32978-list-thread-groups --available --recurse 1 17 18
32979^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
32980 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
32981 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...]
c3b108f7 32982@end smallexample
c6ebd6cf 32983
f3e0e960
SS
32984@subheading The @code{-info-os} Command
32985@findex -info-os
32986
32987@subsubheading Synopsis
32988
32989@smallexample
32990-info-os [ @var{type} ]
32991@end smallexample
32992
32993If no argument is supplied, the command returns a table of available
32994operating-system-specific information types. If one of these types is
32995supplied as an argument @var{type}, then the command returns a table
32996of data of that type.
32997
32998The types of information available depend on the target operating
32999system.
33000
33001@subsubheading @value{GDBN} Command
33002
33003The corresponding @value{GDBN} command is @samp{info os}.
33004
33005@subsubheading Example
33006
33007When run on a @sc{gnu}/Linux system, the output will look something
33008like this:
33009
33010@smallexample
33011@value{GDBP}
33012-info-os
71caed83 33013^done,OSDataTable=@{nr_rows="9",nr_cols="3",
f3e0e960 33014hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@},
71caed83
SS
33015 @{width="10",alignment="-1",col_name="col1",colhdr="Description"@},
33016 @{width="10",alignment="-1",col_name="col2",colhdr="Title"@}],
33017body=[item=@{col0="processes",col1="Listing of all processes",
33018 col2="Processes"@},
33019 item=@{col0="procgroups",col1="Listing of all process groups",
33020 col2="Process groups"@},
33021 item=@{col0="threads",col1="Listing of all threads",
33022 col2="Threads"@},
33023 item=@{col0="files",col1="Listing of all file descriptors",
33024 col2="File descriptors"@},
33025 item=@{col0="sockets",col1="Listing of all internet-domain sockets",
33026 col2="Sockets"@},
33027 item=@{col0="shm",col1="Listing of all shared-memory regions",
33028 col2="Shared-memory regions"@},
33029 item=@{col0="semaphores",col1="Listing of all semaphores",
33030 col2="Semaphores"@},
33031 item=@{col0="msg",col1="Listing of all message queues",
33032 col2="Message queues"@},
33033 item=@{col0="modules",col1="Listing of all loaded kernel modules",
33034 col2="Kernel modules"@}]@}
f3e0e960
SS
33035@value{GDBP}
33036-info-os processes
33037^done,OSDataTable=@{nr_rows="190",nr_cols="4",
33038hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@},
33039 @{width="10",alignment="-1",col_name="col1",colhdr="user"@},
33040 @{width="10",alignment="-1",col_name="col2",colhdr="command"@},
33041 @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}],
33042body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@},
33043 item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@},
33044 item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@},
33045 ...
33046 item=@{col0="26446",col1="stan",col2="bash",col3="0"@},
33047 item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@}
33048(gdb)
33049@end smallexample
a79b8f6e 33050
71caed83
SS
33051(Note that the MI output here includes a @code{"Title"} column that
33052does not appear in command-line @code{info os}; this column is useful
33053for MI clients that want to enumerate the types of data, such as in a
33054popup menu, but is needless clutter on the command line, and
33055@code{info os} omits it.)
33056
a79b8f6e
VP
33057@subheading The @code{-add-inferior} Command
33058@findex -add-inferior
33059
33060@subheading Synopsis
33061
33062@smallexample
33063-add-inferior
33064@end smallexample
33065
33066Creates a new inferior (@pxref{Inferiors and Programs}). The created
33067inferior is not associated with any executable. Such association may
33068be established with the @samp{-file-exec-and-symbols} command
33069(@pxref{GDB/MI File Commands}). The command response has a single
33070field, @samp{thread-group}, whose value is the identifier of the
33071thread group corresponding to the new inferior.
33072
33073@subheading Example
33074
33075@smallexample
33076@value{GDBP}
33077-add-inferior
33078^done,thread-group="i3"
33079@end smallexample
33080
ef21caaf
NR
33081@subheading The @code{-interpreter-exec} Command
33082@findex -interpreter-exec
33083
33084@subheading Synopsis
33085
33086@smallexample
33087-interpreter-exec @var{interpreter} @var{command}
33088@end smallexample
a2c02241 33089@anchor{-interpreter-exec}
ef21caaf
NR
33090
33091Execute the specified @var{command} in the given @var{interpreter}.
33092
33093@subheading @value{GDBN} Command
33094
33095The corresponding @value{GDBN} command is @samp{interpreter-exec}.
33096
33097@subheading Example
33098
33099@smallexample
594fe323 33100(gdb)
ef21caaf
NR
33101-interpreter-exec console "break main"
33102&"During symbol reading, couldn't parse type; debugger out of date?.\n"
33103&"During symbol reading, bad structure-type format.\n"
33104~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
33105^done
594fe323 33106(gdb)
ef21caaf
NR
33107@end smallexample
33108
33109@subheading The @code{-inferior-tty-set} Command
33110@findex -inferior-tty-set
33111
33112@subheading Synopsis
33113
33114@smallexample
33115-inferior-tty-set /dev/pts/1
33116@end smallexample
33117
33118Set terminal for future runs of the program being debugged.
33119
33120@subheading @value{GDBN} Command
33121
33122The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1.
33123
33124@subheading Example
33125
33126@smallexample
594fe323 33127(gdb)
ef21caaf
NR
33128-inferior-tty-set /dev/pts/1
33129^done
594fe323 33130(gdb)
ef21caaf
NR
33131@end smallexample
33132
33133@subheading The @code{-inferior-tty-show} Command
33134@findex -inferior-tty-show
33135
33136@subheading Synopsis
33137
33138@smallexample
33139-inferior-tty-show
33140@end smallexample
33141
33142Show terminal for future runs of program being debugged.
33143
33144@subheading @value{GDBN} Command
33145
33146The corresponding @value{GDBN} command is @samp{show inferior-tty}.
33147
33148@subheading Example
33149
33150@smallexample
594fe323 33151(gdb)
ef21caaf
NR
33152-inferior-tty-set /dev/pts/1
33153^done
594fe323 33154(gdb)
ef21caaf
NR
33155-inferior-tty-show
33156^done,inferior_tty_terminal="/dev/pts/1"
594fe323 33157(gdb)
ef21caaf 33158@end smallexample
922fbb7b 33159
a4eefcd8
NR
33160@subheading The @code{-enable-timings} Command
33161@findex -enable-timings
33162
33163@subheading Synopsis
33164
33165@smallexample
33166-enable-timings [yes | no]
33167@end smallexample
33168
33169Toggle the printing of the wallclock, user and system times for an MI
33170command as a field in its output. This command is to help frontend
33171developers optimize the performance of their code. No argument is
33172equivalent to @samp{yes}.
33173
33174@subheading @value{GDBN} Command
33175
33176No equivalent.
33177
33178@subheading Example
33179
33180@smallexample
33181(gdb)
33182-enable-timings
33183^done
33184(gdb)
33185-break-insert main
33186^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
33187addr="0x080484ed",func="main",file="myprog.c",
33188fullname="/home/nickrob/myprog.c",line="73",times="0"@},
33189time=@{wallclock="0.05185",user="0.00800",system="0.00000"@}
33190(gdb)
33191-enable-timings no
33192^done
33193(gdb)
33194-exec-run
33195^running
33196(gdb)
a47ec5fe 33197*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
a4eefcd8
NR
33198frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@},
33199@{name="argv",value="0xbfb60364"@}],file="myprog.c",
33200fullname="/home/nickrob/myprog.c",line="73"@}
33201(gdb)
33202@end smallexample
33203
922fbb7b
AC
33204@node Annotations
33205@chapter @value{GDBN} Annotations
33206
086432e2
AC
33207This chapter describes annotations in @value{GDBN}. Annotations were
33208designed to interface @value{GDBN} to graphical user interfaces or other
33209similar programs which want to interact with @value{GDBN} at a
922fbb7b
AC
33210relatively high level.
33211
d3e8051b 33212The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2
AC
33213(@pxref{GDB/MI}).
33214
922fbb7b
AC
33215@ignore
33216This is Edition @value{EDITION}, @value{DATE}.
33217@end ignore
33218
33219@menu
33220* Annotations Overview:: What annotations are; the general syntax.
9e6c4bd5 33221* Server Prefix:: Issuing a command without affecting user state.
922fbb7b
AC
33222* Prompting:: Annotations marking @value{GDBN}'s need for input.
33223* Errors:: Annotations for error messages.
922fbb7b
AC
33224* Invalidation:: Some annotations describe things now invalid.
33225* Annotations for Running::
33226 Whether the program is running, how it stopped, etc.
33227* Source Annotations:: Annotations describing source code.
922fbb7b
AC
33228@end menu
33229
33230@node Annotations Overview
33231@section What is an Annotation?
33232@cindex annotations
33233
922fbb7b
AC
33234Annotations start with a newline character, two @samp{control-z}
33235characters, and the name of the annotation. If there is no additional
33236information associated with this annotation, the name of the annotation
33237is followed immediately by a newline. If there is additional
33238information, the name of the annotation is followed by a space, the
33239additional information, and a newline. The additional information
33240cannot contain newline characters.
33241
33242Any output not beginning with a newline and two @samp{control-z}
33243characters denotes literal output from @value{GDBN}. Currently there is
33244no need for @value{GDBN} to output a newline followed by two
33245@samp{control-z} characters, but if there was such a need, the
33246annotations could be extended with an @samp{escape} annotation which
33247means those three characters as output.
33248
086432e2
AC
33249The annotation @var{level}, which is specified using the
33250@option{--annotate} command line option (@pxref{Mode Options}), controls
33251how much information @value{GDBN} prints together with its prompt,
33252values of expressions, source lines, and other types of output. Level 0
d3e8051b 33253is for no annotations, level 1 is for use when @value{GDBN} is run as a
086432e2
AC
33254subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
33255for programs that control @value{GDBN}, and level 2 annotations have
33256been made obsolete (@pxref{Limitations, , Limitations of the Annotation
09d4efe1
EZ
33257Interface, annotate, GDB's Obsolete Annotations}).
33258
33259@table @code
33260@kindex set annotate
33261@item set annotate @var{level}
e09f16f9 33262The @value{GDBN} command @code{set annotate} sets the level of
09d4efe1 33263annotations to the specified @var{level}.
9c16f35a
EZ
33264
33265@item show annotate
33266@kindex show annotate
33267Show the current annotation level.
09d4efe1
EZ
33268@end table
33269
33270This chapter describes level 3 annotations.
086432e2 33271
922fbb7b
AC
33272A simple example of starting up @value{GDBN} with annotations is:
33273
33274@smallexample
086432e2
AC
33275$ @kbd{gdb --annotate=3}
33276GNU gdb 6.0
33277Copyright 2003 Free Software Foundation, Inc.
922fbb7b
AC
33278GDB is free software, covered by the GNU General Public License,
33279and you are welcome to change it and/or distribute copies of it
33280under certain conditions.
33281Type "show copying" to see the conditions.
33282There is absolutely no warranty for GDB. Type "show warranty"
33283for details.
086432e2 33284This GDB was configured as "i386-pc-linux-gnu"
922fbb7b
AC
33285
33286^Z^Zpre-prompt
f7dc1244 33287(@value{GDBP})
922fbb7b 33288^Z^Zprompt
086432e2 33289@kbd{quit}
922fbb7b
AC
33290
33291^Z^Zpost-prompt
b383017d 33292$
922fbb7b
AC
33293@end smallexample
33294
33295Here @samp{quit} is input to @value{GDBN}; the rest is output from
33296@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
33297denotes a @samp{control-z} character) are annotations; the rest is
33298output from @value{GDBN}.
33299
9e6c4bd5
NR
33300@node Server Prefix
33301@section The Server Prefix
33302@cindex server prefix
33303
33304If you prefix a command with @samp{server } then it will not affect
33305the command history, nor will it affect @value{GDBN}'s notion of which
33306command to repeat if @key{RET} is pressed on a line by itself. This
33307means that commands can be run behind a user's back by a front-end in
33308a transparent manner.
33309
d837706a
NR
33310The @code{server } prefix does not affect the recording of values into
33311the value history; to print a value without recording it into the
33312value history, use the @code{output} command instead of the
33313@code{print} command.
33314
33315Using this prefix also disables confirmation requests
33316(@pxref{confirmation requests}).
9e6c4bd5 33317
922fbb7b
AC
33318@node Prompting
33319@section Annotation for @value{GDBN} Input
33320
33321@cindex annotations for prompts
33322When @value{GDBN} prompts for input, it annotates this fact so it is possible
33323to know when to send output, when the output from a given command is
33324over, etc.
33325
33326Different kinds of input each have a different @dfn{input type}. Each
33327input type has three annotations: a @code{pre-} annotation, which
33328denotes the beginning of any prompt which is being output, a plain
33329annotation, which denotes the end of the prompt, and then a @code{post-}
33330annotation which denotes the end of any echo which may (or may not) be
33331associated with the input. For example, the @code{prompt} input type
33332features the following annotations:
33333
33334@smallexample
33335^Z^Zpre-prompt
33336^Z^Zprompt
33337^Z^Zpost-prompt
33338@end smallexample
33339
33340The input types are
33341
33342@table @code
e5ac9b53
EZ
33343@findex pre-prompt annotation
33344@findex prompt annotation
33345@findex post-prompt annotation
922fbb7b
AC
33346@item prompt
33347When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
33348
e5ac9b53
EZ
33349@findex pre-commands annotation
33350@findex commands annotation
33351@findex post-commands annotation
922fbb7b
AC
33352@item commands
33353When @value{GDBN} prompts for a set of commands, like in the @code{commands}
33354command. The annotations are repeated for each command which is input.
33355
e5ac9b53
EZ
33356@findex pre-overload-choice annotation
33357@findex overload-choice annotation
33358@findex post-overload-choice annotation
922fbb7b
AC
33359@item overload-choice
33360When @value{GDBN} wants the user to select between various overloaded functions.
33361
e5ac9b53
EZ
33362@findex pre-query annotation
33363@findex query annotation
33364@findex post-query annotation
922fbb7b
AC
33365@item query
33366When @value{GDBN} wants the user to confirm a potentially dangerous operation.
33367
e5ac9b53
EZ
33368@findex pre-prompt-for-continue annotation
33369@findex prompt-for-continue annotation
33370@findex post-prompt-for-continue annotation
922fbb7b
AC
33371@item prompt-for-continue
33372When @value{GDBN} is asking the user to press return to continue. Note: Don't
33373expect this to work well; instead use @code{set height 0} to disable
33374prompting. This is because the counting of lines is buggy in the
33375presence of annotations.
33376@end table
33377
33378@node Errors
33379@section Errors
33380@cindex annotations for errors, warnings and interrupts
33381
e5ac9b53 33382@findex quit annotation
922fbb7b
AC
33383@smallexample
33384^Z^Zquit
33385@end smallexample
33386
33387This annotation occurs right before @value{GDBN} responds to an interrupt.
33388
e5ac9b53 33389@findex error annotation
922fbb7b
AC
33390@smallexample
33391^Z^Zerror
33392@end smallexample
33393
33394This annotation occurs right before @value{GDBN} responds to an error.
33395
33396Quit and error annotations indicate that any annotations which @value{GDBN} was
33397in the middle of may end abruptly. For example, if a
33398@code{value-history-begin} annotation is followed by a @code{error}, one
33399cannot expect to receive the matching @code{value-history-end}. One
33400cannot expect not to receive it either, however; an error annotation
33401does not necessarily mean that @value{GDBN} is immediately returning all the way
33402to the top level.
33403
e5ac9b53 33404@findex error-begin annotation
922fbb7b
AC
33405A quit or error annotation may be preceded by
33406
33407@smallexample
33408^Z^Zerror-begin
33409@end smallexample
33410
33411Any output between that and the quit or error annotation is the error
33412message.
33413
33414Warning messages are not yet annotated.
33415@c If we want to change that, need to fix warning(), type_error(),
33416@c range_error(), and possibly other places.
33417
922fbb7b
AC
33418@node Invalidation
33419@section Invalidation Notices
33420
33421@cindex annotations for invalidation messages
33422The following annotations say that certain pieces of state may have
33423changed.
33424
33425@table @code
e5ac9b53 33426@findex frames-invalid annotation
922fbb7b
AC
33427@item ^Z^Zframes-invalid
33428
33429The frames (for example, output from the @code{backtrace} command) may
33430have changed.
33431
e5ac9b53 33432@findex breakpoints-invalid annotation
922fbb7b
AC
33433@item ^Z^Zbreakpoints-invalid
33434
33435The breakpoints may have changed. For example, the user just added or
33436deleted a breakpoint.
33437@end table
33438
33439@node Annotations for Running
33440@section Running the Program
33441@cindex annotations for running programs
33442
e5ac9b53
EZ
33443@findex starting annotation
33444@findex stopping annotation
922fbb7b 33445When the program starts executing due to a @value{GDBN} command such as
b383017d 33446@code{step} or @code{continue},
922fbb7b
AC
33447
33448@smallexample
33449^Z^Zstarting
33450@end smallexample
33451
b383017d 33452is output. When the program stops,
922fbb7b
AC
33453
33454@smallexample
33455^Z^Zstopped
33456@end smallexample
33457
33458is output. Before the @code{stopped} annotation, a variety of
33459annotations describe how the program stopped.
33460
33461@table @code
e5ac9b53 33462@findex exited annotation
922fbb7b
AC
33463@item ^Z^Zexited @var{exit-status}
33464The program exited, and @var{exit-status} is the exit status (zero for
33465successful exit, otherwise nonzero).
33466
e5ac9b53
EZ
33467@findex signalled annotation
33468@findex signal-name annotation
33469@findex signal-name-end annotation
33470@findex signal-string annotation
33471@findex signal-string-end annotation
922fbb7b
AC
33472@item ^Z^Zsignalled
33473The program exited with a signal. After the @code{^Z^Zsignalled}, the
33474annotation continues:
33475
33476@smallexample
33477@var{intro-text}
33478^Z^Zsignal-name
33479@var{name}
33480^Z^Zsignal-name-end
33481@var{middle-text}
33482^Z^Zsignal-string
33483@var{string}
33484^Z^Zsignal-string-end
33485@var{end-text}
33486@end smallexample
33487
33488@noindent
33489where @var{name} is the name of the signal, such as @code{SIGILL} or
33490@code{SIGSEGV}, and @var{string} is the explanation of the signal, such
33491as @code{Illegal Instruction} or @code{Segmentation fault}.
33492@var{intro-text}, @var{middle-text}, and @var{end-text} are for the
33493user's benefit and have no particular format.
33494
e5ac9b53 33495@findex signal annotation
922fbb7b
AC
33496@item ^Z^Zsignal
33497The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
33498just saying that the program received the signal, not that it was
33499terminated with it.
33500
e5ac9b53 33501@findex breakpoint annotation
922fbb7b
AC
33502@item ^Z^Zbreakpoint @var{number}
33503The program hit breakpoint number @var{number}.
33504
e5ac9b53 33505@findex watchpoint annotation
922fbb7b
AC
33506@item ^Z^Zwatchpoint @var{number}
33507The program hit watchpoint number @var{number}.
33508@end table
33509
33510@node Source Annotations
33511@section Displaying Source
33512@cindex annotations for source display
33513
e5ac9b53 33514@findex source annotation
922fbb7b
AC
33515The following annotation is used instead of displaying source code:
33516
33517@smallexample
33518^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
33519@end smallexample
33520
33521where @var{filename} is an absolute file name indicating which source
33522file, @var{line} is the line number within that file (where 1 is the
33523first line in the file), @var{character} is the character position
33524within the file (where 0 is the first character in the file) (for most
33525debug formats this will necessarily point to the beginning of a line),
33526@var{middle} is @samp{middle} if @var{addr} is in the middle of the
33527line, or @samp{beg} if @var{addr} is at the beginning of the line, and
33528@var{addr} is the address in the target program associated with the
33529source which is being displayed. @var{addr} is in the form @samp{0x}
33530followed by one or more lowercase hex digits (note that this does not
33531depend on the language).
33532
4efc6507
DE
33533@node JIT Interface
33534@chapter JIT Compilation Interface
33535@cindex just-in-time compilation
33536@cindex JIT compilation interface
33537
33538This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation
33539interface. A JIT compiler is a program or library that generates native
33540executable code at runtime and executes it, usually in order to achieve good
33541performance while maintaining platform independence.
33542
33543Programs that use JIT compilation are normally difficult to debug because
33544portions of their code are generated at runtime, instead of being loaded from
33545object files, which is where @value{GDBN} normally finds the program's symbols
33546and debug information. In order to debug programs that use JIT compilation,
33547@value{GDBN} has an interface that allows the program to register in-memory
33548symbol files with @value{GDBN} at runtime.
33549
33550If you are using @value{GDBN} to debug a program that uses this interface, then
33551it should work transparently so long as you have not stripped the binary. If
33552you are developing a JIT compiler, then the interface is documented in the rest
33553of this chapter. At this time, the only known client of this interface is the
33554LLVM JIT.
33555
33556Broadly speaking, the JIT interface mirrors the dynamic loader interface. The
33557JIT compiler communicates with @value{GDBN} by writing data into a global
33558variable and calling a fuction at a well-known symbol. When @value{GDBN}
33559attaches, it reads a linked list of symbol files from the global variable to
33560find existing code, and puts a breakpoint in the function so that it can find
33561out about additional code.
33562
33563@menu
33564* Declarations:: Relevant C struct declarations
33565* Registering Code:: Steps to register code
33566* Unregistering Code:: Steps to unregister code
f85b53f8 33567* Custom Debug Info:: Emit debug information in a custom format
4efc6507
DE
33568@end menu
33569
33570@node Declarations
33571@section JIT Declarations
33572
33573These are the relevant struct declarations that a C program should include to
33574implement the interface:
33575
33576@smallexample
33577typedef enum
33578@{
33579 JIT_NOACTION = 0,
33580 JIT_REGISTER_FN,
33581 JIT_UNREGISTER_FN
33582@} jit_actions_t;
33583
33584struct jit_code_entry
33585@{
33586 struct jit_code_entry *next_entry;
33587 struct jit_code_entry *prev_entry;
33588 const char *symfile_addr;
33589 uint64_t symfile_size;
33590@};
33591
33592struct jit_descriptor
33593@{
33594 uint32_t version;
33595 /* This type should be jit_actions_t, but we use uint32_t
33596 to be explicit about the bitwidth. */
33597 uint32_t action_flag;
33598 struct jit_code_entry *relevant_entry;
33599 struct jit_code_entry *first_entry;
33600@};
33601
33602/* GDB puts a breakpoint in this function. */
33603void __attribute__((noinline)) __jit_debug_register_code() @{ @};
33604
33605/* Make sure to specify the version statically, because the
33606 debugger may check the version before we can set it. */
33607struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @};
33608@end smallexample
33609
33610If the JIT is multi-threaded, then it is important that the JIT synchronize any
33611modifications to this global data properly, which can easily be done by putting
33612a global mutex around modifications to these structures.
33613
33614@node Registering Code
33615@section Registering Code
33616
33617To register code with @value{GDBN}, the JIT should follow this protocol:
33618
33619@itemize @bullet
33620@item
33621Generate an object file in memory with symbols and other desired debug
33622information. The file must include the virtual addresses of the sections.
33623
33624@item
33625Create a code entry for the file, which gives the start and size of the symbol
33626file.
33627
33628@item
33629Add it to the linked list in the JIT descriptor.
33630
33631@item
33632Point the relevant_entry field of the descriptor at the entry.
33633
33634@item
33635Set @code{action_flag} to @code{JIT_REGISTER} and call
33636@code{__jit_debug_register_code}.
33637@end itemize
33638
33639When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the
33640@code{relevant_entry} pointer so it doesn't have to walk the list looking for
33641new code. However, the linked list must still be maintained in order to allow
33642@value{GDBN} to attach to a running process and still find the symbol files.
33643
33644@node Unregistering Code
33645@section Unregistering Code
33646
33647If code is freed, then the JIT should use the following protocol:
33648
33649@itemize @bullet
33650@item
33651Remove the code entry corresponding to the code from the linked list.
33652
33653@item
33654Point the @code{relevant_entry} field of the descriptor at the code entry.
33655
33656@item
33657Set @code{action_flag} to @code{JIT_UNREGISTER} and call
33658@code{__jit_debug_register_code}.
33659@end itemize
33660
33661If the JIT frees or recompiles code without unregistering it, then @value{GDBN}
33662and the JIT will leak the memory used for the associated symbol files.
33663
f85b53f8
SD
33664@node Custom Debug Info
33665@section Custom Debug Info
33666@cindex custom JIT debug info
33667@cindex JIT debug info reader
33668
33669Generating debug information in platform-native file formats (like ELF
33670or COFF) may be an overkill for JIT compilers; especially if all the
33671debug info is used for is displaying a meaningful backtrace. The
33672issue can be resolved by having the JIT writers decide on a debug info
33673format and also provide a reader that parses the debug info generated
33674by the JIT compiler. This section gives a brief overview on writing
33675such a parser. More specific details can be found in the source file
33676@file{gdb/jit-reader.in}, which is also installed as a header at
33677@file{@var{includedir}/gdb/jit-reader.h} for easy inclusion.
33678
33679The reader is implemented as a shared object (so this functionality is
33680not available on platforms which don't allow loading shared objects at
33681runtime). Two @value{GDBN} commands, @code{jit-reader-load} and
33682@code{jit-reader-unload} are provided, to be used to load and unload
33683the readers from a preconfigured directory. Once loaded, the shared
33684object is used the parse the debug information emitted by the JIT
33685compiler.
33686
33687@menu
33688* Using JIT Debug Info Readers:: How to use supplied readers correctly
33689* Writing JIT Debug Info Readers:: Creating a debug-info reader
33690@end menu
33691
33692@node Using JIT Debug Info Readers
33693@subsection Using JIT Debug Info Readers
33694@kindex jit-reader-load
33695@kindex jit-reader-unload
33696
33697Readers can be loaded and unloaded using the @code{jit-reader-load}
33698and @code{jit-reader-unload} commands.
33699
33700@table @code
33701@item jit-reader-load @var{reader-name}
33702Load the JIT reader named @var{reader-name}. On a UNIX system, this
33703will usually load @file{@var{libdir}/gdb/@var{reader-name}}, where
33704@var{libdir} is the system library directory, usually
33705@file{/usr/local/lib}. Only one reader can be active at a time;
33706trying to load a second reader when one is already loaded will result
33707in @value{GDBN} reporting an error. A new JIT reader can be loaded by
33708first unloading the current one using @code{jit-reader-load} and then
33709invoking @code{jit-reader-load}.
33710
33711@item jit-reader-unload
33712Unload the currently loaded JIT reader.
33713
33714@end table
33715
33716@node Writing JIT Debug Info Readers
33717@subsection Writing JIT Debug Info Readers
33718@cindex writing JIT debug info readers
33719
33720As mentioned, a reader is essentially a shared object conforming to a
33721certain ABI. This ABI is described in @file{jit-reader.h}.
33722
33723@file{jit-reader.h} defines the structures, macros and functions
33724required to write a reader. It is installed (along with
33725@value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is
33726the system include directory.
33727
33728Readers need to be released under a GPL compatible license. A reader
33729can be declared as released under such a license by placing the macro
33730@code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file.
33731
33732The entry point for readers is the symbol @code{gdb_init_reader},
33733which is expected to be a function with the prototype
33734
33735@findex gdb_init_reader
33736@smallexample
33737extern struct gdb_reader_funcs *gdb_init_reader (void);
33738@end smallexample
33739
33740@cindex @code{struct gdb_reader_funcs}
33741
33742@code{struct gdb_reader_funcs} contains a set of pointers to callback
33743functions. These functions are executed to read the debug info
33744generated by the JIT compiler (@code{read}), to unwind stack frames
33745(@code{unwind}) and to create canonical frame IDs
33746(@code{get_Frame_id}). It also has a callback that is called when the
33747reader is being unloaded (@code{destroy}). The struct looks like this
33748
33749@smallexample
33750struct gdb_reader_funcs
33751@{
33752 /* Must be set to GDB_READER_INTERFACE_VERSION. */
33753 int reader_version;
33754
33755 /* For use by the reader. */
33756 void *priv_data;
33757
33758 gdb_read_debug_info *read;
33759 gdb_unwind_frame *unwind;
33760 gdb_get_frame_id *get_frame_id;
33761 gdb_destroy_reader *destroy;
33762@};
33763@end smallexample
33764
33765@cindex @code{struct gdb_symbol_callbacks}
33766@cindex @code{struct gdb_unwind_callbacks}
33767
33768The callbacks are provided with another set of callbacks by
33769@value{GDBN} to do their job. For @code{read}, these callbacks are
33770passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind}
33771and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}.
33772@code{struct gdb_symbol_callbacks} has callbacks to create new object
33773files and new symbol tables inside those object files. @code{struct
33774gdb_unwind_callbacks} has callbacks to read registers off the current
33775frame and to write out the values of the registers in the previous
33776frame. Both have a callback (@code{target_read}) to read bytes off the
33777target's address space.
33778
d1feda86
YQ
33779@node In-Process Agent
33780@chapter In-Process Agent
33781@cindex debugging agent
33782The traditional debugging model is conceptually low-speed, but works fine,
33783because most bugs can be reproduced in debugging-mode execution. However,
33784as multi-core or many-core processors are becoming mainstream, and
33785multi-threaded programs become more and more popular, there should be more
33786and more bugs that only manifest themselves at normal-mode execution, for
33787example, thread races, because debugger's interference with the program's
33788timing may conceal the bugs. On the other hand, in some applications,
33789it is not feasible for the debugger to interrupt the program's execution
33790long enough for the developer to learn anything helpful about its behavior.
33791If the program's correctness depends on its real-time behavior, delays
33792introduced by a debugger might cause the program to fail, even when the
33793code itself is correct. It is useful to be able to observe the program's
33794behavior without interrupting it.
33795
33796Therefore, traditional debugging model is too intrusive to reproduce
33797some bugs. In order to reduce the interference with the program, we can
33798reduce the number of operations performed by debugger. The
33799@dfn{In-Process Agent}, a shared library, is running within the same
33800process with inferior, and is able to perform some debugging operations
33801itself. As a result, debugger is only involved when necessary, and
33802performance of debugging can be improved accordingly. Note that
33803interference with program can be reduced but can't be removed completely,
33804because the in-process agent will still stop or slow down the program.
33805
33806The in-process agent can interpret and execute Agent Expressions
33807(@pxref{Agent Expressions}) during performing debugging operations. The
33808agent expressions can be used for different purposes, such as collecting
33809data in tracepoints, and condition evaluation in breakpoints.
33810
33811@anchor{Control Agent}
33812You can control whether the in-process agent is used as an aid for
33813debugging with the following commands:
33814
33815@table @code
33816@kindex set agent on
33817@item set agent on
33818Causes the in-process agent to perform some operations on behalf of the
33819debugger. Just which operations requested by the user will be done
33820by the in-process agent depends on the its capabilities. For example,
33821if you request to evaluate breakpoint conditions in the in-process agent,
33822and the in-process agent has such capability as well, then breakpoint
33823conditions will be evaluated in the in-process agent.
33824
33825@kindex set agent off
33826@item set agent off
33827Disables execution of debugging operations by the in-process agent. All
33828of the operations will be performed by @value{GDBN}.
33829
33830@kindex show agent
33831@item show agent
33832Display the current setting of execution of debugging operations by
33833the in-process agent.
33834@end table
33835
16bdd41f
YQ
33836@menu
33837* In-Process Agent Protocol::
33838@end menu
33839
33840@node In-Process Agent Protocol
33841@section In-Process Agent Protocol
33842@cindex in-process agent protocol
33843
33844The in-process agent is able to communicate with both @value{GDBN} and
33845GDBserver (@pxref{In-Process Agent}). This section documents the protocol
33846used for communications between @value{GDBN} or GDBserver and the IPA.
33847In general, @value{GDBN} or GDBserver sends commands
33848(@pxref{IPA Protocol Commands}) and data to in-process agent, and then
33849in-process agent replies back with the return result of the command, or
33850some other information. The data sent to in-process agent is composed
33851of primitive data types, such as 4-byte or 8-byte type, and composite
33852types, which are called objects (@pxref{IPA Protocol Objects}).
33853
33854@menu
33855* IPA Protocol Objects::
33856* IPA Protocol Commands::
33857@end menu
33858
33859@node IPA Protocol Objects
33860@subsection IPA Protocol Objects
33861@cindex ipa protocol objects
33862
33863The commands sent to and results received from agent may contain some
33864complex data types called @dfn{objects}.
33865
33866The in-process agent is running on the same machine with @value{GDBN}
33867or GDBserver, so it doesn't have to handle as much differences between
33868two ends as remote protocol (@pxref{Remote Protocol}) tries to handle.
33869However, there are still some differences of two ends in two processes:
33870
33871@enumerate
33872@item
33873word size. On some 64-bit machines, @value{GDBN} or GDBserver can be
33874compiled as a 64-bit executable, while in-process agent is a 32-bit one.
33875@item
33876ABI. Some machines may have multiple types of ABI, @value{GDBN} or
33877GDBserver is compiled with one, and in-process agent is compiled with
33878the other one.
33879@end enumerate
33880
33881Here are the IPA Protocol Objects:
33882
33883@enumerate
33884@item
33885agent expression object. It represents an agent expression
33886(@pxref{Agent Expressions}).
33887@anchor{agent expression object}
33888@item
33889tracepoint action object. It represents a tracepoint action
33890(@pxref{Tracepoint Actions,,Tracepoint Action Lists}) to collect registers,
33891memory, static trace data and to evaluate expression.
33892@anchor{tracepoint action object}
33893@item
33894tracepoint object. It represents a tracepoint (@pxref{Tracepoints}).
33895@anchor{tracepoint object}
33896
33897@end enumerate
33898
33899The following table describes important attributes of each IPA protocol
33900object:
33901
33902@multitable @columnfractions .30 .20 .50
33903@headitem Name @tab Size @tab Description
33904@item @emph{agent expression object} @tab @tab
33905@item length @tab 4 @tab length of bytes code
33906@item byte code @tab @var{length} @tab contents of byte code
33907@item @emph{tracepoint action for collecting memory} @tab @tab
33908@item 'M' @tab 1 @tab type of tracepoint action
33909@item addr @tab 8 @tab if @var{basereg} is @samp{-1}, @var{addr} is the
33910address of the lowest byte to collect, otherwise @var{addr} is the offset
33911of @var{basereg} for memory collecting.
33912@item len @tab 8 @tab length of memory for collecting
33913@item basereg @tab 4 @tab the register number containing the starting
33914memory address for collecting.
33915@item @emph{tracepoint action for collecting registers} @tab @tab
33916@item 'R' @tab 1 @tab type of tracepoint action
33917@item @emph{tracepoint action for collecting static trace data} @tab @tab
33918@item 'L' @tab 1 @tab type of tracepoint action
33919@item @emph{tracepoint action for expression evaluation} @tab @tab
33920@item 'X' @tab 1 @tab type of tracepoint action
33921@item agent expression @tab length of @tab @ref{agent expression object}
33922@item @emph{tracepoint object} @tab @tab
33923@item number @tab 4 @tab number of tracepoint
33924@item address @tab 8 @tab address of tracepoint inserted on
33925@item type @tab 4 @tab type of tracepoint
33926@item enabled @tab 1 @tab enable or disable of tracepoint
33927@item step_count @tab 8 @tab step
33928@item pass_count @tab 8 @tab pass
33929@item numactions @tab 4 @tab number of tracepoint actions
33930@item hit count @tab 8 @tab hit count
33931@item trace frame usage @tab 8 @tab trace frame usage
33932@item compiled_cond @tab 8 @tab compiled condition
33933@item orig_size @tab 8 @tab orig size
33934@item condition @tab 4 if condition is NULL otherwise length of
33935@ref{agent expression object}
33936@tab zero if condition is NULL, otherwise is
33937@ref{agent expression object}
33938@item actions @tab variable
33939@tab numactions number of @ref{tracepoint action object}
33940@end multitable
33941
33942@node IPA Protocol Commands
33943@subsection IPA Protocol Commands
33944@cindex ipa protocol commands
33945
33946The spaces in each command are delimiters to ease reading this commands
33947specification. They don't exist in real commands.
33948
33949@table @samp
33950
33951@item FastTrace:@var{tracepoint_object} @var{gdb_jump_pad_head}
33952Installs a new fast tracepoint described by @var{tracepoint_object}
33953(@pxref{tracepoint object}). @var{gdb_jump_pad_head}, 8-byte long, is the
33954head of @dfn{jumppad}, which is used to jump to data collection routine
33955in IPA finally.
33956
33957Replies:
33958@table @samp
33959@item OK @var{target_address} @var{gdb_jump_pad_head} @var{fjump_size} @var{fjump}
33960@var{target_address} is address of tracepoint in the inferior.
33961@var{gdb_jump_pad_head} is updated head of jumppad. Both of
33962@var{target_address} and @var{gdb_jump_pad_head} are 8-byte long.
33963@var{fjump} contains a sequence of instructions jump to jumppad entry.
33964@var{fjump_size}, 4-byte long, is the size of @var{fjump}.
33965@item E @var{NN}
33966for an error
33967
33968@end table
33969
7255706c
YQ
33970@item close
33971Closes the in-process agent. This command is sent when @value{GDBN} or GDBserver
33972is about to kill inferiors.
33973
16bdd41f
YQ
33974@item qTfSTM
33975@xref{qTfSTM}.
33976@item qTsSTM
33977@xref{qTsSTM}.
33978@item qTSTMat
33979@xref{qTSTMat}.
33980@item probe_marker_at:@var{address}
33981Asks in-process agent to probe the marker at @var{address}.
33982
33983Replies:
33984@table @samp
33985@item E @var{NN}
33986for an error
33987@end table
33988@item unprobe_marker_at:@var{address}
33989Asks in-process agent to unprobe the marker at @var{address}.
33990@end table
33991
8e04817f
AC
33992@node GDB Bugs
33993@chapter Reporting Bugs in @value{GDBN}
33994@cindex bugs in @value{GDBN}
33995@cindex reporting bugs in @value{GDBN}
c906108c 33996
8e04817f 33997Your bug reports play an essential role in making @value{GDBN} reliable.
c906108c 33998
8e04817f
AC
33999Reporting a bug may help you by bringing a solution to your problem, or it
34000may not. But in any case the principal function of a bug report is to help
34001the entire community by making the next version of @value{GDBN} work better. Bug
34002reports are your contribution to the maintenance of @value{GDBN}.
c906108c 34003
8e04817f
AC
34004In order for a bug report to serve its purpose, you must include the
34005information that enables us to fix the bug.
c4555f82
SC
34006
34007@menu
8e04817f
AC
34008* Bug Criteria:: Have you found a bug?
34009* Bug Reporting:: How to report bugs
c4555f82
SC
34010@end menu
34011
8e04817f 34012@node Bug Criteria
79a6e687 34013@section Have You Found a Bug?
8e04817f 34014@cindex bug criteria
c4555f82 34015
8e04817f 34016If you are not sure whether you have found a bug, here are some guidelines:
c4555f82
SC
34017
34018@itemize @bullet
8e04817f
AC
34019@cindex fatal signal
34020@cindex debugger crash
34021@cindex crash of debugger
c4555f82 34022@item
8e04817f
AC
34023If the debugger gets a fatal signal, for any input whatever, that is a
34024@value{GDBN} bug. Reliable debuggers never crash.
34025
34026@cindex error on valid input
34027@item
34028If @value{GDBN} produces an error message for valid input, that is a
34029bug. (Note that if you're cross debugging, the problem may also be
34030somewhere in the connection to the target.)
c4555f82 34031
8e04817f 34032@cindex invalid input
c4555f82 34033@item
8e04817f
AC
34034If @value{GDBN} does not produce an error message for invalid input,
34035that is a bug. However, you should note that your idea of
34036``invalid input'' might be our idea of ``an extension'' or ``support
34037for traditional practice''.
34038
34039@item
34040If you are an experienced user of debugging tools, your suggestions
34041for improvement of @value{GDBN} are welcome in any case.
c4555f82
SC
34042@end itemize
34043
8e04817f 34044@node Bug Reporting
79a6e687 34045@section How to Report Bugs
8e04817f
AC
34046@cindex bug reports
34047@cindex @value{GDBN} bugs, reporting
34048
34049A number of companies and individuals offer support for @sc{gnu} products.
34050If you obtained @value{GDBN} from a support organization, we recommend you
34051contact that organization first.
34052
34053You can find contact information for many support companies and
34054individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
34055distribution.
34056@c should add a web page ref...
34057
c16158bc
JM
34058@ifset BUGURL
34059@ifset BUGURL_DEFAULT
129188f6 34060In any event, we also recommend that you submit bug reports for
d3e8051b 34061@value{GDBN}. The preferred method is to submit them directly using
129188f6
AC
34062@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
34063page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
34064be used.
8e04817f
AC
34065
34066@strong{Do not send bug reports to @samp{info-gdb}, or to
34067@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
34068not want to receive bug reports. Those that do have arranged to receive
34069@samp{bug-gdb}.
34070
34071The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
34072serves as a repeater. The mailing list and the newsgroup carry exactly
34073the same messages. Often people think of posting bug reports to the
34074newsgroup instead of mailing them. This appears to work, but it has one
34075problem which can be crucial: a newsgroup posting often lacks a mail
34076path back to the sender. Thus, if we need to ask for more information,
34077we may be unable to reach you. For this reason, it is better to send
34078bug reports to the mailing list.
c16158bc
JM
34079@end ifset
34080@ifclear BUGURL_DEFAULT
34081In any event, we also recommend that you submit bug reports for
34082@value{GDBN} to @value{BUGURL}.
34083@end ifclear
34084@end ifset
c4555f82 34085
8e04817f
AC
34086The fundamental principle of reporting bugs usefully is this:
34087@strong{report all the facts}. If you are not sure whether to state a
34088fact or leave it out, state it!
c4555f82 34089
8e04817f
AC
34090Often people omit facts because they think they know what causes the
34091problem and assume that some details do not matter. Thus, you might
34092assume that the name of the variable you use in an example does not matter.
34093Well, probably it does not, but one cannot be sure. Perhaps the bug is a
34094stray memory reference which happens to fetch from the location where that
34095name is stored in memory; perhaps, if the name were different, the contents
34096of that location would fool the debugger into doing the right thing despite
34097the bug. Play it safe and give a specific, complete example. That is the
34098easiest thing for you to do, and the most helpful.
c4555f82 34099
8e04817f
AC
34100Keep in mind that the purpose of a bug report is to enable us to fix the
34101bug. It may be that the bug has been reported previously, but neither
34102you nor we can know that unless your bug report is complete and
34103self-contained.
c4555f82 34104
8e04817f
AC
34105Sometimes people give a few sketchy facts and ask, ``Does this ring a
34106bell?'' Those bug reports are useless, and we urge everyone to
34107@emph{refuse to respond to them} except to chide the sender to report
34108bugs properly.
34109
34110To enable us to fix the bug, you should include all these things:
c4555f82
SC
34111
34112@itemize @bullet
34113@item
8e04817f
AC
34114The version of @value{GDBN}. @value{GDBN} announces it if you start
34115with no arguments; you can also print it at any time using @code{show
34116version}.
c4555f82 34117
8e04817f
AC
34118Without this, we will not know whether there is any point in looking for
34119the bug in the current version of @value{GDBN}.
c4555f82
SC
34120
34121@item
8e04817f
AC
34122The type of machine you are using, and the operating system name and
34123version number.
c4555f82
SC
34124
34125@item
c1468174 34126What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
8e04817f 34127``@value{GCC}--2.8.1''.
c4555f82
SC
34128
34129@item
8e04817f 34130What compiler (and its version) was used to compile the program you are
c1468174 34131debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
3f94c067
BW
34132C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version}
34133to get this information; for other compilers, see the documentation for
34134those compilers.
c4555f82 34135
8e04817f
AC
34136@item
34137The command arguments you gave the compiler to compile your example and
34138observe the bug. For example, did you use @samp{-O}? To guarantee
34139you will not omit something important, list them all. A copy of the
34140Makefile (or the output from make) is sufficient.
c4555f82 34141
8e04817f
AC
34142If we were to try to guess the arguments, we would probably guess wrong
34143and then we might not encounter the bug.
c4555f82 34144
8e04817f
AC
34145@item
34146A complete input script, and all necessary source files, that will
34147reproduce the bug.
c4555f82 34148
8e04817f
AC
34149@item
34150A description of what behavior you observe that you believe is
34151incorrect. For example, ``It gets a fatal signal.''
c4555f82 34152
8e04817f
AC
34153Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
34154will certainly notice it. But if the bug is incorrect output, we might
34155not notice unless it is glaringly wrong. You might as well not give us
34156a chance to make a mistake.
c4555f82 34157
8e04817f
AC
34158Even if the problem you experience is a fatal signal, you should still
34159say so explicitly. Suppose something strange is going on, such as, your
34160copy of @value{GDBN} is out of synch, or you have encountered a bug in
34161the C library on your system. (This has happened!) Your copy might
34162crash and ours would not. If you told us to expect a crash, then when
34163ours fails to crash, we would know that the bug was not happening for
34164us. If you had not told us to expect a crash, then we would not be able
34165to draw any conclusion from our observations.
c4555f82 34166
e0c07bf0
MC
34167@pindex script
34168@cindex recording a session script
34169To collect all this information, you can use a session recording program
34170such as @command{script}, which is available on many Unix systems.
34171Just run your @value{GDBN} session inside @command{script} and then
34172include the @file{typescript} file with your bug report.
34173
34174Another way to record a @value{GDBN} session is to run @value{GDBN}
34175inside Emacs and then save the entire buffer to a file.
34176
8e04817f
AC
34177@item
34178If you wish to suggest changes to the @value{GDBN} source, send us context
34179diffs. If you even discuss something in the @value{GDBN} source, refer to
34180it by context, not by line number.
c4555f82 34181
8e04817f
AC
34182The line numbers in our development sources will not match those in your
34183sources. Your line numbers would convey no useful information to us.
c4555f82 34184
8e04817f 34185@end itemize
c4555f82 34186
8e04817f 34187Here are some things that are not necessary:
c4555f82 34188
8e04817f
AC
34189@itemize @bullet
34190@item
34191A description of the envelope of the bug.
c4555f82 34192
8e04817f
AC
34193Often people who encounter a bug spend a lot of time investigating
34194which changes to the input file will make the bug go away and which
34195changes will not affect it.
c4555f82 34196
8e04817f
AC
34197This is often time consuming and not very useful, because the way we
34198will find the bug is by running a single example under the debugger
34199with breakpoints, not by pure deduction from a series of examples.
34200We recommend that you save your time for something else.
c4555f82 34201
8e04817f
AC
34202Of course, if you can find a simpler example to report @emph{instead}
34203of the original one, that is a convenience for us. Errors in the
34204output will be easier to spot, running under the debugger will take
34205less time, and so on.
c4555f82 34206
8e04817f
AC
34207However, simplification is not vital; if you do not want to do this,
34208report the bug anyway and send us the entire test case you used.
c4555f82 34209
8e04817f
AC
34210@item
34211A patch for the bug.
c4555f82 34212
8e04817f
AC
34213A patch for the bug does help us if it is a good one. But do not omit
34214the necessary information, such as the test case, on the assumption that
34215a patch is all we need. We might see problems with your patch and decide
34216to fix the problem another way, or we might not understand it at all.
c4555f82 34217
8e04817f
AC
34218Sometimes with a program as complicated as @value{GDBN} it is very hard to
34219construct an example that will make the program follow a certain path
34220through the code. If you do not send us the example, we will not be able
34221to construct one, so we will not be able to verify that the bug is fixed.
c4555f82 34222
8e04817f
AC
34223And if we cannot understand what bug you are trying to fix, or why your
34224patch should be an improvement, we will not install it. A test case will
34225help us to understand.
c4555f82 34226
8e04817f
AC
34227@item
34228A guess about what the bug is or what it depends on.
c4555f82 34229
8e04817f
AC
34230Such guesses are usually wrong. Even we cannot guess right about such
34231things without first using the debugger to find the facts.
34232@end itemize
c4555f82 34233
8e04817f
AC
34234@c The readline documentation is distributed with the readline code
34235@c and consists of the two following files:
cc88a640
JK
34236@c rluser.texi
34237@c hsuser.texi
8e04817f
AC
34238@c Use -I with makeinfo to point to the appropriate directory,
34239@c environment var TEXINPUTS with TeX.
39037522 34240@ifclear SYSTEM_READLINE
5bdf8622 34241@include rluser.texi
cc88a640 34242@include hsuser.texi
39037522 34243@end ifclear
c4555f82 34244
4ceed123
JB
34245@node In Memoriam
34246@appendix In Memoriam
34247
9ed350ad
JB
34248The @value{GDBN} project mourns the loss of the following long-time
34249contributors:
4ceed123
JB
34250
34251@table @code
34252@item Fred Fish
9ed350ad
JB
34253Fred was a long-standing contributor to @value{GDBN} (1991-2006), and
34254to Free Software in general. Outside of @value{GDBN}, he was known in
34255the Amiga world for his series of Fish Disks, and the GeekGadget project.
4ceed123
JB
34256
34257@item Michael Snyder
9ed350ad
JB
34258Michael was one of the Global Maintainers of the @value{GDBN} project,
34259with contributions recorded as early as 1996, until 2011. In addition
34260to his day to day participation, he was a large driving force behind
34261adding Reverse Debugging to @value{GDBN}.
4ceed123
JB
34262@end table
34263
34264Beyond their technical contributions to the project, they were also
34265enjoyable members of the Free Software Community. We will miss them.
c4555f82 34266
8e04817f
AC
34267@node Formatting Documentation
34268@appendix Formatting Documentation
c4555f82 34269
8e04817f
AC
34270@cindex @value{GDBN} reference card
34271@cindex reference card
34272The @value{GDBN} 4 release includes an already-formatted reference card, ready
34273for printing with PostScript or Ghostscript, in the @file{gdb}
34274subdirectory of the main source directory@footnote{In
34275@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
34276release.}. If you can use PostScript or Ghostscript with your printer,
34277you can print the reference card immediately with @file{refcard.ps}.
c4555f82 34278
8e04817f
AC
34279The release also includes the source for the reference card. You
34280can format it, using @TeX{}, by typing:
c4555f82 34281
474c8240 34282@smallexample
8e04817f 34283make refcard.dvi
474c8240 34284@end smallexample
c4555f82 34285
8e04817f
AC
34286The @value{GDBN} reference card is designed to print in @dfn{landscape}
34287mode on US ``letter'' size paper;
34288that is, on a sheet 11 inches wide by 8.5 inches
34289high. You will need to specify this form of printing as an option to
34290your @sc{dvi} output program.
c4555f82 34291
8e04817f 34292@cindex documentation
c4555f82 34293
8e04817f
AC
34294All the documentation for @value{GDBN} comes as part of the machine-readable
34295distribution. The documentation is written in Texinfo format, which is
34296a documentation system that uses a single source file to produce both
34297on-line information and a printed manual. You can use one of the Info
34298formatting commands to create the on-line version of the documentation
34299and @TeX{} (or @code{texi2roff}) to typeset the printed version.
c4555f82 34300
8e04817f
AC
34301@value{GDBN} includes an already formatted copy of the on-line Info
34302version of this manual in the @file{gdb} subdirectory. The main Info
34303file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
34304subordinate files matching @samp{gdb.info*} in the same directory. If
34305necessary, you can print out these files, or read them with any editor;
34306but they are easier to read using the @code{info} subsystem in @sc{gnu}
34307Emacs or the standalone @code{info} program, available as part of the
34308@sc{gnu} Texinfo distribution.
c4555f82 34309
8e04817f
AC
34310If you want to format these Info files yourself, you need one of the
34311Info formatting programs, such as @code{texinfo-format-buffer} or
34312@code{makeinfo}.
c4555f82 34313
8e04817f
AC
34314If you have @code{makeinfo} installed, and are in the top level
34315@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
34316version @value{GDBVN}), you can make the Info file by typing:
c4555f82 34317
474c8240 34318@smallexample
8e04817f
AC
34319cd gdb
34320make gdb.info
474c8240 34321@end smallexample
c4555f82 34322
8e04817f
AC
34323If you want to typeset and print copies of this manual, you need @TeX{},
34324a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
34325Texinfo definitions file.
c4555f82 34326
8e04817f
AC
34327@TeX{} is a typesetting program; it does not print files directly, but
34328produces output files called @sc{dvi} files. To print a typeset
34329document, you need a program to print @sc{dvi} files. If your system
34330has @TeX{} installed, chances are it has such a program. The precise
34331command to use depends on your system; @kbd{lpr -d} is common; another
34332(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
34333require a file name without any extension or a @samp{.dvi} extension.
c4555f82 34334
8e04817f
AC
34335@TeX{} also requires a macro definitions file called
34336@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
34337written in Texinfo format. On its own, @TeX{} cannot either read or
34338typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
34339and is located in the @file{gdb-@var{version-number}/texinfo}
34340directory.
c4555f82 34341
8e04817f 34342If you have @TeX{} and a @sc{dvi} printer program installed, you can
d3e8051b 34343typeset and print this manual. First switch to the @file{gdb}
8e04817f
AC
34344subdirectory of the main source directory (for example, to
34345@file{gdb-@value{GDBVN}/gdb}) and type:
c4555f82 34346
474c8240 34347@smallexample
8e04817f 34348make gdb.dvi
474c8240 34349@end smallexample
c4555f82 34350
8e04817f 34351Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c4555f82 34352
8e04817f
AC
34353@node Installing GDB
34354@appendix Installing @value{GDBN}
8e04817f 34355@cindex installation
c4555f82 34356
7fa2210b
DJ
34357@menu
34358* Requirements:: Requirements for building @value{GDBN}
db2e3e2e 34359* Running Configure:: Invoking the @value{GDBN} @file{configure} script
7fa2210b
DJ
34360* Separate Objdir:: Compiling @value{GDBN} in another directory
34361* Config Names:: Specifying names for hosts and targets
34362* Configure Options:: Summary of options for configure
098b41a6 34363* System-wide configuration:: Having a system-wide init file
7fa2210b
DJ
34364@end menu
34365
34366@node Requirements
79a6e687 34367@section Requirements for Building @value{GDBN}
7fa2210b
DJ
34368@cindex building @value{GDBN}, requirements for
34369
34370Building @value{GDBN} requires various tools and packages to be available.
34371Other packages will be used only if they are found.
34372
79a6e687 34373@heading Tools/Packages Necessary for Building @value{GDBN}
7fa2210b
DJ
34374@table @asis
34375@item ISO C90 compiler
34376@value{GDBN} is written in ISO C90. It should be buildable with any
34377working C90 compiler, e.g.@: GCC.
34378
34379@end table
34380
79a6e687 34381@heading Tools/Packages Optional for Building @value{GDBN}
7fa2210b
DJ
34382@table @asis
34383@item Expat
123dc839 34384@anchor{Expat}
7fa2210b
DJ
34385@value{GDBN} can use the Expat XML parsing library. This library may be
34386included with your operating system distribution; if it is not, you
34387can get the latest version from @url{http://expat.sourceforge.net}.
db2e3e2e 34388The @file{configure} script will search for this library in several
7fa2210b
DJ
34389standard locations; if it is installed in an unusual path, you can
34390use the @option{--with-libexpat-prefix} option to specify its location.
34391
9cceb671
DJ
34392Expat is used for:
34393
34394@itemize @bullet
34395@item
34396Remote protocol memory maps (@pxref{Memory Map Format})
34397@item
34398Target descriptions (@pxref{Target Descriptions})
34399@item
2268b414
JK
34400Remote shared library lists (@xref{Library List Format},
34401or alternatively @pxref{Library List Format for SVR4 Targets})
9cceb671
DJ
34402@item
34403MS-Windows shared libraries (@pxref{Shared Libraries})
b3b9301e
PA
34404@item
34405Traceframe info (@pxref{Traceframe Info Format})
9cceb671 34406@end itemize
7fa2210b 34407
31fffb02
CS
34408@item zlib
34409@cindex compressed debug sections
34410@value{GDBN} will use the @samp{zlib} library, if available, to read
34411compressed debug sections. Some linkers, such as GNU gold, are capable
34412of producing binaries with compressed debug sections. If @value{GDBN}
34413is compiled with @samp{zlib}, it will be able to read the debug
34414information in such binaries.
34415
34416The @samp{zlib} library is likely included with your operating system
34417distribution; if it is not, you can get the latest version from
34418@url{http://zlib.net}.
34419
6c7a06a3
TT
34420@item iconv
34421@value{GDBN}'s features related to character sets (@pxref{Character
34422Sets}) require a functioning @code{iconv} implementation. If you are
34423on a GNU system, then this is provided by the GNU C Library. Some
34424other systems also provide a working @code{iconv}.
34425
478aac75
DE
34426If @value{GDBN} is using the @code{iconv} program which is installed
34427in a non-standard place, you will need to tell @value{GDBN} where to find it.
34428This is done with @option{--with-iconv-bin} which specifies the
34429directory that contains the @code{iconv} program.
34430
34431On systems without @code{iconv}, you can install GNU Libiconv. If you
6c7a06a3
TT
34432have previously installed Libiconv, you can use the
34433@option{--with-libiconv-prefix} option to configure.
34434
34435@value{GDBN}'s top-level @file{configure} and @file{Makefile} will
34436arrange to build Libiconv if a directory named @file{libiconv} appears
34437in the top-most source directory. If Libiconv is built this way, and
34438if the operating system does not provide a suitable @code{iconv}
34439implementation, then the just-built library will automatically be used
34440by @value{GDBN}. One easy way to set this up is to download GNU
34441Libiconv, unpack it, and then rename the directory holding the
34442Libiconv source code to @samp{libiconv}.
7fa2210b
DJ
34443@end table
34444
34445@node Running Configure
db2e3e2e 34446@section Invoking the @value{GDBN} @file{configure} Script
7fa2210b 34447@cindex configuring @value{GDBN}
db2e3e2e 34448@value{GDBN} comes with a @file{configure} script that automates the process
8e04817f
AC
34449of preparing @value{GDBN} for installation; you can then use @code{make} to
34450build the @code{gdb} program.
34451@iftex
34452@c irrelevant in info file; it's as current as the code it lives with.
34453@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
34454look at the @file{README} file in the sources; we may have improved the
34455installation procedures since publishing this manual.}
34456@end iftex
c4555f82 34457
8e04817f
AC
34458The @value{GDBN} distribution includes all the source code you need for
34459@value{GDBN} in a single directory, whose name is usually composed by
34460appending the version number to @samp{gdb}.
c4555f82 34461
8e04817f
AC
34462For example, the @value{GDBN} version @value{GDBVN} distribution is in the
34463@file{gdb-@value{GDBVN}} directory. That directory contains:
c4555f82 34464
8e04817f
AC
34465@table @code
34466@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
34467script for configuring @value{GDBN} and all its supporting libraries
c4555f82 34468
8e04817f
AC
34469@item gdb-@value{GDBVN}/gdb
34470the source specific to @value{GDBN} itself
c4555f82 34471
8e04817f
AC
34472@item gdb-@value{GDBVN}/bfd
34473source for the Binary File Descriptor library
c906108c 34474
8e04817f
AC
34475@item gdb-@value{GDBVN}/include
34476@sc{gnu} include files
c906108c 34477
8e04817f
AC
34478@item gdb-@value{GDBVN}/libiberty
34479source for the @samp{-liberty} free software library
c906108c 34480
8e04817f
AC
34481@item gdb-@value{GDBVN}/opcodes
34482source for the library of opcode tables and disassemblers
c906108c 34483
8e04817f
AC
34484@item gdb-@value{GDBVN}/readline
34485source for the @sc{gnu} command-line interface
c906108c 34486
8e04817f
AC
34487@item gdb-@value{GDBVN}/glob
34488source for the @sc{gnu} filename pattern-matching subroutine
c906108c 34489
8e04817f
AC
34490@item gdb-@value{GDBVN}/mmalloc
34491source for the @sc{gnu} memory-mapped malloc package
34492@end table
c906108c 34493
db2e3e2e 34494The simplest way to configure and build @value{GDBN} is to run @file{configure}
8e04817f
AC
34495from the @file{gdb-@var{version-number}} source directory, which in
34496this example is the @file{gdb-@value{GDBVN}} directory.
c906108c 34497
8e04817f 34498First switch to the @file{gdb-@var{version-number}} source directory
db2e3e2e 34499if you are not already in it; then run @file{configure}. Pass the
8e04817f
AC
34500identifier for the platform on which @value{GDBN} will run as an
34501argument.
c906108c 34502
8e04817f 34503For example:
c906108c 34504
474c8240 34505@smallexample
8e04817f
AC
34506cd gdb-@value{GDBVN}
34507./configure @var{host}
34508make
474c8240 34509@end smallexample
c906108c 34510
8e04817f
AC
34511@noindent
34512where @var{host} is an identifier such as @samp{sun4} or
34513@samp{decstation}, that identifies the platform where @value{GDBN} will run.
db2e3e2e 34514(You can often leave off @var{host}; @file{configure} tries to guess the
8e04817f 34515correct value by examining your system.)
c906108c 34516
8e04817f
AC
34517Running @samp{configure @var{host}} and then running @code{make} builds the
34518@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
34519libraries, then @code{gdb} itself. The configured source files, and the
34520binaries, are left in the corresponding source directories.
c906108c 34521
8e04817f 34522@need 750
db2e3e2e 34523@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
8e04817f
AC
34524system does not recognize this automatically when you run a different
34525shell, you may need to run @code{sh} on it explicitly:
c906108c 34526
474c8240 34527@smallexample
8e04817f 34528sh configure @var{host}
474c8240 34529@end smallexample
c906108c 34530
db2e3e2e 34531If you run @file{configure} from a directory that contains source
8e04817f 34532directories for multiple libraries or programs, such as the
db2e3e2e
BW
34533@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN},
34534@file{configure}
8e04817f
AC
34535creates configuration files for every directory level underneath (unless
34536you tell it not to, with the @samp{--norecursion} option).
34537
db2e3e2e 34538You should run the @file{configure} script from the top directory in the
94e91d6d 34539source tree, the @file{gdb-@var{version-number}} directory. If you run
db2e3e2e 34540@file{configure} from one of the subdirectories, you will configure only
94e91d6d 34541that subdirectory. That is usually not what you want. In particular,
db2e3e2e 34542if you run the first @file{configure} from the @file{gdb} subdirectory
94e91d6d
MC
34543of the @file{gdb-@var{version-number}} directory, you will omit the
34544configuration of @file{bfd}, @file{readline}, and other sibling
34545directories of the @file{gdb} subdirectory. This leads to build errors
34546about missing include files such as @file{bfd/bfd.h}.
c906108c 34547
8e04817f
AC
34548You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
34549However, you should make sure that the shell on your path (named by
34550the @samp{SHELL} environment variable) is publicly readable. Remember
34551that @value{GDBN} uses the shell to start your program---some systems refuse to
34552let @value{GDBN} debug child processes whose programs are not readable.
c906108c 34553
8e04817f 34554@node Separate Objdir
79a6e687 34555@section Compiling @value{GDBN} in Another Directory
c906108c 34556
8e04817f
AC
34557If you want to run @value{GDBN} versions for several host or target machines,
34558you need a different @code{gdb} compiled for each combination of
db2e3e2e 34559host and target. @file{configure} is designed to make this easy by
8e04817f
AC
34560allowing you to generate each configuration in a separate subdirectory,
34561rather than in the source directory. If your @code{make} program
34562handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
34563@code{make} in each of these directories builds the @code{gdb}
34564program specified there.
c906108c 34565
db2e3e2e 34566To build @code{gdb} in a separate directory, run @file{configure}
8e04817f 34567with the @samp{--srcdir} option to specify where to find the source.
db2e3e2e
BW
34568(You also need to specify a path to find @file{configure}
34569itself from your working directory. If the path to @file{configure}
8e04817f
AC
34570would be the same as the argument to @samp{--srcdir}, you can leave out
34571the @samp{--srcdir} option; it is assumed.)
c906108c 34572
8e04817f
AC
34573For example, with version @value{GDBVN}, you can build @value{GDBN} in a
34574separate directory for a Sun 4 like this:
c906108c 34575
474c8240 34576@smallexample
8e04817f
AC
34577@group
34578cd gdb-@value{GDBVN}
34579mkdir ../gdb-sun4
34580cd ../gdb-sun4
34581../gdb-@value{GDBVN}/configure sun4
34582make
34583@end group
474c8240 34584@end smallexample
c906108c 34585
db2e3e2e 34586When @file{configure} builds a configuration using a remote source
8e04817f
AC
34587directory, it creates a tree for the binaries with the same structure
34588(and using the same names) as the tree under the source directory. In
34589the example, you'd find the Sun 4 library @file{libiberty.a} in the
34590directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
34591@file{gdb-sun4/gdb}.
c906108c 34592
94e91d6d
MC
34593Make sure that your path to the @file{configure} script has just one
34594instance of @file{gdb} in it. If your path to @file{configure} looks
34595like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
34596one subdirectory of @value{GDBN}, not the whole package. This leads to
34597build errors about missing include files such as @file{bfd/bfd.h}.
34598
8e04817f
AC
34599One popular reason to build several @value{GDBN} configurations in separate
34600directories is to configure @value{GDBN} for cross-compiling (where
34601@value{GDBN} runs on one machine---the @dfn{host}---while debugging
34602programs that run on another machine---the @dfn{target}).
34603You specify a cross-debugging target by
db2e3e2e 34604giving the @samp{--target=@var{target}} option to @file{configure}.
c906108c 34605
8e04817f
AC
34606When you run @code{make} to build a program or library, you must run
34607it in a configured directory---whatever directory you were in when you
db2e3e2e 34608called @file{configure} (or one of its subdirectories).
c906108c 34609
db2e3e2e 34610The @code{Makefile} that @file{configure} generates in each source
8e04817f
AC
34611directory also runs recursively. If you type @code{make} in a source
34612directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
34613directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
34614will build all the required libraries, and then build GDB.
c906108c 34615
8e04817f
AC
34616When you have multiple hosts or targets configured in separate
34617directories, you can run @code{make} on them in parallel (for example,
34618if they are NFS-mounted on each of the hosts); they will not interfere
34619with each other.
c906108c 34620
8e04817f 34621@node Config Names
79a6e687 34622@section Specifying Names for Hosts and Targets
c906108c 34623
db2e3e2e 34624The specifications used for hosts and targets in the @file{configure}
8e04817f
AC
34625script are based on a three-part naming scheme, but some short predefined
34626aliases are also supported. The full naming scheme encodes three pieces
34627of information in the following pattern:
c906108c 34628
474c8240 34629@smallexample
8e04817f 34630@var{architecture}-@var{vendor}-@var{os}
474c8240 34631@end smallexample
c906108c 34632
8e04817f
AC
34633For example, you can use the alias @code{sun4} as a @var{host} argument,
34634or as the value for @var{target} in a @code{--target=@var{target}}
34635option. The equivalent full name is @samp{sparc-sun-sunos4}.
c906108c 34636
db2e3e2e 34637The @file{configure} script accompanying @value{GDBN} does not provide
8e04817f 34638any query facility to list all supported host and target names or
db2e3e2e 34639aliases. @file{configure} calls the Bourne shell script
8e04817f
AC
34640@code{config.sub} to map abbreviations to full names; you can read the
34641script, if you wish, or you can use it to test your guesses on
34642abbreviations---for example:
c906108c 34643
8e04817f
AC
34644@smallexample
34645% sh config.sub i386-linux
34646i386-pc-linux-gnu
34647% sh config.sub alpha-linux
34648alpha-unknown-linux-gnu
34649% sh config.sub hp9k700
34650hppa1.1-hp-hpux
34651% sh config.sub sun4
34652sparc-sun-sunos4.1.1
34653% sh config.sub sun3
34654m68k-sun-sunos4.1.1
34655% sh config.sub i986v
34656Invalid configuration `i986v': machine `i986v' not recognized
34657@end smallexample
c906108c 34658
8e04817f
AC
34659@noindent
34660@code{config.sub} is also distributed in the @value{GDBN} source
34661directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
d700128c 34662
8e04817f 34663@node Configure Options
db2e3e2e 34664@section @file{configure} Options
c906108c 34665
db2e3e2e
BW
34666Here is a summary of the @file{configure} options and arguments that
34667are most often useful for building @value{GDBN}. @file{configure} also has
8e04817f 34668several other options not listed here. @inforef{What Configure
db2e3e2e 34669Does,,configure.info}, for a full explanation of @file{configure}.
c906108c 34670
474c8240 34671@smallexample
8e04817f
AC
34672configure @r{[}--help@r{]}
34673 @r{[}--prefix=@var{dir}@r{]}
34674 @r{[}--exec-prefix=@var{dir}@r{]}
34675 @r{[}--srcdir=@var{dirname}@r{]}
34676 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
34677 @r{[}--target=@var{target}@r{]}
34678 @var{host}
474c8240 34679@end smallexample
c906108c 34680
8e04817f
AC
34681@noindent
34682You may introduce options with a single @samp{-} rather than
34683@samp{--} if you prefer; but you may abbreviate option names if you use
34684@samp{--}.
c906108c 34685
8e04817f
AC
34686@table @code
34687@item --help
db2e3e2e 34688Display a quick summary of how to invoke @file{configure}.
c906108c 34689
8e04817f
AC
34690@item --prefix=@var{dir}
34691Configure the source to install programs and files under directory
34692@file{@var{dir}}.
c906108c 34693
8e04817f
AC
34694@item --exec-prefix=@var{dir}
34695Configure the source to install programs under directory
34696@file{@var{dir}}.
c906108c 34697
8e04817f
AC
34698@c avoid splitting the warning from the explanation:
34699@need 2000
34700@item --srcdir=@var{dirname}
34701@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
34702@code{make} that implements the @code{VPATH} feature.}@*
34703Use this option to make configurations in directories separate from the
34704@value{GDBN} source directories. Among other things, you can use this to
34705build (or maintain) several configurations simultaneously, in separate
db2e3e2e 34706directories. @file{configure} writes configuration-specific files in
8e04817f 34707the current directory, but arranges for them to use the source in the
db2e3e2e 34708directory @var{dirname}. @file{configure} creates directories under
8e04817f
AC
34709the working directory in parallel to the source directories below
34710@var{dirname}.
c906108c 34711
8e04817f 34712@item --norecursion
db2e3e2e 34713Configure only the directory level where @file{configure} is executed; do not
8e04817f 34714propagate configuration to subdirectories.
c906108c 34715
8e04817f
AC
34716@item --target=@var{target}
34717Configure @value{GDBN} for cross-debugging programs running on the specified
34718@var{target}. Without this option, @value{GDBN} is configured to debug
34719programs that run on the same machine (@var{host}) as @value{GDBN} itself.
c906108c 34720
8e04817f 34721There is no convenient way to generate a list of all available targets.
c906108c 34722
8e04817f
AC
34723@item @var{host} @dots{}
34724Configure @value{GDBN} to run on the specified @var{host}.
c906108c 34725
8e04817f
AC
34726There is no convenient way to generate a list of all available hosts.
34727@end table
c906108c 34728
8e04817f
AC
34729There are many other options available as well, but they are generally
34730needed for special purposes only.
c906108c 34731
098b41a6
JG
34732@node System-wide configuration
34733@section System-wide configuration and settings
34734@cindex system-wide init file
34735
34736@value{GDBN} can be configured to have a system-wide init file;
34737this file will be read and executed at startup (@pxref{Startup, , What
34738@value{GDBN} does during startup}).
34739
34740Here is the corresponding configure option:
34741
34742@table @code
34743@item --with-system-gdbinit=@var{file}
34744Specify that the default location of the system-wide init file is
34745@var{file}.
34746@end table
34747
34748If @value{GDBN} has been configured with the option @option{--prefix=$prefix},
34749it may be subject to relocation. Two possible cases:
34750
34751@itemize @bullet
34752@item
34753If the default location of this init file contains @file{$prefix},
34754it will be subject to relocation. Suppose that the configure options
34755are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit};
34756if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system
34757init file is looked for as @file{$install/etc/gdbinit} instead of
34758@file{$prefix/etc/gdbinit}.
34759
34760@item
34761By contrast, if the default location does not contain the prefix,
34762it will not be relocated. E.g.@: if @value{GDBN} has been configured with
34763@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit},
34764then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit},
34765wherever @value{GDBN} is installed.
34766@end itemize
34767
8e04817f
AC
34768@node Maintenance Commands
34769@appendix Maintenance Commands
34770@cindex maintenance commands
34771@cindex internal commands
c906108c 34772
8e04817f 34773In addition to commands intended for @value{GDBN} users, @value{GDBN}
09d4efe1
EZ
34774includes a number of commands intended for @value{GDBN} developers,
34775that are not documented elsewhere in this manual. These commands are
da316a69
EZ
34776provided here for reference. (For commands that turn on debugging
34777messages, see @ref{Debugging Output}.)
c906108c 34778
8e04817f 34779@table @code
09d4efe1 34780@kindex maint agent
782b2b07 34781@kindex maint agent-eval
f77cc5f0
HZ
34782@item maint agent @r{[}-at @var{location}@r{,}@r{]} @var{expression}
34783@itemx maint agent-eval @r{[}-at @var{location}@r{,}@r{]} @var{expression}
09d4efe1
EZ
34784Translate the given @var{expression} into remote agent bytecodes.
34785This command is useful for debugging the Agent Expression mechanism
782b2b07
SS
34786(@pxref{Agent Expressions}). The @samp{agent} version produces an
34787expression useful for data collection, such as by tracepoints, while
34788@samp{maint agent-eval} produces an expression that evaluates directly
34789to a result. For instance, a collection expression for @code{globa +
34790globb} will include bytecodes to record four bytes of memory at each
34791of the addresses of @code{globa} and @code{globb}, while discarding
34792the result of the addition, while an evaluation expression will do the
34793addition and return the sum.
f77cc5f0
HZ
34794If @code{-at} is given, generate remote agent bytecode for @var{location}.
34795If not, generate remote agent bytecode for current frame PC address.
09d4efe1 34796
d3ce09f5
SS
34797@kindex maint agent-printf
34798@item maint agent-printf @var{format},@var{expr},...
34799Translate the given format string and list of argument expressions
34800into remote agent bytecodes and display them as a disassembled list.
34801This command is useful for debugging the agent version of dynamic
34802printf (@pxref{Dynamic Printf}.
34803
8e04817f
AC
34804@kindex maint info breakpoints
34805@item @anchor{maint info breakpoints}maint info breakpoints
34806Using the same format as @samp{info breakpoints}, display both the
34807breakpoints you've set explicitly, and those @value{GDBN} is using for
34808internal purposes. Internal breakpoints are shown with negative
34809breakpoint numbers. The type column identifies what kind of breakpoint
34810is shown:
c906108c 34811
8e04817f
AC
34812@table @code
34813@item breakpoint
34814Normal, explicitly set breakpoint.
c906108c 34815
8e04817f
AC
34816@item watchpoint
34817Normal, explicitly set watchpoint.
c906108c 34818
8e04817f
AC
34819@item longjmp
34820Internal breakpoint, used to handle correctly stepping through
34821@code{longjmp} calls.
c906108c 34822
8e04817f
AC
34823@item longjmp resume
34824Internal breakpoint at the target of a @code{longjmp}.
c906108c 34825
8e04817f
AC
34826@item until
34827Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
c906108c 34828
8e04817f
AC
34829@item finish
34830Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
c906108c 34831
8e04817f
AC
34832@item shlib events
34833Shared library events.
c906108c 34834
8e04817f 34835@end table
c906108c 34836
d6b28940
TT
34837@kindex maint info bfds
34838@item maint info bfds
34839This prints information about each @code{bfd} object that is known to
34840@value{GDBN}. @xref{Top, , BFD, bfd, The Binary File Descriptor Library}.
34841
fff08868
HZ
34842@kindex set displaced-stepping
34843@kindex show displaced-stepping
237fc4c9
PA
34844@cindex displaced stepping support
34845@cindex out-of-line single-stepping
fff08868
HZ
34846@item set displaced-stepping
34847@itemx show displaced-stepping
237fc4c9 34848Control whether or not @value{GDBN} will do @dfn{displaced stepping}
fff08868
HZ
34849if the target supports it. Displaced stepping is a way to single-step
34850over breakpoints without removing them from the inferior, by executing
34851an out-of-line copy of the instruction that was originally at the
34852breakpoint location. It is also known as out-of-line single-stepping.
34853
34854@table @code
34855@item set displaced-stepping on
34856If the target architecture supports it, @value{GDBN} will use
34857displaced stepping to step over breakpoints.
34858
34859@item set displaced-stepping off
34860@value{GDBN} will not use displaced stepping to step over breakpoints,
34861even if such is supported by the target architecture.
34862
34863@cindex non-stop mode, and @samp{set displaced-stepping}
34864@item set displaced-stepping auto
34865This is the default mode. @value{GDBN} will use displaced stepping
34866only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target
34867architecture supports displaced stepping.
34868@end table
237fc4c9 34869
09d4efe1
EZ
34870@kindex maint check-symtabs
34871@item maint check-symtabs
34872Check the consistency of psymtabs and symtabs.
34873
34874@kindex maint cplus first_component
34875@item maint cplus first_component @var{name}
34876Print the first C@t{++} class/namespace component of @var{name}.
34877
34878@kindex maint cplus namespace
34879@item maint cplus namespace
34880Print the list of possible C@t{++} namespaces.
34881
34882@kindex maint demangle
34883@item maint demangle @var{name}
d3e8051b 34884Demangle a C@t{++} or Objective-C mangled @var{name}.
09d4efe1
EZ
34885
34886@kindex maint deprecate
34887@kindex maint undeprecate
34888@cindex deprecated commands
34889@item maint deprecate @var{command} @r{[}@var{replacement}@r{]}
34890@itemx maint undeprecate @var{command}
34891Deprecate or undeprecate the named @var{command}. Deprecated commands
34892cause @value{GDBN} to issue a warning when you use them. The optional
34893argument @var{replacement} says which newer command should be used in
34894favor of the deprecated one; if it is given, @value{GDBN} will mention
34895the replacement as part of the warning.
34896
34897@kindex maint dump-me
34898@item maint dump-me
721c2651 34899@cindex @code{SIGQUIT} signal, dump core of @value{GDBN}
09d4efe1 34900Cause a fatal signal in the debugger and force it to dump its core.
721c2651
EZ
34901This is supported only on systems which support aborting a program
34902with the @code{SIGQUIT} signal.
09d4efe1 34903
8d30a00d
AC
34904@kindex maint internal-error
34905@kindex maint internal-warning
09d4efe1
EZ
34906@item maint internal-error @r{[}@var{message-text}@r{]}
34907@itemx maint internal-warning @r{[}@var{message-text}@r{]}
8d30a00d
AC
34908Cause @value{GDBN} to call the internal function @code{internal_error}
34909or @code{internal_warning} and hence behave as though an internal error
34910or internal warning has been detected. In addition to reporting the
34911internal problem, these functions give the user the opportunity to
34912either quit @value{GDBN} or create a core file of the current
34913@value{GDBN} session.
34914
09d4efe1
EZ
34915These commands take an optional parameter @var{message-text} that is
34916used as the text of the error or warning message.
34917
d3e8051b 34918Here's an example of using @code{internal-error}:
09d4efe1 34919
8d30a00d 34920@smallexample
f7dc1244 34921(@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
8d30a00d
AC
34922@dots{}/maint.c:121: internal-error: testing, 1, 2
34923A problem internal to GDB has been detected. Further
34924debugging may prove unreliable.
34925Quit this debugging session? (y or n) @kbd{n}
34926Create a core file? (y or n) @kbd{n}
f7dc1244 34927(@value{GDBP})
8d30a00d
AC
34928@end smallexample
34929
3c16cced
PA
34930@cindex @value{GDBN} internal error
34931@cindex internal errors, control of @value{GDBN} behavior
34932
34933@kindex maint set internal-error
34934@kindex maint show internal-error
34935@kindex maint set internal-warning
34936@kindex maint show internal-warning
34937@item maint set internal-error @var{action} [ask|yes|no]
34938@itemx maint show internal-error @var{action}
34939@itemx maint set internal-warning @var{action} [ask|yes|no]
34940@itemx maint show internal-warning @var{action}
34941When @value{GDBN} reports an internal problem (error or warning) it
34942gives the user the opportunity to both quit @value{GDBN} and create a
34943core file of the current @value{GDBN} session. These commands let you
34944override the default behaviour for each particular @var{action},
34945described in the table below.
34946
34947@table @samp
34948@item quit
34949You can specify that @value{GDBN} should always (yes) or never (no)
34950quit. The default is to ask the user what to do.
34951
34952@item corefile
34953You can specify that @value{GDBN} should always (yes) or never (no)
34954create a core file. The default is to ask the user what to do.
34955@end table
34956
09d4efe1
EZ
34957@kindex maint packet
34958@item maint packet @var{text}
34959If @value{GDBN} is talking to an inferior via the serial protocol,
34960then this command sends the string @var{text} to the inferior, and
34961displays the response packet. @value{GDBN} supplies the initial
34962@samp{$} character, the terminating @samp{#} character, and the
34963checksum.
34964
34965@kindex maint print architecture
34966@item maint print architecture @r{[}@var{file}@r{]}
34967Print the entire architecture configuration. The optional argument
34968@var{file} names the file where the output goes.
8d30a00d 34969
81adfced
DJ
34970@kindex maint print c-tdesc
34971@item maint print c-tdesc
34972Print the current target description (@pxref{Target Descriptions}) as
34973a C source file. The created source file can be used in @value{GDBN}
34974when an XML parser is not available to parse the description.
34975
00905d52
AC
34976@kindex maint print dummy-frames
34977@item maint print dummy-frames
00905d52
AC
34978Prints the contents of @value{GDBN}'s internal dummy-frame stack.
34979
34980@smallexample
f7dc1244 34981(@value{GDBP}) @kbd{b add}
00905d52 34982@dots{}
f7dc1244 34983(@value{GDBP}) @kbd{print add(2,3)}
00905d52
AC
34984Breakpoint 2, add (a=2, b=3) at @dots{}
3498558 return (a + b);
34986The program being debugged stopped while in a function called from GDB.
34987@dots{}
f7dc1244 34988(@value{GDBP}) @kbd{maint print dummy-frames}
00905d52
AC
349890x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
34990 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@}
34991 call_lo=0x01014000 call_hi=0x01014001
f7dc1244 34992(@value{GDBP})
00905d52
AC
34993@end smallexample
34994
34995Takes an optional file parameter.
34996
0680b120
AC
34997@kindex maint print registers
34998@kindex maint print raw-registers
34999@kindex maint print cooked-registers
617073a9 35000@kindex maint print register-groups
c21236dc 35001@kindex maint print remote-registers
09d4efe1
EZ
35002@item maint print registers @r{[}@var{file}@r{]}
35003@itemx maint print raw-registers @r{[}@var{file}@r{]}
35004@itemx maint print cooked-registers @r{[}@var{file}@r{]}
35005@itemx maint print register-groups @r{[}@var{file}@r{]}
c21236dc 35006@itemx maint print remote-registers @r{[}@var{file}@r{]}
0680b120
AC
35007Print @value{GDBN}'s internal register data structures.
35008
617073a9 35009The command @code{maint print raw-registers} includes the contents of
c21236dc
PA
35010the raw register cache; the command @code{maint print
35011cooked-registers} includes the (cooked) value of all registers,
35012including registers which aren't available on the target nor visible
35013to user; the command @code{maint print register-groups} includes the
35014groups that each register is a member of; and the command @code{maint
35015print remote-registers} includes the remote target's register numbers
35016and offsets in the `G' packets. @xref{Registers,, Registers, gdbint,
617073a9 35017@value{GDBN} Internals}.
0680b120 35018
09d4efe1
EZ
35019These commands take an optional parameter, a file name to which to
35020write the information.
0680b120 35021
617073a9 35022@kindex maint print reggroups
09d4efe1
EZ
35023@item maint print reggroups @r{[}@var{file}@r{]}
35024Print @value{GDBN}'s internal register group data structures. The
35025optional argument @var{file} tells to what file to write the
35026information.
617073a9 35027
09d4efe1 35028The register groups info looks like this:
617073a9
AC
35029
35030@smallexample
f7dc1244 35031(@value{GDBP}) @kbd{maint print reggroups}
b383017d
RM
35032 Group Type
35033 general user
35034 float user
35035 all user
35036 vector user
35037 system user
35038 save internal
35039 restore internal
617073a9
AC
35040@end smallexample
35041
09d4efe1
EZ
35042@kindex flushregs
35043@item flushregs
35044This command forces @value{GDBN} to flush its internal register cache.
35045
35046@kindex maint print objfiles
35047@cindex info for known object files
35048@item maint print objfiles
35049Print a dump of all known object files. For each object file, this
35050command prints its name, address in memory, and all of its psymtabs
35051and symtabs.
35052
8a1ea21f
DE
35053@kindex maint print section-scripts
35054@cindex info for known .debug_gdb_scripts-loaded scripts
35055@item maint print section-scripts [@var{regexp}]
35056Print a dump of scripts specified in the @code{.debug_gdb_section} section.
35057If @var{regexp} is specified, only print scripts loaded by object files
35058matching @var{regexp}.
35059For each script, this command prints its name as specified in the objfile,
35060and the full path if known.
8e0583c8 35061@xref{dotdebug_gdb_scripts section}.
8a1ea21f 35062
09d4efe1
EZ
35063@kindex maint print statistics
35064@cindex bcache statistics
35065@item maint print statistics
35066This command prints, for each object file in the program, various data
35067about that object file followed by the byte cache (@dfn{bcache})
35068statistics for the object file. The objfile data includes the number
d3e8051b 35069of minimal, partial, full, and stabs symbols, the number of types
09d4efe1
EZ
35070defined by the objfile, the number of as yet unexpanded psym tables,
35071the number of line tables and string tables, and the amount of memory
35072used by the various tables. The bcache statistics include the counts,
35073sizes, and counts of duplicates of all and unique objects, max,
35074average, and median entry size, total memory used and its overhead and
35075savings, and various measures of the hash table size and chain
35076lengths.
35077
c7ba131e
JB
35078@kindex maint print target-stack
35079@cindex target stack description
35080@item maint print target-stack
35081A @dfn{target} is an interface between the debugger and a particular
35082kind of file or process. Targets can be stacked in @dfn{strata},
35083so that more than one target can potentially respond to a request.
35084In particular, memory accesses will walk down the stack of targets
35085until they find a target that is interested in handling that particular
35086address.
35087
35088This command prints a short description of each layer that was pushed on
35089the @dfn{target stack}, starting from the top layer down to the bottom one.
35090
09d4efe1
EZ
35091@kindex maint print type
35092@cindex type chain of a data type
35093@item maint print type @var{expr}
35094Print the type chain for a type specified by @var{expr}. The argument
35095can be either a type name or a symbol. If it is a symbol, the type of
35096that symbol is described. The type chain produced by this command is
35097a recursive definition of the data type as stored in @value{GDBN}'s
35098data structures, including its flags and contained types.
35099
9eae7c52
TT
35100@kindex maint set dwarf2 always-disassemble
35101@kindex maint show dwarf2 always-disassemble
35102@item maint set dwarf2 always-disassemble
35103@item maint show dwarf2 always-disassemble
35104Control the behavior of @code{info address} when using DWARF debugging
35105information.
35106
35107The default is @code{off}, which means that @value{GDBN} should try to
35108describe a variable's location in an easily readable format. When
35109@code{on}, @value{GDBN} will instead display the DWARF location
35110expression in an assembly-like format. Note that some locations are
35111too complex for @value{GDBN} to describe simply; in this case you will
35112always see the disassembly form.
35113
35114Here is an example of the resulting disassembly:
35115
35116@smallexample
35117(gdb) info addr argc
35118Symbol "argc" is a complex DWARF expression:
35119 1: DW_OP_fbreg 0
35120@end smallexample
35121
35122For more information on these expressions, see
35123@uref{http://www.dwarfstd.org/, the DWARF standard}.
35124
09d4efe1
EZ
35125@kindex maint set dwarf2 max-cache-age
35126@kindex maint show dwarf2 max-cache-age
35127@item maint set dwarf2 max-cache-age
35128@itemx maint show dwarf2 max-cache-age
35129Control the DWARF 2 compilation unit cache.
35130
35131@cindex DWARF 2 compilation units cache
35132In object files with inter-compilation-unit references, such as those
35133produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2
35134reader needs to frequently refer to previously read compilation units.
35135This setting controls how long a compilation unit will remain in the
35136cache if it is not referenced. A higher limit means that cached
35137compilation units will be stored in memory longer, and more total
35138memory will be used. Setting it to zero disables caching, which will
35139slow down @value{GDBN} startup, but reduce memory consumption.
35140
e7ba9c65
DJ
35141@kindex maint set profile
35142@kindex maint show profile
35143@cindex profiling GDB
35144@item maint set profile
35145@itemx maint show profile
35146Control profiling of @value{GDBN}.
35147
35148Profiling will be disabled until you use the @samp{maint set profile}
35149command to enable it. When you enable profiling, the system will begin
35150collecting timing and execution count data; when you disable profiling or
35151exit @value{GDBN}, the results will be written to a log file. Remember that
35152if you use profiling, @value{GDBN} will overwrite the profiling log file
35153(often called @file{gmon.out}). If you have a record of important profiling
35154data in a @file{gmon.out} file, be sure to move it to a safe location.
35155
35156Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
b383017d 35157compiled with the @samp{-pg} compiler option.
e7ba9c65 35158
cbe54154
PA
35159@kindex maint set show-debug-regs
35160@kindex maint show show-debug-regs
eac35c4e 35161@cindex hardware debug registers
cbe54154
PA
35162@item maint set show-debug-regs
35163@itemx maint show show-debug-regs
eac35c4e 35164Control whether to show variables that mirror the hardware debug
09d4efe1 35165registers. Use @code{ON} to enable, @code{OFF} to disable. If
3f94c067 35166enabled, the debug registers values are shown when @value{GDBN} inserts or
09d4efe1
EZ
35167removes a hardware breakpoint or watchpoint, and when the inferior
35168triggers a hardware-assisted breakpoint or watchpoint.
35169
711e434b
PM
35170@kindex maint set show-all-tib
35171@kindex maint show show-all-tib
35172@item maint set show-all-tib
35173@itemx maint show show-all-tib
35174Control whether to show all non zero areas within a 1k block starting
35175at thread local base, when using the @samp{info w32 thread-information-block}
35176command.
35177
09d4efe1
EZ
35178@kindex maint space
35179@cindex memory used by commands
35180@item maint space
35181Control whether to display memory usage for each command. If set to a
35182nonzero value, @value{GDBN} will display how much memory each command
35183took, following the command's own output. This can also be requested
35184by invoking @value{GDBN} with the @option{--statistics} command-line
35185switch (@pxref{Mode Options}).
35186
35187@kindex maint time
35188@cindex time of command execution
35189@item maint time
0a1c4d10
DE
35190Control whether to display the execution time of @value{GDBN} for each command.
35191If set to a nonzero value, @value{GDBN} will display how much time it
09d4efe1 35192took to execute each command, following the command's own output.
0a1c4d10
DE
35193Both CPU time and wallclock time are printed.
35194Printing both is useful when trying to determine whether the cost is
35195CPU or, e.g., disk/network, latency.
35196Note that the CPU time printed is for @value{GDBN} only, it does not include
35197the execution time of the inferior because there's no mechanism currently
35198to compute how much time was spent by @value{GDBN} and how much time was
35199spent by the program been debugged.
09d4efe1
EZ
35200This can also be requested by invoking @value{GDBN} with the
35201@option{--statistics} command-line switch (@pxref{Mode Options}).
35202
35203@kindex maint translate-address
35204@item maint translate-address @r{[}@var{section}@r{]} @var{addr}
35205Find the symbol stored at the location specified by the address
35206@var{addr} and an optional section name @var{section}. If found,
35207@value{GDBN} prints the name of the closest symbol and an offset from
35208the symbol's location to the specified address. This is similar to
35209the @code{info address} command (@pxref{Symbols}), except that this
35210command also allows to find symbols in other sections.
ae038cb0 35211
c14c28ba
PP
35212If section was not specified, the section in which the symbol was found
35213is also printed. For dynamically linked executables, the name of
35214executable or shared library containing the symbol is printed as well.
35215
8e04817f 35216@end table
c906108c 35217
9c16f35a
EZ
35218The following command is useful for non-interactive invocations of
35219@value{GDBN}, such as in the test suite.
35220
35221@table @code
35222@item set watchdog @var{nsec}
35223@kindex set watchdog
35224@cindex watchdog timer
35225@cindex timeout for commands
35226Set the maximum number of seconds @value{GDBN} will wait for the
35227target operation to finish. If this time expires, @value{GDBN}
35228reports and error and the command is aborted.
35229
35230@item show watchdog
35231Show the current setting of the target wait timeout.
35232@end table
c906108c 35233
e0ce93ac 35234@node Remote Protocol
8e04817f 35235@appendix @value{GDBN} Remote Serial Protocol
c906108c 35236
ee2d5c50
AC
35237@menu
35238* Overview::
35239* Packets::
35240* Stop Reply Packets::
35241* General Query Packets::
a1dcb23a 35242* Architecture-Specific Protocol Details::
9d29849a 35243* Tracepoint Packets::
a6b151f1 35244* Host I/O Packets::
9a6253be 35245* Interrupts::
8b23ecc4
SL
35246* Notification Packets::
35247* Remote Non-Stop::
a6f3e723 35248* Packet Acknowledgment::
ee2d5c50 35249* Examples::
79a6e687 35250* File-I/O Remote Protocol Extension::
cfa9d6d9 35251* Library List Format::
2268b414 35252* Library List Format for SVR4 Targets::
79a6e687 35253* Memory Map Format::
dc146f7c 35254* Thread List Format::
b3b9301e 35255* Traceframe Info Format::
ee2d5c50
AC
35256@end menu
35257
35258@node Overview
35259@section Overview
35260
8e04817f
AC
35261There may be occasions when you need to know something about the
35262protocol---for example, if there is only one serial port to your target
35263machine, you might want your program to do something special if it
35264recognizes a packet meant for @value{GDBN}.
c906108c 35265
d2c6833e 35266In the examples below, @samp{->} and @samp{<-} are used to indicate
bf06d120 35267transmitted and received data, respectively.
c906108c 35268
8e04817f
AC
35269@cindex protocol, @value{GDBN} remote serial
35270@cindex serial protocol, @value{GDBN} remote
35271@cindex remote serial protocol
8b23ecc4
SL
35272All @value{GDBN} commands and responses (other than acknowledgments
35273and notifications, see @ref{Notification Packets}) are sent as a
35274@var{packet}. A @var{packet} is introduced with the character
8e04817f
AC
35275@samp{$}, the actual @var{packet-data}, and the terminating character
35276@samp{#} followed by a two-digit @var{checksum}:
c906108c 35277
474c8240 35278@smallexample
8e04817f 35279@code{$}@var{packet-data}@code{#}@var{checksum}
474c8240 35280@end smallexample
8e04817f 35281@noindent
c906108c 35282
8e04817f
AC
35283@cindex checksum, for @value{GDBN} remote
35284@noindent
35285The two-digit @var{checksum} is computed as the modulo 256 sum of all
35286characters between the leading @samp{$} and the trailing @samp{#} (an
35287eight bit unsigned checksum).
c906108c 35288
8e04817f
AC
35289Implementors should note that prior to @value{GDBN} 5.0 the protocol
35290specification also included an optional two-digit @var{sequence-id}:
c906108c 35291
474c8240 35292@smallexample
8e04817f 35293@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
474c8240 35294@end smallexample
c906108c 35295
8e04817f
AC
35296@cindex sequence-id, for @value{GDBN} remote
35297@noindent
35298That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
35299has never output @var{sequence-id}s. Stubs that handle packets added
35300since @value{GDBN} 5.0 must not accept @var{sequence-id}.
c906108c 35301
8e04817f
AC
35302When either the host or the target machine receives a packet, the first
35303response expected is an acknowledgment: either @samp{+} (to indicate
35304the package was received correctly) or @samp{-} (to request
35305retransmission):
c906108c 35306
474c8240 35307@smallexample
d2c6833e
AC
35308-> @code{$}@var{packet-data}@code{#}@var{checksum}
35309<- @code{+}
474c8240 35310@end smallexample
8e04817f 35311@noindent
53a5351d 35312
a6f3e723
SL
35313The @samp{+}/@samp{-} acknowledgments can be disabled
35314once a connection is established.
35315@xref{Packet Acknowledgment}, for details.
35316
8e04817f
AC
35317The host (@value{GDBN}) sends @var{command}s, and the target (the
35318debugging stub incorporated in your program) sends a @var{response}. In
35319the case of step and continue @var{command}s, the response is only sent
8b23ecc4
SL
35320when the operation has completed, and the target has again stopped all
35321threads in all attached processes. This is the default all-stop mode
35322behavior, but the remote protocol also supports @value{GDBN}'s non-stop
35323execution mode; see @ref{Remote Non-Stop}, for details.
c906108c 35324
8e04817f
AC
35325@var{packet-data} consists of a sequence of characters with the
35326exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
35327exceptions).
c906108c 35328
ee2d5c50 35329@cindex remote protocol, field separator
0876f84a 35330Fields within the packet should be separated using @samp{,} @samp{;} or
8e04817f 35331@samp{:}. Except where otherwise noted all numbers are represented in
ee2d5c50 35332@sc{hex} with leading zeros suppressed.
c906108c 35333
8e04817f
AC
35334Implementors should note that prior to @value{GDBN} 5.0, the character
35335@samp{:} could not appear as the third character in a packet (as it
35336would potentially conflict with the @var{sequence-id}).
c906108c 35337
0876f84a
DJ
35338@cindex remote protocol, binary data
35339@anchor{Binary Data}
35340Binary data in most packets is encoded either as two hexadecimal
35341digits per byte of binary data. This allowed the traditional remote
35342protocol to work over connections which were only seven-bit clean.
35343Some packets designed more recently assume an eight-bit clean
35344connection, and use a more efficient encoding to send and receive
35345binary data.
35346
35347The binary data representation uses @code{7d} (@sc{ascii} @samp{@}})
35348as an escape character. Any escaped byte is transmitted as the escape
35349character followed by the original character XORed with @code{0x20}.
35350For example, the byte @code{0x7d} would be transmitted as the two
35351bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}),
35352@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii}
35353@samp{@}}) must always be escaped. Responses sent by the stub
35354must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it
35355is not interpreted as the start of a run-length encoded sequence
35356(described next).
35357
1d3811f6
DJ
35358Response @var{data} can be run-length encoded to save space.
35359Run-length encoding replaces runs of identical characters with one
35360instance of the repeated character, followed by a @samp{*} and a
35361repeat count. The repeat count is itself sent encoded, to avoid
35362binary characters in @var{data}: a value of @var{n} is sent as
35363@code{@var{n}+29}. For a repeat count greater or equal to 3, this
35364produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii}
35365code 32) for a repeat count of 3. (This is because run-length
35366encoding starts to win for counts 3 or more.) Thus, for example,
35367@samp{0* } is a run-length encoding of ``0000'': the space character
35368after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 =
353693}} more times.
35370
35371The printable characters @samp{#} and @samp{$} or with a numeric value
35372greater than 126 must not be used. Runs of six repeats (@samp{#}) or
35373seven repeats (@samp{$}) can be expanded using a repeat count of only
35374five (@samp{"}). For example, @samp{00000000} can be encoded as
35375@samp{0*"00}.
c906108c 35376
8e04817f
AC
35377The error response returned for some packets includes a two character
35378error number. That number is not well defined.
c906108c 35379
f8da2bff 35380@cindex empty response, for unsupported packets
8e04817f
AC
35381For any @var{command} not supported by the stub, an empty response
35382(@samp{$#00}) should be returned. That way it is possible to extend the
35383protocol. A newer @value{GDBN} can tell if a packet is supported based
35384on that response.
c906108c 35385
393eab54
PA
35386At a minimum, a stub is required to support the @samp{g} and @samp{G}
35387commands for register access, and the @samp{m} and @samp{M} commands
35388for memory access. Stubs that only control single-threaded targets
35389can implement run control with the @samp{c} (continue), and @samp{s}
35390(step) commands. Stubs that support multi-threading targets should
35391support the @samp{vCont} command. All other commands are optional.
c906108c 35392
ee2d5c50
AC
35393@node Packets
35394@section Packets
35395
35396The following table provides a complete list of all currently defined
35397@var{command}s and their corresponding response @var{data}.
79a6e687 35398@xref{File-I/O Remote Protocol Extension}, for details about the File
9c16f35a 35399I/O extension of the remote protocol.
ee2d5c50 35400
b8ff78ce
JB
35401Each packet's description has a template showing the packet's overall
35402syntax, followed by an explanation of the packet's meaning. We
35403include spaces in some of the templates for clarity; these are not
35404part of the packet's syntax. No @value{GDBN} packet uses spaces to
35405separate its components. For example, a template like @samp{foo
35406@var{bar} @var{baz}} describes a packet beginning with the three ASCII
35407bytes @samp{foo}, followed by a @var{bar}, followed directly by a
3f94c067 35408@var{baz}. @value{GDBN} does not transmit a space character between the
b8ff78ce
JB
35409@samp{foo} and the @var{bar}, or between the @var{bar} and the
35410@var{baz}.
35411
b90a069a
SL
35412@cindex @var{thread-id}, in remote protocol
35413@anchor{thread-id syntax}
35414Several packets and replies include a @var{thread-id} field to identify
35415a thread. Normally these are positive numbers with a target-specific
35416interpretation, formatted as big-endian hex strings. A @var{thread-id}
35417can also be a literal @samp{-1} to indicate all threads, or @samp{0} to
35418pick any thread.
35419
35420In addition, the remote protocol supports a multiprocess feature in
35421which the @var{thread-id} syntax is extended to optionally include both
35422process and thread ID fields, as @samp{p@var{pid}.@var{tid}}.
35423The @var{pid} (process) and @var{tid} (thread) components each have the
35424format described above: a positive number with target-specific
35425interpretation formatted as a big-endian hex string, literal @samp{-1}
35426to indicate all processes or threads (respectively), or @samp{0} to
35427indicate an arbitrary process or thread. Specifying just a process, as
35428@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an
35429error to specify all processes but a specific thread, such as
35430@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used
35431for those packets and replies explicitly documented to include a process
35432ID, rather than a @var{thread-id}.
35433
35434The multiprocess @var{thread-id} syntax extensions are only used if both
35435@value{GDBN} and the stub report support for the @samp{multiprocess}
35436feature using @samp{qSupported}. @xref{multiprocess extensions}, for
35437more information.
35438
8ffe2530
JB
35439Note that all packet forms beginning with an upper- or lower-case
35440letter, other than those described here, are reserved for future use.
35441
b8ff78ce 35442Here are the packet descriptions.
ee2d5c50 35443
b8ff78ce 35444@table @samp
ee2d5c50 35445
b8ff78ce
JB
35446@item !
35447@cindex @samp{!} packet
2d717e4f 35448@anchor{extended mode}
8e04817f
AC
35449Enable extended mode. In extended mode, the remote server is made
35450persistent. The @samp{R} packet is used to restart the program being
35451debugged.
ee2d5c50
AC
35452
35453Reply:
35454@table @samp
35455@item OK
8e04817f 35456The remote target both supports and has enabled extended mode.
ee2d5c50 35457@end table
c906108c 35458
b8ff78ce
JB
35459@item ?
35460@cindex @samp{?} packet
ee2d5c50 35461Indicate the reason the target halted. The reply is the same as for
8b23ecc4
SL
35462step and continue. This packet has a special interpretation when the
35463target is in non-stop mode; see @ref{Remote Non-Stop}.
c906108c 35464
ee2d5c50
AC
35465Reply:
35466@xref{Stop Reply Packets}, for the reply specifications.
35467
b8ff78ce
JB
35468@item A @var{arglen},@var{argnum},@var{arg},@dots{}
35469@cindex @samp{A} packet
35470Initialized @code{argv[]} array passed into program. @var{arglen}
35471specifies the number of bytes in the hex encoded byte stream
35472@var{arg}. See @code{gdbserver} for more details.
ee2d5c50
AC
35473
35474Reply:
35475@table @samp
35476@item OK
b8ff78ce
JB
35477The arguments were set.
35478@item E @var{NN}
35479An error occurred.
ee2d5c50
AC
35480@end table
35481
b8ff78ce
JB
35482@item b @var{baud}
35483@cindex @samp{b} packet
35484(Don't use this packet; its behavior is not well-defined.)
ee2d5c50
AC
35485Change the serial line speed to @var{baud}.
35486
35487JTC: @emph{When does the transport layer state change? When it's
35488received, or after the ACK is transmitted. In either case, there are
35489problems if the command or the acknowledgment packet is dropped.}
35490
35491Stan: @emph{If people really wanted to add something like this, and get
35492it working for the first time, they ought to modify ser-unix.c to send
35493some kind of out-of-band message to a specially-setup stub and have the
35494switch happen "in between" packets, so that from remote protocol's point
35495of view, nothing actually happened.}
35496
b8ff78ce
JB
35497@item B @var{addr},@var{mode}
35498@cindex @samp{B} packet
8e04817f 35499Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
2f870471
AC
35500breakpoint at @var{addr}.
35501
b8ff78ce 35502Don't use this packet. Use the @samp{Z} and @samp{z} packets instead
2f870471 35503(@pxref{insert breakpoint or watchpoint packet}).
c906108c 35504
bacec72f 35505@cindex @samp{bc} packet
0d772ac9
MS
35506@anchor{bc}
35507@item bc
bacec72f
MS
35508Backward continue. Execute the target system in reverse. No parameter.
35509@xref{Reverse Execution}, for more information.
35510
35511Reply:
35512@xref{Stop Reply Packets}, for the reply specifications.
35513
bacec72f 35514@cindex @samp{bs} packet
0d772ac9
MS
35515@anchor{bs}
35516@item bs
bacec72f
MS
35517Backward single step. Execute one instruction in reverse. No parameter.
35518@xref{Reverse Execution}, for more information.
35519
35520Reply:
35521@xref{Stop Reply Packets}, for the reply specifications.
35522
4f553f88 35523@item c @r{[}@var{addr}@r{]}
b8ff78ce
JB
35524@cindex @samp{c} packet
35525Continue. @var{addr} is address to resume. If @var{addr} is omitted,
35526resume at current address.
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
4f553f88 35534@item C @var{sig}@r{[};@var{addr}@r{]}
b8ff78ce 35535@cindex @samp{C} packet
8e04817f 35536Continue with signal @var{sig} (hex signal number). If
b8ff78ce 35537@samp{;@var{addr}} is omitted, resume at same address.
c906108c 35538
393eab54
PA
35539This packet is deprecated for multi-threading support. @xref{vCont
35540packet}.
35541
ee2d5c50
AC
35542Reply:
35543@xref{Stop Reply Packets}, for the reply specifications.
c906108c 35544
b8ff78ce
JB
35545@item d
35546@cindex @samp{d} packet
ee2d5c50
AC
35547Toggle debug flag.
35548
b8ff78ce
JB
35549Don't use this packet; instead, define a general set packet
35550(@pxref{General Query Packets}).
ee2d5c50 35551
b8ff78ce 35552@item D
b90a069a 35553@itemx D;@var{pid}
b8ff78ce 35554@cindex @samp{D} packet
b90a069a
SL
35555The first form of the packet is used to detach @value{GDBN} from the
35556remote system. It is sent to the remote target
07f31aa6 35557before @value{GDBN} disconnects via the @code{detach} command.
ee2d5c50 35558
b90a069a
SL
35559The second form, including a process ID, is used when multiprocess
35560protocol extensions are enabled (@pxref{multiprocess extensions}), to
35561detach only a specific process. The @var{pid} is specified as a
35562big-endian hex string.
35563
ee2d5c50
AC
35564Reply:
35565@table @samp
10fac096
NW
35566@item OK
35567for success
b8ff78ce 35568@item E @var{NN}
10fac096 35569for an error
ee2d5c50 35570@end table
c906108c 35571
b8ff78ce
JB
35572@item F @var{RC},@var{EE},@var{CF};@var{XX}
35573@cindex @samp{F} packet
35574A reply from @value{GDBN} to an @samp{F} packet sent by the target.
35575This is part of the File-I/O protocol extension. @xref{File-I/O
79a6e687 35576Remote Protocol Extension}, for the specification.
ee2d5c50 35577
b8ff78ce 35578@item g
ee2d5c50 35579@anchor{read registers packet}
b8ff78ce 35580@cindex @samp{g} packet
ee2d5c50
AC
35581Read general registers.
35582
35583Reply:
35584@table @samp
35585@item @var{XX@dots{}}
8e04817f
AC
35586Each byte of register data is described by two hex digits. The bytes
35587with the register are transmitted in target byte order. The size of
b8ff78ce 35588each register and their position within the @samp{g} packet are
4a9bb1df
UW
35589determined by the @value{GDBN} internal gdbarch functions
35590@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The
b8ff78ce 35591specification of several standard @samp{g} packets is specified below.
ad196637
PA
35592
35593When reading registers from a trace frame (@pxref{Analyze Collected
35594Data,,Using the Collected Data}), the stub may also return a string of
35595literal @samp{x}'s in place of the register data digits, to indicate
35596that the corresponding register has not been collected, thus its value
35597is unavailable. For example, for an architecture with 4 registers of
355984 bytes each, the following reply indicates to @value{GDBN} that
35599registers 0 and 2 have not been collected, while registers 1 and 3
35600have been collected, and both have zero value:
35601
35602@smallexample
35603-> @code{g}
35604<- @code{xxxxxxxx00000000xxxxxxxx00000000}
35605@end smallexample
35606
b8ff78ce 35607@item E @var{NN}
ee2d5c50
AC
35608for an error.
35609@end table
c906108c 35610
b8ff78ce
JB
35611@item G @var{XX@dots{}}
35612@cindex @samp{G} packet
35613Write general registers. @xref{read registers packet}, for a
35614description of the @var{XX@dots{}} data.
ee2d5c50
AC
35615
35616Reply:
35617@table @samp
35618@item OK
35619for success
b8ff78ce 35620@item E @var{NN}
ee2d5c50
AC
35621for an error
35622@end table
35623
393eab54 35624@item H @var{op} @var{thread-id}
b8ff78ce 35625@cindex @samp{H} packet
8e04817f 35626Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
393eab54
PA
35627@samp{G}, et.al.). @var{op} depends on the operation to be performed:
35628it should be @samp{c} for step and continue operations (note that this
35629is deprecated, supporting the @samp{vCont} command is a better
35630option), @samp{g} for other operations. The thread designator
35631@var{thread-id} has the format and interpretation described in
35632@ref{thread-id syntax}.
ee2d5c50
AC
35633
35634Reply:
35635@table @samp
35636@item OK
35637for success
b8ff78ce 35638@item E @var{NN}
ee2d5c50
AC
35639for an error
35640@end table
c906108c 35641
8e04817f
AC
35642@c FIXME: JTC:
35643@c 'H': How restrictive (or permissive) is the thread model. If a
35644@c thread is selected and stopped, are other threads allowed
35645@c to continue to execute? As I mentioned above, I think the
35646@c semantics of each command when a thread is selected must be
35647@c described. For example:
35648@c
35649@c 'g': If the stub supports threads and a specific thread is
35650@c selected, returns the register block from that thread;
35651@c otherwise returns current registers.
35652@c
35653@c 'G' If the stub supports threads and a specific thread is
35654@c selected, sets the registers of the register block of
35655@c that thread; otherwise sets current registers.
c906108c 35656
b8ff78ce 35657@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
ee2d5c50 35658@anchor{cycle step packet}
b8ff78ce
JB
35659@cindex @samp{i} packet
35660Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is
8e04817f
AC
35661present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
35662step starting at that address.
c906108c 35663
b8ff78ce
JB
35664@item I
35665@cindex @samp{I} packet
35666Signal, then cycle step. @xref{step with signal packet}. @xref{cycle
35667step packet}.
ee2d5c50 35668
b8ff78ce
JB
35669@item k
35670@cindex @samp{k} packet
35671Kill request.
c906108c 35672
ac282366 35673FIXME: @emph{There is no description of how to operate when a specific
ee2d5c50
AC
35674thread context has been selected (i.e.@: does 'k' kill only that
35675thread?)}.
c906108c 35676
b8ff78ce
JB
35677@item m @var{addr},@var{length}
35678@cindex @samp{m} packet
8e04817f 35679Read @var{length} bytes of memory starting at address @var{addr}.
fb031cdf
JB
35680Note that @var{addr} may not be aligned to any particular boundary.
35681
35682The stub need not use any particular size or alignment when gathering
35683data from memory for the response; even if @var{addr} is word-aligned
35684and @var{length} is a multiple of the word size, the stub is free to
35685use byte accesses, or not. For this reason, this packet may not be
35686suitable for accessing memory-mapped I/O devices.
c43c5473
JB
35687@cindex alignment of remote memory accesses
35688@cindex size of remote memory accesses
35689@cindex memory, alignment and size of remote accesses
c906108c 35690
ee2d5c50
AC
35691Reply:
35692@table @samp
35693@item @var{XX@dots{}}
599b237a 35694Memory contents; each byte is transmitted as a two-digit hexadecimal
b8ff78ce
JB
35695number. The reply may contain fewer bytes than requested if the
35696server was able to read only part of the region of memory.
35697@item E @var{NN}
ee2d5c50
AC
35698@var{NN} is errno
35699@end table
35700
b8ff78ce
JB
35701@item M @var{addr},@var{length}:@var{XX@dots{}}
35702@cindex @samp{M} packet
8e04817f 35703Write @var{length} bytes of memory starting at address @var{addr}.
b8ff78ce 35704@var{XX@dots{}} is the data; each byte is transmitted as a two-digit
599b237a 35705hexadecimal number.
ee2d5c50
AC
35706
35707Reply:
35708@table @samp
35709@item OK
35710for success
b8ff78ce 35711@item E @var{NN}
8e04817f
AC
35712for an error (this includes the case where only part of the data was
35713written).
ee2d5c50 35714@end table
c906108c 35715
b8ff78ce
JB
35716@item p @var{n}
35717@cindex @samp{p} packet
35718Read the value of register @var{n}; @var{n} is in hex.
2e868123
AC
35719@xref{read registers packet}, for a description of how the returned
35720register value is encoded.
ee2d5c50
AC
35721
35722Reply:
35723@table @samp
2e868123
AC
35724@item @var{XX@dots{}}
35725the register's value
b8ff78ce 35726@item E @var{NN}
2e868123
AC
35727for an error
35728@item
35729Indicating an unrecognized @var{query}.
ee2d5c50
AC
35730@end table
35731
b8ff78ce 35732@item P @var{n@dots{}}=@var{r@dots{}}
ee2d5c50 35733@anchor{write register packet}
b8ff78ce
JB
35734@cindex @samp{P} packet
35735Write register @var{n@dots{}} with value @var{r@dots{}}. The register
599b237a 35736number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex
8e04817f 35737digits for each byte in the register (target byte order).
c906108c 35738
ee2d5c50
AC
35739Reply:
35740@table @samp
35741@item OK
35742for success
b8ff78ce 35743@item E @var{NN}
ee2d5c50
AC
35744for an error
35745@end table
35746
5f3bebba
JB
35747@item q @var{name} @var{params}@dots{}
35748@itemx Q @var{name} @var{params}@dots{}
b8ff78ce 35749@cindex @samp{q} packet
b8ff78ce 35750@cindex @samp{Q} packet
5f3bebba
JB
35751General query (@samp{q}) and set (@samp{Q}). These packets are
35752described fully in @ref{General Query Packets}.
c906108c 35753
b8ff78ce
JB
35754@item r
35755@cindex @samp{r} packet
8e04817f 35756Reset the entire system.
c906108c 35757
b8ff78ce 35758Don't use this packet; use the @samp{R} packet instead.
ee2d5c50 35759
b8ff78ce
JB
35760@item R @var{XX}
35761@cindex @samp{R} packet
8e04817f 35762Restart the program being debugged. @var{XX}, while needed, is ignored.
2d717e4f 35763This packet is only available in extended mode (@pxref{extended mode}).
ee2d5c50 35764
8e04817f 35765The @samp{R} packet has no reply.
ee2d5c50 35766
4f553f88 35767@item s @r{[}@var{addr}@r{]}
b8ff78ce
JB
35768@cindex @samp{s} packet
35769Single step. @var{addr} is the address at which to resume. If
35770@var{addr} is omitted, resume at same address.
c906108c 35771
393eab54
PA
35772This packet is deprecated for multi-threading support. @xref{vCont
35773packet}.
35774
ee2d5c50
AC
35775Reply:
35776@xref{Stop Reply Packets}, for the reply specifications.
35777
4f553f88 35778@item S @var{sig}@r{[};@var{addr}@r{]}
ee2d5c50 35779@anchor{step with signal packet}
b8ff78ce
JB
35780@cindex @samp{S} packet
35781Step with signal. This is analogous to the @samp{C} packet, but
35782requests a single-step, rather than a normal resumption of execution.
c906108c 35783
393eab54
PA
35784This packet is deprecated for multi-threading support. @xref{vCont
35785packet}.
35786
ee2d5c50
AC
35787Reply:
35788@xref{Stop Reply Packets}, for the reply specifications.
35789
b8ff78ce
JB
35790@item t @var{addr}:@var{PP},@var{MM}
35791@cindex @samp{t} packet
8e04817f 35792Search backwards starting at address @var{addr} for a match with pattern
ee2d5c50
AC
35793@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes.
35794@var{addr} must be at least 3 digits.
c906108c 35795
b90a069a 35796@item T @var{thread-id}
b8ff78ce 35797@cindex @samp{T} packet
b90a069a 35798Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}.
c906108c 35799
ee2d5c50
AC
35800Reply:
35801@table @samp
35802@item OK
35803thread is still alive
b8ff78ce 35804@item E @var{NN}
ee2d5c50
AC
35805thread is dead
35806@end table
35807
b8ff78ce
JB
35808@item v
35809Packets starting with @samp{v} are identified by a multi-letter name,
35810up to the first @samp{;} or @samp{?} (or the end of the packet).
86d30acc 35811
2d717e4f
DJ
35812@item vAttach;@var{pid}
35813@cindex @samp{vAttach} packet
8b23ecc4
SL
35814Attach to a new process with the specified process ID @var{pid}.
35815The process ID is a
35816hexadecimal integer identifying the process. In all-stop mode, all
35817threads in the attached process are stopped; in non-stop mode, it may be
35818attached without being stopped if that is supported by the target.
35819
35820@c In non-stop mode, on a successful vAttach, the stub should set the
35821@c current thread to a thread of the newly-attached process. After
35822@c attaching, GDB queries for the attached process's thread ID with qC.
35823@c Also note that, from a user perspective, whether or not the
35824@c target is stopped on attach in non-stop mode depends on whether you
35825@c use the foreground or background version of the attach command, not
35826@c on what vAttach does; GDB does the right thing with respect to either
35827@c stopping or restarting threads.
2d717e4f
DJ
35828
35829This packet is only available in extended mode (@pxref{extended mode}).
35830
35831Reply:
35832@table @samp
35833@item E @var{nn}
35834for an error
35835@item @r{Any stop packet}
8b23ecc4
SL
35836for success in all-stop mode (@pxref{Stop Reply Packets})
35837@item OK
35838for success in non-stop mode (@pxref{Remote Non-Stop})
2d717e4f
DJ
35839@end table
35840
b90a069a 35841@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{}
b8ff78ce 35842@cindex @samp{vCont} packet
393eab54 35843@anchor{vCont packet}
b8ff78ce 35844Resume the inferior, specifying different actions for each thread.
b90a069a 35845If an action is specified with no @var{thread-id}, then it is applied to any
86d30acc 35846threads that don't have a specific action specified; if no default action is
8b23ecc4
SL
35847specified then other threads should remain stopped in all-stop mode and
35848in their current state in non-stop mode.
35849Specifying multiple
86d30acc 35850default actions is an error; specifying no actions is also an error.
b90a069a
SL
35851Thread IDs are specified using the syntax described in @ref{thread-id syntax}.
35852
35853Currently supported actions are:
86d30acc 35854
b8ff78ce 35855@table @samp
86d30acc
DJ
35856@item c
35857Continue.
b8ff78ce 35858@item C @var{sig}
8b23ecc4 35859Continue with signal @var{sig}. The signal @var{sig} should be two hex digits.
86d30acc
DJ
35860@item s
35861Step.
b8ff78ce 35862@item S @var{sig}
8b23ecc4
SL
35863Step with signal @var{sig}. The signal @var{sig} should be two hex digits.
35864@item t
35865Stop.
86d30acc
DJ
35866@end table
35867
8b23ecc4
SL
35868The optional argument @var{addr} normally associated with the
35869@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is
b8ff78ce 35870not supported in @samp{vCont}.
86d30acc 35871
08a0efd0
PA
35872The @samp{t} action is only relevant in non-stop mode
35873(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise.
8b23ecc4
SL
35874A stop reply should be generated for any affected thread not already stopped.
35875When a thread is stopped by means of a @samp{t} action,
35876the corresponding stop reply should indicate that the thread has stopped with
35877signal @samp{0}, regardless of whether the target uses some other signal
35878as an implementation detail.
35879
4220b2f8
TS
35880The stub must support @samp{vCont} if it reports support for
35881multiprocess extensions (@pxref{multiprocess extensions}). Note that in
35882this case @samp{vCont} actions can be specified to apply to all threads
35883in a process by using the @samp{p@var{pid}.-1} form of the
35884@var{thread-id}.
35885
86d30acc
DJ
35886Reply:
35887@xref{Stop Reply Packets}, for the reply specifications.
35888
b8ff78ce
JB
35889@item vCont?
35890@cindex @samp{vCont?} packet
d3e8051b 35891Request a list of actions supported by the @samp{vCont} packet.
86d30acc
DJ
35892
35893Reply:
35894@table @samp
b8ff78ce
JB
35895@item vCont@r{[};@var{action}@dots{}@r{]}
35896The @samp{vCont} packet is supported. Each @var{action} is a supported
35897command in the @samp{vCont} packet.
86d30acc 35898@item
b8ff78ce 35899The @samp{vCont} packet is not supported.
86d30acc 35900@end table
ee2d5c50 35901
a6b151f1
DJ
35902@item vFile:@var{operation}:@var{parameter}@dots{}
35903@cindex @samp{vFile} packet
35904Perform a file operation on the target system. For details,
35905see @ref{Host I/O Packets}.
35906
68437a39
DJ
35907@item vFlashErase:@var{addr},@var{length}
35908@cindex @samp{vFlashErase} packet
35909Direct the stub to erase @var{length} bytes of flash starting at
35910@var{addr}. The region may enclose any number of flash blocks, but
35911its start and end must fall on block boundaries, as indicated by the
79a6e687
BW
35912flash block size appearing in the memory map (@pxref{Memory Map
35913Format}). @value{GDBN} groups flash memory programming operations
68437a39
DJ
35914together, and sends a @samp{vFlashDone} request after each group; the
35915stub is allowed to delay erase operation until the @samp{vFlashDone}
35916packet is received.
35917
35918Reply:
35919@table @samp
35920@item OK
35921for success
35922@item E @var{NN}
35923for an error
35924@end table
35925
35926@item vFlashWrite:@var{addr}:@var{XX@dots{}}
35927@cindex @samp{vFlashWrite} packet
35928Direct the stub to write data to flash address @var{addr}. The data
35929is passed in binary form using the same encoding as for the @samp{X}
35930packet (@pxref{Binary Data}). The memory ranges specified by
35931@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
35932not overlap, and must appear in order of increasing addresses
35933(although @samp{vFlashErase} packets for higher addresses may already
35934have been received; the ordering is guaranteed only between
35935@samp{vFlashWrite} packets). If a packet writes to an address that was
35936neither erased by a preceding @samp{vFlashErase} packet nor by some other
35937target-specific method, the results are unpredictable.
35938
35939
35940Reply:
35941@table @samp
35942@item OK
35943for success
35944@item E.memtype
35945for vFlashWrite addressing non-flash memory
35946@item E @var{NN}
35947for an error
35948@end table
35949
35950@item vFlashDone
35951@cindex @samp{vFlashDone} packet
35952Indicate to the stub that flash programming operation is finished.
35953The stub is permitted to delay or batch the effects of a group of
35954@samp{vFlashErase} and @samp{vFlashWrite} packets until a
35955@samp{vFlashDone} packet is received. The contents of the affected
35956regions of flash memory are unpredictable until the @samp{vFlashDone}
35957request is completed.
35958
b90a069a
SL
35959@item vKill;@var{pid}
35960@cindex @samp{vKill} packet
35961Kill the process with the specified process ID. @var{pid} is a
35962hexadecimal integer identifying the process. This packet is used in
35963preference to @samp{k} when multiprocess protocol extensions are
35964supported; see @ref{multiprocess extensions}.
35965
35966Reply:
35967@table @samp
35968@item E @var{nn}
35969for an error
35970@item OK
35971for success
35972@end table
35973
2d717e4f
DJ
35974@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{}
35975@cindex @samp{vRun} packet
35976Run the program @var{filename}, passing it each @var{argument} on its
35977command line. The file and arguments are hex-encoded strings. If
35978@var{filename} is an empty string, the stub may use a default program
35979(e.g.@: the last program run). The program is created in the stopped
9b562ab8 35980state.
2d717e4f 35981
8b23ecc4
SL
35982@c FIXME: What about non-stop mode?
35983
2d717e4f
DJ
35984This packet is only available in extended mode (@pxref{extended mode}).
35985
35986Reply:
35987@table @samp
35988@item E @var{nn}
35989for an error
35990@item @r{Any stop packet}
35991for success (@pxref{Stop Reply Packets})
35992@end table
35993
8b23ecc4
SL
35994@item vStopped
35995@anchor{vStopped packet}
35996@cindex @samp{vStopped} packet
35997
35998In non-stop mode (@pxref{Remote Non-Stop}), acknowledge a previous stop
35999reply and prompt for the stub to report another one.
36000
36001Reply:
36002@table @samp
36003@item @r{Any stop packet}
36004if there is another unreported stop event (@pxref{Stop Reply Packets})
36005@item OK
36006if there are no unreported stop events
36007@end table
36008
b8ff78ce 36009@item X @var{addr},@var{length}:@var{XX@dots{}}
9a6253be 36010@anchor{X packet}
b8ff78ce
JB
36011@cindex @samp{X} packet
36012Write data to memory, where the data is transmitted in binary.
36013@var{addr} is address, @var{length} is number of bytes,
0876f84a 36014@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}).
c906108c 36015
ee2d5c50
AC
36016Reply:
36017@table @samp
36018@item OK
36019for success
b8ff78ce 36020@item E @var{NN}
ee2d5c50
AC
36021for an error
36022@end table
36023
a1dcb23a
DJ
36024@item z @var{type},@var{addr},@var{kind}
36025@itemx Z @var{type},@var{addr},@var{kind}
2f870471 36026@anchor{insert breakpoint or watchpoint packet}
b8ff78ce
JB
36027@cindex @samp{z} packet
36028@cindex @samp{Z} packets
36029Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
a1dcb23a 36030watchpoint starting at address @var{address} of kind @var{kind}.
ee2d5c50 36031
2f870471
AC
36032Each breakpoint and watchpoint packet @var{type} is documented
36033separately.
36034
512217c7
AC
36035@emph{Implementation notes: A remote target shall return an empty string
36036for an unrecognized breakpoint or watchpoint packet @var{type}. A
36037remote target shall support either both or neither of a given
b8ff78ce 36038@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To
2f870471
AC
36039avoid potential problems with duplicate packets, the operations should
36040be implemented in an idempotent way.}
36041
a1dcb23a 36042@item z0,@var{addr},@var{kind}
d3ce09f5 36043@itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]}
b8ff78ce
JB
36044@cindex @samp{z0} packet
36045@cindex @samp{Z0} packet
36046Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address
a1dcb23a 36047@var{addr} of type @var{kind}.
2f870471
AC
36048
36049A memory breakpoint is implemented by replacing the instruction at
36050@var{addr} with a software breakpoint or trap instruction. The
a1dcb23a
DJ
36051@var{kind} is target-specific and typically indicates the size of
36052the breakpoint in bytes that should be inserted. E.g., the @sc{arm}
36053and @sc{mips} can insert either a 2 or 4 byte breakpoint. Some
36054architectures have additional meanings for @var{kind};
83364271
LM
36055@var{cond_list} is an optional list of conditional expressions in bytecode
36056form that should be evaluated on the target's side. These are the
36057conditions that should be taken into consideration when deciding if
36058the breakpoint trigger should be reported back to @var{GDBN}.
36059
36060The @var{cond_list} parameter is comprised of a series of expressions,
36061concatenated without separators. Each expression has the following form:
36062
36063@table @samp
36064
36065@item X @var{len},@var{expr}
36066@var{len} is the length of the bytecode expression and @var{expr} is the
36067actual conditional expression in bytecode form.
36068
36069@end table
36070
d3ce09f5
SS
36071The optional @var{cmd_list} parameter introduces commands that may be
36072run on the target, rather than being reported back to @value{GDBN}.
36073The parameter starts with a numeric flag @var{persist}; if the flag is
36074nonzero, then the breakpoint may remain active and the commands
36075continue to be run even when @value{GDBN} disconnects from the target.
36076Following this flag is a series of expressions concatenated with no
36077separators. Each expression has the following form:
36078
36079@table @samp
36080
36081@item X @var{len},@var{expr}
36082@var{len} is the length of the bytecode expression and @var{expr} is the
36083actual conditional expression in bytecode form.
36084
36085@end table
36086
a1dcb23a 36087see @ref{Architecture-Specific Protocol Details}.
c906108c 36088
2f870471
AC
36089@emph{Implementation note: It is possible for a target to copy or move
36090code that contains memory breakpoints (e.g., when implementing
36091overlays). The behavior of this packet, in the presence of such a
36092target, is not defined.}
c906108c 36093
ee2d5c50
AC
36094Reply:
36095@table @samp
2f870471
AC
36096@item OK
36097success
36098@item
36099not supported
b8ff78ce 36100@item E @var{NN}
ee2d5c50 36101for an error
2f870471
AC
36102@end table
36103
a1dcb23a 36104@item z1,@var{addr},@var{kind}
83364271 36105@itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}
b8ff78ce
JB
36106@cindex @samp{z1} packet
36107@cindex @samp{Z1} packet
36108Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
a1dcb23a 36109address @var{addr}.
2f870471
AC
36110
36111A hardware breakpoint is implemented using a mechanism that is not
a1dcb23a 36112dependant on being able to modify the target's memory. @var{kind}
83364271 36113and @var{cond_list} have the same meaning as in @samp{Z0} packets.
2f870471
AC
36114
36115@emph{Implementation note: A hardware breakpoint is not affected by code
36116movement.}
36117
36118Reply:
36119@table @samp
ee2d5c50 36120@item OK
2f870471
AC
36121success
36122@item
36123not supported
b8ff78ce 36124@item E @var{NN}
2f870471
AC
36125for an error
36126@end table
36127
a1dcb23a
DJ
36128@item z2,@var{addr},@var{kind}
36129@itemx Z2,@var{addr},@var{kind}
b8ff78ce
JB
36130@cindex @samp{z2} packet
36131@cindex @samp{Z2} packet
a1dcb23a
DJ
36132Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}.
36133@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
36134
36135Reply:
36136@table @samp
36137@item OK
36138success
36139@item
36140not supported
b8ff78ce 36141@item E @var{NN}
2f870471
AC
36142for an error
36143@end table
36144
a1dcb23a
DJ
36145@item z3,@var{addr},@var{kind}
36146@itemx Z3,@var{addr},@var{kind}
b8ff78ce
JB
36147@cindex @samp{z3} packet
36148@cindex @samp{Z3} packet
a1dcb23a
DJ
36149Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}.
36150@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
36151
36152Reply:
36153@table @samp
36154@item OK
36155success
36156@item
36157not supported
b8ff78ce 36158@item E @var{NN}
2f870471
AC
36159for an error
36160@end table
36161
a1dcb23a
DJ
36162@item z4,@var{addr},@var{kind}
36163@itemx Z4,@var{addr},@var{kind}
b8ff78ce
JB
36164@cindex @samp{z4} packet
36165@cindex @samp{Z4} packet
a1dcb23a
DJ
36166Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}.
36167@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
36168
36169Reply:
36170@table @samp
36171@item OK
36172success
36173@item
36174not supported
b8ff78ce 36175@item E @var{NN}
2f870471 36176for an error
ee2d5c50
AC
36177@end table
36178
36179@end table
c906108c 36180
ee2d5c50
AC
36181@node Stop Reply Packets
36182@section Stop Reply Packets
36183@cindex stop reply packets
c906108c 36184
8b23ecc4
SL
36185The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont},
36186@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can
36187receive any of the below as a reply. Except for @samp{?}
36188and @samp{vStopped}, that reply is only returned
b8ff78ce 36189when the target halts. In the below the exact meaning of @dfn{signal
89be2091
DJ
36190number} is defined by the header @file{include/gdb/signals.h} in the
36191@value{GDBN} source code.
c906108c 36192
b8ff78ce
JB
36193As in the description of request packets, we include spaces in the
36194reply templates for clarity; these are not part of the reply packet's
36195syntax. No @value{GDBN} stop reply packet uses spaces to separate its
36196components.
c906108c 36197
b8ff78ce 36198@table @samp
ee2d5c50 36199
b8ff78ce 36200@item S @var{AA}
599b237a 36201The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
36202number). This is equivalent to a @samp{T} response with no
36203@var{n}:@var{r} pairs.
c906108c 36204
b8ff78ce
JB
36205@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
36206@cindex @samp{T} packet reply
599b237a 36207The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
36208number). This is equivalent to an @samp{S} response, except that the
36209@samp{@var{n}:@var{r}} pairs can carry values of important registers
36210and other information directly in the stop reply packet, reducing
36211round-trip latency. Single-step and breakpoint traps are reported
36212this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows:
cfa9d6d9
DJ
36213
36214@itemize @bullet
b8ff78ce 36215@item
599b237a 36216If @var{n} is a hexadecimal number, it is a register number, and the
b8ff78ce
JB
36217corresponding @var{r} gives that register's value. @var{r} is a
36218series of bytes in target byte order, with each byte given by a
36219two-digit hex number.
cfa9d6d9 36220
b8ff78ce 36221@item
b90a069a
SL
36222If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of
36223the stopped thread, as specified in @ref{thread-id syntax}.
cfa9d6d9 36224
dc146f7c
VP
36225@item
36226If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of
36227the core on which the stop event was detected.
36228
b8ff78ce 36229@item
cfa9d6d9
DJ
36230If @var{n} is a recognized @dfn{stop reason}, it describes a more
36231specific event that stopped the target. The currently defined stop
36232reasons are listed below. @var{aa} should be @samp{05}, the trap
36233signal. At most one stop reason should be present.
36234
b8ff78ce
JB
36235@item
36236Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
36237and go on to the next; this allows us to extend the protocol in the
36238future.
cfa9d6d9
DJ
36239@end itemize
36240
36241The currently defined stop reasons are:
36242
36243@table @samp
36244@item watch
36245@itemx rwatch
36246@itemx awatch
36247The packet indicates a watchpoint hit, and @var{r} is the data address, in
36248hex.
36249
36250@cindex shared library events, remote reply
36251@item library
36252The packet indicates that the loaded libraries have changed.
36253@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new
36254list of loaded libraries. @var{r} is ignored.
bacec72f
MS
36255
36256@cindex replay log events, remote reply
36257@item replaylog
36258The packet indicates that the target cannot continue replaying
36259logged execution events, because it has reached the end (or the
36260beginning when executing backward) of the log. The value of @var{r}
36261will be either @samp{begin} or @samp{end}. @xref{Reverse Execution},
36262for more information.
cfa9d6d9 36263@end table
ee2d5c50 36264
b8ff78ce 36265@item W @var{AA}
b90a069a 36266@itemx W @var{AA} ; process:@var{pid}
8e04817f 36267The process exited, and @var{AA} is the exit status. This is only
ee2d5c50
AC
36268applicable to certain targets.
36269
b90a069a
SL
36270The second form of the response, including the process ID of the exited
36271process, can be used only when @value{GDBN} has reported support for
36272multiprocess protocol extensions; see @ref{multiprocess extensions}.
36273The @var{pid} is formatted as a big-endian hex string.
36274
b8ff78ce 36275@item X @var{AA}
b90a069a 36276@itemx X @var{AA} ; process:@var{pid}
8e04817f 36277The process terminated with signal @var{AA}.
c906108c 36278
b90a069a
SL
36279The second form of the response, including the process ID of the
36280terminated process, can be used only when @value{GDBN} has reported
36281support for multiprocess protocol extensions; see @ref{multiprocess
36282extensions}. The @var{pid} is formatted as a big-endian hex string.
36283
b8ff78ce
JB
36284@item O @var{XX}@dots{}
36285@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
36286written as the program's console output. This can happen at any time
36287while the program is running and the debugger should continue to wait
8b23ecc4 36288for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode.
0ce1b118 36289
b8ff78ce 36290@item F @var{call-id},@var{parameter}@dots{}
0ce1b118
CV
36291@var{call-id} is the identifier which says which host system call should
36292be called. This is just the name of the function. Translation into the
36293correct system call is only applicable as it's defined in @value{GDBN}.
79a6e687 36294@xref{File-I/O Remote Protocol Extension}, for a list of implemented
0ce1b118
CV
36295system calls.
36296
b8ff78ce
JB
36297@samp{@var{parameter}@dots{}} is a list of parameters as defined for
36298this very system call.
0ce1b118 36299
b8ff78ce
JB
36300The target replies with this packet when it expects @value{GDBN} to
36301call a host system call on behalf of the target. @value{GDBN} replies
36302with an appropriate @samp{F} packet and keeps up waiting for the next
36303reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S}
79a6e687
BW
36304or @samp{s} action is expected to be continued. @xref{File-I/O Remote
36305Protocol Extension}, for more details.
0ce1b118 36306
ee2d5c50
AC
36307@end table
36308
36309@node General Query Packets
36310@section General Query Packets
9c16f35a 36311@cindex remote query requests
c906108c 36312
5f3bebba
JB
36313Packets starting with @samp{q} are @dfn{general query packets};
36314packets starting with @samp{Q} are @dfn{general set packets}. General
36315query and set packets are a semi-unified form for retrieving and
36316sending information to and from the stub.
36317
36318The initial letter of a query or set packet is followed by a name
36319indicating what sort of thing the packet applies to. For example,
36320@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol
36321definitions with the stub. These packet names follow some
36322conventions:
36323
36324@itemize @bullet
36325@item
36326The name must not contain commas, colons or semicolons.
36327@item
36328Most @value{GDBN} query and set packets have a leading upper case
36329letter.
36330@item
36331The names of custom vendor packets should use a company prefix, in
36332lower case, followed by a period. For example, packets designed at
36333the Acme Corporation might begin with @samp{qacme.foo} (for querying
36334foos) or @samp{Qacme.bar} (for setting bars).
36335@end itemize
36336
aa56d27a
JB
36337The name of a query or set packet should be separated from any
36338parameters by a @samp{:}; the parameters themselves should be
36339separated by @samp{,} or @samp{;}. Stubs must be careful to match the
369af7bd
DJ
36340full packet name, and check for a separator or the end of the packet,
36341in case two packet names share a common prefix. New packets should not begin
36342with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL}
36343packets predate these conventions, and have arguments without any terminator
36344for the packet name; we suspect they are in widespread use in places that
36345are difficult to upgrade. The @samp{qC} packet has no arguments, but some
36346existing stubs (e.g.@: RedBoot) are known to not check for the end of the
36347packet.}.
c906108c 36348
b8ff78ce
JB
36349Like the descriptions of the other packets, each description here
36350has a template showing the packet's overall syntax, followed by an
36351explanation of the packet's meaning. We include spaces in some of the
36352templates for clarity; these are not part of the packet's syntax. No
36353@value{GDBN} packet uses spaces to separate its components.
36354
5f3bebba
JB
36355Here are the currently defined query and set packets:
36356
b8ff78ce 36357@table @samp
c906108c 36358
d1feda86 36359@item QAgent:1
af4238e5 36360@itemx QAgent:0
d1feda86
YQ
36361Turn on or off the agent as a helper to perform some debugging operations
36362delegated from @value{GDBN} (@pxref{Control Agent}).
36363
d914c394
SS
36364@item QAllow:@var{op}:@var{val}@dots{}
36365@cindex @samp{QAllow} packet
36366Specify which operations @value{GDBN} expects to request of the
36367target, as a semicolon-separated list of operation name and value
36368pairs. Possible values for @var{op} include @samp{WriteReg},
36369@samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace},
36370@samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0,
36371indicating that @value{GDBN} will not request the operation, or 1,
36372indicating that it may. (The target can then use this to set up its
36373own internals optimally, for instance if the debugger never expects to
36374insert breakpoints, it may not need to install its own trap handler.)
36375
b8ff78ce 36376@item qC
9c16f35a 36377@cindex current thread, remote request
b8ff78ce 36378@cindex @samp{qC} packet
b90a069a 36379Return the current thread ID.
ee2d5c50
AC
36380
36381Reply:
36382@table @samp
b90a069a
SL
36383@item QC @var{thread-id}
36384Where @var{thread-id} is a thread ID as documented in
36385@ref{thread-id syntax}.
b8ff78ce 36386@item @r{(anything else)}
b90a069a 36387Any other reply implies the old thread ID.
ee2d5c50
AC
36388@end table
36389
b8ff78ce 36390@item qCRC:@var{addr},@var{length}
ff2587ec 36391@cindex CRC of memory block, remote request
b8ff78ce 36392@cindex @samp{qCRC} packet
99e008fe
EZ
36393Compute the CRC checksum of a block of memory using CRC-32 defined in
36394IEEE 802.3. The CRC is computed byte at a time, taking the most
36395significant bit of each byte first. The initial pattern code
36396@code{0xffffffff} is used to ensure leading zeros affect the CRC.
36397
36398@emph{Note:} This is the same CRC used in validating separate debug
36399files (@pxref{Separate Debug Files, , Debugging Information in Separate
36400Files}). However the algorithm is slightly different. When validating
36401separate debug files, the CRC is computed taking the @emph{least}
36402significant bit of each byte first, and the final result is inverted to
36403detect trailing zeros.
36404
ff2587ec
WZ
36405Reply:
36406@table @samp
b8ff78ce 36407@item E @var{NN}
ff2587ec 36408An error (such as memory fault)
b8ff78ce
JB
36409@item C @var{crc32}
36410The specified memory region's checksum is @var{crc32}.
ff2587ec
WZ
36411@end table
36412
03583c20
UW
36413@item QDisableRandomization:@var{value}
36414@cindex disable address space randomization, remote request
36415@cindex @samp{QDisableRandomization} packet
36416Some target operating systems will randomize the virtual address space
36417of the inferior process as a security feature, but provide a feature
36418to disable such randomization, e.g.@: to allow for a more deterministic
36419debugging experience. On such systems, this packet with a @var{value}
36420of 1 directs the target to disable address space randomization for
36421processes subsequently started via @samp{vRun} packets, while a packet
36422with a @var{value} of 0 tells the target to enable address space
36423randomization.
36424
36425This packet is only available in extended mode (@pxref{extended mode}).
36426
36427Reply:
36428@table @samp
36429@item OK
36430The request succeeded.
36431
36432@item E @var{nn}
36433An error occurred. @var{nn} are hex digits.
36434
36435@item
36436An empty reply indicates that @samp{QDisableRandomization} is not supported
36437by the stub.
36438@end table
36439
36440This packet is not probed by default; the remote stub must request it,
36441by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36442This should only be done on targets that actually support disabling
36443address space randomization.
36444
b8ff78ce
JB
36445@item qfThreadInfo
36446@itemx qsThreadInfo
9c16f35a 36447@cindex list active threads, remote request
b8ff78ce
JB
36448@cindex @samp{qfThreadInfo} packet
36449@cindex @samp{qsThreadInfo} packet
b90a069a 36450Obtain a list of all active thread IDs from the target (OS). Since there
8e04817f
AC
36451may be too many active threads to fit into one reply packet, this query
36452works iteratively: it may require more than one query/reply sequence to
36453obtain the entire list of threads. The first query of the sequence will
b8ff78ce
JB
36454be the @samp{qfThreadInfo} query; subsequent queries in the
36455sequence will be the @samp{qsThreadInfo} query.
ee2d5c50 36456
b8ff78ce 36457NOTE: This packet replaces the @samp{qL} query (see below).
ee2d5c50
AC
36458
36459Reply:
36460@table @samp
b90a069a
SL
36461@item m @var{thread-id}
36462A single thread ID
36463@item m @var{thread-id},@var{thread-id}@dots{}
36464a comma-separated list of thread IDs
b8ff78ce
JB
36465@item l
36466(lower case letter @samp{L}) denotes end of list.
ee2d5c50
AC
36467@end table
36468
36469In response to each query, the target will reply with a list of one or
b90a069a 36470more thread IDs, separated by commas.
e1aac25b 36471@value{GDBN} will respond to each reply with a request for more thread
b8ff78ce 36472ids (using the @samp{qs} form of the query), until the target responds
501994c0 36473with @samp{l} (lower-case ell, for @dfn{last}).
b90a069a
SL
36474Refer to @ref{thread-id syntax}, for the format of the @var{thread-id}
36475fields.
c906108c 36476
b8ff78ce 36477@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
ff2587ec 36478@cindex get thread-local storage address, remote request
b8ff78ce 36479@cindex @samp{qGetTLSAddr} packet
ff2587ec
WZ
36480Fetch the address associated with thread local storage specified
36481by @var{thread-id}, @var{offset}, and @var{lm}.
36482
b90a069a
SL
36483@var{thread-id} is the thread ID associated with the
36484thread for which to fetch the TLS address. @xref{thread-id syntax}.
ff2587ec
WZ
36485
36486@var{offset} is the (big endian, hex encoded) offset associated with the
36487thread local variable. (This offset is obtained from the debug
36488information associated with the variable.)
36489
db2e3e2e 36490@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the
7a9dd1b2 36491load module associated with the thread local storage. For example,
ff2587ec
WZ
36492a @sc{gnu}/Linux system will pass the link map address of the shared
36493object associated with the thread local storage under consideration.
36494Other operating environments may choose to represent the load module
36495differently, so the precise meaning of this parameter will vary.
ee2d5c50
AC
36496
36497Reply:
b8ff78ce
JB
36498@table @samp
36499@item @var{XX}@dots{}
ff2587ec
WZ
36500Hex encoded (big endian) bytes representing the address of the thread
36501local storage requested.
36502
b8ff78ce
JB
36503@item E @var{nn}
36504An error occurred. @var{nn} are hex digits.
ff2587ec 36505
b8ff78ce
JB
36506@item
36507An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
ee2d5c50
AC
36508@end table
36509
711e434b
PM
36510@item qGetTIBAddr:@var{thread-id}
36511@cindex get thread information block address
36512@cindex @samp{qGetTIBAddr} packet
36513Fetch address of the Windows OS specific Thread Information Block.
36514
36515@var{thread-id} is the thread ID associated with the thread.
36516
36517Reply:
36518@table @samp
36519@item @var{XX}@dots{}
36520Hex encoded (big endian) bytes representing the linear address of the
36521thread information block.
36522
36523@item E @var{nn}
36524An error occured. This means that either the thread was not found, or the
36525address could not be retrieved.
36526
36527@item
36528An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub.
36529@end table
36530
b8ff78ce 36531@item qL @var{startflag} @var{threadcount} @var{nextthread}
8e04817f
AC
36532Obtain thread information from RTOS. Where: @var{startflag} (one hex
36533digit) is one to indicate the first query and zero to indicate a
36534subsequent query; @var{threadcount} (two hex digits) is the maximum
36535number of threads the response packet can contain; and @var{nextthread}
36536(eight hex digits), for subsequent queries (@var{startflag} is zero), is
36537returned in the response as @var{argthread}.
ee2d5c50 36538
b8ff78ce 36539Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
ee2d5c50
AC
36540
36541Reply:
36542@table @samp
b8ff78ce 36543@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
8e04817f
AC
36544Where: @var{count} (two hex digits) is the number of threads being
36545returned; @var{done} (one hex digit) is zero to indicate more threads
36546and one indicates no further threads; @var{argthreadid} (eight hex
b8ff78ce 36547digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
ee2d5c50 36548is a sequence of thread IDs from the target. @var{threadid} (eight hex
8e04817f 36549digits). See @code{remote.c:parse_threadlist_response()}.
ee2d5c50 36550@end table
c906108c 36551
b8ff78ce 36552@item qOffsets
9c16f35a 36553@cindex section offsets, remote request
b8ff78ce 36554@cindex @samp{qOffsets} packet
31d99776
DJ
36555Get section offsets that the target used when relocating the downloaded
36556image.
c906108c 36557
ee2d5c50
AC
36558Reply:
36559@table @samp
31d99776
DJ
36560@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]}
36561Relocate the @code{Text} section by @var{xxx} from its original address.
36562Relocate the @code{Data} section by @var{yyy} from its original address.
36563If the object file format provides segment information (e.g.@: @sc{elf}
36564@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire
36565segments by the supplied offsets.
36566
36567@emph{Note: while a @code{Bss} offset may be included in the response,
36568@value{GDBN} ignores this and instead applies the @code{Data} offset
36569to the @code{Bss} section.}
36570
36571@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]}
36572Relocate the first segment of the object file, which conventionally
36573contains program code, to a starting address of @var{xxx}. If
36574@samp{DataSeg} is specified, relocate the second segment, which
36575conventionally contains modifiable data, to a starting address of
36576@var{yyy}. @value{GDBN} will report an error if the object file
36577does not contain segment information, or does not contain at least
36578as many segments as mentioned in the reply. Extra segments are
36579kept at fixed offsets relative to the last relocated segment.
ee2d5c50
AC
36580@end table
36581
b90a069a 36582@item qP @var{mode} @var{thread-id}
9c16f35a 36583@cindex thread information, remote request
b8ff78ce 36584@cindex @samp{qP} packet
b90a069a
SL
36585Returns information on @var{thread-id}. Where: @var{mode} is a hex
36586encoded 32 bit mode; @var{thread-id} is a thread ID
36587(@pxref{thread-id syntax}).
ee2d5c50 36588
aa56d27a
JB
36589Don't use this packet; use the @samp{qThreadExtraInfo} query instead
36590(see below).
36591
b8ff78ce 36592Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
c906108c 36593
8b23ecc4 36594@item QNonStop:1
687e43a4 36595@itemx QNonStop:0
8b23ecc4
SL
36596@cindex non-stop mode, remote request
36597@cindex @samp{QNonStop} packet
36598@anchor{QNonStop}
36599Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode.
36600@xref{Remote Non-Stop}, for more information.
36601
36602Reply:
36603@table @samp
36604@item OK
36605The request succeeded.
36606
36607@item E @var{nn}
36608An error occurred. @var{nn} are hex digits.
36609
36610@item
36611An empty reply indicates that @samp{QNonStop} is not supported by
36612the stub.
36613@end table
36614
36615This packet is not probed by default; the remote stub must request it,
36616by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36617Use of this packet is controlled by the @code{set non-stop} command;
36618@pxref{Non-Stop Mode}.
36619
89be2091
DJ
36620@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
36621@cindex pass signals to inferior, remote request
36622@cindex @samp{QPassSignals} packet
23181151 36623@anchor{QPassSignals}
89be2091
DJ
36624Each listed @var{signal} should be passed directly to the inferior process.
36625Signals are numbered identically to continue packets and stop replies
36626(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
36627strictly greater than the previous item. These signals do not need to stop
36628the inferior, or be reported to @value{GDBN}. All other signals should be
36629reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not
36630combine; any earlier @samp{QPassSignals} list is completely replaced by the
36631new list. This packet improves performance when using @samp{handle
36632@var{signal} nostop noprint pass}.
36633
36634Reply:
36635@table @samp
36636@item OK
36637The request succeeded.
36638
36639@item E @var{nn}
36640An error occurred. @var{nn} are hex digits.
36641
36642@item
36643An empty reply indicates that @samp{QPassSignals} is not supported by
36644the stub.
36645@end table
36646
36647Use of this packet is controlled by the @code{set remote pass-signals}
79a6e687 36648command (@pxref{Remote Configuration, set remote pass-signals}).
89be2091
DJ
36649This packet is not probed by default; the remote stub must request it,
36650by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36651
9b224c5e
PA
36652@item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
36653@cindex signals the inferior may see, remote request
36654@cindex @samp{QProgramSignals} packet
36655@anchor{QProgramSignals}
36656Each listed @var{signal} may be delivered to the inferior process.
36657Others should be silently discarded.
36658
36659In some cases, the remote stub may need to decide whether to deliver a
36660signal to the program or not without @value{GDBN} involvement. One
36661example of that is while detaching --- the program's threads may have
36662stopped for signals that haven't yet had a chance of being reported to
36663@value{GDBN}, and so the remote stub can use the signal list specified
36664by this packet to know whether to deliver or ignore those pending
36665signals.
36666
36667This does not influence whether to deliver a signal as requested by a
36668resumption packet (@pxref{vCont packet}).
36669
36670Signals are numbered identically to continue packets and stop replies
36671(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
36672strictly greater than the previous item. Multiple
36673@samp{QProgramSignals} packets do not combine; any earlier
36674@samp{QProgramSignals} list is completely replaced by the new list.
36675
36676Reply:
36677@table @samp
36678@item OK
36679The request succeeded.
36680
36681@item E @var{nn}
36682An error occurred. @var{nn} are hex digits.
36683
36684@item
36685An empty reply indicates that @samp{QProgramSignals} is not supported
36686by the stub.
36687@end table
36688
36689Use of this packet is controlled by the @code{set remote program-signals}
36690command (@pxref{Remote Configuration, set remote program-signals}).
36691This packet is not probed by default; the remote stub must request it,
36692by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36693
b8ff78ce 36694@item qRcmd,@var{command}
ff2587ec 36695@cindex execute remote command, remote request
b8ff78ce 36696@cindex @samp{qRcmd} packet
ff2587ec 36697@var{command} (hex encoded) is passed to the local interpreter for
b8ff78ce
JB
36698execution. Invalid commands should be reported using the output
36699string. Before the final result packet, the target may also respond
36700with a number of intermediate @samp{O@var{output}} console output
36701packets. @emph{Implementors should note that providing access to a
36702stubs's interpreter may have security implications}.
fa93a9d8 36703
ff2587ec
WZ
36704Reply:
36705@table @samp
36706@item OK
36707A command response with no output.
36708@item @var{OUTPUT}
36709A command response with the hex encoded output string @var{OUTPUT}.
b8ff78ce 36710@item E @var{NN}
ff2587ec 36711Indicate a badly formed request.
b8ff78ce
JB
36712@item
36713An empty reply indicates that @samp{qRcmd} is not recognized.
ff2587ec 36714@end table
fa93a9d8 36715
aa56d27a
JB
36716(Note that the @code{qRcmd} packet's name is separated from the
36717command by a @samp{,}, not a @samp{:}, contrary to the naming
36718conventions above. Please don't use this packet as a model for new
36719packets.)
36720
08388c79
DE
36721@item qSearch:memory:@var{address};@var{length};@var{search-pattern}
36722@cindex searching memory, in remote debugging
36723@cindex @samp{qSearch:memory} packet
36724@anchor{qSearch memory}
36725Search @var{length} bytes at @var{address} for @var{search-pattern}.
36726@var{address} and @var{length} are encoded in hex.
36727@var{search-pattern} is a sequence of bytes, hex encoded.
36728
36729Reply:
36730@table @samp
36731@item 0
36732The pattern was not found.
36733@item 1,address
36734The pattern was found at @var{address}.
36735@item E @var{NN}
36736A badly formed request or an error was encountered while searching memory.
36737@item
36738An empty reply indicates that @samp{qSearch:memory} is not recognized.
36739@end table
36740
a6f3e723
SL
36741@item QStartNoAckMode
36742@cindex @samp{QStartNoAckMode} packet
36743@anchor{QStartNoAckMode}
36744Request that the remote stub disable the normal @samp{+}/@samp{-}
36745protocol acknowledgments (@pxref{Packet Acknowledgment}).
36746
36747Reply:
36748@table @samp
36749@item OK
36750The stub has switched to no-acknowledgment mode.
36751@value{GDBN} acknowledges this reponse,
36752but neither the stub nor @value{GDBN} shall send or expect further
36753@samp{+}/@samp{-} acknowledgments in the current connection.
36754@item
36755An empty reply indicates that the stub does not support no-acknowledgment mode.
36756@end table
36757
be2a5f71
DJ
36758@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]}
36759@cindex supported packets, remote query
36760@cindex features of the remote protocol
36761@cindex @samp{qSupported} packet
0876f84a 36762@anchor{qSupported}
be2a5f71
DJ
36763Tell the remote stub about features supported by @value{GDBN}, and
36764query the stub for features it supports. This packet allows
36765@value{GDBN} and the remote stub to take advantage of each others'
36766features. @samp{qSupported} also consolidates multiple feature probes
36767at startup, to improve @value{GDBN} performance---a single larger
36768packet performs better than multiple smaller probe packets on
36769high-latency links. Some features may enable behavior which must not
36770be on by default, e.g.@: because it would confuse older clients or
36771stubs. Other features may describe packets which could be
36772automatically probed for, but are not. These features must be
36773reported before @value{GDBN} will use them. This ``default
36774unsupported'' behavior is not appropriate for all packets, but it
36775helps to keep the initial connection time under control with new
36776versions of @value{GDBN} which support increasing numbers of packets.
36777
36778Reply:
36779@table @samp
36780@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{}
36781The stub supports or does not support each returned @var{stubfeature},
36782depending on the form of each @var{stubfeature} (see below for the
36783possible forms).
36784@item
36785An empty reply indicates that @samp{qSupported} is not recognized,
36786or that no features needed to be reported to @value{GDBN}.
36787@end table
36788
36789The allowed forms for each feature (either a @var{gdbfeature} in the
36790@samp{qSupported} packet, or a @var{stubfeature} in the response)
36791are:
36792
36793@table @samp
36794@item @var{name}=@var{value}
36795The remote protocol feature @var{name} is supported, and associated
36796with the specified @var{value}. The format of @var{value} depends
36797on the feature, but it must not include a semicolon.
36798@item @var{name}+
36799The remote protocol feature @var{name} is supported, and does not
36800need an associated value.
36801@item @var{name}-
36802The remote protocol feature @var{name} is not supported.
36803@item @var{name}?
36804The remote protocol feature @var{name} may be supported, and
36805@value{GDBN} should auto-detect support in some other way when it is
36806needed. This form will not be used for @var{gdbfeature} notifications,
36807but may be used for @var{stubfeature} responses.
36808@end table
36809
36810Whenever the stub receives a @samp{qSupported} request, the
36811supplied set of @value{GDBN} features should override any previous
36812request. This allows @value{GDBN} to put the stub in a known
36813state, even if the stub had previously been communicating with
36814a different version of @value{GDBN}.
36815
b90a069a
SL
36816The following values of @var{gdbfeature} (for the packet sent by @value{GDBN})
36817are defined:
36818
36819@table @samp
36820@item multiprocess
36821This feature indicates whether @value{GDBN} supports multiprocess
36822extensions to the remote protocol. @value{GDBN} does not use such
36823extensions unless the stub also reports that it supports them by
36824including @samp{multiprocess+} in its @samp{qSupported} reply.
36825@xref{multiprocess extensions}, for details.
c8d5aac9
L
36826
36827@item xmlRegisters
36828This feature indicates that @value{GDBN} supports the XML target
36829description. If the stub sees @samp{xmlRegisters=} with target
36830specific strings separated by a comma, it will report register
36831description.
dde08ee1
PA
36832
36833@item qRelocInsn
36834This feature indicates whether @value{GDBN} supports the
36835@samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate
36836instruction reply packet}).
b90a069a
SL
36837@end table
36838
36839Stubs should ignore any unknown values for
be2a5f71
DJ
36840@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported}
36841packet supports receiving packets of unlimited length (earlier
b90a069a 36842versions of @value{GDBN} may reject overly long responses). Additional values
be2a5f71
DJ
36843for @var{gdbfeature} may be defined in the future to let the stub take
36844advantage of new features in @value{GDBN}, e.g.@: incompatible
b90a069a
SL
36845improvements in the remote protocol---the @samp{multiprocess} feature is
36846an example of such a feature. The stub's reply should be independent
be2a5f71
DJ
36847of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN}
36848describes all the features it supports, and then the stub replies with
36849all the features it supports.
36850
36851Similarly, @value{GDBN} will silently ignore unrecognized stub feature
36852responses, as long as each response uses one of the standard forms.
36853
36854Some features are flags. A stub which supports a flag feature
36855should respond with a @samp{+} form response. Other features
36856require values, and the stub should respond with an @samp{=}
36857form response.
36858
36859Each feature has a default value, which @value{GDBN} will use if
36860@samp{qSupported} is not available or if the feature is not mentioned
36861in the @samp{qSupported} response. The default values are fixed; a
36862stub is free to omit any feature responses that match the defaults.
36863
36864Not all features can be probed, but for those which can, the probing
36865mechanism is useful: in some cases, a stub's internal
36866architecture may not allow the protocol layer to know some information
36867about the underlying target in advance. This is especially common in
36868stubs which may be configured for multiple targets.
36869
36870These are the currently defined stub features and their properties:
36871
cfa9d6d9 36872@multitable @columnfractions 0.35 0.2 0.12 0.2
be2a5f71
DJ
36873@c NOTE: The first row should be @headitem, but we do not yet require
36874@c a new enough version of Texinfo (4.7) to use @headitem.
0876f84a 36875@item Feature Name
be2a5f71
DJ
36876@tab Value Required
36877@tab Default
36878@tab Probe Allowed
36879
36880@item @samp{PacketSize}
36881@tab Yes
36882@tab @samp{-}
36883@tab No
36884
0876f84a
DJ
36885@item @samp{qXfer:auxv:read}
36886@tab No
36887@tab @samp{-}
36888@tab Yes
36889
23181151
DJ
36890@item @samp{qXfer:features:read}
36891@tab No
36892@tab @samp{-}
36893@tab Yes
36894
cfa9d6d9
DJ
36895@item @samp{qXfer:libraries:read}
36896@tab No
36897@tab @samp{-}
36898@tab Yes
36899
68437a39
DJ
36900@item @samp{qXfer:memory-map:read}
36901@tab No
36902@tab @samp{-}
36903@tab Yes
36904
0fb4aa4b
PA
36905@item @samp{qXfer:sdata:read}
36906@tab No
36907@tab @samp{-}
36908@tab Yes
36909
0e7f50da
UW
36910@item @samp{qXfer:spu:read}
36911@tab No
36912@tab @samp{-}
36913@tab Yes
36914
36915@item @samp{qXfer:spu:write}
36916@tab No
36917@tab @samp{-}
36918@tab Yes
36919
4aa995e1
PA
36920@item @samp{qXfer:siginfo:read}
36921@tab No
36922@tab @samp{-}
36923@tab Yes
36924
36925@item @samp{qXfer:siginfo:write}
36926@tab No
36927@tab @samp{-}
36928@tab Yes
36929
dc146f7c
VP
36930@item @samp{qXfer:threads:read}
36931@tab No
36932@tab @samp{-}
36933@tab Yes
36934
b3b9301e
PA
36935@item @samp{qXfer:traceframe-info:read}
36936@tab No
36937@tab @samp{-}
36938@tab Yes
36939
169081d0
TG
36940@item @samp{qXfer:uib:read}
36941@tab No
36942@tab @samp{-}
36943@tab Yes
36944
78d85199
YQ
36945@item @samp{qXfer:fdpic:read}
36946@tab No
36947@tab @samp{-}
36948@tab Yes
dc146f7c 36949
8b23ecc4
SL
36950@item @samp{QNonStop}
36951@tab No
36952@tab @samp{-}
36953@tab Yes
36954
89be2091
DJ
36955@item @samp{QPassSignals}
36956@tab No
36957@tab @samp{-}
36958@tab Yes
36959
a6f3e723
SL
36960@item @samp{QStartNoAckMode}
36961@tab No
36962@tab @samp{-}
36963@tab Yes
36964
b90a069a
SL
36965@item @samp{multiprocess}
36966@tab No
36967@tab @samp{-}
36968@tab No
36969
83364271
LM
36970@item @samp{ConditionalBreakpoints}
36971@tab No
36972@tab @samp{-}
36973@tab No
36974
782b2b07
SS
36975@item @samp{ConditionalTracepoints}
36976@tab No
36977@tab @samp{-}
36978@tab No
36979
0d772ac9
MS
36980@item @samp{ReverseContinue}
36981@tab No
2f8132f3 36982@tab @samp{-}
0d772ac9
MS
36983@tab No
36984
36985@item @samp{ReverseStep}
36986@tab No
2f8132f3 36987@tab @samp{-}
0d772ac9
MS
36988@tab No
36989
409873ef
SS
36990@item @samp{TracepointSource}
36991@tab No
36992@tab @samp{-}
36993@tab No
36994
d1feda86
YQ
36995@item @samp{QAgent}
36996@tab No
36997@tab @samp{-}
36998@tab No
36999
d914c394
SS
37000@item @samp{QAllow}
37001@tab No
37002@tab @samp{-}
37003@tab No
37004
03583c20
UW
37005@item @samp{QDisableRandomization}
37006@tab No
37007@tab @samp{-}
37008@tab No
37009
d248b706
KY
37010@item @samp{EnableDisableTracepoints}
37011@tab No
37012@tab @samp{-}
37013@tab No
37014
3065dfb6
SS
37015@item @samp{tracenz}
37016@tab No
37017@tab @samp{-}
37018@tab No
37019
d3ce09f5
SS
37020@item @samp{BreakpointCommands}
37021@tab No
37022@tab @samp{-}
37023@tab No
37024
be2a5f71
DJ
37025@end multitable
37026
37027These are the currently defined stub features, in more detail:
37028
37029@table @samp
37030@cindex packet size, remote protocol
37031@item PacketSize=@var{bytes}
37032The remote stub can accept packets up to at least @var{bytes} in
37033length. @value{GDBN} will send packets up to this size for bulk
37034transfers, and will never send larger packets. This is a limit on the
37035data characters in the packet, including the frame and checksum.
37036There is no trailing NUL byte in a remote protocol packet; if the stub
37037stores packets in a NUL-terminated format, it should allow an extra
37038byte in its buffer for the NUL. If this stub feature is not supported,
37039@value{GDBN} guesses based on the size of the @samp{g} packet response.
37040
0876f84a
DJ
37041@item qXfer:auxv:read
37042The remote stub understands the @samp{qXfer:auxv:read} packet
37043(@pxref{qXfer auxiliary vector read}).
37044
23181151
DJ
37045@item qXfer:features:read
37046The remote stub understands the @samp{qXfer:features:read} packet
37047(@pxref{qXfer target description read}).
37048
cfa9d6d9
DJ
37049@item qXfer:libraries:read
37050The remote stub understands the @samp{qXfer:libraries:read} packet
37051(@pxref{qXfer library list read}).
37052
2268b414
JK
37053@item qXfer:libraries-svr4:read
37054The remote stub understands the @samp{qXfer:libraries-svr4:read} packet
37055(@pxref{qXfer svr4 library list read}).
37056
23181151
DJ
37057@item qXfer:memory-map:read
37058The remote stub understands the @samp{qXfer:memory-map:read} packet
37059(@pxref{qXfer memory map read}).
37060
0fb4aa4b
PA
37061@item qXfer:sdata:read
37062The remote stub understands the @samp{qXfer:sdata:read} packet
37063(@pxref{qXfer sdata read}).
37064
0e7f50da
UW
37065@item qXfer:spu:read
37066The remote stub understands the @samp{qXfer:spu:read} packet
37067(@pxref{qXfer spu read}).
37068
37069@item qXfer:spu:write
37070The remote stub understands the @samp{qXfer:spu:write} packet
37071(@pxref{qXfer spu write}).
37072
4aa995e1
PA
37073@item qXfer:siginfo:read
37074The remote stub understands the @samp{qXfer:siginfo:read} packet
37075(@pxref{qXfer siginfo read}).
37076
37077@item qXfer:siginfo:write
37078The remote stub understands the @samp{qXfer:siginfo:write} packet
37079(@pxref{qXfer siginfo write}).
37080
dc146f7c
VP
37081@item qXfer:threads:read
37082The remote stub understands the @samp{qXfer:threads:read} packet
37083(@pxref{qXfer threads read}).
37084
b3b9301e
PA
37085@item qXfer:traceframe-info:read
37086The remote stub understands the @samp{qXfer:traceframe-info:read}
37087packet (@pxref{qXfer traceframe info read}).
37088
169081d0
TG
37089@item qXfer:uib:read
37090The remote stub understands the @samp{qXfer:uib:read}
37091packet (@pxref{qXfer unwind info block}).
37092
78d85199
YQ
37093@item qXfer:fdpic:read
37094The remote stub understands the @samp{qXfer:fdpic:read}
37095packet (@pxref{qXfer fdpic loadmap read}).
37096
8b23ecc4
SL
37097@item QNonStop
37098The remote stub understands the @samp{QNonStop} packet
37099(@pxref{QNonStop}).
37100
23181151
DJ
37101@item QPassSignals
37102The remote stub understands the @samp{QPassSignals} packet
37103(@pxref{QPassSignals}).
37104
a6f3e723
SL
37105@item QStartNoAckMode
37106The remote stub understands the @samp{QStartNoAckMode} packet and
37107prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}.
37108
b90a069a
SL
37109@item multiprocess
37110@anchor{multiprocess extensions}
37111@cindex multiprocess extensions, in remote protocol
37112The remote stub understands the multiprocess extensions to the remote
37113protocol syntax. The multiprocess extensions affect the syntax of
37114thread IDs in both packets and replies (@pxref{thread-id syntax}), and
37115add process IDs to the @samp{D} packet and @samp{W} and @samp{X}
37116replies. Note that reporting this feature indicates support for the
37117syntactic extensions only, not that the stub necessarily supports
37118debugging of more than one process at a time. The stub must not use
37119multiprocess extensions in packet replies unless @value{GDBN} has also
37120indicated it supports them in its @samp{qSupported} request.
37121
07e059b5
VP
37122@item qXfer:osdata:read
37123The remote stub understands the @samp{qXfer:osdata:read} packet
37124((@pxref{qXfer osdata read}).
37125
83364271
LM
37126@item ConditionalBreakpoints
37127The target accepts and implements evaluation of conditional expressions
37128defined for breakpoints. The target will only report breakpoint triggers
37129when such conditions are true (@pxref{Conditions, ,Break Conditions}).
37130
782b2b07
SS
37131@item ConditionalTracepoints
37132The remote stub accepts and implements conditional expressions defined
37133for tracepoints (@pxref{Tracepoint Conditions}).
37134
0d772ac9
MS
37135@item ReverseContinue
37136The remote stub accepts and implements the reverse continue packet
37137(@pxref{bc}).
37138
37139@item ReverseStep
37140The remote stub accepts and implements the reverse step packet
37141(@pxref{bs}).
37142
409873ef
SS
37143@item TracepointSource
37144The remote stub understands the @samp{QTDPsrc} packet that supplies
37145the source form of tracepoint definitions.
37146
d1feda86
YQ
37147@item QAgent
37148The remote stub understands the @samp{QAgent} packet.
37149
d914c394
SS
37150@item QAllow
37151The remote stub understands the @samp{QAllow} packet.
37152
03583c20
UW
37153@item QDisableRandomization
37154The remote stub understands the @samp{QDisableRandomization} packet.
37155
0fb4aa4b
PA
37156@item StaticTracepoint
37157@cindex static tracepoints, in remote protocol
37158The remote stub supports static tracepoints.
37159
1e4d1764
YQ
37160@item InstallInTrace
37161@anchor{install tracepoint in tracing}
37162The remote stub supports installing tracepoint in tracing.
37163
d248b706
KY
37164@item EnableDisableTracepoints
37165The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and
37166@samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints
37167to be enabled and disabled while a trace experiment is running.
37168
3065dfb6
SS
37169@item tracenz
37170@cindex string tracing, in remote protocol
37171The remote stub supports the @samp{tracenz} bytecode for collecting strings.
37172See @ref{Bytecode Descriptions} for details about the bytecode.
37173
d3ce09f5
SS
37174@item BreakpointCommands
37175@cindex breakpoint commands, in remote protocol
37176The remote stub supports running a breakpoint's command list itself,
37177rather than reporting the hit to @value{GDBN}.
37178
be2a5f71
DJ
37179@end table
37180
b8ff78ce 37181@item qSymbol::
ff2587ec 37182@cindex symbol lookup, remote request
b8ff78ce 37183@cindex @samp{qSymbol} packet
ff2587ec
WZ
37184Notify the target that @value{GDBN} is prepared to serve symbol lookup
37185requests. Accept requests from the target for the values of symbols.
fa93a9d8
JB
37186
37187Reply:
ff2587ec 37188@table @samp
b8ff78ce 37189@item OK
ff2587ec 37190The target does not need to look up any (more) symbols.
b8ff78ce 37191@item qSymbol:@var{sym_name}
ff2587ec
WZ
37192The target requests the value of symbol @var{sym_name} (hex encoded).
37193@value{GDBN} may provide the value by using the
b8ff78ce
JB
37194@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
37195below.
ff2587ec 37196@end table
83761cbd 37197
b8ff78ce 37198@item qSymbol:@var{sym_value}:@var{sym_name}
ff2587ec
WZ
37199Set the value of @var{sym_name} to @var{sym_value}.
37200
37201@var{sym_name} (hex encoded) is the name of a symbol whose value the
37202target has previously requested.
37203
37204@var{sym_value} (hex) is the value for symbol @var{sym_name}. If
37205@value{GDBN} cannot supply a value for @var{sym_name}, then this field
37206will be empty.
37207
37208Reply:
37209@table @samp
b8ff78ce 37210@item OK
ff2587ec 37211The target does not need to look up any (more) symbols.
b8ff78ce 37212@item qSymbol:@var{sym_name}
ff2587ec
WZ
37213The target requests the value of a new symbol @var{sym_name} (hex
37214encoded). @value{GDBN} will continue to supply the values of symbols
37215(if available), until the target ceases to request them.
fa93a9d8 37216@end table
0abb7bc7 37217
00bf0b85 37218@item qTBuffer
687e43a4
TT
37219@itemx QTBuffer
37220@itemx QTDisconnected
d5551862 37221@itemx QTDP
409873ef 37222@itemx QTDPsrc
d5551862 37223@itemx QTDV
00bf0b85
SS
37224@itemx qTfP
37225@itemx qTfV
9d29849a 37226@itemx QTFrame
405f8e94
SS
37227@itemx qTMinFTPILen
37228
9d29849a
JB
37229@xref{Tracepoint Packets}.
37230
b90a069a 37231@item qThreadExtraInfo,@var{thread-id}
ff2587ec 37232@cindex thread attributes info, remote request
b8ff78ce
JB
37233@cindex @samp{qThreadExtraInfo} packet
37234Obtain a printable string description of a thread's attributes from
b90a069a
SL
37235the target OS. @var{thread-id} is a thread ID;
37236see @ref{thread-id syntax}. This
b8ff78ce
JB
37237string may contain anything that the target OS thinks is interesting
37238for @value{GDBN} to tell the user about the thread. The string is
37239displayed in @value{GDBN}'s @code{info threads} display. Some
37240examples of possible thread extra info strings are @samp{Runnable}, or
37241@samp{Blocked on Mutex}.
ff2587ec
WZ
37242
37243Reply:
37244@table @samp
b8ff78ce
JB
37245@item @var{XX}@dots{}
37246Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
37247comprising the printable string containing the extra information about
37248the thread's attributes.
ff2587ec 37249@end table
814e32d7 37250
aa56d27a
JB
37251(Note that the @code{qThreadExtraInfo} packet's name is separated from
37252the command by a @samp{,}, not a @samp{:}, contrary to the naming
37253conventions above. Please don't use this packet as a model for new
37254packets.)
37255
f196051f 37256@item QTNotes
687e43a4
TT
37257@itemx qTP
37258@itemx QTSave
37259@itemx qTsP
37260@itemx qTsV
d5551862 37261@itemx QTStart
9d29849a 37262@itemx QTStop
d248b706
KY
37263@itemx QTEnable
37264@itemx QTDisable
9d29849a
JB
37265@itemx QTinit
37266@itemx QTro
37267@itemx qTStatus
d5551862 37268@itemx qTV
0fb4aa4b
PA
37269@itemx qTfSTM
37270@itemx qTsSTM
37271@itemx qTSTMat
9d29849a
JB
37272@xref{Tracepoint Packets}.
37273
0876f84a
DJ
37274@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
37275@cindex read special object, remote request
37276@cindex @samp{qXfer} packet
68437a39 37277@anchor{qXfer read}
0876f84a
DJ
37278Read uninterpreted bytes from the target's special data area
37279identified by the keyword @var{object}. Request @var{length} bytes
37280starting at @var{offset} bytes into the data. The content and
0e7f50da 37281encoding of @var{annex} is specific to @var{object}; it can supply
0876f84a
DJ
37282additional details about what data to access.
37283
37284Here are the specific requests of this form defined so far. All
37285@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply
37286formats, listed below.
37287
37288@table @samp
37289@item qXfer:auxv:read::@var{offset},@var{length}
37290@anchor{qXfer auxiliary vector read}
37291Access the target's @dfn{auxiliary vector}. @xref{OS Information,
427c3a89 37292auxiliary vector}. Note @var{annex} must be empty.
0876f84a
DJ
37293
37294This packet is not probed by default; the remote stub must request it,
89be2091 37295by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
0876f84a 37296
23181151
DJ
37297@item qXfer:features:read:@var{annex}:@var{offset},@var{length}
37298@anchor{qXfer target description read}
37299Access the @dfn{target description}. @xref{Target Descriptions}. The
37300annex specifies which XML document to access. The main description is
37301always loaded from the @samp{target.xml} annex.
37302
37303This packet is not probed by default; the remote stub must request it,
37304by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37305
cfa9d6d9
DJ
37306@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length}
37307@anchor{qXfer library list read}
37308Access the target's list of loaded libraries. @xref{Library List Format}.
37309The annex part of the generic @samp{qXfer} packet must be empty
37310(@pxref{qXfer read}).
37311
37312Targets which maintain a list of libraries in the program's memory do
37313not need to implement this packet; it is designed for platforms where
37314the operating system manages the list of loaded libraries.
37315
37316This packet is not probed by default; the remote stub must request it,
37317by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37318
2268b414
JK
37319@item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length}
37320@anchor{qXfer svr4 library list read}
37321Access the target's list of loaded libraries when the target is an SVR4
37322platform. @xref{Library List Format for SVR4 Targets}. The annex part
37323of the generic @samp{qXfer} packet must be empty (@pxref{qXfer read}).
37324
37325This packet is optional for better performance on SVR4 targets.
37326@value{GDBN} uses memory read packets to read the SVR4 library list otherwise.
37327
37328This packet is not probed by default; the remote stub must request it,
37329by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37330
68437a39
DJ
37331@item qXfer:memory-map:read::@var{offset},@var{length}
37332@anchor{qXfer memory map read}
79a6e687 37333Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The
68437a39
DJ
37334annex part of the generic @samp{qXfer} packet must be empty
37335(@pxref{qXfer read}).
37336
0e7f50da
UW
37337This packet is not probed by default; the remote stub must request it,
37338by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37339
0fb4aa4b
PA
37340@item qXfer:sdata:read::@var{offset},@var{length}
37341@anchor{qXfer sdata read}
37342
37343Read contents of the extra collected static tracepoint marker
37344information. The annex part of the generic @samp{qXfer} packet must
37345be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint
37346Action Lists}.
37347
37348This packet is not probed by default; the remote stub must request it,
37349by supplying an appropriate @samp{qSupported} response
37350(@pxref{qSupported}).
37351
4aa995e1
PA
37352@item qXfer:siginfo:read::@var{offset},@var{length}
37353@anchor{qXfer siginfo read}
37354Read contents of the extra signal information on the target
37355system. The annex part of the generic @samp{qXfer} packet must be
37356empty (@pxref{qXfer read}).
37357
37358This packet is not probed by default; the remote stub must request it,
37359by supplying an appropriate @samp{qSupported} response
37360(@pxref{qSupported}).
37361
0e7f50da
UW
37362@item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
37363@anchor{qXfer spu read}
37364Read contents of an @code{spufs} file on the target system. The
37365annex specifies which file to read; it must be of the form
37366@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
37367in the target process, and @var{name} identifes the @code{spufs} file
37368in that context to be accessed.
37369
68437a39 37370This packet is not probed by default; the remote stub must request it,
07e059b5
VP
37371by supplying an appropriate @samp{qSupported} response
37372(@pxref{qSupported}).
37373
dc146f7c
VP
37374@item qXfer:threads:read::@var{offset},@var{length}
37375@anchor{qXfer threads read}
37376Access the list of threads on target. @xref{Thread List Format}. The
37377annex part of the generic @samp{qXfer} packet must be empty
37378(@pxref{qXfer read}).
37379
37380This packet is not probed by default; the remote stub must request it,
37381by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37382
b3b9301e
PA
37383@item qXfer:traceframe-info:read::@var{offset},@var{length}
37384@anchor{qXfer traceframe info read}
37385
37386Return a description of the current traceframe's contents.
37387@xref{Traceframe Info Format}. The annex part of the generic
37388@samp{qXfer} packet must be empty (@pxref{qXfer read}).
37389
37390This packet is not probed by default; the remote stub must request it,
37391by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37392
169081d0
TG
37393@item qXfer:uib:read:@var{pc}:@var{offset},@var{length}
37394@anchor{qXfer unwind info block}
37395
37396Return the unwind information block for @var{pc}. This packet is used
37397on OpenVMS/ia64 to ask the kernel unwind information.
37398
37399This packet is not probed by default.
37400
78d85199
YQ
37401@item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length}
37402@anchor{qXfer fdpic loadmap read}
37403Read contents of @code{loadmap}s on the target system. The
37404annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap},
37405executable @code{loadmap} or interpreter @code{loadmap} to read.
37406
37407This packet is not probed by default; the remote stub must request it,
37408by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37409
07e059b5
VP
37410@item qXfer:osdata:read::@var{offset},@var{length}
37411@anchor{qXfer osdata read}
37412Access the target's @dfn{operating system information}.
37413@xref{Operating System Information}.
37414
68437a39
DJ
37415@end table
37416
0876f84a
DJ
37417Reply:
37418@table @samp
37419@item m @var{data}
37420Data @var{data} (@pxref{Binary Data}) has been read from the
37421target. There may be more data at a higher address (although
37422it is permitted to return @samp{m} even for the last valid
37423block of data, as long as at least one byte of data was read).
37424@var{data} may have fewer bytes than the @var{length} in the
37425request.
37426
37427@item l @var{data}
37428Data @var{data} (@pxref{Binary Data}) has been read from the target.
37429There is no more data to be read. @var{data} may have fewer bytes
37430than the @var{length} in the request.
37431
37432@item l
37433The @var{offset} in the request is at the end of the data.
37434There is no more data to be read.
37435
37436@item E00
37437The request was malformed, or @var{annex} was invalid.
37438
37439@item E @var{nn}
37440The offset was invalid, or there was an error encountered reading the data.
37441@var{nn} is a hex-encoded @code{errno} value.
37442
37443@item
37444An empty reply indicates the @var{object} string was not recognized by
37445the stub, or that the object does not support reading.
37446@end table
37447
37448@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
37449@cindex write data into object, remote request
4aa995e1 37450@anchor{qXfer write}
0876f84a
DJ
37451Write uninterpreted bytes into the target's special data area
37452identified by the keyword @var{object}, starting at @var{offset} bytes
0e7f50da 37453into the data. @var{data}@dots{} is the binary-encoded data
0876f84a 37454(@pxref{Binary Data}) to be written. The content and encoding of @var{annex}
0e7f50da 37455is specific to @var{object}; it can supply additional details about what data
0876f84a
DJ
37456to access.
37457
0e7f50da
UW
37458Here are the specific requests of this form defined so far. All
37459@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply
37460formats, listed below.
37461
37462@table @samp
4aa995e1
PA
37463@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{}
37464@anchor{qXfer siginfo write}
37465Write @var{data} to the extra signal information on the target system.
37466The annex part of the generic @samp{qXfer} packet must be
37467empty (@pxref{qXfer write}).
37468
37469This packet is not probed by default; the remote stub must request it,
37470by supplying an appropriate @samp{qSupported} response
37471(@pxref{qSupported}).
37472
84fcdf95 37473@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
0e7f50da
UW
37474@anchor{qXfer spu write}
37475Write @var{data} to an @code{spufs} file on the target system. The
37476annex specifies which file to write; it must be of the form
37477@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
37478in the target process, and @var{name} identifes the @code{spufs} file
37479in that context to be accessed.
37480
37481This packet is not probed by default; the remote stub must request it,
37482by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37483@end table
0876f84a
DJ
37484
37485Reply:
37486@table @samp
37487@item @var{nn}
37488@var{nn} (hex encoded) is the number of bytes written.
37489This may be fewer bytes than supplied in the request.
37490
37491@item E00
37492The request was malformed, or @var{annex} was invalid.
37493
37494@item E @var{nn}
37495The offset was invalid, or there was an error encountered writing the data.
37496@var{nn} is a hex-encoded @code{errno} value.
37497
37498@item
37499An empty reply indicates the @var{object} string was not
37500recognized by the stub, or that the object does not support writing.
37501@end table
37502
37503@item qXfer:@var{object}:@var{operation}:@dots{}
37504Requests of this form may be added in the future. When a stub does
37505not recognize the @var{object} keyword, or its support for
37506@var{object} does not recognize the @var{operation} keyword, the stub
37507must respond with an empty packet.
37508
0b16c5cf
PA
37509@item qAttached:@var{pid}
37510@cindex query attached, remote request
37511@cindex @samp{qAttached} packet
37512Return an indication of whether the remote server attached to an
37513existing process or created a new process. When the multiprocess
37514protocol extensions are supported (@pxref{multiprocess extensions}),
37515@var{pid} is an integer in hexadecimal format identifying the target
37516process. Otherwise, @value{GDBN} will omit the @var{pid} field and
37517the query packet will be simplified as @samp{qAttached}.
37518
37519This query is used, for example, to know whether the remote process
37520should be detached or killed when a @value{GDBN} session is ended with
37521the @code{quit} command.
37522
37523Reply:
37524@table @samp
37525@item 1
37526The remote server attached to an existing process.
37527@item 0
37528The remote server created a new process.
37529@item E @var{NN}
37530A badly formed request or an error was encountered.
37531@end table
37532
ee2d5c50
AC
37533@end table
37534
a1dcb23a
DJ
37535@node Architecture-Specific Protocol Details
37536@section Architecture-Specific Protocol Details
37537
37538This section describes how the remote protocol is applied to specific
37539target architectures. Also see @ref{Standard Target Features}, for
37540details of XML target descriptions for each architecture.
37541
02b67415
MR
37542@menu
37543* ARM-Specific Protocol Details::
37544* MIPS-Specific Protocol Details::
37545@end menu
37546
37547@node ARM-Specific Protocol Details
37548@subsection @acronym{ARM}-specific Protocol Details
37549
37550@menu
37551* ARM Breakpoint Kinds::
37552@end menu
a1dcb23a 37553
02b67415
MR
37554@node ARM Breakpoint Kinds
37555@subsubsection @acronym{ARM} Breakpoint Kinds
37556@cindex breakpoint kinds, @acronym{ARM}
a1dcb23a
DJ
37557
37558These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
37559
37560@table @r
37561
37562@item 2
3756316-bit Thumb mode breakpoint.
37564
37565@item 3
3756632-bit Thumb mode (Thumb-2) breakpoint.
37567
37568@item 4
02b67415 3756932-bit @acronym{ARM} mode breakpoint.
a1dcb23a
DJ
37570
37571@end table
37572
02b67415
MR
37573@node MIPS-Specific Protocol Details
37574@subsection @acronym{MIPS}-specific Protocol Details
37575
37576@menu
37577* MIPS Register packet Format::
4cc0665f 37578* MIPS Breakpoint Kinds::
02b67415 37579@end menu
a1dcb23a 37580
02b67415
MR
37581@node MIPS Register packet Format
37582@subsubsection @acronym{MIPS} Register Packet Format
eb17f351 37583@cindex register packet format, @acronym{MIPS}
eb12ee30 37584
b8ff78ce 37585The following @code{g}/@code{G} packets have previously been defined.
ee2d5c50
AC
37586In the below, some thirty-two bit registers are transferred as
37587sixty-four bits. Those registers should be zero/sign extended (which?)
599b237a
BW
37588to fill the space allocated. Register bytes are transferred in target
37589byte order. The two nibbles within a register byte are transferred
02b67415 37590most-significant -- least-significant.
eb12ee30 37591
ee2d5c50 37592@table @r
eb12ee30 37593
8e04817f 37594@item MIPS32
599b237a 37595All registers are transferred as thirty-two bit quantities in the order:
8e04817f
AC
3759632 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
37597registers; fsr; fir; fp.
eb12ee30 37598
8e04817f 37599@item MIPS64
599b237a 37600All registers are transferred as sixty-four bit quantities (including
8e04817f
AC
37601thirty-two bit registers such as @code{sr}). The ordering is the same
37602as @code{MIPS32}.
eb12ee30 37603
ee2d5c50
AC
37604@end table
37605
4cc0665f
MR
37606@node MIPS Breakpoint Kinds
37607@subsubsection @acronym{MIPS} Breakpoint Kinds
37608@cindex breakpoint kinds, @acronym{MIPS}
37609
37610These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
37611
37612@table @r
37613
37614@item 2
3761516-bit @acronym{MIPS16} mode breakpoint.
37616
37617@item 3
3761816-bit @acronym{microMIPS} mode breakpoint.
37619
37620@item 4
3762132-bit standard @acronym{MIPS} mode breakpoint.
37622
37623@item 5
3762432-bit @acronym{microMIPS} mode breakpoint.
37625
37626@end table
37627
9d29849a
JB
37628@node Tracepoint Packets
37629@section Tracepoint Packets
37630@cindex tracepoint packets
37631@cindex packets, tracepoint
37632
37633Here we describe the packets @value{GDBN} uses to implement
37634tracepoints (@pxref{Tracepoints}).
37635
37636@table @samp
37637
7a697b8d 37638@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]}
c614397c 37639@cindex @samp{QTDP} packet
9d29849a
JB
37640Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena}
37641is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then
37642the tracepoint is disabled. @var{step} is the tracepoint's step
7a697b8d
SS
37643count, and @var{pass} is its pass count. If an @samp{F} is present,
37644then the tracepoint is to be a fast tracepoint, and the @var{flen} is
37645the number of bytes that the target should copy elsewhere to make room
37646for the tracepoint. If an @samp{X} is present, it introduces a
37647tracepoint condition, which consists of a hexadecimal length, followed
37648by a comma and hex-encoded bytes, in a manner similar to action
37649encodings as described below. If the trailing @samp{-} is present,
37650further @samp{QTDP} packets will follow to specify this tracepoint's
37651actions.
9d29849a
JB
37652
37653Replies:
37654@table @samp
37655@item OK
37656The packet was understood and carried out.
dde08ee1
PA
37657@item qRelocInsn
37658@xref{Tracepoint Packets,,Relocate instruction reply packet}.
9d29849a
JB
37659@item
37660The packet was not recognized.
37661@end table
37662
37663@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]}
37664Define actions to be taken when a tracepoint is hit. @var{n} and
37665@var{addr} must be the same as in the initial @samp{QTDP} packet for
37666this tracepoint. This packet may only be sent immediately after
37667another @samp{QTDP} packet that ended with a @samp{-}. If the
37668trailing @samp{-} is present, further @samp{QTDP} packets will follow,
37669specifying more actions for this tracepoint.
37670
37671In the series of action packets for a given tracepoint, at most one
37672can have an @samp{S} before its first @var{action}. If such a packet
37673is sent, it and the following packets define ``while-stepping''
37674actions. Any prior packets define ordinary actions --- that is, those
37675taken when the tracepoint is first hit. If no action packet has an
37676@samp{S}, then all the packets in the series specify ordinary
37677tracepoint actions.
37678
37679The @samp{@var{action}@dots{}} portion of the packet is a series of
37680actions, concatenated without separators. Each action has one of the
37681following forms:
37682
37683@table @samp
37684
37685@item R @var{mask}
37686Collect the registers whose bits are set in @var{mask}. @var{mask} is
599b237a 37687a hexadecimal number whose @var{i}'th bit is set if register number
9d29849a
JB
37688@var{i} should be collected. (The least significant bit is numbered
37689zero.) Note that @var{mask} may be any number of digits long; it may
37690not fit in a 32-bit word.
37691
37692@item M @var{basereg},@var{offset},@var{len}
37693Collect @var{len} bytes of memory starting at the address in register
37694number @var{basereg}, plus @var{offset}. If @var{basereg} is
37695@samp{-1}, then the range has a fixed address: @var{offset} is the
37696address of the lowest byte to collect. The @var{basereg},
599b237a 37697@var{offset}, and @var{len} parameters are all unsigned hexadecimal
9d29849a
JB
37698values (the @samp{-1} value for @var{basereg} is a special case).
37699
37700@item X @var{len},@var{expr}
37701Evaluate @var{expr}, whose length is @var{len}, and collect memory as
37702it directs. @var{expr} is an agent expression, as described in
37703@ref{Agent Expressions}. Each byte of the expression is encoded as a
37704two-digit hex number in the packet; @var{len} is the number of bytes
37705in the expression (and thus one-half the number of hex digits in the
37706packet).
37707
37708@end table
37709
37710Any number of actions may be packed together in a single @samp{QTDP}
37711packet, as long as the packet does not exceed the maximum packet
c1947b85
JB
37712length (400 bytes, for many stubs). There may be only one @samp{R}
37713action per tracepoint, and it must precede any @samp{M} or @samp{X}
37714actions. Any registers referred to by @samp{M} and @samp{X} actions
37715must be collected by a preceding @samp{R} action. (The
37716``while-stepping'' actions are treated as if they were attached to a
37717separate tracepoint, as far as these restrictions are concerned.)
9d29849a
JB
37718
37719Replies:
37720@table @samp
37721@item OK
37722The packet was understood and carried out.
dde08ee1
PA
37723@item qRelocInsn
37724@xref{Tracepoint Packets,,Relocate instruction reply packet}.
9d29849a
JB
37725@item
37726The packet was not recognized.
37727@end table
37728
409873ef
SS
37729@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes}
37730@cindex @samp{QTDPsrc} packet
37731Specify a source string of tracepoint @var{n} at address @var{addr}.
37732This is useful to get accurate reproduction of the tracepoints
37733originally downloaded at the beginning of the trace run. @var{type}
37734is the name of the tracepoint part, such as @samp{cond} for the
37735tracepoint's conditional expression (see below for a list of types), while
37736@var{bytes} is the string, encoded in hexadecimal.
37737
37738@var{start} is the offset of the @var{bytes} within the overall source
37739string, while @var{slen} is the total length of the source string.
37740This is intended for handling source strings that are longer than will
37741fit in a single packet.
37742@c Add detailed example when this info is moved into a dedicated
37743@c tracepoint descriptions section.
37744
37745The available string types are @samp{at} for the location,
37746@samp{cond} for the conditional, and @samp{cmd} for an action command.
37747@value{GDBN} sends a separate packet for each command in the action
37748list, in the same order in which the commands are stored in the list.
37749
37750The target does not need to do anything with source strings except
37751report them back as part of the replies to the @samp{qTfP}/@samp{qTsP}
37752query packets.
37753
37754Although this packet is optional, and @value{GDBN} will only send it
37755if the target replies with @samp{TracepointSource} @xref{General
37756Query Packets}, it makes both disconnected tracing and trace files
37757much easier to use. Otherwise the user must be careful that the
37758tracepoints in effect while looking at trace frames are identical to
37759the ones in effect during the trace run; even a small discrepancy
37760could cause @samp{tdump} not to work, or a particular trace frame not
37761be found.
37762
f61e138d
SS
37763@item QTDV:@var{n}:@var{value}
37764@cindex define trace state variable, remote request
37765@cindex @samp{QTDV} packet
37766Create a new trace state variable, number @var{n}, with an initial
37767value of @var{value}, which is a 64-bit signed integer. Both @var{n}
37768and @var{value} are encoded as hexadecimal values. @value{GDBN} has
37769the option of not using this packet for initial values of zero; the
37770target should simply create the trace state variables as they are
37771mentioned in expressions.
37772
9d29849a 37773@item QTFrame:@var{n}
c614397c 37774@cindex @samp{QTFrame} packet
9d29849a
JB
37775Select the @var{n}'th tracepoint frame from the buffer, and use the
37776register and memory contents recorded there to answer subsequent
37777request packets from @value{GDBN}.
37778
37779A successful reply from the stub indicates that the stub has found the
37780requested frame. The response is a series of parts, concatenated
37781without separators, describing the frame we selected. Each part has
37782one of the following forms:
37783
37784@table @samp
37785@item F @var{f}
37786The selected frame is number @var{n} in the trace frame buffer;
599b237a 37787@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there
9d29849a
JB
37788was no frame matching the criteria in the request packet.
37789
37790@item T @var{t}
37791The selected trace frame records a hit of tracepoint number @var{t};
599b237a 37792@var{t} is a hexadecimal number.
9d29849a
JB
37793
37794@end table
37795
37796@item QTFrame:pc:@var{addr}
37797Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37798currently selected frame whose PC is @var{addr};
599b237a 37799@var{addr} is a hexadecimal number.
9d29849a
JB
37800
37801@item QTFrame:tdp:@var{t}
37802Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37803currently selected frame that is a hit of tracepoint @var{t}; @var{t}
599b237a 37804is a hexadecimal number.
9d29849a
JB
37805
37806@item QTFrame:range:@var{start}:@var{end}
37807Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37808currently selected frame whose PC is between @var{start} (inclusive)
081dfbf7 37809and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal
9d29849a
JB
37810numbers.
37811
37812@item QTFrame:outside:@var{start}:@var{end}
37813Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first
081dfbf7 37814frame @emph{outside} the given range of addresses (exclusive).
9d29849a 37815
405f8e94 37816@item qTMinFTPILen
c614397c 37817@cindex @samp{qTMinFTPILen} packet
405f8e94
SS
37818This packet requests the minimum length of instruction at which a fast
37819tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on
37820the 32-bit x86 architecture, it is possible to use a 4-byte jump, but
37821it depends on the target system being able to create trampolines in
37822the first 64K of memory, which might or might not be possible for that
37823system. So the reply to this packet will be 4 if it is able to
37824arrange for that.
37825
37826Replies:
37827
37828@table @samp
37829@item 0
37830The minimum instruction length is currently unknown.
37831@item @var{length}
37832The minimum instruction length is @var{length}, where @var{length} is greater
37833or equal to 1. @var{length} is a hexadecimal number. A reply of 1 means
37834that a fast tracepoint may be placed on any instruction regardless of size.
37835@item E
37836An error has occurred.
37837@item
37838An empty reply indicates that the request is not supported by the stub.
37839@end table
37840
9d29849a 37841@item QTStart
c614397c 37842@cindex @samp{QTStart} packet
dde08ee1
PA
37843Begin the tracepoint experiment. Begin collecting data from
37844tracepoint hits in the trace frame buffer. This packet supports the
37845@samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate
37846instruction reply packet}).
9d29849a
JB
37847
37848@item QTStop
c614397c 37849@cindex @samp{QTStop} packet
9d29849a
JB
37850End the tracepoint experiment. Stop collecting trace frames.
37851
d248b706
KY
37852@item QTEnable:@var{n}:@var{addr}
37853@anchor{QTEnable}
c614397c 37854@cindex @samp{QTEnable} packet
d248b706
KY
37855Enable tracepoint @var{n} at address @var{addr} in a started tracepoint
37856experiment. If the tracepoint was previously disabled, then collection
37857of data from it will resume.
37858
37859@item QTDisable:@var{n}:@var{addr}
37860@anchor{QTDisable}
c614397c 37861@cindex @samp{QTDisable} packet
d248b706
KY
37862Disable tracepoint @var{n} at address @var{addr} in a started tracepoint
37863experiment. No more data will be collected from the tracepoint unless
37864@samp{QTEnable:@var{n}:@var{addr}} is subsequently issued.
37865
9d29849a 37866@item QTinit
c614397c 37867@cindex @samp{QTinit} packet
9d29849a
JB
37868Clear the table of tracepoints, and empty the trace frame buffer.
37869
37870@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{}
c614397c 37871@cindex @samp{QTro} packet
9d29849a
JB
37872Establish the given ranges of memory as ``transparent''. The stub
37873will answer requests for these ranges from memory's current contents,
37874if they were not collected as part of the tracepoint hit.
37875
37876@value{GDBN} uses this to mark read-only regions of memory, like those
37877containing program code. Since these areas never change, they should
37878still have the same contents they did when the tracepoint was hit, so
37879there's no reason for the stub to refuse to provide their contents.
37880
d5551862 37881@item QTDisconnected:@var{value}
c614397c 37882@cindex @samp{QTDisconnected} packet
d5551862
SS
37883Set the choice to what to do with the tracing run when @value{GDBN}
37884disconnects from the target. A @var{value} of 1 directs the target to
37885continue the tracing run, while 0 tells the target to stop tracing if
37886@value{GDBN} is no longer in the picture.
37887
9d29849a 37888@item qTStatus
c614397c 37889@cindex @samp{qTStatus} packet
9d29849a
JB
37890Ask the stub if there is a trace experiment running right now.
37891
4daf5ac0
SS
37892The reply has the form:
37893
37894@table @samp
37895
37896@item T@var{running}@r{[};@var{field}@r{]}@dots{}
37897@var{running} is a single digit @code{1} if the trace is presently
37898running, or @code{0} if not. It is followed by semicolon-separated
37899optional fields that an agent may use to report additional status.
37900
37901@end table
37902
37903If the trace is not running, the agent may report any of several
37904explanations as one of the optional fields:
37905
37906@table @samp
37907
37908@item tnotrun:0
37909No trace has been run yet.
37910
f196051f
SS
37911@item tstop[:@var{text}]:0
37912The trace was stopped by a user-originated stop command. The optional
37913@var{text} field is a user-supplied string supplied as part of the
37914stop command (for instance, an explanation of why the trace was
37915stopped manually). It is hex-encoded.
4daf5ac0
SS
37916
37917@item tfull:0
37918The trace stopped because the trace buffer filled up.
37919
37920@item tdisconnected:0
37921The trace stopped because @value{GDBN} disconnected from the target.
37922
37923@item tpasscount:@var{tpnum}
37924The trace stopped because tracepoint @var{tpnum} exceeded its pass count.
37925
6c28cbf2
SS
37926@item terror:@var{text}:@var{tpnum}
37927The trace stopped because tracepoint @var{tpnum} had an error. The
37928string @var{text} is available to describe the nature of the error
37929(for instance, a divide by zero in the condition expression).
99b5e152 37930@var{text} is hex encoded.
6c28cbf2 37931
4daf5ac0
SS
37932@item tunknown:0
37933The trace stopped for some other reason.
37934
37935@end table
37936
33da3f1c
SS
37937Additional optional fields supply statistical and other information.
37938Although not required, they are extremely useful for users monitoring
37939the progress of a trace run. If a trace has stopped, and these
37940numbers are reported, they must reflect the state of the just-stopped
37941trace.
4daf5ac0 37942
9d29849a 37943@table @samp
4daf5ac0
SS
37944
37945@item tframes:@var{n}
37946The number of trace frames in the buffer.
37947
37948@item tcreated:@var{n}
37949The total number of trace frames created during the run. This may
37950be larger than the trace frame count, if the buffer is circular.
37951
37952@item tsize:@var{n}
37953The total size of the trace buffer, in bytes.
37954
37955@item tfree:@var{n}
37956The number of bytes still unused in the buffer.
37957
33da3f1c
SS
37958@item circular:@var{n}
37959The value of the circular trace buffer flag. @code{1} means that the
37960trace buffer is circular and old trace frames will be discarded if
37961necessary to make room, @code{0} means that the trace buffer is linear
37962and may fill up.
37963
37964@item disconn:@var{n}
37965The value of the disconnected tracing flag. @code{1} means that
37966tracing will continue after @value{GDBN} disconnects, @code{0} means
37967that the trace run will stop.
37968
9d29849a
JB
37969@end table
37970
f196051f
SS
37971@item qTP:@var{tp}:@var{addr}
37972@cindex tracepoint status, remote request
37973@cindex @samp{qTP} packet
37974Ask the stub for the current state of tracepoint number @var{tp} at
37975address @var{addr}.
37976
37977Replies:
37978@table @samp
37979@item V@var{hits}:@var{usage}
37980The tracepoint has been hit @var{hits} times so far during the trace
37981run, and accounts for @var{usage} in the trace buffer. Note that
37982@code{while-stepping} steps are not counted as separate hits, but the
37983steps' space consumption is added into the usage number.
37984
37985@end table
37986
f61e138d
SS
37987@item qTV:@var{var}
37988@cindex trace state variable value, remote request
37989@cindex @samp{qTV} packet
37990Ask the stub for the value of the trace state variable number @var{var}.
37991
37992Replies:
37993@table @samp
37994@item V@var{value}
37995The value of the variable is @var{value}. This will be the current
37996value of the variable if the user is examining a running target, or a
37997saved value if the variable was collected in the trace frame that the
37998user is looking at. Note that multiple requests may result in
37999different reply values, such as when requesting values while the
38000program is running.
38001
38002@item U
38003The value of the variable is unknown. This would occur, for example,
38004if the user is examining a trace frame in which the requested variable
38005was not collected.
9d29849a
JB
38006@end table
38007
d5551862 38008@item qTfP
c614397c 38009@cindex @samp{qTfP} packet
d5551862 38010@itemx qTsP
c614397c 38011@cindex @samp{qTsP} packet
d5551862
SS
38012These packets request data about tracepoints that are being used by
38013the target. @value{GDBN} sends @code{qTfP} to get the first piece
38014of data, and multiple @code{qTsP} to get additional pieces. Replies
38015to these packets generally take the form of the @code{QTDP} packets
38016that define tracepoints. (FIXME add detailed syntax)
38017
00bf0b85 38018@item qTfV
c614397c 38019@cindex @samp{qTfV} packet
00bf0b85 38020@itemx qTsV
c614397c 38021@cindex @samp{qTsV} packet
00bf0b85
SS
38022These packets request data about trace state variables that are on the
38023target. @value{GDBN} sends @code{qTfV} to get the first vari of data,
38024and multiple @code{qTsV} to get additional variables. Replies to
38025these packets follow the syntax of the @code{QTDV} packets that define
38026trace state variables.
38027
0fb4aa4b
PA
38028@item qTfSTM
38029@itemx qTsSTM
16bdd41f
YQ
38030@anchor{qTfSTM}
38031@anchor{qTsSTM}
c614397c
YQ
38032@cindex @samp{qTfSTM} packet
38033@cindex @samp{qTsSTM} packet
0fb4aa4b
PA
38034These packets request data about static tracepoint markers that exist
38035in the target program. @value{GDBN} sends @code{qTfSTM} to get the
38036first piece of data, and multiple @code{qTsSTM} to get additional
38037pieces. Replies to these packets take the following form:
38038
38039Reply:
38040@table @samp
38041@item m @var{address}:@var{id}:@var{extra}
38042A single marker
38043@item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{}
38044a comma-separated list of markers
38045@item l
38046(lower case letter @samp{L}) denotes end of list.
38047@item E @var{nn}
38048An error occurred. @var{nn} are hex digits.
38049@item
38050An empty reply indicates that the request is not supported by the
38051stub.
38052@end table
38053
38054@var{address} is encoded in hex.
38055@var{id} and @var{extra} are strings encoded in hex.
38056
38057In response to each query, the target will reply with a list of one or
38058more markers, separated by commas. @value{GDBN} will respond to each
38059reply with a request for more markers (using the @samp{qs} form of the
38060query), until the target responds with @samp{l} (lower-case ell, for
38061@dfn{last}).
38062
38063@item qTSTMat:@var{address}
16bdd41f 38064@anchor{qTSTMat}
c614397c 38065@cindex @samp{qTSTMat} packet
0fb4aa4b
PA
38066This packets requests data about static tracepoint markers in the
38067target program at @var{address}. Replies to this packet follow the
38068syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static
38069tracepoint markers.
38070
00bf0b85 38071@item QTSave:@var{filename}
c614397c 38072@cindex @samp{QTSave} packet
00bf0b85
SS
38073This packet directs the target to save trace data to the file name
38074@var{filename} in the target's filesystem. @var{filename} is encoded
38075as a hex string; the interpretation of the file name (relative vs
38076absolute, wild cards, etc) is up to the target.
38077
38078@item qTBuffer:@var{offset},@var{len}
c614397c 38079@cindex @samp{qTBuffer} packet
00bf0b85
SS
38080Return up to @var{len} bytes of the current contents of trace buffer,
38081starting at @var{offset}. The trace buffer is treated as if it were
38082a contiguous collection of traceframes, as per the trace file format.
38083The reply consists as many hex-encoded bytes as the target can deliver
38084in a packet; it is not an error to return fewer than were asked for.
38085A reply consisting of just @code{l} indicates that no bytes are
38086available.
38087
4daf5ac0
SS
38088@item QTBuffer:circular:@var{value}
38089This packet directs the target to use a circular trace buffer if
38090@var{value} is 1, or a linear buffer if the value is 0.
38091
f196051f 38092@item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{}
c614397c 38093@cindex @samp{QTNotes} packet
f196051f
SS
38094This packet adds optional textual notes to the trace run. Allowable
38095types include @code{user}, @code{notes}, and @code{tstop}, the
38096@var{text} fields are arbitrary strings, hex-encoded.
38097
f61e138d 38098@end table
9d29849a 38099
dde08ee1
PA
38100@subsection Relocate instruction reply packet
38101When installing fast tracepoints in memory, the target may need to
38102relocate the instruction currently at the tracepoint address to a
38103different address in memory. For most instructions, a simple copy is
38104enough, but, for example, call instructions that implicitly push the
38105return address on the stack, and relative branches or other
38106PC-relative instructions require offset adjustment, so that the effect
38107of executing the instruction at a different address is the same as if
38108it had executed in the original location.
38109
38110In response to several of the tracepoint packets, the target may also
38111respond with a number of intermediate @samp{qRelocInsn} request
38112packets before the final result packet, to have @value{GDBN} handle
38113this relocation operation. If a packet supports this mechanism, its
38114documentation will explicitly say so. See for example the above
38115descriptions for the @samp{QTStart} and @samp{QTDP} packets. The
38116format of the request is:
38117
38118@table @samp
38119@item qRelocInsn:@var{from};@var{to}
38120
38121This requests @value{GDBN} to copy instruction at address @var{from}
38122to address @var{to}, possibly adjusted so that executing the
38123instruction at @var{to} has the same effect as executing it at
38124@var{from}. @value{GDBN} writes the adjusted instruction to target
38125memory starting at @var{to}.
38126@end table
38127
38128Replies:
38129@table @samp
38130@item qRelocInsn:@var{adjusted_size}
38131Informs the stub the relocation is complete. @var{adjusted_size} is
38132the length in bytes of resulting relocated instruction sequence.
38133@item E @var{NN}
38134A badly formed request was detected, or an error was encountered while
38135relocating the instruction.
38136@end table
38137
a6b151f1
DJ
38138@node Host I/O Packets
38139@section Host I/O Packets
38140@cindex Host I/O, remote protocol
38141@cindex file transfer, remote protocol
38142
38143The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O
38144operations on the far side of a remote link. For example, Host I/O is
38145used to upload and download files to a remote target with its own
38146filesystem. Host I/O uses the same constant values and data structure
38147layout as the target-initiated File-I/O protocol. However, the
38148Host I/O packets are structured differently. The target-initiated
38149protocol relies on target memory to store parameters and buffers.
38150Host I/O requests are initiated by @value{GDBN}, and the
38151target's memory is not involved. @xref{File-I/O Remote Protocol
38152Extension}, for more details on the target-initiated protocol.
38153
38154The Host I/O request packets all encode a single operation along with
38155its arguments. They have this format:
38156
38157@table @samp
38158
38159@item vFile:@var{operation}: @var{parameter}@dots{}
38160@var{operation} is the name of the particular request; the target
38161should compare the entire packet name up to the second colon when checking
38162for a supported operation. The format of @var{parameter} depends on
38163the operation. Numbers are always passed in hexadecimal. Negative
38164numbers have an explicit minus sign (i.e.@: two's complement is not
38165used). Strings (e.g.@: filenames) are encoded as a series of
38166hexadecimal bytes. The last argument to a system call may be a
38167buffer of escaped binary data (@pxref{Binary Data}).
38168
38169@end table
38170
38171The valid responses to Host I/O packets are:
38172
38173@table @samp
38174
38175@item F @var{result} [, @var{errno}] [; @var{attachment}]
38176@var{result} is the integer value returned by this operation, usually
38177non-negative for success and -1 for errors. If an error has occured,
38178@var{errno} will be included in the result. @var{errno} will have a
38179value defined by the File-I/O protocol (@pxref{Errno Values}). For
38180operations which return data, @var{attachment} supplies the data as a
38181binary buffer. Binary buffers in response packets are escaped in the
38182normal way (@pxref{Binary Data}). See the individual packet
38183documentation for the interpretation of @var{result} and
38184@var{attachment}.
38185
38186@item
38187An empty response indicates that this operation is not recognized.
38188
38189@end table
38190
38191These are the supported Host I/O operations:
38192
38193@table @samp
38194@item vFile:open: @var{pathname}, @var{flags}, @var{mode}
38195Open a file at @var{pathname} and return a file descriptor for it, or
38196return -1 if an error occurs. @var{pathname} is a string,
38197@var{flags} is an integer indicating a mask of open flags
38198(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask
38199of mode bits to use if the file is created (@pxref{mode_t Values}).
c1c25a1a 38200@xref{open}, for details of the open flags and mode values.
a6b151f1
DJ
38201
38202@item vFile:close: @var{fd}
38203Close the open file corresponding to @var{fd} and return 0, or
38204-1 if an error occurs.
38205
38206@item vFile:pread: @var{fd}, @var{count}, @var{offset}
38207Read data from the open file corresponding to @var{fd}. Up to
38208@var{count} bytes will be read from the file, starting at @var{offset}
38209relative to the start of the file. The target may read fewer bytes;
38210common reasons include packet size limits and an end-of-file
38211condition. The number of bytes read is returned. Zero should only be
38212returned for a successful read at the end of the file, or if
38213@var{count} was zero.
38214
38215The data read should be returned as a binary attachment on success.
38216If zero bytes were read, the response should include an empty binary
38217attachment (i.e.@: a trailing semicolon). The return value is the
38218number of target bytes read; the binary attachment may be longer if
38219some characters were escaped.
38220
38221@item vFile:pwrite: @var{fd}, @var{offset}, @var{data}
38222Write @var{data} (a binary buffer) to the open file corresponding
38223to @var{fd}. Start the write at @var{offset} from the start of the
38224file. Unlike many @code{write} system calls, there is no
38225separate @var{count} argument; the length of @var{data} in the
38226packet is used. @samp{vFile:write} returns the number of bytes written,
38227which may be shorter than the length of @var{data}, or -1 if an
38228error occurred.
38229
38230@item vFile:unlink: @var{pathname}
38231Delete the file at @var{pathname} on the target. Return 0,
38232or -1 if an error occurs. @var{pathname} is a string.
38233
b9e7b9c3
UW
38234@item vFile:readlink: @var{filename}
38235Read value of symbolic link @var{filename} on the target. Return
38236the number of bytes read, or -1 if an error occurs.
38237
38238The data read should be returned as a binary attachment on success.
38239If zero bytes were read, the response should include an empty binary
38240attachment (i.e.@: a trailing semicolon). The return value is the
38241number of target bytes read; the binary attachment may be longer if
38242some characters were escaped.
38243
a6b151f1
DJ
38244@end table
38245
9a6253be
KB
38246@node Interrupts
38247@section Interrupts
38248@cindex interrupts (remote protocol)
38249
38250When a program on the remote target is running, @value{GDBN} may
9a7071a8
JB
38251attempt to interrupt it by sending a @samp{Ctrl-C}, @code{BREAK} or
38252a @code{BREAK} followed by @code{g},
38253control of which is specified via @value{GDBN}'s @samp{interrupt-sequence}.
9a6253be
KB
38254
38255The precise meaning of @code{BREAK} is defined by the transport
8775bb90
MS
38256mechanism and may, in fact, be undefined. @value{GDBN} does not
38257currently define a @code{BREAK} mechanism for any of the network
38258interfaces except for TCP, in which case @value{GDBN} sends the
38259@code{telnet} BREAK sequence.
9a6253be
KB
38260
38261@samp{Ctrl-C}, on the other hand, is defined and implemented for all
38262transport mechanisms. It is represented by sending the single byte
38263@code{0x03} without any of the usual packet overhead described in
38264the Overview section (@pxref{Overview}). When a @code{0x03} byte is
38265transmitted as part of a packet, it is considered to be packet data
38266and does @emph{not} represent an interrupt. E.g., an @samp{X} packet
0876f84a 38267(@pxref{X packet}), used for binary downloads, may include an unescaped
9a6253be
KB
38268@code{0x03} as part of its packet.
38269
9a7071a8
JB
38270@code{BREAK} followed by @code{g} is also known as Magic SysRq g.
38271When Linux kernel receives this sequence from serial port,
38272it stops execution and connects to gdb.
38273
9a6253be
KB
38274Stubs are not required to recognize these interrupt mechanisms and the
38275precise meaning associated with receipt of the interrupt is
8b23ecc4
SL
38276implementation defined. If the target supports debugging of multiple
38277threads and/or processes, it should attempt to interrupt all
38278currently-executing threads and processes.
38279If the stub is successful at interrupting the
38280running program, it should send one of the stop
38281reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result
38282of successfully stopping the program in all-stop mode, and a stop reply
38283for each stopped thread in non-stop mode.
38284Interrupts received while the
38285program is stopped are discarded.
38286
38287@node Notification Packets
38288@section Notification Packets
38289@cindex notification packets
38290@cindex packets, notification
38291
38292The @value{GDBN} remote serial protocol includes @dfn{notifications},
38293packets that require no acknowledgment. Both the GDB and the stub
38294may send notifications (although the only notifications defined at
38295present are sent by the stub). Notifications carry information
38296without incurring the round-trip latency of an acknowledgment, and so
38297are useful for low-impact communications where occasional packet loss
38298is not a problem.
38299
38300A notification packet has the form @samp{% @var{data} #
38301@var{checksum}}, where @var{data} is the content of the notification,
38302and @var{checksum} is a checksum of @var{data}, computed and formatted
38303as for ordinary @value{GDBN} packets. A notification's @var{data}
38304never contains @samp{$}, @samp{%} or @samp{#} characters. Upon
38305receiving a notification, the recipient sends no @samp{+} or @samp{-}
38306to acknowledge the notification's receipt or to report its corruption.
38307
38308Every notification's @var{data} begins with a name, which contains no
38309colon characters, followed by a colon character.
38310
38311Recipients should silently ignore corrupted notifications and
38312notifications they do not understand. Recipients should restart
38313timeout periods on receipt of a well-formed notification, whether or
38314not they understand it.
38315
38316Senders should only send the notifications described here when this
38317protocol description specifies that they are permitted. In the
38318future, we may extend the protocol to permit existing notifications in
38319new contexts; this rule helps older senders avoid confusing newer
38320recipients.
38321
38322(Older versions of @value{GDBN} ignore bytes received until they see
38323the @samp{$} byte that begins an ordinary packet, so new stubs may
38324transmit notifications without fear of confusing older clients. There
38325are no notifications defined for @value{GDBN} to send at the moment, but we
38326assume that most older stubs would ignore them, as well.)
38327
38328The following notification packets from the stub to @value{GDBN} are
38329defined:
38330
38331@table @samp
38332@item Stop: @var{reply}
38333Report an asynchronous stop event in non-stop mode.
38334The @var{reply} has the form of a stop reply, as
38335described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop},
38336for information on how these notifications are acknowledged by
38337@value{GDBN}.
38338@end table
38339
38340@node Remote Non-Stop
38341@section Remote Protocol Support for Non-Stop Mode
38342
38343@value{GDBN}'s remote protocol supports non-stop debugging of
38344multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub
38345supports non-stop mode, it should report that to @value{GDBN} by including
38346@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}).
38347
38348@value{GDBN} typically sends a @samp{QNonStop} packet only when
38349establishing a new connection with the stub. Entering non-stop mode
38350does not alter the state of any currently-running threads, but targets
38351must stop all threads in any already-attached processes when entering
38352all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to
38353probe the target state after a mode change.
38354
38355In non-stop mode, when an attached process encounters an event that
38356would otherwise be reported with a stop reply, it uses the
38357asynchronous notification mechanism (@pxref{Notification Packets}) to
38358inform @value{GDBN}. In contrast to all-stop mode, where all threads
38359in all processes are stopped when a stop reply is sent, in non-stop
38360mode only the thread reporting the stop event is stopped. That is,
38361when reporting a @samp{S} or @samp{T} response to indicate completion
38362of a step operation, hitting a breakpoint, or a fault, only the
38363affected thread is stopped; any other still-running threads continue
38364to run. When reporting a @samp{W} or @samp{X} response, all running
38365threads belonging to other attached processes continue to run.
38366
38367Only one stop reply notification at a time may be pending; if
38368additional stop events occur before @value{GDBN} has acknowledged the
38369previous notification, they must be queued by the stub for later
38370synchronous transmission in response to @samp{vStopped} packets from
38371@value{GDBN}. Because the notification mechanism is unreliable,
38372the stub is permitted to resend a stop reply notification
38373if it believes @value{GDBN} may not have received it. @value{GDBN}
38374ignores additional stop reply notifications received before it has
38375finished processing a previous notification and the stub has completed
38376sending any queued stop events.
38377
38378Otherwise, @value{GDBN} must be prepared to receive a stop reply
38379notification at any time. Specifically, they may appear when
38380@value{GDBN} is not otherwise reading input from the stub, or when
38381@value{GDBN} is expecting to read a normal synchronous response or a
38382@samp{+}/@samp{-} acknowledgment to a packet it has sent.
38383Notification packets are distinct from any other communication from
38384the stub so there is no ambiguity.
38385
38386After receiving a stop reply notification, @value{GDBN} shall
38387acknowledge it by sending a @samp{vStopped} packet (@pxref{vStopped packet})
38388as a regular, synchronous request to the stub. Such acknowledgment
38389is not required to happen immediately, as @value{GDBN} is permitted to
38390send other, unrelated packets to the stub first, which the stub should
38391process normally.
38392
38393Upon receiving a @samp{vStopped} packet, if the stub has other queued
38394stop events to report to @value{GDBN}, it shall respond by sending a
38395normal stop reply response. @value{GDBN} shall then send another
38396@samp{vStopped} packet to solicit further responses; again, it is
38397permitted to send other, unrelated packets as well which the stub
38398should process normally.
38399
38400If the stub receives a @samp{vStopped} packet and there are no
38401additional stop events to report, the stub shall return an @samp{OK}
38402response. At this point, if further stop events occur, the stub shall
38403send a new stop reply notification, @value{GDBN} shall accept the
38404notification, and the process shall be repeated.
38405
38406In non-stop mode, the target shall respond to the @samp{?} packet as
38407follows. First, any incomplete stop reply notification/@samp{vStopped}
38408sequence in progress is abandoned. The target must begin a new
38409sequence reporting stop events for all stopped threads, whether or not
38410it has previously reported those events to @value{GDBN}. The first
38411stop reply is sent as a synchronous reply to the @samp{?} packet, and
38412subsequent stop replies are sent as responses to @samp{vStopped} packets
38413using the mechanism described above. The target must not send
38414asynchronous stop reply notifications until the sequence is complete.
38415If all threads are running when the target receives the @samp{?} packet,
38416or if the target is not attached to any process, it shall respond
38417@samp{OK}.
9a6253be 38418
a6f3e723
SL
38419@node Packet Acknowledgment
38420@section Packet Acknowledgment
38421
38422@cindex acknowledgment, for @value{GDBN} remote
38423@cindex packet acknowledgment, for @value{GDBN} remote
38424By default, when either the host or the target machine receives a packet,
38425the first response expected is an acknowledgment: either @samp{+} (to indicate
38426the package was received correctly) or @samp{-} (to request retransmission).
38427This mechanism allows the @value{GDBN} remote protocol to operate over
38428unreliable transport mechanisms, such as a serial line.
38429
38430In cases where the transport mechanism is itself reliable (such as a pipe or
38431TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant.
38432It may be desirable to disable them in that case to reduce communication
38433overhead, or for other reasons. This can be accomplished by means of the
38434@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}.
38435
38436When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or
38437expect @samp{+}/@samp{-} protocol acknowledgments. The packet
38438and response format still includes the normal checksum, as described in
38439@ref{Overview}, but the checksum may be ignored by the receiver.
38440
38441If the stub supports @samp{QStartNoAckMode} and prefers to operate in
38442no-acknowledgment mode, it should report that to @value{GDBN}
38443by including @samp{QStartNoAckMode+} in its response to @samp{qSupported};
38444@pxref{qSupported}.
38445If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been
38446disabled via the @code{set remote noack-packet off} command
38447(@pxref{Remote Configuration}),
38448@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub.
38449Only then may the stub actually turn off packet acknowledgments.
38450@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK}
38451response, which can be safely ignored by the stub.
38452
38453Note that @code{set remote noack-packet} command only affects negotiation
38454between @value{GDBN} and the stub when subsequent connections are made;
38455it does not affect the protocol acknowledgment state for any current
38456connection.
38457Since @samp{+}/@samp{-} acknowledgments are enabled by default when a
38458new connection is established,
38459there is also no protocol request to re-enable the acknowledgments
38460for the current connection, once disabled.
38461
ee2d5c50
AC
38462@node Examples
38463@section Examples
eb12ee30 38464
8e04817f
AC
38465Example sequence of a target being re-started. Notice how the restart
38466does not get any direct output:
eb12ee30 38467
474c8240 38468@smallexample
d2c6833e
AC
38469-> @code{R00}
38470<- @code{+}
8e04817f 38471@emph{target restarts}
d2c6833e 38472-> @code{?}
8e04817f 38473<- @code{+}
d2c6833e
AC
38474<- @code{T001:1234123412341234}
38475-> @code{+}
474c8240 38476@end smallexample
eb12ee30 38477
8e04817f 38478Example sequence of a target being stepped by a single instruction:
eb12ee30 38479
474c8240 38480@smallexample
d2c6833e 38481-> @code{G1445@dots{}}
8e04817f 38482<- @code{+}
d2c6833e
AC
38483-> @code{s}
38484<- @code{+}
38485@emph{time passes}
38486<- @code{T001:1234123412341234}
8e04817f 38487-> @code{+}
d2c6833e 38488-> @code{g}
8e04817f 38489<- @code{+}
d2c6833e
AC
38490<- @code{1455@dots{}}
38491-> @code{+}
474c8240 38492@end smallexample
eb12ee30 38493
79a6e687
BW
38494@node File-I/O Remote Protocol Extension
38495@section File-I/O Remote Protocol Extension
0ce1b118
CV
38496@cindex File-I/O remote protocol extension
38497
38498@menu
38499* File-I/O Overview::
79a6e687
BW
38500* Protocol Basics::
38501* The F Request Packet::
38502* The F Reply Packet::
38503* The Ctrl-C Message::
0ce1b118 38504* Console I/O::
79a6e687 38505* List of Supported Calls::
db2e3e2e 38506* Protocol-specific Representation of Datatypes::
0ce1b118
CV
38507* Constants::
38508* File-I/O Examples::
38509@end menu
38510
38511@node File-I/O Overview
38512@subsection File-I/O Overview
38513@cindex file-i/o overview
38514
9c16f35a 38515The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the
fc320d37 38516target to use the host's file system and console I/O to perform various
0ce1b118 38517system calls. System calls on the target system are translated into a
fc320d37
SL
38518remote protocol packet to the host system, which then performs the needed
38519actions and returns a response packet to the target system.
0ce1b118
CV
38520This simulates file system operations even on targets that lack file systems.
38521
fc320d37
SL
38522The protocol is defined to be independent of both the host and target systems.
38523It uses its own internal representation of datatypes and values. Both
0ce1b118 38524@value{GDBN} and the target's @value{GDBN} stub are responsible for
fc320d37
SL
38525translating the system-dependent value representations into the internal
38526protocol representations when data is transmitted.
0ce1b118 38527
fc320d37
SL
38528The communication is synchronous. A system call is possible only when
38529@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S}
38530or @samp{s} packets. While @value{GDBN} handles the request for a system call,
0ce1b118 38531the target is stopped to allow deterministic access to the target's
fc320d37
SL
38532memory. Therefore File-I/O is not interruptible by target signals. On
38533the other hand, it is possible to interrupt File-I/O by a user interrupt
c8aa23ab 38534(@samp{Ctrl-C}) within @value{GDBN}.
0ce1b118
CV
38535
38536The target's request to perform a host system call does not finish
38537the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
38538after finishing the system call, the target returns to continuing the
38539previous activity (continue, step). No additional continue or step
38540request from @value{GDBN} is required.
38541
38542@smallexample
f7dc1244 38543(@value{GDBP}) continue
0ce1b118
CV
38544 <- target requests 'system call X'
38545 target is stopped, @value{GDBN} executes system call
3f94c067
BW
38546 -> @value{GDBN} returns result
38547 ... target continues, @value{GDBN} returns to wait for the target
0ce1b118
CV
38548 <- target hits breakpoint and sends a Txx packet
38549@end smallexample
38550
fc320d37
SL
38551The protocol only supports I/O on the console and to regular files on
38552the host file system. Character or block special devices, pipes,
38553named pipes, sockets or any other communication method on the host
0ce1b118
CV
38554system are not supported by this protocol.
38555
8b23ecc4
SL
38556File I/O is not supported in non-stop mode.
38557
79a6e687
BW
38558@node Protocol Basics
38559@subsection Protocol Basics
0ce1b118
CV
38560@cindex protocol basics, file-i/o
38561
fc320d37
SL
38562The File-I/O protocol uses the @code{F} packet as the request as well
38563as reply packet. Since a File-I/O system call can only occur when
38564@value{GDBN} is waiting for a response from the continuing or stepping target,
38565the File-I/O request is a reply that @value{GDBN} has to expect as a result
38566of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
0ce1b118
CV
38567This @code{F} packet contains all information needed to allow @value{GDBN}
38568to call the appropriate host system call:
38569
38570@itemize @bullet
b383017d 38571@item
0ce1b118
CV
38572A unique identifier for the requested system call.
38573
38574@item
38575All parameters to the system call. Pointers are given as addresses
38576in the target memory address space. Pointers to strings are given as
b383017d 38577pointer/length pair. Numerical values are given as they are.
db2e3e2e 38578Numerical control flags are given in a protocol-specific representation.
0ce1b118
CV
38579
38580@end itemize
38581
fc320d37 38582At this point, @value{GDBN} has to perform the following actions.
0ce1b118
CV
38583
38584@itemize @bullet
b383017d 38585@item
fc320d37
SL
38586If the parameters include pointer values to data needed as input to a
38587system call, @value{GDBN} requests this data from the target with a
0ce1b118
CV
38588standard @code{m} packet request. This additional communication has to be
38589expected by the target implementation and is handled as any other @code{m}
38590packet.
38591
38592@item
38593@value{GDBN} translates all value from protocol representation to host
38594representation as needed. Datatypes are coerced into the host types.
38595
38596@item
fc320d37 38597@value{GDBN} calls the system call.
0ce1b118
CV
38598
38599@item
38600It then coerces datatypes back to protocol representation.
38601
38602@item
fc320d37
SL
38603If the system call is expected to return data in buffer space specified
38604by pointer parameters to the call, the data is transmitted to the
0ce1b118
CV
38605target using a @code{M} or @code{X} packet. This packet has to be expected
38606by the target implementation and is handled as any other @code{M} or @code{X}
38607packet.
38608
38609@end itemize
38610
38611Eventually @value{GDBN} replies with another @code{F} packet which contains all
38612necessary information for the target to continue. This at least contains
38613
38614@itemize @bullet
38615@item
38616Return value.
38617
38618@item
38619@code{errno}, if has been changed by the system call.
38620
38621@item
38622``Ctrl-C'' flag.
38623
38624@end itemize
38625
38626After having done the needed type and value coercion, the target continues
38627the latest continue or step action.
38628
79a6e687
BW
38629@node The F Request Packet
38630@subsection The @code{F} Request Packet
0ce1b118
CV
38631@cindex file-i/o request packet
38632@cindex @code{F} request packet
38633
38634The @code{F} request packet has the following format:
38635
38636@table @samp
fc320d37 38637@item F@var{call-id},@var{parameter@dots{}}
0ce1b118
CV
38638
38639@var{call-id} is the identifier to indicate the host system call to be called.
38640This is just the name of the function.
38641
fc320d37
SL
38642@var{parameter@dots{}} are the parameters to the system call.
38643Parameters are hexadecimal integer values, either the actual values in case
38644of scalar datatypes, pointers to target buffer space in case of compound
38645datatypes and unspecified memory areas, or pointer/length pairs in case
38646of string parameters. These are appended to the @var{call-id} as a
38647comma-delimited list. All values are transmitted in ASCII
38648string representation, pointer/length pairs separated by a slash.
0ce1b118 38649
b383017d 38650@end table
0ce1b118 38651
fc320d37 38652
0ce1b118 38653
79a6e687
BW
38654@node The F Reply Packet
38655@subsection The @code{F} Reply Packet
0ce1b118
CV
38656@cindex file-i/o reply packet
38657@cindex @code{F} reply packet
38658
38659The @code{F} reply packet has the following format:
38660
38661@table @samp
38662
d3bdde98 38663@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment}
0ce1b118
CV
38664
38665@var{retcode} is the return code of the system call as hexadecimal value.
38666
db2e3e2e
BW
38667@var{errno} is the @code{errno} set by the call, in protocol-specific
38668representation.
0ce1b118
CV
38669This parameter can be omitted if the call was successful.
38670
fc320d37
SL
38671@var{Ctrl-C flag} is only sent if the user requested a break. In this
38672case, @var{errno} must be sent as well, even if the call was successful.
38673The @var{Ctrl-C flag} itself consists of the character @samp{C}:
0ce1b118
CV
38674
38675@smallexample
38676F0,0,C
38677@end smallexample
38678
38679@noindent
fc320d37 38680or, if the call was interrupted before the host call has been performed:
0ce1b118
CV
38681
38682@smallexample
38683F-1,4,C
38684@end smallexample
38685
38686@noindent
db2e3e2e 38687assuming 4 is the protocol-specific representation of @code{EINTR}.
0ce1b118
CV
38688
38689@end table
38690
0ce1b118 38691
79a6e687
BW
38692@node The Ctrl-C Message
38693@subsection The @samp{Ctrl-C} Message
0ce1b118
CV
38694@cindex ctrl-c message, in file-i/o protocol
38695
c8aa23ab 38696If the @samp{Ctrl-C} flag is set in the @value{GDBN}
79a6e687 38697reply packet (@pxref{The F Reply Packet}),
fc320d37 38698the target should behave as if it had
0ce1b118 38699gotten a break message. The meaning for the target is ``system call
fc320d37 38700interrupted by @code{SIGINT}''. Consequentially, the target should actually stop
0ce1b118 38701(as with a break message) and return to @value{GDBN} with a @code{T02}
c8aa23ab 38702packet.
fc320d37
SL
38703
38704It's important for the target to know in which
38705state the system call was interrupted. There are two possible cases:
0ce1b118
CV
38706
38707@itemize @bullet
38708@item
38709The system call hasn't been performed on the host yet.
38710
38711@item
38712The system call on the host has been finished.
38713
38714@end itemize
38715
38716These two states can be distinguished by the target by the value of the
38717returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
38718call hasn't been performed. This is equivalent to the @code{EINTR} handling
38719on POSIX systems. In any other case, the target may presume that the
fc320d37 38720system call has been finished --- successfully or not --- and should behave
0ce1b118
CV
38721as if the break message arrived right after the system call.
38722
fc320d37 38723@value{GDBN} must behave reliably. If the system call has not been called
0ce1b118
CV
38724yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
38725@code{errno} in the packet. If the system call on the host has been finished
fc320d37
SL
38726before the user requests a break, the full action must be finished by
38727@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary.
38728The @code{F} packet may only be sent when either nothing has happened
0ce1b118
CV
38729or the full action has been completed.
38730
38731@node Console I/O
38732@subsection Console I/O
38733@cindex console i/o as part of file-i/o
38734
d3e8051b 38735By default and if not explicitly closed by the target system, the file
0ce1b118
CV
38736descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
38737on the @value{GDBN} console is handled as any other file output operation
38738(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
38739by @value{GDBN} so that after the target read request from file descriptor
387400 all following typing is buffered until either one of the following
38741conditions is met:
38742
38743@itemize @bullet
38744@item
c8aa23ab 38745The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the
0ce1b118
CV
38746@code{read}
38747system call is treated as finished.
38748
38749@item
7f9087cb 38750The user presses @key{RET}. This is treated as end of input with a trailing
fc320d37 38751newline.
0ce1b118
CV
38752
38753@item
c8aa23ab
EZ
38754The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing
38755character (neither newline nor @samp{Ctrl-D}) is appended to the input.
0ce1b118
CV
38756
38757@end itemize
38758
fc320d37
SL
38759If the user has typed more characters than fit in the buffer given to
38760the @code{read} call, the trailing characters are buffered in @value{GDBN} until
38761either another @code{read(0, @dots{})} is requested by the target, or debugging
38762is stopped at the user's request.
0ce1b118 38763
0ce1b118 38764
79a6e687
BW
38765@node List of Supported Calls
38766@subsection List of Supported Calls
0ce1b118
CV
38767@cindex list of supported file-i/o calls
38768
38769@menu
38770* open::
38771* close::
38772* read::
38773* write::
38774* lseek::
38775* rename::
38776* unlink::
38777* stat/fstat::
38778* gettimeofday::
38779* isatty::
38780* system::
38781@end menu
38782
38783@node open
38784@unnumberedsubsubsec open
38785@cindex open, file-i/o system call
38786
fc320d37
SL
38787@table @asis
38788@item Synopsis:
0ce1b118 38789@smallexample
0ce1b118
CV
38790int open(const char *pathname, int flags);
38791int open(const char *pathname, int flags, mode_t mode);
0ce1b118
CV
38792@end smallexample
38793
fc320d37
SL
38794@item Request:
38795@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}}
38796
0ce1b118 38797@noindent
fc320d37 38798@var{flags} is the bitwise @code{OR} of the following values:
0ce1b118
CV
38799
38800@table @code
b383017d 38801@item O_CREAT
0ce1b118
CV
38802If the file does not exist it will be created. The host
38803rules apply as far as file ownership and time stamps
38804are concerned.
38805
b383017d 38806@item O_EXCL
fc320d37 38807When used with @code{O_CREAT}, if the file already exists it is
0ce1b118
CV
38808an error and open() fails.
38809
b383017d 38810@item O_TRUNC
0ce1b118 38811If the file already exists and the open mode allows
fc320d37
SL
38812writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be
38813truncated to zero length.
0ce1b118 38814
b383017d 38815@item O_APPEND
0ce1b118
CV
38816The file is opened in append mode.
38817
b383017d 38818@item O_RDONLY
0ce1b118
CV
38819The file is opened for reading only.
38820
b383017d 38821@item O_WRONLY
0ce1b118
CV
38822The file is opened for writing only.
38823
b383017d 38824@item O_RDWR
0ce1b118 38825The file is opened for reading and writing.
fc320d37 38826@end table
0ce1b118
CV
38827
38828@noindent
fc320d37 38829Other bits are silently ignored.
0ce1b118 38830
0ce1b118
CV
38831
38832@noindent
fc320d37 38833@var{mode} is the bitwise @code{OR} of the following values:
0ce1b118
CV
38834
38835@table @code
b383017d 38836@item S_IRUSR
0ce1b118
CV
38837User has read permission.
38838
b383017d 38839@item S_IWUSR
0ce1b118
CV
38840User has write permission.
38841
b383017d 38842@item S_IRGRP
0ce1b118
CV
38843Group has read permission.
38844
b383017d 38845@item S_IWGRP
0ce1b118
CV
38846Group has write permission.
38847
b383017d 38848@item S_IROTH
0ce1b118
CV
38849Others have read permission.
38850
b383017d 38851@item S_IWOTH
0ce1b118 38852Others have write permission.
fc320d37 38853@end table
0ce1b118
CV
38854
38855@noindent
fc320d37 38856Other bits are silently ignored.
0ce1b118 38857
0ce1b118 38858
fc320d37
SL
38859@item Return value:
38860@code{open} returns the new file descriptor or -1 if an error
38861occurred.
0ce1b118 38862
fc320d37 38863@item Errors:
0ce1b118
CV
38864
38865@table @code
b383017d 38866@item EEXIST
fc320d37 38867@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used.
0ce1b118 38868
b383017d 38869@item EISDIR
fc320d37 38870@var{pathname} refers to a directory.
0ce1b118 38871
b383017d 38872@item EACCES
0ce1b118
CV
38873The requested access is not allowed.
38874
38875@item ENAMETOOLONG
fc320d37 38876@var{pathname} was too long.
0ce1b118 38877
b383017d 38878@item ENOENT
fc320d37 38879A directory component in @var{pathname} does not exist.
0ce1b118 38880
b383017d 38881@item ENODEV
fc320d37 38882@var{pathname} refers to a device, pipe, named pipe or socket.
0ce1b118 38883
b383017d 38884@item EROFS
fc320d37 38885@var{pathname} refers to a file on a read-only filesystem and
0ce1b118
CV
38886write access was requested.
38887
b383017d 38888@item EFAULT
fc320d37 38889@var{pathname} is an invalid pointer value.
0ce1b118 38890
b383017d 38891@item ENOSPC
0ce1b118
CV
38892No space on device to create the file.
38893
b383017d 38894@item EMFILE
0ce1b118
CV
38895The process already has the maximum number of files open.
38896
b383017d 38897@item ENFILE
0ce1b118
CV
38898The limit on the total number of files open on the system
38899has been reached.
38900
b383017d 38901@item EINTR
0ce1b118
CV
38902The call was interrupted by the user.
38903@end table
38904
fc320d37
SL
38905@end table
38906
0ce1b118
CV
38907@node close
38908@unnumberedsubsubsec close
38909@cindex close, file-i/o system call
38910
fc320d37
SL
38911@table @asis
38912@item Synopsis:
0ce1b118 38913@smallexample
0ce1b118 38914int close(int fd);
fc320d37 38915@end smallexample
0ce1b118 38916
fc320d37
SL
38917@item Request:
38918@samp{Fclose,@var{fd}}
0ce1b118 38919
fc320d37
SL
38920@item Return value:
38921@code{close} returns zero on success, or -1 if an error occurred.
0ce1b118 38922
fc320d37 38923@item Errors:
0ce1b118
CV
38924
38925@table @code
b383017d 38926@item EBADF
fc320d37 38927@var{fd} isn't a valid open file descriptor.
0ce1b118 38928
b383017d 38929@item EINTR
0ce1b118
CV
38930The call was interrupted by the user.
38931@end table
38932
fc320d37
SL
38933@end table
38934
0ce1b118
CV
38935@node read
38936@unnumberedsubsubsec read
38937@cindex read, file-i/o system call
38938
fc320d37
SL
38939@table @asis
38940@item Synopsis:
0ce1b118 38941@smallexample
0ce1b118 38942int read(int fd, void *buf, unsigned int count);
fc320d37 38943@end smallexample
0ce1b118 38944
fc320d37
SL
38945@item Request:
38946@samp{Fread,@var{fd},@var{bufptr},@var{count}}
0ce1b118 38947
fc320d37 38948@item Return value:
0ce1b118
CV
38949On success, the number of bytes read is returned.
38950Zero indicates end of file. If count is zero, read
b383017d 38951returns zero as well. On error, -1 is returned.
0ce1b118 38952
fc320d37 38953@item Errors:
0ce1b118
CV
38954
38955@table @code
b383017d 38956@item EBADF
fc320d37 38957@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
38958reading.
38959
b383017d 38960@item EFAULT
fc320d37 38961@var{bufptr} is an invalid pointer value.
0ce1b118 38962
b383017d 38963@item EINTR
0ce1b118
CV
38964The call was interrupted by the user.
38965@end table
38966
fc320d37
SL
38967@end table
38968
0ce1b118
CV
38969@node write
38970@unnumberedsubsubsec write
38971@cindex write, file-i/o system call
38972
fc320d37
SL
38973@table @asis
38974@item Synopsis:
0ce1b118 38975@smallexample
0ce1b118 38976int write(int fd, const void *buf, unsigned int count);
fc320d37 38977@end smallexample
0ce1b118 38978
fc320d37
SL
38979@item Request:
38980@samp{Fwrite,@var{fd},@var{bufptr},@var{count}}
0ce1b118 38981
fc320d37 38982@item Return value:
0ce1b118
CV
38983On success, the number of bytes written are returned.
38984Zero indicates nothing was written. On error, -1
38985is returned.
38986
fc320d37 38987@item Errors:
0ce1b118
CV
38988
38989@table @code
b383017d 38990@item EBADF
fc320d37 38991@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
38992writing.
38993
b383017d 38994@item EFAULT
fc320d37 38995@var{bufptr} is an invalid pointer value.
0ce1b118 38996
b383017d 38997@item EFBIG
0ce1b118 38998An attempt was made to write a file that exceeds the
db2e3e2e 38999host-specific maximum file size allowed.
0ce1b118 39000
b383017d 39001@item ENOSPC
0ce1b118
CV
39002No space on device to write the data.
39003
b383017d 39004@item EINTR
0ce1b118
CV
39005The call was interrupted by the user.
39006@end table
39007
fc320d37
SL
39008@end table
39009
0ce1b118
CV
39010@node lseek
39011@unnumberedsubsubsec lseek
39012@cindex lseek, file-i/o system call
39013
fc320d37
SL
39014@table @asis
39015@item Synopsis:
0ce1b118 39016@smallexample
0ce1b118 39017long lseek (int fd, long offset, int flag);
0ce1b118
CV
39018@end smallexample
39019
fc320d37
SL
39020@item Request:
39021@samp{Flseek,@var{fd},@var{offset},@var{flag}}
39022
39023@var{flag} is one of:
0ce1b118
CV
39024
39025@table @code
b383017d 39026@item SEEK_SET
fc320d37 39027The offset is set to @var{offset} bytes.
0ce1b118 39028
b383017d 39029@item SEEK_CUR
fc320d37 39030The offset is set to its current location plus @var{offset}
0ce1b118
CV
39031bytes.
39032
b383017d 39033@item SEEK_END
fc320d37 39034The offset is set to the size of the file plus @var{offset}
0ce1b118
CV
39035bytes.
39036@end table
39037
fc320d37 39038@item Return value:
0ce1b118
CV
39039On success, the resulting unsigned offset in bytes from
39040the beginning of the file is returned. Otherwise, a
39041value of -1 is returned.
39042
fc320d37 39043@item Errors:
0ce1b118
CV
39044
39045@table @code
b383017d 39046@item EBADF
fc320d37 39047@var{fd} is not a valid open file descriptor.
0ce1b118 39048
b383017d 39049@item ESPIPE
fc320d37 39050@var{fd} is associated with the @value{GDBN} console.
0ce1b118 39051
b383017d 39052@item EINVAL
fc320d37 39053@var{flag} is not a proper value.
0ce1b118 39054
b383017d 39055@item EINTR
0ce1b118
CV
39056The call was interrupted by the user.
39057@end table
39058
fc320d37
SL
39059@end table
39060
0ce1b118
CV
39061@node rename
39062@unnumberedsubsubsec rename
39063@cindex rename, file-i/o system call
39064
fc320d37
SL
39065@table @asis
39066@item Synopsis:
0ce1b118 39067@smallexample
0ce1b118 39068int rename(const char *oldpath, const char *newpath);
fc320d37 39069@end smallexample
0ce1b118 39070
fc320d37
SL
39071@item Request:
39072@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}}
0ce1b118 39073
fc320d37 39074@item Return value:
0ce1b118
CV
39075On success, zero is returned. On error, -1 is returned.
39076
fc320d37 39077@item Errors:
0ce1b118
CV
39078
39079@table @code
b383017d 39080@item EISDIR
fc320d37 39081@var{newpath} is an existing directory, but @var{oldpath} is not a
0ce1b118
CV
39082directory.
39083
b383017d 39084@item EEXIST
fc320d37 39085@var{newpath} is a non-empty directory.
0ce1b118 39086
b383017d 39087@item EBUSY
fc320d37 39088@var{oldpath} or @var{newpath} is a directory that is in use by some
0ce1b118
CV
39089process.
39090
b383017d 39091@item EINVAL
0ce1b118
CV
39092An attempt was made to make a directory a subdirectory
39093of itself.
39094
b383017d 39095@item ENOTDIR
fc320d37
SL
39096A component used as a directory in @var{oldpath} or new
39097path is not a directory. Or @var{oldpath} is a directory
39098and @var{newpath} exists but is not a directory.
0ce1b118 39099
b383017d 39100@item EFAULT
fc320d37 39101@var{oldpathptr} or @var{newpathptr} are invalid pointer values.
0ce1b118 39102
b383017d 39103@item EACCES
0ce1b118
CV
39104No access to the file or the path of the file.
39105
39106@item ENAMETOOLONG
b383017d 39107
fc320d37 39108@var{oldpath} or @var{newpath} was too long.
0ce1b118 39109
b383017d 39110@item ENOENT
fc320d37 39111A directory component in @var{oldpath} or @var{newpath} does not exist.
0ce1b118 39112
b383017d 39113@item EROFS
0ce1b118
CV
39114The file is on a read-only filesystem.
39115
b383017d 39116@item ENOSPC
0ce1b118
CV
39117The device containing the file has no room for the new
39118directory entry.
39119
b383017d 39120@item EINTR
0ce1b118
CV
39121The call was interrupted by the user.
39122@end table
39123
fc320d37
SL
39124@end table
39125
0ce1b118
CV
39126@node unlink
39127@unnumberedsubsubsec unlink
39128@cindex unlink, file-i/o system call
39129
fc320d37
SL
39130@table @asis
39131@item Synopsis:
0ce1b118 39132@smallexample
0ce1b118 39133int unlink(const char *pathname);
fc320d37 39134@end smallexample
0ce1b118 39135
fc320d37
SL
39136@item Request:
39137@samp{Funlink,@var{pathnameptr}/@var{len}}
0ce1b118 39138
fc320d37 39139@item Return value:
0ce1b118
CV
39140On success, zero is returned. On error, -1 is returned.
39141
fc320d37 39142@item Errors:
0ce1b118
CV
39143
39144@table @code
b383017d 39145@item EACCES
0ce1b118
CV
39146No access to the file or the path of the file.
39147
b383017d 39148@item EPERM
0ce1b118
CV
39149The system does not allow unlinking of directories.
39150
b383017d 39151@item EBUSY
fc320d37 39152The file @var{pathname} cannot be unlinked because it's
0ce1b118
CV
39153being used by another process.
39154
b383017d 39155@item EFAULT
fc320d37 39156@var{pathnameptr} is an invalid pointer value.
0ce1b118
CV
39157
39158@item ENAMETOOLONG
fc320d37 39159@var{pathname} was too long.
0ce1b118 39160
b383017d 39161@item ENOENT
fc320d37 39162A directory component in @var{pathname} does not exist.
0ce1b118 39163
b383017d 39164@item ENOTDIR
0ce1b118
CV
39165A component of the path is not a directory.
39166
b383017d 39167@item EROFS
0ce1b118
CV
39168The file is on a read-only filesystem.
39169
b383017d 39170@item EINTR
0ce1b118
CV
39171The call was interrupted by the user.
39172@end table
39173
fc320d37
SL
39174@end table
39175
0ce1b118
CV
39176@node stat/fstat
39177@unnumberedsubsubsec stat/fstat
39178@cindex fstat, file-i/o system call
39179@cindex stat, file-i/o system call
39180
fc320d37
SL
39181@table @asis
39182@item Synopsis:
0ce1b118 39183@smallexample
0ce1b118
CV
39184int stat(const char *pathname, struct stat *buf);
39185int fstat(int fd, struct stat *buf);
fc320d37 39186@end smallexample
0ce1b118 39187
fc320d37
SL
39188@item Request:
39189@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@*
39190@samp{Ffstat,@var{fd},@var{bufptr}}
0ce1b118 39191
fc320d37 39192@item Return value:
0ce1b118
CV
39193On success, zero is returned. On error, -1 is returned.
39194
fc320d37 39195@item Errors:
0ce1b118
CV
39196
39197@table @code
b383017d 39198@item EBADF
fc320d37 39199@var{fd} is not a valid open file.
0ce1b118 39200
b383017d 39201@item ENOENT
fc320d37 39202A directory component in @var{pathname} does not exist or the
0ce1b118
CV
39203path is an empty string.
39204
b383017d 39205@item ENOTDIR
0ce1b118
CV
39206A component of the path is not a directory.
39207
b383017d 39208@item EFAULT
fc320d37 39209@var{pathnameptr} is an invalid pointer value.
0ce1b118 39210
b383017d 39211@item EACCES
0ce1b118
CV
39212No access to the file or the path of the file.
39213
39214@item ENAMETOOLONG
fc320d37 39215@var{pathname} was too long.
0ce1b118 39216
b383017d 39217@item EINTR
0ce1b118
CV
39218The call was interrupted by the user.
39219@end table
39220
fc320d37
SL
39221@end table
39222
0ce1b118
CV
39223@node gettimeofday
39224@unnumberedsubsubsec gettimeofday
39225@cindex gettimeofday, file-i/o system call
39226
fc320d37
SL
39227@table @asis
39228@item Synopsis:
0ce1b118 39229@smallexample
0ce1b118 39230int gettimeofday(struct timeval *tv, void *tz);
fc320d37 39231@end smallexample
0ce1b118 39232
fc320d37
SL
39233@item Request:
39234@samp{Fgettimeofday,@var{tvptr},@var{tzptr}}
0ce1b118 39235
fc320d37 39236@item Return value:
0ce1b118
CV
39237On success, 0 is returned, -1 otherwise.
39238
fc320d37 39239@item Errors:
0ce1b118
CV
39240
39241@table @code
b383017d 39242@item EINVAL
fc320d37 39243@var{tz} is a non-NULL pointer.
0ce1b118 39244
b383017d 39245@item EFAULT
fc320d37
SL
39246@var{tvptr} and/or @var{tzptr} is an invalid pointer value.
39247@end table
39248
0ce1b118
CV
39249@end table
39250
39251@node isatty
39252@unnumberedsubsubsec isatty
39253@cindex isatty, file-i/o system call
39254
fc320d37
SL
39255@table @asis
39256@item Synopsis:
0ce1b118 39257@smallexample
0ce1b118 39258int isatty(int fd);
fc320d37 39259@end smallexample
0ce1b118 39260
fc320d37
SL
39261@item Request:
39262@samp{Fisatty,@var{fd}}
0ce1b118 39263
fc320d37
SL
39264@item Return value:
39265Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise.
0ce1b118 39266
fc320d37 39267@item Errors:
0ce1b118
CV
39268
39269@table @code
b383017d 39270@item EINTR
0ce1b118
CV
39271The call was interrupted by the user.
39272@end table
39273
fc320d37
SL
39274@end table
39275
39276Note that the @code{isatty} call is treated as a special case: it returns
392771 to the target if the file descriptor is attached
39278to the @value{GDBN} console, 0 otherwise. Implementing through system calls
39279would require implementing @code{ioctl} and would be more complex than
39280needed.
39281
39282
0ce1b118
CV
39283@node system
39284@unnumberedsubsubsec system
39285@cindex system, file-i/o system call
39286
fc320d37
SL
39287@table @asis
39288@item Synopsis:
0ce1b118 39289@smallexample
0ce1b118 39290int system(const char *command);
fc320d37 39291@end smallexample
0ce1b118 39292
fc320d37
SL
39293@item Request:
39294@samp{Fsystem,@var{commandptr}/@var{len}}
0ce1b118 39295
fc320d37 39296@item Return value:
5600ea19
NS
39297If @var{len} is zero, the return value indicates whether a shell is
39298available. A zero return value indicates a shell is not available.
39299For non-zero @var{len}, the value returned is -1 on error and the
39300return status of the command otherwise. Only the exit status of the
39301command is returned, which is extracted from the host's @code{system}
39302return value by calling @code{WEXITSTATUS(retval)}. In case
39303@file{/bin/sh} could not be executed, 127 is returned.
0ce1b118 39304
fc320d37 39305@item Errors:
0ce1b118
CV
39306
39307@table @code
b383017d 39308@item EINTR
0ce1b118
CV
39309The call was interrupted by the user.
39310@end table
39311
fc320d37
SL
39312@end table
39313
39314@value{GDBN} takes over the full task of calling the necessary host calls
39315to perform the @code{system} call. The return value of @code{system} on
39316the host is simplified before it's returned
39317to the target. Any termination signal information from the child process
39318is discarded, and the return value consists
39319entirely of the exit status of the called command.
39320
39321Due to security concerns, the @code{system} call is by default refused
39322by @value{GDBN}. The user has to allow this call explicitly with the
39323@code{set remote system-call-allowed 1} command.
39324
39325@table @code
39326@item set remote system-call-allowed
39327@kindex set remote system-call-allowed
39328Control whether to allow the @code{system} calls in the File I/O
39329protocol for the remote target. The default is zero (disabled).
39330
39331@item show remote system-call-allowed
39332@kindex show remote system-call-allowed
39333Show whether the @code{system} calls are allowed in the File I/O
39334protocol.
39335@end table
39336
db2e3e2e
BW
39337@node Protocol-specific Representation of Datatypes
39338@subsection Protocol-specific Representation of Datatypes
39339@cindex protocol-specific representation of datatypes, in file-i/o protocol
0ce1b118
CV
39340
39341@menu
79a6e687
BW
39342* Integral Datatypes::
39343* Pointer Values::
39344* Memory Transfer::
0ce1b118
CV
39345* struct stat::
39346* struct timeval::
39347@end menu
39348
79a6e687
BW
39349@node Integral Datatypes
39350@unnumberedsubsubsec Integral Datatypes
0ce1b118
CV
39351@cindex integral datatypes, in file-i/o protocol
39352
fc320d37
SL
39353The integral datatypes used in the system calls are @code{int},
39354@code{unsigned int}, @code{long}, @code{unsigned long},
39355@code{mode_t}, and @code{time_t}.
0ce1b118 39356
fc320d37 39357@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
0ce1b118
CV
39358implemented as 32 bit values in this protocol.
39359
fc320d37 39360@code{long} and @code{unsigned long} are implemented as 64 bit types.
b383017d 39361
0ce1b118
CV
39362@xref{Limits}, for corresponding MIN and MAX values (similar to those
39363in @file{limits.h}) to allow range checking on host and target.
39364
39365@code{time_t} datatypes are defined as seconds since the Epoch.
39366
39367All integral datatypes transferred as part of a memory read or write of a
39368structured datatype e.g.@: a @code{struct stat} have to be given in big endian
39369byte order.
39370
79a6e687
BW
39371@node Pointer Values
39372@unnumberedsubsubsec Pointer Values
0ce1b118
CV
39373@cindex pointer values, in file-i/o protocol
39374
39375Pointers to target data are transmitted as they are. An exception
39376is made for pointers to buffers for which the length isn't
39377transmitted as part of the function call, namely strings. Strings
39378are transmitted as a pointer/length pair, both as hex values, e.g.@:
39379
39380@smallexample
39381@code{1aaf/12}
39382@end smallexample
39383
39384@noindent
39385which is a pointer to data of length 18 bytes at position 0x1aaf.
39386The length is defined as the full string length in bytes, including
fc320d37
SL
39387the trailing null byte. For example, the string @code{"hello world"}
39388at address 0x123456 is transmitted as
0ce1b118
CV
39389
39390@smallexample
fc320d37 39391@code{123456/d}
0ce1b118
CV
39392@end smallexample
39393
79a6e687
BW
39394@node Memory Transfer
39395@unnumberedsubsubsec Memory Transfer
fc320d37
SL
39396@cindex memory transfer, in file-i/o protocol
39397
39398Structured data which is transferred using a memory read or write (for
db2e3e2e 39399example, a @code{struct stat}) is expected to be in a protocol-specific format
fc320d37
SL
39400with all scalar multibyte datatypes being big endian. Translation to
39401this representation needs to be done both by the target before the @code{F}
39402packet is sent, and by @value{GDBN} before
39403it transfers memory to the target. Transferred pointers to structured
39404data should point to the already-coerced data at any time.
0ce1b118 39405
0ce1b118
CV
39406
39407@node struct stat
39408@unnumberedsubsubsec struct stat
39409@cindex struct stat, in file-i/o protocol
39410
fc320d37
SL
39411The buffer of type @code{struct stat} used by the target and @value{GDBN}
39412is defined as follows:
0ce1b118
CV
39413
39414@smallexample
39415struct stat @{
39416 unsigned int st_dev; /* device */
39417 unsigned int st_ino; /* inode */
39418 mode_t st_mode; /* protection */
39419 unsigned int st_nlink; /* number of hard links */
39420 unsigned int st_uid; /* user ID of owner */
39421 unsigned int st_gid; /* group ID of owner */
39422 unsigned int st_rdev; /* device type (if inode device) */
39423 unsigned long st_size; /* total size, in bytes */
39424 unsigned long st_blksize; /* blocksize for filesystem I/O */
39425 unsigned long st_blocks; /* number of blocks allocated */
39426 time_t st_atime; /* time of last access */
39427 time_t st_mtime; /* time of last modification */
39428 time_t st_ctime; /* time of last change */
39429@};
39430@end smallexample
39431
fc320d37 39432The integral datatypes conform to the definitions given in the
79a6e687 39433appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
39434structure is of size 64 bytes.
39435
39436The values of several fields have a restricted meaning and/or
39437range of values.
39438
fc320d37 39439@table @code
0ce1b118 39440
fc320d37
SL
39441@item st_dev
39442A value of 0 represents a file, 1 the console.
0ce1b118 39443
fc320d37
SL
39444@item st_ino
39445No valid meaning for the target. Transmitted unchanged.
0ce1b118 39446
fc320d37
SL
39447@item st_mode
39448Valid mode bits are described in @ref{Constants}. Any other
39449bits have currently no meaning for the target.
0ce1b118 39450
fc320d37
SL
39451@item st_uid
39452@itemx st_gid
39453@itemx st_rdev
39454No valid meaning for the target. Transmitted unchanged.
0ce1b118 39455
fc320d37
SL
39456@item st_atime
39457@itemx st_mtime
39458@itemx st_ctime
39459These values have a host and file system dependent
39460accuracy. Especially on Windows hosts, the file system may not
39461support exact timing values.
39462@end table
0ce1b118 39463
fc320d37
SL
39464The target gets a @code{struct stat} of the above representation and is
39465responsible for coercing it to the target representation before
0ce1b118
CV
39466continuing.
39467
fc320d37
SL
39468Note that due to size differences between the host, target, and protocol
39469representations of @code{struct stat} members, these members could eventually
0ce1b118
CV
39470get truncated on the target.
39471
39472@node struct timeval
39473@unnumberedsubsubsec struct timeval
39474@cindex struct timeval, in file-i/o protocol
39475
fc320d37 39476The buffer of type @code{struct timeval} used by the File-I/O protocol
0ce1b118
CV
39477is defined as follows:
39478
39479@smallexample
b383017d 39480struct timeval @{
0ce1b118
CV
39481 time_t tv_sec; /* second */
39482 long tv_usec; /* microsecond */
39483@};
39484@end smallexample
39485
fc320d37 39486The integral datatypes conform to the definitions given in the
79a6e687 39487appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
39488structure is of size 8 bytes.
39489
39490@node Constants
39491@subsection Constants
39492@cindex constants, in file-i/o protocol
39493
39494The following values are used for the constants inside of the
fc320d37 39495protocol. @value{GDBN} and target are responsible for translating these
0ce1b118
CV
39496values before and after the call as needed.
39497
39498@menu
79a6e687
BW
39499* Open Flags::
39500* mode_t Values::
39501* Errno Values::
39502* Lseek Flags::
0ce1b118
CV
39503* Limits::
39504@end menu
39505
79a6e687
BW
39506@node Open Flags
39507@unnumberedsubsubsec Open Flags
0ce1b118
CV
39508@cindex open flags, in file-i/o protocol
39509
39510All values are given in hexadecimal representation.
39511
39512@smallexample
39513 O_RDONLY 0x0
39514 O_WRONLY 0x1
39515 O_RDWR 0x2
39516 O_APPEND 0x8
39517 O_CREAT 0x200
39518 O_TRUNC 0x400
39519 O_EXCL 0x800
39520@end smallexample
39521
79a6e687
BW
39522@node mode_t Values
39523@unnumberedsubsubsec mode_t Values
0ce1b118
CV
39524@cindex mode_t values, in file-i/o protocol
39525
39526All values are given in octal representation.
39527
39528@smallexample
39529 S_IFREG 0100000
39530 S_IFDIR 040000
39531 S_IRUSR 0400
39532 S_IWUSR 0200
39533 S_IXUSR 0100
39534 S_IRGRP 040
39535 S_IWGRP 020
39536 S_IXGRP 010
39537 S_IROTH 04
39538 S_IWOTH 02
39539 S_IXOTH 01
39540@end smallexample
39541
79a6e687
BW
39542@node Errno Values
39543@unnumberedsubsubsec Errno Values
0ce1b118
CV
39544@cindex errno values, in file-i/o protocol
39545
39546All values are given in decimal representation.
39547
39548@smallexample
39549 EPERM 1
39550 ENOENT 2
39551 EINTR 4
39552 EBADF 9
39553 EACCES 13
39554 EFAULT 14
39555 EBUSY 16
39556 EEXIST 17
39557 ENODEV 19
39558 ENOTDIR 20
39559 EISDIR 21
39560 EINVAL 22
39561 ENFILE 23
39562 EMFILE 24
39563 EFBIG 27
39564 ENOSPC 28
39565 ESPIPE 29
39566 EROFS 30
39567 ENAMETOOLONG 91
39568 EUNKNOWN 9999
39569@end smallexample
39570
fc320d37 39571 @code{EUNKNOWN} is used as a fallback error value if a host system returns
0ce1b118
CV
39572 any error value not in the list of supported error numbers.
39573
79a6e687
BW
39574@node Lseek Flags
39575@unnumberedsubsubsec Lseek Flags
0ce1b118
CV
39576@cindex lseek flags, in file-i/o protocol
39577
39578@smallexample
39579 SEEK_SET 0
39580 SEEK_CUR 1
39581 SEEK_END 2
39582@end smallexample
39583
39584@node Limits
39585@unnumberedsubsubsec Limits
39586@cindex limits, in file-i/o protocol
39587
39588All values are given in decimal representation.
39589
39590@smallexample
39591 INT_MIN -2147483648
39592 INT_MAX 2147483647
39593 UINT_MAX 4294967295
39594 LONG_MIN -9223372036854775808
39595 LONG_MAX 9223372036854775807
39596 ULONG_MAX 18446744073709551615
39597@end smallexample
39598
39599@node File-I/O Examples
39600@subsection File-I/O Examples
39601@cindex file-i/o examples
39602
39603Example sequence of a write call, file descriptor 3, buffer is at target
39604address 0x1234, 6 bytes should be written:
39605
39606@smallexample
39607<- @code{Fwrite,3,1234,6}
39608@emph{request memory read from target}
39609-> @code{m1234,6}
39610<- XXXXXX
39611@emph{return "6 bytes written"}
39612-> @code{F6}
39613@end smallexample
39614
39615Example sequence of a read call, file descriptor 3, buffer is at target
39616address 0x1234, 6 bytes should be read:
39617
39618@smallexample
39619<- @code{Fread,3,1234,6}
39620@emph{request memory write to target}
39621-> @code{X1234,6:XXXXXX}
39622@emph{return "6 bytes read"}
39623-> @code{F6}
39624@end smallexample
39625
39626Example sequence of a read call, call fails on the host due to invalid
fc320d37 39627file descriptor (@code{EBADF}):
0ce1b118
CV
39628
39629@smallexample
39630<- @code{Fread,3,1234,6}
39631-> @code{F-1,9}
39632@end smallexample
39633
c8aa23ab 39634Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on
0ce1b118
CV
39635host is called:
39636
39637@smallexample
39638<- @code{Fread,3,1234,6}
39639-> @code{F-1,4,C}
39640<- @code{T02}
39641@end smallexample
39642
c8aa23ab 39643Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on
0ce1b118
CV
39644host is called:
39645
39646@smallexample
39647<- @code{Fread,3,1234,6}
39648-> @code{X1234,6:XXXXXX}
39649<- @code{T02}
39650@end smallexample
39651
cfa9d6d9
DJ
39652@node Library List Format
39653@section Library List Format
39654@cindex library list format, remote protocol
39655
39656On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the
39657same process as your application to manage libraries. In this case,
39658@value{GDBN} can use the loader's symbol table and normal memory
39659operations to maintain a list of shared libraries. On other
39660platforms, the operating system manages loaded libraries.
39661@value{GDBN} can not retrieve the list of currently loaded libraries
39662through memory operations, so it uses the @samp{qXfer:libraries:read}
39663packet (@pxref{qXfer library list read}) instead. The remote stub
39664queries the target's operating system and reports which libraries
39665are loaded.
39666
39667The @samp{qXfer:libraries:read} packet returns an XML document which
39668lists loaded libraries and their offsets. Each library has an
1fddbabb
PA
39669associated name and one or more segment or section base addresses,
39670which report where the library was loaded in memory.
39671
39672For the common case of libraries that are fully linked binaries, the
39673library should have a list of segments. If the target supports
39674dynamic linking of a relocatable object file, its library XML element
39675should instead include a list of allocated sections. The segment or
39676section bases are start addresses, not relocation offsets; they do not
39677depend on the library's link-time base addresses.
cfa9d6d9 39678
9cceb671
DJ
39679@value{GDBN} must be linked with the Expat library to support XML
39680library lists. @xref{Expat}.
39681
cfa9d6d9
DJ
39682A simple memory map, with one loaded library relocated by a single
39683offset, looks like this:
39684
39685@smallexample
39686<library-list>
39687 <library name="/lib/libc.so.6">
39688 <segment address="0x10000000"/>
39689 </library>
39690</library-list>
39691@end smallexample
39692
1fddbabb
PA
39693Another simple memory map, with one loaded library with three
39694allocated sections (.text, .data, .bss), looks like this:
39695
39696@smallexample
39697<library-list>
39698 <library name="sharedlib.o">
39699 <section address="0x10000000"/>
39700 <section address="0x20000000"/>
39701 <section address="0x30000000"/>
39702 </library>
39703</library-list>
39704@end smallexample
39705
cfa9d6d9
DJ
39706The format of a library list is described by this DTD:
39707
39708@smallexample
39709<!-- library-list: Root element with versioning -->
39710<!ELEMENT library-list (library)*>
39711<!ATTLIST library-list version CDATA #FIXED "1.0">
1fddbabb 39712<!ELEMENT library (segment*, section*)>
cfa9d6d9
DJ
39713<!ATTLIST library name CDATA #REQUIRED>
39714<!ELEMENT segment EMPTY>
39715<!ATTLIST segment address CDATA #REQUIRED>
1fddbabb
PA
39716<!ELEMENT section EMPTY>
39717<!ATTLIST section address CDATA #REQUIRED>
cfa9d6d9
DJ
39718@end smallexample
39719
1fddbabb
PA
39720In addition, segments and section descriptors cannot be mixed within a
39721single library element, and you must supply at least one segment or
39722section for each library.
39723
2268b414
JK
39724@node Library List Format for SVR4 Targets
39725@section Library List Format for SVR4 Targets
39726@cindex library list format, remote protocol
39727
39728On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader
39729(e.g.@: @file{ld.so}) and normal memory operations to maintain a list of
39730shared libraries. Still a special library list provided by this packet is
39731more efficient for the @value{GDBN} remote protocol.
39732
39733The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists
39734loaded libraries and their SVR4 linker parameters. For each library on SVR4
39735target, the following parameters are reported:
39736
39737@itemize @minus
39738@item
39739@code{name}, the absolute file name from the @code{l_name} field of
39740@code{struct link_map}.
39741@item
39742@code{lm} with address of @code{struct link_map} used for TLS
39743(Thread Local Storage) access.
39744@item
39745@code{l_addr}, the displacement as read from the field @code{l_addr} of
39746@code{struct link_map}. For prelinked libraries this is not an absolute
39747memory address. It is a displacement of absolute memory address against
39748address the file was prelinked to during the library load.
39749@item
39750@code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment
39751@end itemize
39752
39753Additionally the single @code{main-lm} attribute specifies address of
39754@code{struct link_map} used for the main executable. This parameter is used
39755for TLS access and its presence is optional.
39756
39757@value{GDBN} must be linked with the Expat library to support XML
39758SVR4 library lists. @xref{Expat}.
39759
39760A simple memory map, with two loaded libraries (which do not use prelink),
39761looks like this:
39762
39763@smallexample
39764<library-list-svr4 version="1.0" main-lm="0xe4f8f8">
39765 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000"
39766 l_ld="0xe4eefc"/>
39767 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000"
39768 l_ld="0x152350"/>
39769</library-list-svr>
39770@end smallexample
39771
39772The format of an SVR4 library list is described by this DTD:
39773
39774@smallexample
39775<!-- library-list-svr4: Root element with versioning -->
39776<!ELEMENT library-list-svr4 (library)*>
39777<!ATTLIST library-list-svr4 version CDATA #FIXED "1.0">
39778<!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED>
39779<!ELEMENT library EMPTY>
39780<!ATTLIST library name CDATA #REQUIRED>
39781<!ATTLIST library lm CDATA #REQUIRED>
39782<!ATTLIST library l_addr CDATA #REQUIRED>
39783<!ATTLIST library l_ld CDATA #REQUIRED>
39784@end smallexample
39785
79a6e687
BW
39786@node Memory Map Format
39787@section Memory Map Format
68437a39
DJ
39788@cindex memory map format
39789
39790To be able to write into flash memory, @value{GDBN} needs to obtain a
39791memory map from the target. This section describes the format of the
39792memory map.
39793
39794The memory map is obtained using the @samp{qXfer:memory-map:read}
39795(@pxref{qXfer memory map read}) packet and is an XML document that
9cceb671
DJ
39796lists memory regions.
39797
39798@value{GDBN} must be linked with the Expat library to support XML
39799memory maps. @xref{Expat}.
39800
39801The top-level structure of the document is shown below:
68437a39
DJ
39802
39803@smallexample
39804<?xml version="1.0"?>
39805<!DOCTYPE memory-map
39806 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
39807 "http://sourceware.org/gdb/gdb-memory-map.dtd">
39808<memory-map>
39809 region...
39810</memory-map>
39811@end smallexample
39812
39813Each region can be either:
39814
39815@itemize
39816
39817@item
39818A region of RAM starting at @var{addr} and extending for @var{length}
39819bytes from there:
39820
39821@smallexample
39822<memory type="ram" start="@var{addr}" length="@var{length}"/>
39823@end smallexample
39824
39825
39826@item
39827A region of read-only memory:
39828
39829@smallexample
39830<memory type="rom" start="@var{addr}" length="@var{length}"/>
39831@end smallexample
39832
39833
39834@item
39835A region of flash memory, with erasure blocks @var{blocksize}
39836bytes in length:
39837
39838@smallexample
39839<memory type="flash" start="@var{addr}" length="@var{length}">
39840 <property name="blocksize">@var{blocksize}</property>
39841</memory>
39842@end smallexample
39843
39844@end itemize
39845
39846Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
39847by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
39848packets to write to addresses in such ranges.
39849
39850The formal DTD for memory map format is given below:
39851
39852@smallexample
39853<!-- ................................................... -->
39854<!-- Memory Map XML DTD ................................ -->
39855<!-- File: memory-map.dtd .............................. -->
39856<!-- .................................... .............. -->
39857<!-- memory-map.dtd -->
39858<!-- memory-map: Root element with versioning -->
39859<!ELEMENT memory-map (memory | property)>
39860<!ATTLIST memory-map version CDATA #FIXED "1.0.0">
39861<!ELEMENT memory (property)>
39862<!-- memory: Specifies a memory region,
39863 and its type, or device. -->
39864<!ATTLIST memory type CDATA #REQUIRED
39865 start CDATA #REQUIRED
39866 length CDATA #REQUIRED
39867 device CDATA #IMPLIED>
39868<!-- property: Generic attribute tag -->
39869<!ELEMENT property (#PCDATA | property)*>
39870<!ATTLIST property name CDATA #REQUIRED>
39871@end smallexample
39872
dc146f7c
VP
39873@node Thread List Format
39874@section Thread List Format
39875@cindex thread list format
39876
39877To efficiently update the list of threads and their attributes,
39878@value{GDBN} issues the @samp{qXfer:threads:read} packet
39879(@pxref{qXfer threads read}) and obtains the XML document with
39880the following structure:
39881
39882@smallexample
39883<?xml version="1.0"?>
39884<threads>
39885 <thread id="id" core="0">
39886 ... description ...
39887 </thread>
39888</threads>
39889@end smallexample
39890
39891Each @samp{thread} element must have the @samp{id} attribute that
39892identifies the thread (@pxref{thread-id syntax}). The
39893@samp{core} attribute, if present, specifies which processor core
39894the thread was last executing on. The content of the of @samp{thread}
39895element is interpreted as human-readable auxilliary information.
39896
b3b9301e
PA
39897@node Traceframe Info Format
39898@section Traceframe Info Format
39899@cindex traceframe info format
39900
39901To be able to know which objects in the inferior can be examined when
39902inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of
39903memory ranges, registers and trace state variables that have been
39904collected in a traceframe.
39905
39906This list is obtained using the @samp{qXfer:traceframe-info:read}
39907(@pxref{qXfer traceframe info read}) packet and is an XML document.
39908
39909@value{GDBN} must be linked with the Expat library to support XML
39910traceframe info discovery. @xref{Expat}.
39911
39912The top-level structure of the document is shown below:
39913
39914@smallexample
39915<?xml version="1.0"?>
39916<!DOCTYPE traceframe-info
39917 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
39918 "http://sourceware.org/gdb/gdb-traceframe-info.dtd">
39919<traceframe-info>
39920 block...
39921</traceframe-info>
39922@end smallexample
39923
39924Each traceframe block can be either:
39925
39926@itemize
39927
39928@item
39929A region of collected memory starting at @var{addr} and extending for
39930@var{length} bytes from there:
39931
39932@smallexample
39933<memory start="@var{addr}" length="@var{length}"/>
39934@end smallexample
39935
39936@end itemize
39937
39938The formal DTD for the traceframe info format is given below:
39939
39940@smallexample
39941<!ELEMENT traceframe-info (memory)* >
39942<!ATTLIST traceframe-info version CDATA #FIXED "1.0">
39943
39944<!ELEMENT memory EMPTY>
39945<!ATTLIST memory start CDATA #REQUIRED
39946 length CDATA #REQUIRED>
39947@end smallexample
39948
f418dd93
DJ
39949@include agentexpr.texi
39950
23181151
DJ
39951@node Target Descriptions
39952@appendix Target Descriptions
39953@cindex target descriptions
39954
23181151
DJ
39955One of the challenges of using @value{GDBN} to debug embedded systems
39956is that there are so many minor variants of each processor
39957architecture in use. It is common practice for vendors to start with
eb17f351 39958a standard processor core --- ARM, PowerPC, or @acronym{MIPS}, for example ---
23181151
DJ
39959and then make changes to adapt it to a particular market niche. Some
39960architectures have hundreds of variants, available from dozens of
39961vendors. This leads to a number of problems:
39962
39963@itemize @bullet
39964@item
39965With so many different customized processors, it is difficult for
39966the @value{GDBN} maintainers to keep up with the changes.
39967@item
39968Since individual variants may have short lifetimes or limited
39969audiences, it may not be worthwhile to carry information about every
39970variant in the @value{GDBN} source tree.
39971@item
39972When @value{GDBN} does support the architecture of the embedded system
39973at hand, the task of finding the correct architecture name to give the
39974@command{set architecture} command can be error-prone.
39975@end itemize
39976
39977To address these problems, the @value{GDBN} remote protocol allows a
39978target system to not only identify itself to @value{GDBN}, but to
39979actually describe its own features. This lets @value{GDBN} support
39980processor variants it has never seen before --- to the extent that the
39981descriptions are accurate, and that @value{GDBN} understands them.
39982
9cceb671
DJ
39983@value{GDBN} must be linked with the Expat library to support XML
39984target descriptions. @xref{Expat}.
123dc839 39985
23181151
DJ
39986@menu
39987* Retrieving Descriptions:: How descriptions are fetched from a target.
39988* Target Description Format:: The contents of a target description.
123dc839
DJ
39989* Predefined Target Types:: Standard types available for target
39990 descriptions.
39991* Standard Target Features:: Features @value{GDBN} knows about.
23181151
DJ
39992@end menu
39993
39994@node Retrieving Descriptions
39995@section Retrieving Descriptions
39996
39997Target descriptions can be read from the target automatically, or
39998specified by the user manually. The default behavior is to read the
39999description from the target. @value{GDBN} retrieves it via the remote
40000protocol using @samp{qXfer} requests (@pxref{General Query Packets,
40001qXfer}). The @var{annex} in the @samp{qXfer} packet will be
40002@samp{target.xml}. The contents of the @samp{target.xml} annex are an
40003XML document, of the form described in @ref{Target Description
40004Format}.
40005
40006Alternatively, you can specify a file to read for the target description.
40007If a file is set, the target will not be queried. The commands to
40008specify a file are:
40009
40010@table @code
40011@cindex set tdesc filename
40012@item set tdesc filename @var{path}
40013Read the target description from @var{path}.
40014
40015@cindex unset tdesc filename
40016@item unset tdesc filename
40017Do not read the XML target description from a file. @value{GDBN}
40018will use the description supplied by the current target.
40019
40020@cindex show tdesc filename
40021@item show tdesc filename
40022Show the filename to read for a target description, if any.
40023@end table
40024
40025
40026@node Target Description Format
40027@section Target Description Format
40028@cindex target descriptions, XML format
40029
40030A target description annex is an @uref{http://www.w3.org/XML/, XML}
40031document which complies with the Document Type Definition provided in
40032the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This
40033means you can use generally available tools like @command{xmllint} to
40034check that your feature descriptions are well-formed and valid.
40035However, to help people unfamiliar with XML write descriptions for
40036their targets, we also describe the grammar here.
40037
123dc839
DJ
40038Target descriptions can identify the architecture of the remote target
40039and (for some architectures) provide information about custom register
08d16641
PA
40040sets. They can also identify the OS ABI of the remote target.
40041@value{GDBN} can use this information to autoconfigure for your
123dc839 40042target, or to warn you if you connect to an unsupported target.
23181151
DJ
40043
40044Here is a simple target description:
40045
123dc839 40046@smallexample
1780a0ed 40047<target version="1.0">
23181151
DJ
40048 <architecture>i386:x86-64</architecture>
40049</target>
123dc839 40050@end smallexample
23181151
DJ
40051
40052@noindent
40053This minimal description only says that the target uses
40054the x86-64 architecture.
40055
123dc839
DJ
40056A target description has the following overall form, with [ ] marking
40057optional elements and @dots{} marking repeatable elements. The elements
40058are explained further below.
23181151 40059
123dc839 40060@smallexample
23181151
DJ
40061<?xml version="1.0"?>
40062<!DOCTYPE target SYSTEM "gdb-target.dtd">
1780a0ed 40063<target version="1.0">
123dc839 40064 @r{[}@var{architecture}@r{]}
08d16641 40065 @r{[}@var{osabi}@r{]}
e35359c5 40066 @r{[}@var{compatible}@r{]}
123dc839 40067 @r{[}@var{feature}@dots{}@r{]}
23181151 40068</target>
123dc839 40069@end smallexample
23181151
DJ
40070
40071@noindent
40072The description is generally insensitive to whitespace and line
40073breaks, under the usual common-sense rules. The XML version
40074declaration and document type declaration can generally be omitted
40075(@value{GDBN} does not require them), but specifying them may be
1780a0ed
DJ
40076useful for XML validation tools. The @samp{version} attribute for
40077@samp{<target>} may also be omitted, but we recommend
40078including it; if future versions of @value{GDBN} use an incompatible
40079revision of @file{gdb-target.dtd}, they will detect and report
40080the version mismatch.
23181151 40081
108546a0
DJ
40082@subsection Inclusion
40083@cindex target descriptions, inclusion
40084@cindex XInclude
40085@ifnotinfo
40086@cindex <xi:include>
40087@end ifnotinfo
40088
40089It can sometimes be valuable to split a target description up into
40090several different annexes, either for organizational purposes, or to
40091share files between different possible target descriptions. You can
40092divide a description into multiple files by replacing any element of
40093the target description with an inclusion directive of the form:
40094
123dc839 40095@smallexample
108546a0 40096<xi:include href="@var{document}"/>
123dc839 40097@end smallexample
108546a0
DJ
40098
40099@noindent
40100When @value{GDBN} encounters an element of this form, it will retrieve
40101the named XML @var{document}, and replace the inclusion directive with
40102the contents of that document. If the current description was read
40103using @samp{qXfer}, then so will be the included document;
40104@var{document} will be interpreted as the name of an annex. If the
40105current description was read from a file, @value{GDBN} will look for
40106@var{document} as a file in the same directory where it found the
40107original description.
40108
123dc839
DJ
40109@subsection Architecture
40110@cindex <architecture>
40111
40112An @samp{<architecture>} element has this form:
40113
40114@smallexample
40115 <architecture>@var{arch}</architecture>
40116@end smallexample
40117
e35359c5
UW
40118@var{arch} is one of the architectures from the set accepted by
40119@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
123dc839 40120
08d16641
PA
40121@subsection OS ABI
40122@cindex @code{<osabi>}
40123
40124This optional field was introduced in @value{GDBN} version 7.0.
40125Previous versions of @value{GDBN} ignore it.
40126
40127An @samp{<osabi>} element has this form:
40128
40129@smallexample
40130 <osabi>@var{abi-name}</osabi>
40131@end smallexample
40132
40133@var{abi-name} is an OS ABI name from the same selection accepted by
40134@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}).
40135
e35359c5
UW
40136@subsection Compatible Architecture
40137@cindex @code{<compatible>}
40138
40139This optional field was introduced in @value{GDBN} version 7.0.
40140Previous versions of @value{GDBN} ignore it.
40141
40142A @samp{<compatible>} element has this form:
40143
40144@smallexample
40145 <compatible>@var{arch}</compatible>
40146@end smallexample
40147
40148@var{arch} is one of the architectures from the set accepted by
40149@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
40150
40151A @samp{<compatible>} element is used to specify that the target
40152is able to run binaries in some other than the main target architecture
40153given by the @samp{<architecture>} element. For example, on the
40154Cell Broadband Engine, the main architecture is @code{powerpc:common}
40155or @code{powerpc:common64}, but the system is able to run binaries
40156in the @code{spu} architecture as well. The way to describe this
40157capability with @samp{<compatible>} is as follows:
40158
40159@smallexample
40160 <architecture>powerpc:common</architecture>
40161 <compatible>spu</compatible>
40162@end smallexample
40163
123dc839
DJ
40164@subsection Features
40165@cindex <feature>
40166
40167Each @samp{<feature>} describes some logical portion of the target
40168system. Features are currently used to describe available CPU
40169registers and the types of their contents. A @samp{<feature>} element
40170has this form:
40171
40172@smallexample
40173<feature name="@var{name}">
40174 @r{[}@var{type}@dots{}@r{]}
40175 @var{reg}@dots{}
40176</feature>
40177@end smallexample
40178
40179@noindent
40180Each feature's name should be unique within the description. The name
40181of a feature does not matter unless @value{GDBN} has some special
40182knowledge of the contents of that feature; if it does, the feature
40183should have its standard name. @xref{Standard Target Features}.
40184
40185@subsection Types
40186
40187Any register's value is a collection of bits which @value{GDBN} must
40188interpret. The default interpretation is a two's complement integer,
40189but other types can be requested by name in the register description.
40190Some predefined types are provided by @value{GDBN} (@pxref{Predefined
40191Target Types}), and the description can define additional composite types.
40192
40193Each type element must have an @samp{id} attribute, which gives
40194a unique (within the containing @samp{<feature>}) name to the type.
40195Types must be defined before they are used.
40196
40197@cindex <vector>
40198Some targets offer vector registers, which can be treated as arrays
40199of scalar elements. These types are written as @samp{<vector>} elements,
40200specifying the array element type, @var{type}, and the number of elements,
40201@var{count}:
40202
40203@smallexample
40204<vector id="@var{id}" type="@var{type}" count="@var{count}"/>
40205@end smallexample
40206
40207@cindex <union>
40208If a register's value is usefully viewed in multiple ways, define it
40209with a union type containing the useful representations. The
40210@samp{<union>} element contains one or more @samp{<field>} elements,
40211each of which has a @var{name} and a @var{type}:
40212
40213@smallexample
40214<union id="@var{id}">
40215 <field name="@var{name}" type="@var{type}"/>
40216 @dots{}
40217</union>
40218@end smallexample
40219
f5dff777
DJ
40220@cindex <struct>
40221If a register's value is composed from several separate values, define
40222it with a structure type. There are two forms of the @samp{<struct>}
40223element; a @samp{<struct>} element must either contain only bitfields
40224or contain no bitfields. If the structure contains only bitfields,
40225its total size in bytes must be specified, each bitfield must have an
40226explicit start and end, and bitfields are automatically assigned an
40227integer type. The field's @var{start} should be less than or
40228equal to its @var{end}, and zero represents the least significant bit.
40229
40230@smallexample
40231<struct id="@var{id}" size="@var{size}">
40232 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
40233 @dots{}
40234</struct>
40235@end smallexample
40236
40237If the structure contains no bitfields, then each field has an
40238explicit type, and no implicit padding is added.
40239
40240@smallexample
40241<struct id="@var{id}">
40242 <field name="@var{name}" type="@var{type}"/>
40243 @dots{}
40244</struct>
40245@end smallexample
40246
40247@cindex <flags>
40248If a register's value is a series of single-bit flags, define it with
40249a flags type. The @samp{<flags>} element has an explicit @var{size}
40250and contains one or more @samp{<field>} elements. Each field has a
40251@var{name}, a @var{start}, and an @var{end}. Only single-bit flags
40252are supported.
40253
40254@smallexample
40255<flags id="@var{id}" size="@var{size}">
40256 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
40257 @dots{}
40258</flags>
40259@end smallexample
40260
123dc839
DJ
40261@subsection Registers
40262@cindex <reg>
40263
40264Each register is represented as an element with this form:
40265
40266@smallexample
40267<reg name="@var{name}"
40268 bitsize="@var{size}"
40269 @r{[}regnum="@var{num}"@r{]}
40270 @r{[}save-restore="@var{save-restore}"@r{]}
40271 @r{[}type="@var{type}"@r{]}
40272 @r{[}group="@var{group}"@r{]}/>
40273@end smallexample
40274
40275@noindent
40276The components are as follows:
40277
40278@table @var
40279
40280@item name
40281The register's name; it must be unique within the target description.
40282
40283@item bitsize
40284The register's size, in bits.
40285
40286@item regnum
40287The register's number. If omitted, a register's number is one greater
40288than that of the previous register (either in the current feature or in
177b42fe 40289a preceding feature); the first register in the target description
123dc839
DJ
40290defaults to zero. This register number is used to read or write
40291the register; e.g.@: it is used in the remote @code{p} and @code{P}
40292packets, and registers appear in the @code{g} and @code{G} packets
40293in order of increasing register number.
40294
40295@item save-restore
40296Whether the register should be preserved across inferior function
40297calls; this must be either @code{yes} or @code{no}. The default is
40298@code{yes}, which is appropriate for most registers except for
40299some system control registers; this is not related to the target's
40300ABI.
40301
40302@item type
40303The type of the register. @var{type} may be a predefined type, a type
40304defined in the current feature, or one of the special types @code{int}
40305and @code{float}. @code{int} is an integer type of the correct size
40306for @var{bitsize}, and @code{float} is a floating point type (in the
40307architecture's normal floating point format) of the correct size for
40308@var{bitsize}. The default is @code{int}.
40309
40310@item group
40311The register group to which this register belongs. @var{group} must
40312be either @code{general}, @code{float}, or @code{vector}. If no
40313@var{group} is specified, @value{GDBN} will not display the register
40314in @code{info registers}.
40315
40316@end table
40317
40318@node Predefined Target Types
40319@section Predefined Target Types
40320@cindex target descriptions, predefined types
40321
40322Type definitions in the self-description can build up composite types
40323from basic building blocks, but can not define fundamental types. Instead,
40324standard identifiers are provided by @value{GDBN} for the fundamental
40325types. The currently supported types are:
40326
40327@table @code
40328
40329@item int8
40330@itemx int16
40331@itemx int32
40332@itemx int64
7cc46491 40333@itemx int128
123dc839
DJ
40334Signed integer types holding the specified number of bits.
40335
40336@item uint8
40337@itemx uint16
40338@itemx uint32
40339@itemx uint64
7cc46491 40340@itemx uint128
123dc839
DJ
40341Unsigned integer types holding the specified number of bits.
40342
40343@item code_ptr
40344@itemx data_ptr
40345Pointers to unspecified code and data. The program counter and
40346any dedicated return address register may be marked as code
40347pointers; printing a code pointer converts it into a symbolic
40348address. The stack pointer and any dedicated address registers
40349may be marked as data pointers.
40350
6e3bbd1a
PB
40351@item ieee_single
40352Single precision IEEE floating point.
40353
40354@item ieee_double
40355Double precision IEEE floating point.
40356
123dc839
DJ
40357@item arm_fpa_ext
40358The 12-byte extended precision format used by ARM FPA registers.
40359
075b51b7
L
40360@item i387_ext
40361The 10-byte extended precision format used by x87 registers.
40362
40363@item i386_eflags
4036432bit @sc{eflags} register used by x86.
40365
40366@item i386_mxcsr
4036732bit @sc{mxcsr} register used by x86.
40368
123dc839
DJ
40369@end table
40370
40371@node Standard Target Features
40372@section Standard Target Features
40373@cindex target descriptions, standard features
40374
40375A target description must contain either no registers or all the
40376target's registers. If the description contains no registers, then
40377@value{GDBN} will assume a default register layout, selected based on
40378the architecture. If the description contains any registers, the
40379default layout will not be used; the standard registers must be
40380described in the target description, in such a way that @value{GDBN}
40381can recognize them.
40382
40383This is accomplished by giving specific names to feature elements
40384which contain standard registers. @value{GDBN} will look for features
40385with those names and verify that they contain the expected registers;
40386if any known feature is missing required registers, or if any required
40387feature is missing, @value{GDBN} will reject the target
40388description. You can add additional registers to any of the
40389standard features --- @value{GDBN} will display them just as if
40390they were added to an unrecognized feature.
40391
40392This section lists the known features and their expected contents.
40393Sample XML documents for these features are included in the
40394@value{GDBN} source tree, in the directory @file{gdb/features}.
40395
40396Names recognized by @value{GDBN} should include the name of the
40397company or organization which selected the name, and the overall
40398architecture to which the feature applies; so e.g.@: the feature
40399containing ARM core registers is named @samp{org.gnu.gdb.arm.core}.
40400
ff6f572f
DJ
40401The names of registers are not case sensitive for the purpose
40402of recognizing standard features, but @value{GDBN} will only display
40403registers using the capitalization used in the description.
40404
e9c17194
VP
40405@menu
40406* ARM Features::
3bb8d5c3 40407* i386 Features::
1e26b4f8 40408* MIPS Features::
e9c17194 40409* M68K Features::
1e26b4f8 40410* PowerPC Features::
224bbe49 40411* TIC6x Features::
e9c17194
VP
40412@end menu
40413
40414
40415@node ARM Features
123dc839
DJ
40416@subsection ARM Features
40417@cindex target descriptions, ARM features
40418
9779414d
DJ
40419The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile
40420ARM targets.
123dc839
DJ
40421It should contain registers @samp{r0} through @samp{r13}, @samp{sp},
40422@samp{lr}, @samp{pc}, and @samp{cpsr}.
40423
9779414d
DJ
40424For M-profile targets (e.g. Cortex-M3), the @samp{org.gnu.gdb.arm.core}
40425feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain
40426registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc},
40427and @samp{xpsr}.
40428
123dc839
DJ
40429The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it
40430should contain registers @samp{f0} through @samp{f7} and @samp{fps}.
40431
ff6f572f
DJ
40432The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present,
40433it should contain at least registers @samp{wR0} through @samp{wR15} and
40434@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon},
40435@samp{wCSSF}, and @samp{wCASF} registers are optional.
23181151 40436
58d6951d
DJ
40437The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it
40438should contain at least registers @samp{d0} through @samp{d15}. If
40439they are present, @samp{d16} through @samp{d31} should also be included.
40440@value{GDBN} will synthesize the single-precision registers from
40441halves of the double-precision registers.
40442
40443The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not
40444need to contain registers; it instructs @value{GDBN} to display the
40445VFP double-precision registers as vectors and to synthesize the
40446quad-precision registers from pairs of double-precision registers.
40447If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also
40448be present and include 32 double-precision registers.
40449
3bb8d5c3
L
40450@node i386 Features
40451@subsection i386 Features
40452@cindex target descriptions, i386 features
40453
40454The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64
40455targets. It should describe the following registers:
40456
40457@itemize @minus
40458@item
40459@samp{eax} through @samp{edi} plus @samp{eip} for i386
40460@item
40461@samp{rax} through @samp{r15} plus @samp{rip} for amd64
40462@item
40463@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es},
40464@samp{fs}, @samp{gs}
40465@item
40466@samp{st0} through @samp{st7}
40467@item
40468@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff},
40469@samp{foseg}, @samp{fooff} and @samp{fop}
40470@end itemize
40471
40472The register sets may be different, depending on the target.
40473
3a13a53b 40474The @samp{org.gnu.gdb.i386.sse} feature is optional. It should
3bb8d5c3
L
40475describe registers:
40476
40477@itemize @minus
40478@item
40479@samp{xmm0} through @samp{xmm7} for i386
40480@item
40481@samp{xmm0} through @samp{xmm15} for amd64
40482@item
40483@samp{mxcsr}
40484@end itemize
40485
3a13a53b
L
40486The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the
40487@samp{org.gnu.gdb.i386.sse} feature. It should
f68eb612
L
40488describe the upper 128 bits of @sc{ymm} registers:
40489
40490@itemize @minus
40491@item
40492@samp{ymm0h} through @samp{ymm7h} for i386
40493@item
40494@samp{ymm0h} through @samp{ymm15h} for amd64
f68eb612
L
40495@end itemize
40496
3bb8d5c3
L
40497The @samp{org.gnu.gdb.i386.linux} feature is optional. It should
40498describe a single register, @samp{orig_eax}.
40499
1e26b4f8 40500@node MIPS Features
eb17f351
EZ
40501@subsection @acronym{MIPS} Features
40502@cindex target descriptions, @acronym{MIPS} features
f8b73d13 40503
eb17f351 40504The @samp{org.gnu.gdb.mips.cpu} feature is required for @acronym{MIPS} targets.
f8b73d13
DJ
40505It should contain registers @samp{r0} through @samp{r31}, @samp{lo},
40506@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending
40507on the target.
40508
40509The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should
40510contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause}
40511registers. They may be 32-bit or 64-bit depending on the target.
40512
40513The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though
40514it may be optional in a future version of @value{GDBN}. It should
40515contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and
40516@samp{fir}. They may be 32-bit or 64-bit depending on the target.
40517
1faeff08
MR
40518The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should
40519contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through
40520@samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should
40521be 32-bit and the rest may be 32-bit or 64-bit depending on the target.
40522
822b6570
DJ
40523The @samp{org.gnu.gdb.mips.linux} feature is optional. It should
40524contain a single register, @samp{restart}, which is used by the
40525Linux kernel to control restartable syscalls.
40526
e9c17194
VP
40527@node M68K Features
40528@subsection M68K Features
40529@cindex target descriptions, M68K features
40530
40531@table @code
40532@item @samp{org.gnu.gdb.m68k.core}
40533@itemx @samp{org.gnu.gdb.coldfire.core}
40534@itemx @samp{org.gnu.gdb.fido.core}
40535One of those features must be always present.
249e1128 40536The feature that is present determines which flavor of m68k is
e9c17194
VP
40537used. The feature that is present should contain registers
40538@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp},
40539@samp{sp}, @samp{ps} and @samp{pc}.
40540
40541@item @samp{org.gnu.gdb.coldfire.fp}
40542This feature is optional. If present, it should contain registers
40543@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
40544@samp{fpiaddr}.
40545@end table
40546
1e26b4f8 40547@node PowerPC Features
7cc46491
DJ
40548@subsection PowerPC Features
40549@cindex target descriptions, PowerPC features
40550
40551The @samp{org.gnu.gdb.power.core} feature is required for PowerPC
40552targets. It should contain registers @samp{r0} through @samp{r31},
40553@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and
40554@samp{xer}. They may be 32-bit or 64-bit depending on the target.
40555
40556The @samp{org.gnu.gdb.power.fpu} feature is optional. It should
40557contain registers @samp{f0} through @samp{f31} and @samp{fpscr}.
40558
40559The @samp{org.gnu.gdb.power.altivec} feature is optional. It should
40560contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
40561and @samp{vrsave}.
40562
677c5bb1
LM
40563The @samp{org.gnu.gdb.power.vsx} feature is optional. It should
40564contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN}
40565will combine these registers with the floating point registers
40566(@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0}
aeac0ff9 40567through @samp{vr31}) to present the 128-bit wide registers @samp{vs0}
677c5bb1
LM
40568through @samp{vs63}, the set of vector registers for POWER7.
40569
7cc46491
DJ
40570The @samp{org.gnu.gdb.power.spe} feature is optional. It should
40571contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
40572@samp{spefscr}. SPE targets should provide 32-bit registers in
40573@samp{org.gnu.gdb.power.core} and provide the upper halves in
40574@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine
40575these to present registers @samp{ev0} through @samp{ev31} to the
40576user.
40577
224bbe49
YQ
40578@node TIC6x Features
40579@subsection TMS320C6x Features
40580@cindex target descriptions, TIC6x features
40581@cindex target descriptions, TMS320C6x features
40582The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x
40583targets. It should contain registers @samp{A0} through @samp{A15},
40584registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}.
40585
40586The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should
40587contain registers @samp{A16} through @samp{A31} and @samp{B16}
40588through @samp{B31}.
40589
40590The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should
40591contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}.
40592
07e059b5
VP
40593@node Operating System Information
40594@appendix Operating System Information
40595@cindex operating system information
40596
40597@menu
40598* Process list::
40599@end menu
40600
40601Users of @value{GDBN} often wish to obtain information about the state of
40602the operating system running on the target---for example the list of
40603processes, or the list of open files. This section describes the
40604mechanism that makes it possible. This mechanism is similar to the
40605target features mechanism (@pxref{Target Descriptions}), but focuses
40606on a different aspect of target.
40607
40608Operating system information is retrived from the target via the
40609remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata
40610read}). The object name in the request should be @samp{osdata}, and
40611the @var{annex} identifies the data to be fetched.
40612
40613@node Process list
40614@appendixsection Process list
40615@cindex operating system information, process list
40616
40617When requesting the process list, the @var{annex} field in the
40618@samp{qXfer} request should be @samp{processes}. The returned data is
40619an XML document. The formal syntax of this document is defined in
40620@file{gdb/features/osdata.dtd}.
40621
40622An example document is:
40623
40624@smallexample
40625<?xml version="1.0"?>
40626<!DOCTYPE target SYSTEM "osdata.dtd">
40627<osdata type="processes">
40628 <item>
40629 <column name="pid">1</column>
40630 <column name="user">root</column>
40631 <column name="command">/sbin/init</column>
dc146f7c 40632 <column name="cores">1,2,3</column>
07e059b5
VP
40633 </item>
40634</osdata>
40635@end smallexample
40636
40637Each item should include a column whose name is @samp{pid}. The value
40638of that column should identify the process on the target. The
40639@samp{user} and @samp{command} columns are optional, and will be
dc146f7c
VP
40640displayed by @value{GDBN}. The @samp{cores} column, if present,
40641should contain a comma-separated list of cores that this process
40642is running on. Target may provide additional columns,
07e059b5
VP
40643which @value{GDBN} currently ignores.
40644
05c8c3f5
TT
40645@node Trace File Format
40646@appendix Trace File Format
40647@cindex trace file format
40648
40649The trace file comes in three parts: a header, a textual description
40650section, and a trace frame section with binary data.
40651
40652The header has the form @code{\x7fTRACE0\n}. The first byte is
40653@code{0x7f} so as to indicate that the file contains binary data,
40654while the @code{0} is a version number that may have different values
40655in the future.
40656
40657The description section consists of multiple lines of @sc{ascii} text
40658separated by newline characters (@code{0xa}). The lines may include a
40659variety of optional descriptive or context-setting information, such
40660as tracepoint definitions or register set size. @value{GDBN} will
40661ignore any line that it does not recognize. An empty line marks the end
40662of this section.
40663
40664@c FIXME add some specific types of data
40665
40666The trace frame section consists of a number of consecutive frames.
40667Each frame begins with a two-byte tracepoint number, followed by a
40668four-byte size giving the amount of data in the frame. The data in
40669the frame consists of a number of blocks, each introduced by a
40670character indicating its type (at least register, memory, and trace
40671state variable). The data in this section is raw binary, not a
40672hexadecimal or other encoding; its endianness matches the target's
40673endianness.
40674
40675@c FIXME bi-arch may require endianness/arch info in description section
40676
40677@table @code
40678@item R @var{bytes}
40679Register block. The number and ordering of bytes matches that of a
40680@code{g} packet in the remote protocol. Note that these are the
40681actual bytes, in target order and @value{GDBN} register order, not a
40682hexadecimal encoding.
40683
40684@item M @var{address} @var{length} @var{bytes}...
40685Memory block. This is a contiguous block of memory, at the 8-byte
40686address @var{address}, with a 2-byte length @var{length}, followed by
40687@var{length} bytes.
40688
40689@item V @var{number} @var{value}
40690Trace state variable block. This records the 8-byte signed value
40691@var{value} of trace state variable numbered @var{number}.
40692
40693@end table
40694
40695Future enhancements of the trace file format may include additional types
40696of blocks.
40697
90476074
TT
40698@node Index Section Format
40699@appendix @code{.gdb_index} section format
40700@cindex .gdb_index section format
40701@cindex index section format
40702
40703This section documents the index section that is created by @code{save
40704gdb-index} (@pxref{Index Files}). The index section is
40705DWARF-specific; some knowledge of DWARF is assumed in this
40706description.
40707
40708The mapped index file format is designed to be directly
40709@code{mmap}able on any architecture. In most cases, a datum is
40710represented using a little-endian 32-bit integer value, called an
40711@code{offset_type}. Big endian machines must byte-swap the values
40712before using them. Exceptions to this rule are noted. The data is
40713laid out such that alignment is always respected.
40714
40715A mapped index consists of several areas, laid out in order.
40716
40717@enumerate
40718@item
40719The file header. This is a sequence of values, of @code{offset_type}
40720unless otherwise noted:
40721
40722@enumerate
40723@item
b6ba681c 40724The version number, currently 7. Versions 1, 2 and 3 are obsolete.
481860b3 40725Version 4 uses a different hashing function from versions 5 and 6.
b6ba681c
TT
40726Version 6 includes symbols for inlined functions, whereas versions 4
40727and 5 do not. Version 7 adds attributes to the CU indices in the
40728symbol table. @value{GDBN} will only read version 4, 5, or 6 indices
e615022a 40729by specifying @code{set use-deprecated-index-sections on}.
90476074
TT
40730
40731@item
40732The offset, from the start of the file, of the CU list.
40733
40734@item
40735The offset, from the start of the file, of the types CU list. Note
40736that this area can be empty, in which case this offset will be equal
40737to the next offset.
40738
40739@item
40740The offset, from the start of the file, of the address area.
40741
40742@item
40743The offset, from the start of the file, of the symbol table.
40744
40745@item
40746The offset, from the start of the file, of the constant pool.
40747@end enumerate
40748
40749@item
40750The CU list. This is a sequence of pairs of 64-bit little-endian
40751values, sorted by the CU offset. The first element in each pair is
40752the offset of a CU in the @code{.debug_info} section. The second
40753element in each pair is the length of that CU. References to a CU
40754elsewhere in the map are done using a CU index, which is just the
407550-based index into this table. Note that if there are type CUs, then
40756conceptually CUs and type CUs form a single list for the purposes of
40757CU indices.
40758
40759@item
40760The types CU list. This is a sequence of triplets of 64-bit
40761little-endian values. In a triplet, the first value is the CU offset,
40762the second value is the type offset in the CU, and the third value is
40763the type signature. The types CU list is not sorted.
40764
40765@item
40766The address area. The address area consists of a sequence of address
40767entries. Each address entry has three elements:
40768
40769@enumerate
40770@item
40771The low address. This is a 64-bit little-endian value.
40772
40773@item
40774The high address. This is a 64-bit little-endian value. Like
40775@code{DW_AT_high_pc}, the value is one byte beyond the end.
40776
40777@item
40778The CU index. This is an @code{offset_type} value.
40779@end enumerate
40780
40781@item
40782The symbol table. This is an open-addressed hash table. The size of
40783the hash table is always a power of 2.
40784
40785Each slot in the hash table consists of a pair of @code{offset_type}
40786values. The first value is the offset of the symbol's name in the
40787constant pool. The second value is the offset of the CU vector in the
40788constant pool.
40789
40790If both values are 0, then this slot in the hash table is empty. This
40791is ok because while 0 is a valid constant pool index, it cannot be a
40792valid index for both a string and a CU vector.
40793
40794The hash value for a table entry is computed by applying an
40795iterative hash function to the symbol's name. Starting with an
40796initial value of @code{r = 0}, each (unsigned) character @samp{c} in
559a7a62
JK
40797the string is incorporated into the hash using the formula depending on the
40798index version:
40799
40800@table @asis
40801@item Version 4
40802The formula is @code{r = r * 67 + c - 113}.
40803
156942c7 40804@item Versions 5 to 7
559a7a62
JK
40805The formula is @code{r = r * 67 + tolower (c) - 113}.
40806@end table
40807
40808The terminating @samp{\0} is not incorporated into the hash.
90476074
TT
40809
40810The step size used in the hash table is computed via
40811@code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash
40812value, and @samp{size} is the size of the hash table. The step size
40813is used to find the next candidate slot when handling a hash
40814collision.
40815
40816The names of C@t{++} symbols in the hash table are canonicalized. We
40817don't currently have a simple description of the canonicalization
40818algorithm; if you intend to create new index sections, you must read
40819the code.
40820
40821@item
40822The constant pool. This is simply a bunch of bytes. It is organized
40823so that alignment is correct: CU vectors are stored first, followed by
40824strings.
40825
40826A CU vector in the constant pool is a sequence of @code{offset_type}
40827values. The first value is the number of CU indices in the vector.
156942c7
DE
40828Each subsequent value is the index and symbol attributes of a CU in
40829the CU list. This element in the hash table is used to indicate which
40830CUs define the symbol and how the symbol is used.
40831See below for the format of each CU index+attributes entry.
90476074
TT
40832
40833A string in the constant pool is zero-terminated.
40834@end enumerate
40835
156942c7
DE
40836Attributes were added to CU index values in @code{.gdb_index} version 7.
40837If a symbol has multiple uses within a CU then there is one
40838CU index+attributes value for each use.
40839
40840The format of each CU index+attributes entry is as follows
40841(bit 0 = LSB):
40842
40843@table @asis
40844
40845@item Bits 0-23
40846This is the index of the CU in the CU list.
40847@item Bits 24-27
40848These bits are reserved for future purposes and must be zero.
40849@item Bits 28-30
40850The kind of the symbol in the CU.
40851
40852@table @asis
40853@item 0
40854This value is reserved and should not be used.
40855By reserving zero the full @code{offset_type} value is backwards compatible
40856with previous versions of the index.
40857@item 1
40858The symbol is a type.
40859@item 2
40860The symbol is a variable or an enum value.
40861@item 3
40862The symbol is a function.
40863@item 4
40864Any other kind of symbol.
40865@item 5,6,7
40866These values are reserved.
40867@end table
40868
40869@item Bit 31
40870This bit is zero if the value is global and one if it is static.
40871
40872The determination of whether a symbol is global or static is complicated.
40873The authorative reference is the file @file{dwarf2read.c} in
40874@value{GDBN} sources.
40875
40876@end table
40877
40878This pseudo-code describes the computation of a symbol's kind and
40879global/static attributes in the index.
40880
40881@smallexample
40882is_external = get_attribute (die, DW_AT_external);
40883language = get_attribute (cu_die, DW_AT_language);
40884switch (die->tag)
40885 @{
40886 case DW_TAG_typedef:
40887 case DW_TAG_base_type:
40888 case DW_TAG_subrange_type:
40889 kind = TYPE;
40890 is_static = 1;
40891 break;
40892 case DW_TAG_enumerator:
40893 kind = VARIABLE;
40894 is_static = (language != CPLUS && language != JAVA);
40895 break;
40896 case DW_TAG_subprogram:
40897 kind = FUNCTION;
40898 is_static = ! (is_external || language == ADA);
40899 break;
40900 case DW_TAG_constant:
40901 kind = VARIABLE;
40902 is_static = ! is_external;
40903 break;
40904 case DW_TAG_variable:
40905 kind = VARIABLE;
40906 is_static = ! is_external;
40907 break;
40908 case DW_TAG_namespace:
40909 kind = TYPE;
40910 is_static = 0;
40911 break;
40912 case DW_TAG_class_type:
40913 case DW_TAG_interface_type:
40914 case DW_TAG_structure_type:
40915 case DW_TAG_union_type:
40916 case DW_TAG_enumeration_type:
40917 kind = TYPE;
40918 is_static = (language != CPLUS && language != JAVA);
40919 break;
40920 default:
40921 assert (0);
40922 @}
40923@end smallexample
40924
aab4e0ec 40925@include gpl.texi
eb12ee30 40926
e4c0cfae
SS
40927@node GNU Free Documentation License
40928@appendix GNU Free Documentation License
6826cf00
EZ
40929@include fdl.texi
40930
00595b5e
EZ
40931@node Concept Index
40932@unnumbered Concept Index
c906108c
SS
40933
40934@printindex cp
40935
00595b5e
EZ
40936@node Command and Variable Index
40937@unnumbered Command, Variable, and Function Index
40938
40939@printindex fn
40940
c906108c 40941@tex
984359d2 40942% I think something like @@colophon should be in texinfo. In the
c906108c
SS
40943% meantime:
40944\long\def\colophon{\hbox to0pt{}\vfill
40945\centerline{The body of this manual is set in}
40946\centerline{\fontname\tenrm,}
40947\centerline{with headings in {\bf\fontname\tenbf}}
40948\centerline{and examples in {\tt\fontname\tentt}.}
40949\centerline{{\it\fontname\tenit\/},}
40950\centerline{{\bf\fontname\tenbf}, and}
40951\centerline{{\sl\fontname\tensl\/}}
40952\centerline{are used for emphasis.}\vfill}
40953\page\colophon
984359d2 40954% Blame: doc@@cygnus.com, 1991.
c906108c
SS
40955@end tex
40956
c906108c 40957@bye
This page took 5.1954 seconds and 4 git commands to generate.