* config/i386/darwin.mh (NATDEPFILES): Remove machoread.o.
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
CommitLineData
c906108c 1\input texinfo @c -*-texinfo-*-
28e7fd62 2@c Copyright (C) 1988-2013 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 49@copying
28e7fd62 50Copyright @copyright{} 1988-2013 Free Software Foundation, Inc.
c906108c 51
e9c75b65 52Permission is granted to copy, distribute and/or modify this document
4f5d9f07 53under the terms of the GNU Free Documentation License, Version 1.3 or
e9c75b65 54any later version published by the Free Software Foundation; with the
959acfd1
EZ
55Invariant Sections being ``Free Software'' and ``Free Software Needs
56Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
57and with the Back-Cover Texts as in (a) below.
c906108c 58
b8533aec
DJ
59(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
60this GNU Manual. Buying copies from GNU Press supports the FSF in
61developing GNU and promoting software freedom.''
a67ec3f4
JM
62@end copying
63
64@ifnottex
65This file documents the @sc{gnu} debugger @value{GDBN}.
66
67This is the @value{EDITION} Edition, of @cite{Debugging with
68@value{GDBN}: the @sc{gnu} Source-Level Debugger} for @value{GDBN}
69@ifset VERSION_PACKAGE
70@value{VERSION_PACKAGE}
71@end ifset
72Version @value{GDBVN}.
73
74@insertcopying
75@end ifnottex
c906108c
SS
76
77@titlepage
78@title Debugging with @value{GDBN}
79@subtitle The @sc{gnu} Source-Level Debugger
c906108c 80@sp 1
c906108c 81@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
c16158bc
JM
82@ifset VERSION_PACKAGE
83@sp 1
84@subtitle @value{VERSION_PACKAGE}
85@end ifset
9e9c5ae7 86@author Richard Stallman, Roland Pesch, Stan Shebs, et al.
c906108c 87@page
c906108c
SS
88@tex
89{\parskip=0pt
c16158bc 90\hfill (Send bugs and comments on @value{GDBN} to @value{BUGURL}.)\par
c906108c
SS
91\hfill {\it Debugging with @value{GDBN}}\par
92\hfill \TeX{}info \texinfoversion\par
93}
94@end tex
53a5351d 95
c906108c 96@vskip 0pt plus 1filll
c906108c 97Published by the Free Software Foundation @*
c02a867d
EZ
9851 Franklin Street, Fifth Floor,
99Boston, MA 02110-1301, USA@*
26829f2b 100ISBN 978-0-9831592-3-0 @*
e9c75b65 101
a67ec3f4 102@insertcopying
c906108c
SS
103@end titlepage
104@page
105
6c0e9fb3 106@ifnottex
6d2ebf8b
SS
107@node Top, Summary, (dir), (dir)
108
c906108c
SS
109@top Debugging with @value{GDBN}
110
111This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
112
c16158bc
JM
113This is the @value{EDITION} Edition, for @value{GDBN}
114@ifset VERSION_PACKAGE
115@value{VERSION_PACKAGE}
116@end ifset
117Version @value{GDBVN}.
c906108c 118
28e7fd62 119Copyright (C) 1988-2013 Free Software Foundation, Inc.
6d2ebf8b 120
3fb6a982
JB
121This edition of the GDB manual is dedicated to the memory of Fred
122Fish. Fred was a long-standing contributor to GDB and to Free
123software in general. We will miss him.
124
6d2ebf8b
SS
125@menu
126* Summary:: Summary of @value{GDBN}
127* Sample Session:: A sample @value{GDBN} session
128
129* Invocation:: Getting in and out of @value{GDBN}
130* Commands:: @value{GDBN} commands
131* Running:: Running programs under @value{GDBN}
132* Stopping:: Stopping and continuing
bacec72f 133* Reverse Execution:: Running programs backward
a2311334 134* Process Record and Replay:: Recording inferior's execution and replaying it
6d2ebf8b
SS
135* Stack:: Examining the stack
136* Source:: Examining source files
137* Data:: Examining data
edb3359d 138* Optimized Code:: Debugging optimized code
e2e0bcd1 139* Macros:: Preprocessor Macros
b37052ae 140* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 141* Overlays:: Debugging programs that use overlays
6d2ebf8b
SS
142
143* Languages:: Using @value{GDBN} with different languages
144
145* Symbols:: Examining the symbol table
146* Altering:: Altering execution
147* GDB Files:: @value{GDBN} files
148* Targets:: Specifying a debugging target
6b2f586d 149* Remote Debugging:: Debugging remote programs
6d2ebf8b
SS
150* Configurations:: Configuration-specific information
151* Controlling GDB:: Controlling @value{GDBN}
d57a3c85 152* Extending GDB:: Extending @value{GDBN}
21c294e6 153* Interpreters:: Command Interpreters
c8f4133a 154* TUI:: @value{GDBN} Text User Interface
6d2ebf8b 155* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
7162c0ca 156* GDB/MI:: @value{GDBN}'s Machine Interface.
c8f4133a 157* Annotations:: @value{GDBN}'s annotation interface.
4efc6507 158* JIT Interface:: Using the JIT debugging interface.
d1feda86 159* In-Process Agent:: In-Process Agent
6d2ebf8b
SS
160
161* GDB Bugs:: Reporting bugs in @value{GDBN}
6d2ebf8b 162
39037522
TT
163@ifset SYSTEM_READLINE
164* Command Line Editing: (rluserman). Command Line Editing
165* Using History Interactively: (history). Using History Interactively
166@end ifset
167@ifclear SYSTEM_READLINE
6d2ebf8b
SS
168* Command Line Editing:: Command Line Editing
169* Using History Interactively:: Using History Interactively
39037522 170@end ifclear
4ceed123 171* In Memoriam:: In Memoriam
0869d01b 172* Formatting Documentation:: How to format and print @value{GDBN} documentation
6d2ebf8b 173* Installing GDB:: Installing GDB
eb12ee30 174* Maintenance Commands:: Maintenance Commands
e0ce93ac 175* Remote Protocol:: GDB Remote Serial Protocol
f418dd93 176* Agent Expressions:: The GDB Agent Expression Mechanism
23181151
DJ
177* Target Descriptions:: How targets can describe themselves to
178 @value{GDBN}
07e059b5
VP
179* Operating System Information:: Getting additional information from
180 the operating system
00bf0b85 181* Trace File Format:: GDB trace file format
90476074 182* Index Section Format:: .gdb_index section format
aab4e0ec
AC
183* Copying:: GNU General Public License says
184 how you can copy and share GDB
6826cf00 185* GNU Free Documentation License:: The license for this documentation
00595b5e
EZ
186* Concept Index:: Index of @value{GDBN} concepts
187* Command and Variable Index:: Index of @value{GDBN} commands, variables,
188 functions, and Python data types
6d2ebf8b
SS
189@end menu
190
6c0e9fb3 191@end ifnottex
c906108c 192
449f3b6c 193@contents
449f3b6c 194
6d2ebf8b 195@node Summary
c906108c
SS
196@unnumbered Summary of @value{GDBN}
197
198The purpose of a debugger such as @value{GDBN} is to allow you to see what is
199going on ``inside'' another program while it executes---or what another
200program was doing at the moment it crashed.
201
202@value{GDBN} can do four main kinds of things (plus other things in support of
203these) to help you catch bugs in the act:
204
205@itemize @bullet
206@item
207Start your program, specifying anything that might affect its behavior.
208
209@item
210Make your program stop on specified conditions.
211
212@item
213Examine what has happened, when your program has stopped.
214
215@item
216Change things in your program, so you can experiment with correcting the
217effects of one bug and go on to learn about another.
218@end itemize
219
49efadf5 220You can use @value{GDBN} to debug programs written in C and C@t{++}.
79a6e687 221For more information, see @ref{Supported Languages,,Supported Languages}.
c906108c
SS
222For more information, see @ref{C,,C and C++}.
223
6aecb9c2
JB
224Support for D is partial. For information on D, see
225@ref{D,,D}.
226
cce74817 227@cindex Modula-2
e632838e
AC
228Support for Modula-2 is partial. For information on Modula-2, see
229@ref{Modula-2,,Modula-2}.
c906108c 230
f4b8a18d
KW
231Support for OpenCL C is partial. For information on OpenCL C, see
232@ref{OpenCL C,,OpenCL C}.
233
cce74817
JM
234@cindex Pascal
235Debugging Pascal programs which use sets, subranges, file variables, or
236nested functions does not currently work. @value{GDBN} does not support
237entering expressions, printing values, or similar features using Pascal
238syntax.
c906108c 239
c906108c
SS
240@cindex Fortran
241@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 242it may be necessary to refer to some variables with a trailing
cce74817 243underscore.
c906108c 244
b37303ee
AF
245@value{GDBN} can be used to debug programs written in Objective-C,
246using either the Apple/NeXT or the GNU Objective-C runtime.
247
c906108c
SS
248@menu
249* Free Software:: Freely redistributable software
984359d2 250* Free Documentation:: Free Software Needs Free Documentation
c906108c
SS
251* Contributors:: Contributors to GDB
252@end menu
253
6d2ebf8b 254@node Free Software
79a6e687 255@unnumberedsec Free Software
c906108c 256
5d161b24 257@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
c906108c
SS
258General Public License
259(GPL). The GPL gives you the freedom to copy or adapt a licensed
260program---but every person getting a copy also gets with it the
261freedom to modify that copy (which means that they must get access to
262the source code), and the freedom to distribute further copies.
263Typical software companies use copyrights to limit your freedoms; the
264Free Software Foundation uses the GPL to preserve these freedoms.
265
266Fundamentally, the General Public License is a license which says that
267you have these freedoms and that you cannot take these freedoms away
268from anyone else.
269
984359d2 270@node Free Documentation
2666264b 271@unnumberedsec Free Software Needs Free Documentation
959acfd1
EZ
272
273The biggest deficiency in the free software community today is not in
274the software---it is the lack of good free documentation that we can
275include with the free software. Many of our most important
276programs do not come with free reference manuals and free introductory
277texts. Documentation is an essential part of any software package;
278when an important free software package does not come with a free
279manual and a free tutorial, that is a major gap. We have many such
280gaps today.
281
282Consider Perl, for instance. The tutorial manuals that people
283normally use are non-free. How did this come about? Because the
284authors of those manuals published them with restrictive terms---no
285copying, no modification, source files not available---which exclude
286them from the free software world.
287
288That wasn't the first time this sort of thing happened, and it was far
289from the last. Many times we have heard a GNU user eagerly describe a
290manual that he is writing, his intended contribution to the community,
291only to learn that he had ruined everything by signing a publication
292contract to make it non-free.
293
294Free documentation, like free software, is a matter of freedom, not
295price. The problem with the non-free manual is not that publishers
296charge a price for printed copies---that in itself is fine. (The Free
297Software Foundation sells printed copies of manuals, too.) The
298problem is the restrictions on the use of the manual. Free manuals
299are available in source code form, and give you permission to copy and
300modify. Non-free manuals do not allow this.
301
302The criteria of freedom for a free manual are roughly the same as for
303free software. Redistribution (including the normal kinds of
304commercial redistribution) must be permitted, so that the manual can
305accompany every copy of the program, both on-line and on paper.
306
307Permission for modification of the technical content is crucial too.
308When people modify the software, adding or changing features, if they
309are conscientious they will change the manual too---so they can
310provide accurate and clear documentation for the modified program. A
311manual that leaves you no choice but to write a new manual to document
312a changed version of the program is not really available to our
313community.
314
315Some kinds of limits on the way modification is handled are
316acceptable. For example, requirements to preserve the original
317author's copyright notice, the distribution terms, or the list of
318authors, are ok. It is also no problem to require modified versions
319to include notice that they were modified. Even entire sections that
320may not be deleted or changed are acceptable, as long as they deal
321with nontechnical topics (like this one). These kinds of restrictions
322are acceptable because they don't obstruct the community's normal use
323of the manual.
324
325However, it must be possible to modify all the @emph{technical}
326content of the manual, and then distribute the result in all the usual
327media, through all the usual channels. Otherwise, the restrictions
328obstruct the use of the manual, it is not free, and we need another
329manual to replace it.
330
331Please spread the word about this issue. Our community continues to
332lose manuals to proprietary publishing. If we spread the word that
333free software needs free reference manuals and free tutorials, perhaps
334the next person who wants to contribute by writing documentation will
335realize, before it is too late, that only free manuals contribute to
336the free software community.
337
338If you are writing documentation, please insist on publishing it under
339the GNU Free Documentation License or another free documentation
340license. Remember that this decision requires your approval---you
341don't have to let the publisher decide. Some commercial publishers
342will use a free license if you insist, but they will not propose the
343option; it is up to you to raise the issue and say firmly that this is
344what you want. If the publisher you are dealing with refuses, please
345try other publishers. If you're not sure whether a proposed license
42584a72 346is free, write to @email{licensing@@gnu.org}.
959acfd1
EZ
347
348You can encourage commercial publishers to sell more free, copylefted
349manuals and tutorials by buying them, and particularly by buying
350copies from the publishers that paid for their writing or for major
351improvements. Meanwhile, try to avoid buying non-free documentation
352at all. Check the distribution terms of a manual before you buy it,
353and insist that whoever seeks your business must respect your freedom.
72c9928d
EZ
354Check the history of the book, and try to reward the publishers that
355have paid or pay the authors to work on it.
959acfd1
EZ
356
357The Free Software Foundation maintains a list of free documentation
358published by other publishers, at
359@url{http://www.fsf.org/doc/other-free-books.html}.
360
6d2ebf8b 361@node Contributors
96a2c332
SS
362@unnumberedsec Contributors to @value{GDBN}
363
364Richard Stallman was the original author of @value{GDBN}, and of many
365other @sc{gnu} programs. Many others have contributed to its
366development. This section attempts to credit major contributors. One
367of the virtues of free software is that everyone is free to contribute
368to it; with regret, we cannot actually acknowledge everyone here. The
369file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
370blow-by-blow account.
371
372Changes much prior to version 2.0 are lost in the mists of time.
373
374@quotation
375@emph{Plea:} Additions to this section are particularly welcome. If you
376or your friends (or enemies, to be evenhanded) have been unfairly
377omitted from this list, we would like to add your names!
378@end quotation
379
380So that they may not regard their many labors as thankless, we
381particularly thank those who shepherded @value{GDBN} through major
382releases:
7ba3cf9c 383Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0);
c906108c
SS
384Jim Blandy (release 4.18);
385Jason Molenda (release 4.17);
386Stan Shebs (release 4.14);
387Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
388Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
389John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
390Jim Kingdon (releases 3.5, 3.4, and 3.3);
391and Randy Smith (releases 3.2, 3.1, and 3.0).
392
393Richard Stallman, assisted at various times by Peter TerMaat, Chris
394Hanson, and Richard Mlynarik, handled releases through 2.8.
395
b37052ae
EZ
396Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
397in @value{GDBN}, with significant additional contributions from Per
398Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
399demangler. Early work on C@t{++} was by Peter TerMaat (who also did
400much general update work leading to release 3.0).
c906108c 401
b37052ae 402@value{GDBN} uses the BFD subroutine library to examine multiple
c906108c
SS
403object-file formats; BFD was a joint project of David V.
404Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
405
406David Johnson wrote the original COFF support; Pace Willison did
407the original support for encapsulated COFF.
408
0179ffac 409Brent Benson of Harris Computer Systems contributed DWARF 2 support.
c906108c
SS
410
411Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
412Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
413support.
414Jean-Daniel Fekete contributed Sun 386i support.
415Chris Hanson improved the HP9000 support.
416Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
417David Johnson contributed Encore Umax support.
418Jyrki Kuoppala contributed Altos 3068 support.
419Jeff Law contributed HP PA and SOM support.
420Keith Packard contributed NS32K support.
421Doug Rabson contributed Acorn Risc Machine support.
422Bob Rusk contributed Harris Nighthawk CX-UX support.
423Chris Smith contributed Convex support (and Fortran debugging).
424Jonathan Stone contributed Pyramid support.
425Michael Tiemann contributed SPARC support.
426Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
427Pace Willison contributed Intel 386 support.
428Jay Vosburgh contributed Symmetry support.
a37295f9 429Marko Mlinar contributed OpenRISC 1000 support.
c906108c 430
1104b9e7 431Andreas Schwab contributed M68K @sc{gnu}/Linux support.
c906108c
SS
432
433Rich Schaefer and Peter Schauer helped with support of SunOS shared
434libraries.
435
436Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
437about several machine instruction sets.
438
439Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
440remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
441contributed remote debugging modules for the i960, VxWorks, A29K UDI,
442and RDI targets, respectively.
443
444Brian Fox is the author of the readline libraries providing
445command-line editing and command history.
446
7a292a7a
SS
447Andrew Beers of SUNY Buffalo wrote the language-switching code, the
448Modula-2 support, and contributed the Languages chapter of this manual.
c906108c 449
5d161b24 450Fred Fish wrote most of the support for Unix System Vr4.
b37052ae 451He also enhanced the command-completion support to cover C@t{++} overloaded
c906108c 452symbols.
c906108c 453
f24c5e49
KI
454Hitachi America (now Renesas America), Ltd. sponsored the support for
455H8/300, H8/500, and Super-H processors.
c906108c
SS
456
457NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
458
f24c5e49
KI
459Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D
460processors.
c906108c
SS
461
462Toshiba sponsored the support for the TX39 Mips processor.
463
464Matsushita sponsored the support for the MN10200 and MN10300 processors.
465
96a2c332 466Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
467
468Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
469watchpoints.
470
471Michael Snyder added support for tracepoints.
472
473Stu Grossman wrote gdbserver.
474
475Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 476nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
477
478The following people at the Hewlett-Packard Company contributed
479support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
b37052ae 480(narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
d0d5df6f
AC
481compiler, and the Text User Interface (nee Terminal User Interface):
482Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann,
483Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase
484provided HP-specific information in this manual.
c906108c 485
b37052ae
EZ
486DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
487Robert Hoehne made significant contributions to the DJGPP port.
488
96a2c332
SS
489Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
490development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
491fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
492Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
493Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
494Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
495Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
496addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
497JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
498Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
499Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
500Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
501Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
502Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
503Zuhn have made contributions both large and small.
c906108c 504
ffed4509
AC
505Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for
506Cygnus Solutions, implemented the original @sc{gdb/mi} interface.
507
e2e0bcd1
JB
508Jim Blandy added support for preprocessor macros, while working for Red
509Hat.
c906108c 510
a9967aef
AC
511Andrew Cagney designed @value{GDBN}'s architecture vector. Many
512people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick
513Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei
514Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason
515Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped
516with the migration of old architectures to this new framework.
517
c5e30d01
AC
518Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s
519unwinder framework, this consisting of a fresh new design featuring
520frame IDs, independent frame sniffers, and the sentinel frame. Mark
521Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the
522libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and
db2e3e2e 523trad unwinders. The architecture-specific changes, each involving a
c5e30d01
AC
524complete rewrite of the architecture's frame code, were carried out by
525Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane
526Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel
527Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei
528Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich
529Weigand.
530
ca3bf3bd
DJ
531Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from
532Tensilica, Inc.@: contributed support for Xtensa processors. Others
533who have worked on the Xtensa port of @value{GDBN} in the past include
534Steve Tjiang, John Newlin, and Scott Foehner.
535
08be9d71
ME
536Michael Eager and staff of Xilinx, Inc., contributed support for the
537Xilinx MicroBlaze architecture.
538
6d2ebf8b 539@node Sample Session
c906108c
SS
540@chapter A Sample @value{GDBN} Session
541
542You can use this manual at your leisure to read all about @value{GDBN}.
543However, a handful of commands are enough to get started using the
544debugger. This chapter illustrates those commands.
545
546@iftex
547In this sample session, we emphasize user input like this: @b{input},
548to make it easier to pick out from the surrounding output.
549@end iftex
550
551@c FIXME: this example may not be appropriate for some configs, where
552@c FIXME...primary interest is in remote use.
553
554One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
555processor) exhibits the following bug: sometimes, when we change its
556quote strings from the default, the commands used to capture one macro
557definition within another stop working. In the following short @code{m4}
558session, we define a macro @code{foo} which expands to @code{0000}; we
559then use the @code{m4} built-in @code{defn} to define @code{bar} as the
560same thing. However, when we change the open quote string to
561@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
562procedure fails to define a new synonym @code{baz}:
563
564@smallexample
565$ @b{cd gnu/m4}
566$ @b{./m4}
567@b{define(foo,0000)}
568
569@b{foo}
5700000
571@b{define(bar,defn(`foo'))}
572
573@b{bar}
5740000
575@b{changequote(<QUOTE>,<UNQUOTE>)}
576
577@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
578@b{baz}
c8aa23ab 579@b{Ctrl-d}
c906108c
SS
580m4: End of input: 0: fatal error: EOF in string
581@end smallexample
582
583@noindent
584Let us use @value{GDBN} to try to see what is going on.
585
c906108c
SS
586@smallexample
587$ @b{@value{GDBP} m4}
588@c FIXME: this falsifies the exact text played out, to permit smallbook
589@c FIXME... format to come out better.
590@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 591 of it under certain conditions; type "show copying" to see
c906108c 592 the conditions.
5d161b24 593There is absolutely no warranty for @value{GDBN}; type "show warranty"
c906108c
SS
594 for details.
595
596@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
597(@value{GDBP})
598@end smallexample
c906108c
SS
599
600@noindent
601@value{GDBN} reads only enough symbol data to know where to find the
602rest when needed; as a result, the first prompt comes up very quickly.
603We now tell @value{GDBN} to use a narrower display width than usual, so
604that examples fit in this manual.
605
606@smallexample
607(@value{GDBP}) @b{set width 70}
608@end smallexample
609
610@noindent
611We need to see how the @code{m4} built-in @code{changequote} works.
612Having looked at the source, we know the relevant subroutine is
613@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
614@code{break} command.
615
616@smallexample
617(@value{GDBP}) @b{break m4_changequote}
618Breakpoint 1 at 0x62f4: file builtin.c, line 879.
619@end smallexample
620
621@noindent
622Using the @code{run} command, we start @code{m4} running under @value{GDBN}
623control; as long as control does not reach the @code{m4_changequote}
624subroutine, the program runs as usual:
625
626@smallexample
627(@value{GDBP}) @b{run}
628Starting program: /work/Editorial/gdb/gnu/m4/m4
629@b{define(foo,0000)}
630
631@b{foo}
6320000
633@end smallexample
634
635@noindent
636To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
637suspends execution of @code{m4}, displaying information about the
638context where it stops.
639
640@smallexample
641@b{changequote(<QUOTE>,<UNQUOTE>)}
642
5d161b24 643Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
644 at builtin.c:879
645879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
646@end smallexample
647
648@noindent
649Now we use the command @code{n} (@code{next}) to advance execution to
650the next line of the current function.
651
652@smallexample
653(@value{GDBP}) @b{n}
654882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
655 : nil,
656@end smallexample
657
658@noindent
659@code{set_quotes} looks like a promising subroutine. We can go into it
660by using the command @code{s} (@code{step}) instead of @code{next}.
661@code{step} goes to the next line to be executed in @emph{any}
662subroutine, so it steps into @code{set_quotes}.
663
664@smallexample
665(@value{GDBP}) @b{s}
666set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
667 at input.c:530
668530 if (lquote != def_lquote)
669@end smallexample
670
671@noindent
672The display that shows the subroutine where @code{m4} is now
673suspended (and its arguments) is called a stack frame display. It
674shows a summary of the stack. We can use the @code{backtrace}
675command (which can also be spelled @code{bt}), to see where we are
676in the stack as a whole: the @code{backtrace} command displays a
677stack frame for each active subroutine.
678
679@smallexample
680(@value{GDBP}) @b{bt}
681#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
682 at input.c:530
5d161b24 683#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
684 at builtin.c:882
685#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
686#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
687 at macro.c:71
688#4 0x79dc in expand_input () at macro.c:40
689#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
690@end smallexample
691
692@noindent
693We step through a few more lines to see what happens. The first two
694times, we can use @samp{s}; the next two times we use @code{n} to avoid
695falling into the @code{xstrdup} subroutine.
696
697@smallexample
698(@value{GDBP}) @b{s}
6990x3b5c 532 if (rquote != def_rquote)
700(@value{GDBP}) @b{s}
7010x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
702def_lquote : xstrdup(lq);
703(@value{GDBP}) @b{n}
704536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
705 : xstrdup(rq);
706(@value{GDBP}) @b{n}
707538 len_lquote = strlen(rquote);
708@end smallexample
709
710@noindent
711The last line displayed looks a little odd; we can examine the variables
712@code{lquote} and @code{rquote} to see if they are in fact the new left
713and right quotes we specified. We use the command @code{p}
714(@code{print}) to see their values.
715
716@smallexample
717(@value{GDBP}) @b{p lquote}
718$1 = 0x35d40 "<QUOTE>"
719(@value{GDBP}) @b{p rquote}
720$2 = 0x35d50 "<UNQUOTE>"
721@end smallexample
722
723@noindent
724@code{lquote} and @code{rquote} are indeed the new left and right quotes.
725To look at some context, we can display ten lines of source
726surrounding the current line with the @code{l} (@code{list}) command.
727
728@smallexample
729(@value{GDBP}) @b{l}
730533 xfree(rquote);
731534
732535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
733 : xstrdup (lq);
734536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
735 : xstrdup (rq);
736537
737538 len_lquote = strlen(rquote);
738539 len_rquote = strlen(lquote);
739540 @}
740541
741542 void
742@end smallexample
743
744@noindent
745Let us step past the two lines that set @code{len_lquote} and
746@code{len_rquote}, and then examine the values of those variables.
747
748@smallexample
749(@value{GDBP}) @b{n}
750539 len_rquote = strlen(lquote);
751(@value{GDBP}) @b{n}
752540 @}
753(@value{GDBP}) @b{p len_lquote}
754$3 = 9
755(@value{GDBP}) @b{p len_rquote}
756$4 = 7
757@end smallexample
758
759@noindent
760That certainly looks wrong, assuming @code{len_lquote} and
761@code{len_rquote} are meant to be the lengths of @code{lquote} and
762@code{rquote} respectively. We can set them to better values using
763the @code{p} command, since it can print the value of
764any expression---and that expression can include subroutine calls and
765assignments.
766
767@smallexample
768(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
769$5 = 7
770(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
771$6 = 9
772@end smallexample
773
774@noindent
775Is that enough to fix the problem of using the new quotes with the
776@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
777executing with the @code{c} (@code{continue}) command, and then try the
778example that caused trouble initially:
779
780@smallexample
781(@value{GDBP}) @b{c}
782Continuing.
783
784@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
785
786baz
7870000
788@end smallexample
789
790@noindent
791Success! The new quotes now work just as well as the default ones. The
792problem seems to have been just the two typos defining the wrong
793lengths. We allow @code{m4} exit by giving it an EOF as input:
794
795@smallexample
c8aa23ab 796@b{Ctrl-d}
c906108c
SS
797Program exited normally.
798@end smallexample
799
800@noindent
801The message @samp{Program exited normally.} is from @value{GDBN}; it
802indicates @code{m4} has finished executing. We can end our @value{GDBN}
803session with the @value{GDBN} @code{quit} command.
804
805@smallexample
806(@value{GDBP}) @b{quit}
807@end smallexample
c906108c 808
6d2ebf8b 809@node Invocation
c906108c
SS
810@chapter Getting In and Out of @value{GDBN}
811
812This chapter discusses how to start @value{GDBN}, and how to get out of it.
5d161b24 813The essentials are:
c906108c 814@itemize @bullet
5d161b24 815@item
53a5351d 816type @samp{@value{GDBP}} to start @value{GDBN}.
5d161b24 817@item
c8aa23ab 818type @kbd{quit} or @kbd{Ctrl-d} to exit.
c906108c
SS
819@end itemize
820
821@menu
822* Invoking GDB:: How to start @value{GDBN}
823* Quitting GDB:: How to quit @value{GDBN}
824* Shell Commands:: How to use shell commands inside @value{GDBN}
79a6e687 825* Logging Output:: How to log @value{GDBN}'s output to a file
c906108c
SS
826@end menu
827
6d2ebf8b 828@node Invoking GDB
c906108c
SS
829@section Invoking @value{GDBN}
830
c906108c
SS
831Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
832@value{GDBN} reads commands from the terminal until you tell it to exit.
833
834You can also run @code{@value{GDBP}} with a variety of arguments and options,
835to specify more of your debugging environment at the outset.
836
c906108c
SS
837The command-line options described here are designed
838to cover a variety of situations; in some environments, some of these
5d161b24 839options may effectively be unavailable.
c906108c
SS
840
841The most usual way to start @value{GDBN} is with one argument,
842specifying an executable program:
843
474c8240 844@smallexample
c906108c 845@value{GDBP} @var{program}
474c8240 846@end smallexample
c906108c 847
c906108c
SS
848@noindent
849You can also start with both an executable program and a core file
850specified:
851
474c8240 852@smallexample
c906108c 853@value{GDBP} @var{program} @var{core}
474c8240 854@end smallexample
c906108c
SS
855
856You can, instead, specify a process ID as a second argument, if you want
857to debug a running process:
858
474c8240 859@smallexample
c906108c 860@value{GDBP} @var{program} 1234
474c8240 861@end smallexample
c906108c
SS
862
863@noindent
864would attach @value{GDBN} to process @code{1234} (unless you also have a file
865named @file{1234}; @value{GDBN} does check for a core file first).
866
c906108c 867Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
868complete operating system; when you use @value{GDBN} as a remote
869debugger attached to a bare board, there may not be any notion of
870``process'', and there is often no way to get a core dump. @value{GDBN}
871will warn you if it is unable to attach or to read core dumps.
c906108c 872
aa26fa3a
TT
873You can optionally have @code{@value{GDBP}} pass any arguments after the
874executable file to the inferior using @code{--args}. This option stops
875option processing.
474c8240 876@smallexample
3f94c067 877@value{GDBP} --args gcc -O2 -c foo.c
474c8240 878@end smallexample
aa26fa3a
TT
879This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
880@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
881
96a2c332 882You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
883@value{GDBN}'s non-warranty, by specifying @code{-silent}:
884
885@smallexample
886@value{GDBP} -silent
887@end smallexample
888
889@noindent
890You can further control how @value{GDBN} starts up by using command-line
891options. @value{GDBN} itself can remind you of the options available.
892
893@noindent
894Type
895
474c8240 896@smallexample
c906108c 897@value{GDBP} -help
474c8240 898@end smallexample
c906108c
SS
899
900@noindent
901to display all available options and briefly describe their use
902(@samp{@value{GDBP} -h} is a shorter equivalent).
903
904All options and command line arguments you give are processed
905in sequential order. The order makes a difference when the
906@samp{-x} option is used.
907
908
909@menu
c906108c
SS
910* File Options:: Choosing files
911* Mode Options:: Choosing modes
6fc08d32 912* Startup:: What @value{GDBN} does during startup
c906108c
SS
913@end menu
914
6d2ebf8b 915@node File Options
79a6e687 916@subsection Choosing Files
c906108c 917
2df3850c 918When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
919specifying an executable file and core file (or process ID). This is
920the same as if the arguments were specified by the @samp{-se} and
d52fb0e9 921@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the
19837790
MS
922first argument that does not have an associated option flag as
923equivalent to the @samp{-se} option followed by that argument; and the
924second argument that does not have an associated option flag, if any, as
925equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
926If the second argument begins with a decimal digit, @value{GDBN} will
927first attempt to attach to it as a process, and if that fails, attempt
928to open it as a corefile. If you have a corefile whose name begins with
b383017d 929a digit, you can prevent @value{GDBN} from treating it as a pid by
c1468174 930prefixing it with @file{./}, e.g.@: @file{./12345}.
7a292a7a
SS
931
932If @value{GDBN} has not been configured to included core file support,
933such as for most embedded targets, then it will complain about a second
934argument and ignore it.
c906108c
SS
935
936Many options have both long and short forms; both are shown in the
937following list. @value{GDBN} also recognizes the long forms if you truncate
938them, so long as enough of the option is present to be unambiguous.
939(If you prefer, you can flag option arguments with @samp{--} rather
940than @samp{-}, though we illustrate the more usual convention.)
941
d700128c
EZ
942@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
943@c way, both those who look for -foo and --foo in the index, will find
944@c it.
945
c906108c
SS
946@table @code
947@item -symbols @var{file}
948@itemx -s @var{file}
d700128c
EZ
949@cindex @code{--symbols}
950@cindex @code{-s}
c906108c
SS
951Read symbol table from file @var{file}.
952
953@item -exec @var{file}
954@itemx -e @var{file}
d700128c
EZ
955@cindex @code{--exec}
956@cindex @code{-e}
7a292a7a
SS
957Use file @var{file} as the executable file to execute when appropriate,
958and for examining pure data in conjunction with a core dump.
c906108c
SS
959
960@item -se @var{file}
d700128c 961@cindex @code{--se}
c906108c
SS
962Read symbol table from file @var{file} and use it as the executable
963file.
964
c906108c
SS
965@item -core @var{file}
966@itemx -c @var{file}
d700128c
EZ
967@cindex @code{--core}
968@cindex @code{-c}
b383017d 969Use file @var{file} as a core dump to examine.
c906108c 970
19837790
MS
971@item -pid @var{number}
972@itemx -p @var{number}
973@cindex @code{--pid}
974@cindex @code{-p}
975Connect to process ID @var{number}, as with the @code{attach} command.
c906108c
SS
976
977@item -command @var{file}
978@itemx -x @var{file}
d700128c
EZ
979@cindex @code{--command}
980@cindex @code{-x}
95433b34
JB
981Execute commands from file @var{file}. The contents of this file is
982evaluated exactly as the @code{source} command would.
8150ff9c 983@xref{Command Files,, Command files}.
c906108c 984
8a5a3c82
AS
985@item -eval-command @var{command}
986@itemx -ex @var{command}
987@cindex @code{--eval-command}
988@cindex @code{-ex}
989Execute a single @value{GDBN} command.
990
991This option may be used multiple times to call multiple commands. It may
992also be interleaved with @samp{-command} as required.
993
994@smallexample
995@value{GDBP} -ex 'target sim' -ex 'load' \
996 -x setbreakpoints -ex 'run' a.out
997@end smallexample
998
8320cc4f
JK
999@item -init-command @var{file}
1000@itemx -ix @var{file}
1001@cindex @code{--init-command}
1002@cindex @code{-ix}
2d7b58e8
JK
1003Execute commands from file @var{file} before loading the inferior (but
1004after loading gdbinit files).
8320cc4f
JK
1005@xref{Startup}.
1006
1007@item -init-eval-command @var{command}
1008@itemx -iex @var{command}
1009@cindex @code{--init-eval-command}
1010@cindex @code{-iex}
2d7b58e8
JK
1011Execute a single @value{GDBN} command before loading the inferior (but
1012after loading gdbinit files).
8320cc4f
JK
1013@xref{Startup}.
1014
c906108c
SS
1015@item -directory @var{directory}
1016@itemx -d @var{directory}
d700128c
EZ
1017@cindex @code{--directory}
1018@cindex @code{-d}
4b505b12 1019Add @var{directory} to the path to search for source and script files.
c906108c 1020
c906108c
SS
1021@item -r
1022@itemx -readnow
d700128c
EZ
1023@cindex @code{--readnow}
1024@cindex @code{-r}
c906108c
SS
1025Read each symbol file's entire symbol table immediately, rather than
1026the default, which is to read it incrementally as it is needed.
1027This makes startup slower, but makes future operations faster.
53a5351d 1028
c906108c
SS
1029@end table
1030
6d2ebf8b 1031@node Mode Options
79a6e687 1032@subsection Choosing Modes
c906108c
SS
1033
1034You can run @value{GDBN} in various alternative modes---for example, in
1035batch mode or quiet mode.
1036
1037@table @code
bf88dd68 1038@anchor{-nx}
c906108c
SS
1039@item -nx
1040@itemx -n
d700128c
EZ
1041@cindex @code{--nx}
1042@cindex @code{-n}
07540c15
DE
1043Do not execute commands found in any initialization file.
1044There are three init files, loaded in the following order:
1045
1046@table @code
1047@item @file{system.gdbinit}
1048This is the system-wide init file.
1049Its location is specified with the @code{--with-system-gdbinit}
1050configure option (@pxref{System-wide configuration}).
1051It is loaded first when @value{GDBN} starts, before command line options
1052have been processed.
1053@item @file{~/.gdbinit}
1054This is the init file in your home directory.
1055It is loaded next, after @file{system.gdbinit}, and before
1056command options have been processed.
1057@item @file{./.gdbinit}
1058This is the init file in the current directory.
1059It is loaded last, after command line options other than @code{-x} and
1060@code{-ex} have been processed. Command line options @code{-x} and
1061@code{-ex} are processed last, after @file{./.gdbinit} has been loaded.
1062@end table
1063
1064For further documentation on startup processing, @xref{Startup}.
1065For documentation on how to write command files,
1066@xref{Command Files,,Command Files}.
1067
1068@anchor{-nh}
1069@item -nh
1070@cindex @code{--nh}
1071Do not execute commands found in @file{~/.gdbinit}, the init file
1072in your home directory.
1073@xref{Startup}.
c906108c
SS
1074
1075@item -quiet
d700128c 1076@itemx -silent
c906108c 1077@itemx -q
d700128c
EZ
1078@cindex @code{--quiet}
1079@cindex @code{--silent}
1080@cindex @code{-q}
c906108c
SS
1081``Quiet''. Do not print the introductory and copyright messages. These
1082messages are also suppressed in batch mode.
1083
1084@item -batch
d700128c 1085@cindex @code{--batch}
c906108c
SS
1086Run in batch mode. Exit with status @code{0} after processing all the
1087command files specified with @samp{-x} (and all commands from
1088initialization files, if not inhibited with @samp{-n}). Exit with
1089nonzero status if an error occurs in executing the @value{GDBN} commands
5da1313b
JK
1090in the command files. Batch mode also disables pagination, sets unlimited
1091terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm
1092off} were in effect (@pxref{Messages/Warnings}).
c906108c 1093
2df3850c
JM
1094Batch mode may be useful for running @value{GDBN} as a filter, for
1095example to download and run a program on another computer; in order to
1096make this more useful, the message
c906108c 1097
474c8240 1098@smallexample
c906108c 1099Program exited normally.
474c8240 1100@end smallexample
c906108c
SS
1101
1102@noindent
2df3850c
JM
1103(which is ordinarily issued whenever a program running under
1104@value{GDBN} control terminates) is not issued when running in batch
1105mode.
1106
1a088d06
AS
1107@item -batch-silent
1108@cindex @code{--batch-silent}
1109Run in batch mode exactly like @samp{-batch}, but totally silently. All
1110@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
1111unaffected). This is much quieter than @samp{-silent} and would be useless
1112for an interactive session.
1113
1114This is particularly useful when using targets that give @samp{Loading section}
1115messages, for example.
1116
1117Note that targets that give their output via @value{GDBN}, as opposed to
1118writing directly to @code{stdout}, will also be made silent.
1119
4b0ad762
AS
1120@item -return-child-result
1121@cindex @code{--return-child-result}
1122The return code from @value{GDBN} will be the return code from the child
1123process (the process being debugged), with the following exceptions:
1124
1125@itemize @bullet
1126@item
1127@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an
1128internal error. In this case the exit code is the same as it would have been
1129without @samp{-return-child-result}.
1130@item
1131The user quits with an explicit value. E.g., @samp{quit 1}.
1132@item
1133The child process never runs, or is not allowed to terminate, in which case
1134the exit code will be -1.
1135@end itemize
1136
1137This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
1138when @value{GDBN} is being used as a remote program loader or simulator
1139interface.
1140
2df3850c
JM
1141@item -nowindows
1142@itemx -nw
d700128c
EZ
1143@cindex @code{--nowindows}
1144@cindex @code{-nw}
2df3850c 1145``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 1146(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
1147interface. If no GUI is available, this option has no effect.
1148
1149@item -windows
1150@itemx -w
d700128c
EZ
1151@cindex @code{--windows}
1152@cindex @code{-w}
2df3850c
JM
1153If @value{GDBN} includes a GUI, then this option requires it to be
1154used if possible.
c906108c
SS
1155
1156@item -cd @var{directory}
d700128c 1157@cindex @code{--cd}
c906108c
SS
1158Run @value{GDBN} using @var{directory} as its working directory,
1159instead of the current directory.
1160
aae1c79a
DE
1161@item -data-directory @var{directory}
1162@cindex @code{--data-directory}
1163Run @value{GDBN} using @var{directory} as its data directory.
1164The data directory is where @value{GDBN} searches for its
1165auxiliary files. @xref{Data Files}.
1166
c906108c
SS
1167@item -fullname
1168@itemx -f
d700128c
EZ
1169@cindex @code{--fullname}
1170@cindex @code{-f}
7a292a7a
SS
1171@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1172subprocess. It tells @value{GDBN} to output the full file name and line
1173number in a standard, recognizable fashion each time a stack frame is
1174displayed (which includes each time your program stops). This
1175recognizable format looks like two @samp{\032} characters, followed by
1176the file name, line number and character position separated by colons,
1177and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1178@samp{\032} characters as a signal to display the source code for the
1179frame.
c906108c 1180
d700128c
EZ
1181@item -epoch
1182@cindex @code{--epoch}
1183The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1184@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1185routines so as to allow Epoch to display values of expressions in a
1186separate window.
1187
1188@item -annotate @var{level}
1189@cindex @code{--annotate}
1190This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1191effect is identical to using @samp{set annotate @var{level}}
086432e2
AC
1192(@pxref{Annotations}). The annotation @var{level} controls how much
1193information @value{GDBN} prints together with its prompt, values of
1194expressions, source lines, and other types of output. Level 0 is the
1195normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1196@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1197that control @value{GDBN}, and level 2 has been deprecated.
1198
265eeb58 1199The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2 1200(@pxref{GDB/MI}).
d700128c 1201
aa26fa3a
TT
1202@item --args
1203@cindex @code{--args}
1204Change interpretation of command line so that arguments following the
1205executable file are passed as command line arguments to the inferior.
1206This option stops option processing.
1207
2df3850c
JM
1208@item -baud @var{bps}
1209@itemx -b @var{bps}
d700128c
EZ
1210@cindex @code{--baud}
1211@cindex @code{-b}
c906108c
SS
1212Set the line speed (baud rate or bits per second) of any serial
1213interface used by @value{GDBN} for remote debugging.
c906108c 1214
f47b1503
AS
1215@item -l @var{timeout}
1216@cindex @code{-l}
1217Set the timeout (in seconds) of any communication used by @value{GDBN}
1218for remote debugging.
1219
c906108c 1220@item -tty @var{device}
d700128c
EZ
1221@itemx -t @var{device}
1222@cindex @code{--tty}
1223@cindex @code{-t}
c906108c
SS
1224Run using @var{device} for your program's standard input and output.
1225@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1226
53a5351d 1227@c resolve the situation of these eventually
c4555f82
SC
1228@item -tui
1229@cindex @code{--tui}
d0d5df6f
AC
1230Activate the @dfn{Text User Interface} when starting. The Text User
1231Interface manages several text windows on the terminal, showing
1232source, assembly, registers and @value{GDBN} command outputs
217bff3e
JK
1233(@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this
1234option if you run @value{GDBN} from Emacs (@pxref{Emacs, ,
1235Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1236
1237@c @item -xdb
d700128c 1238@c @cindex @code{--xdb}
53a5351d
JM
1239@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1240@c For information, see the file @file{xdb_trans.html}, which is usually
1241@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1242@c systems.
1243
d700128c
EZ
1244@item -interpreter @var{interp}
1245@cindex @code{--interpreter}
1246Use the interpreter @var{interp} for interface with the controlling
1247program or device. This option is meant to be set by programs which
94bbb2c0 1248communicate with @value{GDBN} using it as a back end.
21c294e6 1249@xref{Interpreters, , Command Interpreters}.
94bbb2c0 1250
da0f9dcd 1251@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
2fcf52f0 1252@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
6b5e8c01 1253The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The
6c74ac8b
AC
1254previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1255selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1256@sc{gdb/mi} interfaces are no longer supported.
d700128c
EZ
1257
1258@item -write
1259@cindex @code{--write}
1260Open the executable and core files for both reading and writing. This
1261is equivalent to the @samp{set write on} command inside @value{GDBN}
1262(@pxref{Patching}).
1263
1264@item -statistics
1265@cindex @code{--statistics}
1266This option causes @value{GDBN} to print statistics about time and
1267memory usage after it completes each command and returns to the prompt.
1268
1269@item -version
1270@cindex @code{--version}
1271This option causes @value{GDBN} to print its version number and
1272no-warranty blurb, and exit.
1273
c906108c
SS
1274@end table
1275
6fc08d32 1276@node Startup
79a6e687 1277@subsection What @value{GDBN} Does During Startup
6fc08d32
EZ
1278@cindex @value{GDBN} startup
1279
1280Here's the description of what @value{GDBN} does during session startup:
1281
1282@enumerate
1283@item
1284Sets up the command interpreter as specified by the command line
1285(@pxref{Mode Options, interpreter}).
1286
1287@item
1288@cindex init file
098b41a6
JG
1289Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was
1290used when building @value{GDBN}; @pxref{System-wide configuration,
1291 ,System-wide configuration and settings}) and executes all the commands in
1292that file.
1293
bf88dd68 1294@anchor{Home Directory Init File}
098b41a6
JG
1295@item
1296Reads the init file (if any) in your home directory@footnote{On
6fc08d32
EZ
1297DOS/Windows systems, the home directory is the one pointed to by the
1298@code{HOME} environment variable.} and executes all the commands in
1299that file.
1300
2d7b58e8
JK
1301@anchor{Option -init-eval-command}
1302@item
1303Executes commands and command files specified by the @samp{-iex} and
1304@samp{-ix} options in their specified order. Usually you should use the
1305@samp{-ex} and @samp{-x} options instead, but this way you can apply
1306settings before @value{GDBN} init files get executed and before inferior
1307gets loaded.
1308
6fc08d32
EZ
1309@item
1310Processes command line options and operands.
1311
bf88dd68 1312@anchor{Init File in the Current Directory during Startup}
6fc08d32
EZ
1313@item
1314Reads and executes the commands from init file (if any) in the current
bf88dd68
JK
1315working directory as long as @samp{set auto-load local-gdbinit} is set to
1316@samp{on} (@pxref{Init File in the Current Directory}).
1317This is only done if the current directory is
119b882a
EZ
1318different from your home directory. Thus, you can have more than one
1319init file, one generic in your home directory, and another, specific
1320to the program you are debugging, in the directory where you invoke
6fc08d32
EZ
1321@value{GDBN}.
1322
a86caf66
DE
1323@item
1324If the command line specified a program to debug, or a process to
1325attach to, or a core file, @value{GDBN} loads any auto-loaded
1326scripts provided for the program or for its loaded shared libraries.
1327@xref{Auto-loading}.
1328
1329If you wish to disable the auto-loading during startup,
1330you must do something like the following:
1331
1332@smallexample
bf88dd68 1333$ gdb -iex "set auto-load python-scripts off" myprogram
a86caf66
DE
1334@end smallexample
1335
8320cc4f
JK
1336Option @samp{-ex} does not work because the auto-loading is then turned
1337off too late.
a86caf66 1338
6fc08d32 1339@item
6fe37d23
JK
1340Executes commands and command files specified by the @samp{-ex} and
1341@samp{-x} options in their specified order. @xref{Command Files}, for
1342more details about @value{GDBN} command files.
6fc08d32
EZ
1343
1344@item
1345Reads the command history recorded in the @dfn{history file}.
d620b259 1346@xref{Command History}, for more details about the command history and the
6fc08d32
EZ
1347files where @value{GDBN} records it.
1348@end enumerate
1349
1350Init files use the same syntax as @dfn{command files} (@pxref{Command
1351Files}) and are processed by @value{GDBN} in the same way. The init
1352file in your home directory can set options (such as @samp{set
1353complaints}) that affect subsequent processing of command line options
1354and operands. Init files are not executed if you use the @samp{-nx}
79a6e687 1355option (@pxref{Mode Options, ,Choosing Modes}).
6fc08d32 1356
098b41a6
JG
1357To display the list of init files loaded by gdb at startup, you
1358can use @kbd{gdb --help}.
1359
6fc08d32
EZ
1360@cindex init file name
1361@cindex @file{.gdbinit}
119b882a 1362@cindex @file{gdb.ini}
8807d78b 1363The @value{GDBN} init files are normally called @file{.gdbinit}.
119b882a
EZ
1364The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to
1365the limitations of file names imposed by DOS filesystems. The Windows
4d3f93a2
JB
1366port of @value{GDBN} uses the standard name, but if it finds a
1367@file{gdb.ini} file in your home directory, it warns you about that
1368and suggests to rename the file to the standard name.
119b882a 1369
6fc08d32 1370
6d2ebf8b 1371@node Quitting GDB
c906108c
SS
1372@section Quitting @value{GDBN}
1373@cindex exiting @value{GDBN}
1374@cindex leaving @value{GDBN}
1375
1376@table @code
1377@kindex quit @r{[}@var{expression}@r{]}
41afff9a 1378@kindex q @r{(@code{quit})}
96a2c332
SS
1379@item quit @r{[}@var{expression}@r{]}
1380@itemx q
1381To exit @value{GDBN}, use the @code{quit} command (abbreviated
c8aa23ab 1382@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you
96a2c332
SS
1383do not supply @var{expression}, @value{GDBN} will terminate normally;
1384otherwise it will terminate using the result of @var{expression} as the
1385error code.
c906108c
SS
1386@end table
1387
1388@cindex interrupt
c8aa23ab 1389An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather
c906108c
SS
1390terminates the action of any @value{GDBN} command that is in progress and
1391returns to @value{GDBN} command level. It is safe to type the interrupt
1392character at any time because @value{GDBN} does not allow it to take effect
1393until a time when it is safe.
1394
c906108c
SS
1395If you have been using @value{GDBN} to control an attached process or
1396device, you can release it with the @code{detach} command
79a6e687 1397(@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 1398
6d2ebf8b 1399@node Shell Commands
79a6e687 1400@section Shell Commands
c906108c
SS
1401
1402If you need to execute occasional shell commands during your
1403debugging session, there is no need to leave or suspend @value{GDBN}; you can
1404just use the @code{shell} command.
1405
1406@table @code
1407@kindex shell
ed59ded5 1408@kindex !
c906108c 1409@cindex shell escape
ed59ded5
DE
1410@item shell @var{command-string}
1411@itemx !@var{command-string}
1412Invoke a standard shell to execute @var{command-string}.
1413Note that no space is needed between @code{!} and @var{command-string}.
c906108c 1414If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1415shell to run. Otherwise @value{GDBN} uses the default shell
1416(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1417@end table
1418
1419The utility @code{make} is often needed in development environments.
1420You do not have to use the @code{shell} command for this purpose in
1421@value{GDBN}:
1422
1423@table @code
1424@kindex make
1425@cindex calling make
1426@item make @var{make-args}
1427Execute the @code{make} program with the specified
1428arguments. This is equivalent to @samp{shell make @var{make-args}}.
1429@end table
1430
79a6e687
BW
1431@node Logging Output
1432@section Logging Output
0fac0b41 1433@cindex logging @value{GDBN} output
9c16f35a 1434@cindex save @value{GDBN} output to a file
0fac0b41
DJ
1435
1436You may want to save the output of @value{GDBN} commands to a file.
1437There are several commands to control @value{GDBN}'s logging.
1438
1439@table @code
1440@kindex set logging
1441@item set logging on
1442Enable logging.
1443@item set logging off
1444Disable logging.
9c16f35a 1445@cindex logging file name
0fac0b41
DJ
1446@item set logging file @var{file}
1447Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1448@item set logging overwrite [on|off]
1449By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1450you want @code{set logging on} to overwrite the logfile instead.
1451@item set logging redirect [on|off]
1452By default, @value{GDBN} output will go to both the terminal and the logfile.
1453Set @code{redirect} if you want output to go only to the log file.
1454@kindex show logging
1455@item show logging
1456Show the current values of the logging settings.
1457@end table
1458
6d2ebf8b 1459@node Commands
c906108c
SS
1460@chapter @value{GDBN} Commands
1461
1462You can abbreviate a @value{GDBN} command to the first few letters of the command
1463name, if that abbreviation is unambiguous; and you can repeat certain
1464@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1465key to get @value{GDBN} to fill out the rest of a word in a command (or to
1466show you the alternatives available, if there is more than one possibility).
1467
1468@menu
1469* Command Syntax:: How to give commands to @value{GDBN}
1470* Completion:: Command completion
1471* Help:: How to ask @value{GDBN} for help
1472@end menu
1473
6d2ebf8b 1474@node Command Syntax
79a6e687 1475@section Command Syntax
c906108c
SS
1476
1477A @value{GDBN} command is a single line of input. There is no limit on
1478how long it can be. It starts with a command name, which is followed by
1479arguments whose meaning depends on the command name. For example, the
1480command @code{step} accepts an argument which is the number of times to
1481step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1482with no arguments. Some commands do not allow any arguments.
c906108c
SS
1483
1484@cindex abbreviation
1485@value{GDBN} command names may always be truncated if that abbreviation is
1486unambiguous. Other possible command abbreviations are listed in the
1487documentation for individual commands. In some cases, even ambiguous
1488abbreviations are allowed; for example, @code{s} is specially defined as
1489equivalent to @code{step} even though there are other commands whose
1490names start with @code{s}. You can test abbreviations by using them as
1491arguments to the @code{help} command.
1492
1493@cindex repeating commands
41afff9a 1494@kindex RET @r{(repeat last command)}
c906108c 1495A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1496repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1497will not repeat this way; these are commands whose unintentional
1498repetition might cause trouble and which you are unlikely to want to
c45da7e6
EZ
1499repeat. User-defined commands can disable this feature; see
1500@ref{Define, dont-repeat}.
c906108c
SS
1501
1502The @code{list} and @code{x} commands, when you repeat them with
1503@key{RET}, construct new arguments rather than repeating
1504exactly as typed. This permits easy scanning of source or memory.
1505
1506@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1507output, in a way similar to the common utility @code{more}
79a6e687 1508(@pxref{Screen Size,,Screen Size}). Since it is easy to press one
c906108c
SS
1509@key{RET} too many in this situation, @value{GDBN} disables command
1510repetition after any command that generates this sort of display.
1511
41afff9a 1512@kindex # @r{(a comment)}
c906108c
SS
1513@cindex comment
1514Any text from a @kbd{#} to the end of the line is a comment; it does
1515nothing. This is useful mainly in command files (@pxref{Command
79a6e687 1516Files,,Command Files}).
c906108c 1517
88118b3a 1518@cindex repeating command sequences
c8aa23ab
EZ
1519@kindex Ctrl-o @r{(operate-and-get-next)}
1520The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of
7f9087cb 1521commands. This command accepts the current line, like @key{RET}, and
88118b3a
TT
1522then fetches the next line relative to the current line from the history
1523for editing.
1524
6d2ebf8b 1525@node Completion
79a6e687 1526@section Command Completion
c906108c
SS
1527
1528@cindex completion
1529@cindex word completion
1530@value{GDBN} can fill in the rest of a word in a command for you, if there is
1531only one possibility; it can also show you what the valid possibilities
1532are for the next word in a command, at any time. This works for @value{GDBN}
1533commands, @value{GDBN} subcommands, and the names of symbols in your program.
1534
1535Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1536of a word. If there is only one possibility, @value{GDBN} fills in the
1537word, and waits for you to finish the command (or press @key{RET} to
1538enter it). For example, if you type
1539
1540@c FIXME "@key" does not distinguish its argument sufficiently to permit
1541@c complete accuracy in these examples; space introduced for clarity.
1542@c If texinfo enhancements make it unnecessary, it would be nice to
1543@c replace " @key" by "@key" in the following...
474c8240 1544@smallexample
c906108c 1545(@value{GDBP}) info bre @key{TAB}
474c8240 1546@end smallexample
c906108c
SS
1547
1548@noindent
1549@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1550the only @code{info} subcommand beginning with @samp{bre}:
1551
474c8240 1552@smallexample
c906108c 1553(@value{GDBP}) info breakpoints
474c8240 1554@end smallexample
c906108c
SS
1555
1556@noindent
1557You can either press @key{RET} at this point, to run the @code{info
1558breakpoints} command, or backspace and enter something else, if
1559@samp{breakpoints} does not look like the command you expected. (If you
1560were sure you wanted @code{info breakpoints} in the first place, you
1561might as well just type @key{RET} immediately after @samp{info bre},
1562to exploit command abbreviations rather than command completion).
1563
1564If there is more than one possibility for the next word when you press
1565@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1566characters and try again, or just press @key{TAB} a second time;
1567@value{GDBN} displays all the possible completions for that word. For
1568example, you might want to set a breakpoint on a subroutine whose name
1569begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1570just sounds the bell. Typing @key{TAB} again displays all the
1571function names in your program that begin with those characters, for
1572example:
1573
474c8240 1574@smallexample
c906108c
SS
1575(@value{GDBP}) b make_ @key{TAB}
1576@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1577make_a_section_from_file make_environ
1578make_abs_section make_function_type
1579make_blockvector make_pointer_type
1580make_cleanup make_reference_type
c906108c
SS
1581make_command make_symbol_completion_list
1582(@value{GDBP}) b make_
474c8240 1583@end smallexample
c906108c
SS
1584
1585@noindent
1586After displaying the available possibilities, @value{GDBN} copies your
1587partial input (@samp{b make_} in the example) so you can finish the
1588command.
1589
1590If you just want to see the list of alternatives in the first place, you
b37052ae 1591can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1592means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1593key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1594one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1595
1596@cindex quotes in commands
1597@cindex completion of quoted strings
1598Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1599parentheses or other characters that @value{GDBN} normally excludes from
1600its notion of a word. To permit word completion to work in this
1601situation, you may enclose words in @code{'} (single quote marks) in
1602@value{GDBN} commands.
c906108c 1603
c906108c 1604The most likely situation where you might need this is in typing the
b37052ae
EZ
1605name of a C@t{++} function. This is because C@t{++} allows function
1606overloading (multiple definitions of the same function, distinguished
1607by argument type). For example, when you want to set a breakpoint you
1608may need to distinguish whether you mean the version of @code{name}
1609that takes an @code{int} parameter, @code{name(int)}, or the version
1610that takes a @code{float} parameter, @code{name(float)}. To use the
1611word-completion facilities in this situation, type a single quote
1612@code{'} at the beginning of the function name. This alerts
1613@value{GDBN} that it may need to consider more information than usual
1614when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c 1615
474c8240 1616@smallexample
96a2c332 1617(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1618bubble(double,double) bubble(int,int)
1619(@value{GDBP}) b 'bubble(
474c8240 1620@end smallexample
c906108c
SS
1621
1622In some cases, @value{GDBN} can tell that completing a name requires using
1623quotes. When this happens, @value{GDBN} inserts the quote for you (while
1624completing as much as it can) if you do not type the quote in the first
1625place:
1626
474c8240 1627@smallexample
c906108c
SS
1628(@value{GDBP}) b bub @key{TAB}
1629@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1630(@value{GDBP}) b 'bubble(
474c8240 1631@end smallexample
c906108c
SS
1632
1633@noindent
1634In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1635you have not yet started typing the argument list when you ask for
1636completion on an overloaded symbol.
1637
79a6e687
BW
1638For more information about overloaded functions, see @ref{C Plus Plus
1639Expressions, ,C@t{++} Expressions}. You can use the command @code{set
c906108c 1640overload-resolution off} to disable overload resolution;
79a6e687 1641see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}.
c906108c 1642
65d12d83
TT
1643@cindex completion of structure field names
1644@cindex structure field name completion
1645@cindex completion of union field names
1646@cindex union field name completion
1647When completing in an expression which looks up a field in a
1648structure, @value{GDBN} also tries@footnote{The completer can be
1649confused by certain kinds of invalid expressions. Also, it only
1650examines the static type of the expression, not the dynamic type.} to
1651limit completions to the field names available in the type of the
1652left-hand-side:
1653
1654@smallexample
1655(@value{GDBP}) p gdb_stdout.@kbd{M-?}
01124a23
DE
1656magic to_fputs to_rewind
1657to_data to_isatty to_write
1658to_delete to_put to_write_async_safe
1659to_flush to_read
65d12d83
TT
1660@end smallexample
1661
1662@noindent
1663This is because the @code{gdb_stdout} is a variable of the type
1664@code{struct ui_file} that is defined in @value{GDBN} sources as
1665follows:
1666
1667@smallexample
1668struct ui_file
1669@{
1670 int *magic;
1671 ui_file_flush_ftype *to_flush;
1672 ui_file_write_ftype *to_write;
01124a23 1673 ui_file_write_async_safe_ftype *to_write_async_safe;
65d12d83
TT
1674 ui_file_fputs_ftype *to_fputs;
1675 ui_file_read_ftype *to_read;
1676 ui_file_delete_ftype *to_delete;
1677 ui_file_isatty_ftype *to_isatty;
1678 ui_file_rewind_ftype *to_rewind;
1679 ui_file_put_ftype *to_put;
1680 void *to_data;
1681@}
1682@end smallexample
1683
c906108c 1684
6d2ebf8b 1685@node Help
79a6e687 1686@section Getting Help
c906108c
SS
1687@cindex online documentation
1688@kindex help
1689
5d161b24 1690You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1691using the command @code{help}.
1692
1693@table @code
41afff9a 1694@kindex h @r{(@code{help})}
c906108c
SS
1695@item help
1696@itemx h
1697You can use @code{help} (abbreviated @code{h}) with no arguments to
1698display a short list of named classes of commands:
1699
1700@smallexample
1701(@value{GDBP}) help
1702List of classes of commands:
1703
2df3850c 1704aliases -- Aliases of other commands
c906108c 1705breakpoints -- Making program stop at certain points
2df3850c 1706data -- Examining data
c906108c 1707files -- Specifying and examining files
2df3850c
JM
1708internals -- Maintenance commands
1709obscure -- Obscure features
1710running -- Running the program
1711stack -- Examining the stack
c906108c
SS
1712status -- Status inquiries
1713support -- Support facilities
12c27660 1714tracepoints -- Tracing of program execution without
96a2c332 1715 stopping the program
c906108c 1716user-defined -- User-defined commands
c906108c 1717
5d161b24 1718Type "help" followed by a class name for a list of
c906108c 1719commands in that class.
5d161b24 1720Type "help" followed by command name for full
c906108c
SS
1721documentation.
1722Command name abbreviations are allowed if unambiguous.
1723(@value{GDBP})
1724@end smallexample
96a2c332 1725@c the above line break eliminates huge line overfull...
c906108c
SS
1726
1727@item help @var{class}
1728Using one of the general help classes as an argument, you can get a
1729list of the individual commands in that class. For example, here is the
1730help display for the class @code{status}:
1731
1732@smallexample
1733(@value{GDBP}) help status
1734Status inquiries.
1735
1736List of commands:
1737
1738@c Line break in "show" line falsifies real output, but needed
1739@c to fit in smallbook page size.
2df3850c 1740info -- Generic command for showing things
12c27660 1741 about the program being debugged
2df3850c 1742show -- Generic command for showing things
12c27660 1743 about the debugger
c906108c 1744
5d161b24 1745Type "help" followed by command name for full
c906108c
SS
1746documentation.
1747Command name abbreviations are allowed if unambiguous.
1748(@value{GDBP})
1749@end smallexample
1750
1751@item help @var{command}
1752With a command name as @code{help} argument, @value{GDBN} displays a
1753short paragraph on how to use that command.
1754
6837a0a2
DB
1755@kindex apropos
1756@item apropos @var{args}
09d4efe1 1757The @code{apropos} command searches through all of the @value{GDBN}
6837a0a2 1758commands, and their documentation, for the regular expression specified in
99e008fe 1759@var{args}. It prints out all matches found. For example:
6837a0a2
DB
1760
1761@smallexample
16899756 1762apropos alias
6837a0a2
DB
1763@end smallexample
1764
b37052ae
EZ
1765@noindent
1766results in:
6837a0a2
DB
1767
1768@smallexample
6d2ebf8b 1769@c @group
16899756
DE
1770alias -- Define a new command that is an alias of an existing command
1771aliases -- Aliases of other commands
1772d -- Delete some breakpoints or auto-display expressions
1773del -- Delete some breakpoints or auto-display expressions
1774delete -- Delete some breakpoints or auto-display expressions
6d2ebf8b 1775@c @end group
6837a0a2
DB
1776@end smallexample
1777
c906108c
SS
1778@kindex complete
1779@item complete @var{args}
1780The @code{complete @var{args}} command lists all the possible completions
1781for the beginning of a command. Use @var{args} to specify the beginning of the
1782command you want completed. For example:
1783
1784@smallexample
1785complete i
1786@end smallexample
1787
1788@noindent results in:
1789
1790@smallexample
1791@group
2df3850c
JM
1792if
1793ignore
c906108c
SS
1794info
1795inspect
c906108c
SS
1796@end group
1797@end smallexample
1798
1799@noindent This is intended for use by @sc{gnu} Emacs.
1800@end table
1801
1802In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1803and @code{show} to inquire about the state of your program, or the state
1804of @value{GDBN} itself. Each command supports many topics of inquiry; this
1805manual introduces each of them in the appropriate context. The listings
00595b5e
EZ
1806under @code{info} and under @code{show} in the Command, Variable, and
1807Function Index point to all the sub-commands. @xref{Command and Variable
1808Index}.
c906108c
SS
1809
1810@c @group
1811@table @code
1812@kindex info
41afff9a 1813@kindex i @r{(@code{info})}
c906108c
SS
1814@item info
1815This command (abbreviated @code{i}) is for describing the state of your
cda4ce5a 1816program. For example, you can show the arguments passed to a function
c906108c
SS
1817with @code{info args}, list the registers currently in use with @code{info
1818registers}, or list the breakpoints you have set with @code{info breakpoints}.
1819You can get a complete list of the @code{info} sub-commands with
1820@w{@code{help info}}.
1821
1822@kindex set
1823@item set
5d161b24 1824You can assign the result of an expression to an environment variable with
c906108c
SS
1825@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1826@code{set prompt $}.
1827
1828@kindex show
1829@item show
5d161b24 1830In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1831@value{GDBN} itself.
1832You can change most of the things you can @code{show}, by using the
1833related command @code{set}; for example, you can control what number
1834system is used for displays with @code{set radix}, or simply inquire
1835which is currently in use with @code{show radix}.
1836
1837@kindex info set
1838To display all the settable parameters and their current
1839values, you can use @code{show} with no arguments; you may also use
1840@code{info set}. Both commands produce the same display.
1841@c FIXME: "info set" violates the rule that "info" is for state of
1842@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1843@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1844@end table
1845@c @end group
1846
1847Here are three miscellaneous @code{show} subcommands, all of which are
1848exceptional in lacking corresponding @code{set} commands:
1849
1850@table @code
1851@kindex show version
9c16f35a 1852@cindex @value{GDBN} version number
c906108c
SS
1853@item show version
1854Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1855information in @value{GDBN} bug-reports. If multiple versions of
1856@value{GDBN} are in use at your site, you may need to determine which
1857version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1858commands are introduced, and old ones may wither away. Also, many
1859system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1860variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1861The version number is the same as the one announced when you start
1862@value{GDBN}.
c906108c
SS
1863
1864@kindex show copying
09d4efe1 1865@kindex info copying
9c16f35a 1866@cindex display @value{GDBN} copyright
c906108c 1867@item show copying
09d4efe1 1868@itemx info copying
c906108c
SS
1869Display information about permission for copying @value{GDBN}.
1870
1871@kindex show warranty
09d4efe1 1872@kindex info warranty
c906108c 1873@item show warranty
09d4efe1 1874@itemx info warranty
2df3850c 1875Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1876if your version of @value{GDBN} comes with one.
2df3850c 1877
c906108c
SS
1878@end table
1879
6d2ebf8b 1880@node Running
c906108c
SS
1881@chapter Running Programs Under @value{GDBN}
1882
1883When you run a program under @value{GDBN}, you must first generate
1884debugging information when you compile it.
7a292a7a
SS
1885
1886You may start @value{GDBN} with its arguments, if any, in an environment
1887of your choice. If you are doing native debugging, you may redirect
1888your program's input and output, debug an already running process, or
1889kill a child process.
c906108c
SS
1890
1891@menu
1892* Compilation:: Compiling for debugging
1893* Starting:: Starting your program
c906108c
SS
1894* Arguments:: Your program's arguments
1895* Environment:: Your program's environment
c906108c
SS
1896
1897* Working Directory:: Your program's working directory
1898* Input/Output:: Your program's input and output
1899* Attach:: Debugging an already-running process
1900* Kill Process:: Killing the child process
c906108c 1901
6c95b8df 1902* Inferiors and Programs:: Debugging multiple inferiors and programs
c906108c 1903* Threads:: Debugging programs with multiple threads
6c95b8df 1904* Forks:: Debugging forks
5c95884b 1905* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later
c906108c
SS
1906@end menu
1907
6d2ebf8b 1908@node Compilation
79a6e687 1909@section Compiling for Debugging
c906108c
SS
1910
1911In order to debug a program effectively, you need to generate
1912debugging information when you compile it. This debugging information
1913is stored in the object file; it describes the data type of each
1914variable or function and the correspondence between source line numbers
1915and addresses in the executable code.
1916
1917To request debugging information, specify the @samp{-g} option when you run
1918the compiler.
1919
514c4d71 1920Programs that are to be shipped to your customers are compiled with
edb3359d 1921optimizations, using the @samp{-O} compiler option. However, some
514c4d71
EZ
1922compilers are unable to handle the @samp{-g} and @samp{-O} options
1923together. Using those compilers, you cannot generate optimized
c906108c
SS
1924executables containing debugging information.
1925
514c4d71 1926@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or
53a5351d
JM
1927without @samp{-O}, making it possible to debug optimized code. We
1928recommend that you @emph{always} use @samp{-g} whenever you compile a
1929program. You may think your program is correct, but there is no sense
edb3359d 1930in pushing your luck. For more information, see @ref{Optimized Code}.
c906108c
SS
1931
1932Older versions of the @sc{gnu} C compiler permitted a variant option
1933@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1934format; if your @sc{gnu} C compiler has this option, do not use it.
1935
514c4d71
EZ
1936@value{GDBN} knows about preprocessor macros and can show you their
1937expansion (@pxref{Macros}). Most compilers do not include information
1938about preprocessor macros in the debugging information if you specify
e0f8f636
TT
1939the @option{-g} flag alone. Version 3.1 and later of @value{NGCC},
1940the @sc{gnu} C compiler, provides macro information if you are using
1941the DWARF debugging format, and specify the option @option{-g3}.
1942
1943@xref{Debugging Options,,Options for Debugging Your Program or GCC,
1944gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}, for more
1945information on @value{NGCC} options affecting debug information.
1946
1947You will have the best debugging experience if you use the latest
1948version of the DWARF debugging format that your compiler supports.
1949DWARF is currently the most expressive and best supported debugging
1950format in @value{GDBN}.
514c4d71 1951
c906108c 1952@need 2000
6d2ebf8b 1953@node Starting
79a6e687 1954@section Starting your Program
c906108c
SS
1955@cindex starting
1956@cindex running
1957
1958@table @code
1959@kindex run
41afff9a 1960@kindex r @r{(@code{run})}
c906108c
SS
1961@item run
1962@itemx r
7a292a7a
SS
1963Use the @code{run} command to start your program under @value{GDBN}.
1964You must first specify the program name (except on VxWorks) with an
1965argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1966@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
79a6e687 1967(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
1968
1969@end table
1970
c906108c
SS
1971If you are running your program in an execution environment that
1972supports processes, @code{run} creates an inferior process and makes
8edfe269
DJ
1973that process run your program. In some environments without processes,
1974@code{run} jumps to the start of your program. Other targets,
1975like @samp{remote}, are always running. If you get an error
1976message like this one:
1977
1978@smallexample
1979The "remote" target does not support "run".
1980Try "help target" or "continue".
1981@end smallexample
1982
1983@noindent
1984then use @code{continue} to run your program. You may need @code{load}
1985first (@pxref{load}).
c906108c
SS
1986
1987The execution of a program is affected by certain information it
1988receives from its superior. @value{GDBN} provides ways to specify this
1989information, which you must do @emph{before} starting your program. (You
1990can change it after starting your program, but such changes only affect
1991your program the next time you start it.) This information may be
1992divided into four categories:
1993
1994@table @asis
1995@item The @emph{arguments.}
1996Specify the arguments to give your program as the arguments of the
1997@code{run} command. If a shell is available on your target, the shell
1998is used to pass the arguments, so that you may use normal conventions
1999(such as wildcard expansion or variable substitution) in describing
2000the arguments.
2001In Unix systems, you can control which shell is used with the
2002@code{SHELL} environment variable.
79a6e687 2003@xref{Arguments, ,Your Program's Arguments}.
c906108c
SS
2004
2005@item The @emph{environment.}
2006Your program normally inherits its environment from @value{GDBN}, but you can
2007use the @value{GDBN} commands @code{set environment} and @code{unset
2008environment} to change parts of the environment that affect
79a6e687 2009your program. @xref{Environment, ,Your Program's Environment}.
c906108c
SS
2010
2011@item The @emph{working directory.}
2012Your program inherits its working directory from @value{GDBN}. You can set
2013the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
79a6e687 2014@xref{Working Directory, ,Your Program's Working Directory}.
c906108c
SS
2015
2016@item The @emph{standard input and output.}
2017Your program normally uses the same device for standard input and
2018standard output as @value{GDBN} is using. You can redirect input and output
2019in the @code{run} command line, or you can use the @code{tty} command to
2020set a different device for your program.
79a6e687 2021@xref{Input/Output, ,Your Program's Input and Output}.
c906108c
SS
2022
2023@cindex pipes
2024@emph{Warning:} While input and output redirection work, you cannot use
2025pipes to pass the output of the program you are debugging to another
2026program; if you attempt this, @value{GDBN} is likely to wind up debugging the
2027wrong program.
2028@end table
c906108c
SS
2029
2030When you issue the @code{run} command, your program begins to execute
79a6e687 2031immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion
c906108c
SS
2032of how to arrange for your program to stop. Once your program has
2033stopped, you may call functions in your program, using the @code{print}
2034or @code{call} commands. @xref{Data, ,Examining Data}.
2035
2036If the modification time of your symbol file has changed since the last
2037time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
2038table, and reads it again. When it does this, @value{GDBN} tries to retain
2039your current breakpoints.
2040
4e8b0763
JB
2041@table @code
2042@kindex start
2043@item start
2044@cindex run to main procedure
2045The name of the main procedure can vary from language to language.
2046With C or C@t{++}, the main procedure name is always @code{main}, but
2047other languages such as Ada do not require a specific name for their
2048main procedure. The debugger provides a convenient way to start the
2049execution of the program and to stop at the beginning of the main
2050procedure, depending on the language used.
2051
2052The @samp{start} command does the equivalent of setting a temporary
2053breakpoint at the beginning of the main procedure and then invoking
2054the @samp{run} command.
2055
f018e82f
EZ
2056@cindex elaboration phase
2057Some programs contain an @dfn{elaboration} phase where some startup code is
2058executed before the main procedure is called. This depends on the
2059languages used to write your program. In C@t{++}, for instance,
4e8b0763
JB
2060constructors for static and global objects are executed before
2061@code{main} is called. It is therefore possible that the debugger stops
2062before reaching the main procedure. However, the temporary breakpoint
2063will remain to halt execution.
2064
2065Specify the arguments to give to your program as arguments to the
2066@samp{start} command. These arguments will be given verbatim to the
2067underlying @samp{run} command. Note that the same arguments will be
2068reused if no argument is provided during subsequent calls to
2069@samp{start} or @samp{run}.
2070
2071It is sometimes necessary to debug the program during elaboration. In
2072these cases, using the @code{start} command would stop the execution of
2073your program too late, as the program would have already completed the
2074elaboration phase. Under these circumstances, insert breakpoints in your
2075elaboration code before running your program.
ccd213ac
DJ
2076
2077@kindex set exec-wrapper
2078@item set exec-wrapper @var{wrapper}
2079@itemx show exec-wrapper
2080@itemx unset exec-wrapper
2081When @samp{exec-wrapper} is set, the specified wrapper is used to
2082launch programs for debugging. @value{GDBN} starts your program
2083with a shell command of the form @kbd{exec @var{wrapper}
2084@var{program}}. Quoting is added to @var{program} and its
2085arguments, but not to @var{wrapper}, so you should add quotes if
2086appropriate for your shell. The wrapper runs until it executes
2087your program, and then @value{GDBN} takes control.
2088
2089You can use any program that eventually calls @code{execve} with
2090its arguments as a wrapper. Several standard Unix utilities do
2091this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
2092with @code{exec "$@@"} will also work.
2093
2094For example, you can use @code{env} to pass an environment variable to
2095the debugged program, without setting the variable in your shell's
2096environment:
2097
2098@smallexample
2099(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so'
2100(@value{GDBP}) run
2101@end smallexample
2102
2103This command is available when debugging locally on most targets, excluding
2104@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
2105
10568435
JK
2106@kindex set disable-randomization
2107@item set disable-randomization
2108@itemx set disable-randomization on
2109This option (enabled by default in @value{GDBN}) will turn off the native
2110randomization of the virtual address space of the started program. This option
2111is useful for multiple debugging sessions to make the execution better
2112reproducible and memory addresses reusable across debugging sessions.
2113
03583c20
UW
2114This feature is implemented only on certain targets, including @sc{gnu}/Linux.
2115On @sc{gnu}/Linux you can get the same behavior using
10568435
JK
2116
2117@smallexample
2118(@value{GDBP}) set exec-wrapper setarch `uname -m` -R
2119@end smallexample
2120
2121@item set disable-randomization off
2122Leave the behavior of the started executable unchanged. Some bugs rear their
2123ugly heads only when the program is loaded at certain addresses. If your bug
2124disappears when you run the program under @value{GDBN}, that might be because
2125@value{GDBN} by default disables the address randomization on platforms, such
2126as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set
2127disable-randomization off} to try to reproduce such elusive bugs.
2128
03583c20
UW
2129On targets where it is available, virtual address space randomization
2130protects the programs against certain kinds of security attacks. In these
10568435
JK
2131cases the attacker needs to know the exact location of a concrete executable
2132code. Randomizing its location makes it impossible to inject jumps misusing
2133a code at its expected addresses.
2134
2135Prelinking shared libraries provides a startup performance advantage but it
2136makes addresses in these libraries predictable for privileged processes by
2137having just unprivileged access at the target system. Reading the shared
2138library binary gives enough information for assembling the malicious code
2139misusing it. Still even a prelinked shared library can get loaded at a new
2140random address just requiring the regular relocation process during the
2141startup. Shared libraries not already prelinked are always loaded at
2142a randomly chosen address.
2143
2144Position independent executables (PIE) contain position independent code
2145similar to the shared libraries and therefore such executables get loaded at
2146a randomly chosen address upon startup. PIE executables always load even
2147already prelinked shared libraries at a random address. You can build such
2148executable using @command{gcc -fPIE -pie}.
2149
2150Heap (malloc storage), stack and custom mmap areas are always placed randomly
2151(as long as the randomization is enabled).
2152
2153@item show disable-randomization
2154Show the current setting of the explicit disable of the native randomization of
2155the virtual address space of the started program.
2156
4e8b0763
JB
2157@end table
2158
6d2ebf8b 2159@node Arguments
79a6e687 2160@section Your Program's Arguments
c906108c
SS
2161
2162@cindex arguments (to your program)
2163The arguments to your program can be specified by the arguments of the
5d161b24 2164@code{run} command.
c906108c
SS
2165They are passed to a shell, which expands wildcard characters and
2166performs redirection of I/O, and thence to your program. Your
2167@code{SHELL} environment variable (if it exists) specifies what shell
2168@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
2169the default shell (@file{/bin/sh} on Unix).
2170
2171On non-Unix systems, the program is usually invoked directly by
2172@value{GDBN}, which emulates I/O redirection via the appropriate system
2173calls, and the wildcard characters are expanded by the startup code of
2174the program, not by the shell.
c906108c
SS
2175
2176@code{run} with no arguments uses the same arguments used by the previous
2177@code{run}, or those set by the @code{set args} command.
2178
c906108c 2179@table @code
41afff9a 2180@kindex set args
c906108c
SS
2181@item set args
2182Specify the arguments to be used the next time your program is run. If
2183@code{set args} has no arguments, @code{run} executes your program
2184with no arguments. Once you have run your program with arguments,
2185using @code{set args} before the next @code{run} is the only way to run
2186it again without arguments.
2187
2188@kindex show args
2189@item show args
2190Show the arguments to give your program when it is started.
2191@end table
2192
6d2ebf8b 2193@node Environment
79a6e687 2194@section Your Program's Environment
c906108c
SS
2195
2196@cindex environment (of your program)
2197The @dfn{environment} consists of a set of environment variables and
2198their values. Environment variables conventionally record such things as
2199your user name, your home directory, your terminal type, and your search
2200path for programs to run. Usually you set up environment variables with
2201the shell and they are inherited by all the other programs you run. When
2202debugging, it can be useful to try running your program with a modified
2203environment without having to start @value{GDBN} over again.
2204
2205@table @code
2206@kindex path
2207@item path @var{directory}
2208Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
2209(the search path for executables) that will be passed to your program.
2210The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
2211You may specify several directory names, separated by whitespace or by a
2212system-dependent separator character (@samp{:} on Unix, @samp{;} on
2213MS-DOS and MS-Windows). If @var{directory} is already in the path, it
2214is moved to the front, so it is searched sooner.
c906108c
SS
2215
2216You can use the string @samp{$cwd} to refer to whatever is the current
2217working directory at the time @value{GDBN} searches the path. If you
2218use @samp{.} instead, it refers to the directory where you executed the
2219@code{path} command. @value{GDBN} replaces @samp{.} in the
2220@var{directory} argument (with the current path) before adding
2221@var{directory} to the search path.
2222@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
2223@c document that, since repeating it would be a no-op.
2224
2225@kindex show paths
2226@item show paths
2227Display the list of search paths for executables (the @code{PATH}
2228environment variable).
2229
2230@kindex show environment
2231@item show environment @r{[}@var{varname}@r{]}
2232Print the value of environment variable @var{varname} to be given to
2233your program when it starts. If you do not supply @var{varname},
2234print the names and values of all environment variables to be given to
2235your program. You can abbreviate @code{environment} as @code{env}.
2236
2237@kindex set environment
53a5351d 2238@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
2239Set environment variable @var{varname} to @var{value}. The value
2240changes for your program only, not for @value{GDBN} itself. @var{value} may
2241be any string; the values of environment variables are just strings, and
2242any interpretation is supplied by your program itself. The @var{value}
2243parameter is optional; if it is eliminated, the variable is set to a
2244null value.
2245@c "any string" here does not include leading, trailing
2246@c blanks. Gnu asks: does anyone care?
2247
2248For example, this command:
2249
474c8240 2250@smallexample
c906108c 2251set env USER = foo
474c8240 2252@end smallexample
c906108c
SS
2253
2254@noindent
d4f3574e 2255tells the debugged program, when subsequently run, that its user is named
c906108c
SS
2256@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
2257are not actually required.)
2258
2259@kindex unset environment
2260@item unset environment @var{varname}
2261Remove variable @var{varname} from the environment to be passed to your
2262program. This is different from @samp{set env @var{varname} =};
2263@code{unset environment} removes the variable from the environment,
2264rather than assigning it an empty value.
2265@end table
2266
d4f3574e
SS
2267@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
2268the shell indicated
c906108c
SS
2269by your @code{SHELL} environment variable if it exists (or
2270@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
2271that runs an initialization file---such as @file{.cshrc} for C-shell, or
2272@file{.bashrc} for BASH---any variables you set in that file affect
2273your program. You may wish to move setting of environment variables to
2274files that are only run when you sign on, such as @file{.login} or
2275@file{.profile}.
2276
6d2ebf8b 2277@node Working Directory
79a6e687 2278@section Your Program's Working Directory
c906108c
SS
2279
2280@cindex working directory (of your program)
2281Each time you start your program with @code{run}, it inherits its
2282working directory from the current working directory of @value{GDBN}.
2283The @value{GDBN} working directory is initially whatever it inherited
2284from its parent process (typically the shell), but you can specify a new
2285working directory in @value{GDBN} with the @code{cd} command.
2286
2287The @value{GDBN} working directory also serves as a default for the commands
2288that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
79a6e687 2289Specify Files}.
c906108c
SS
2290
2291@table @code
2292@kindex cd
721c2651 2293@cindex change working directory
f3c8a52a
JK
2294@item cd @r{[}@var{directory}@r{]}
2295Set the @value{GDBN} working directory to @var{directory}. If not
2296given, @var{directory} uses @file{'~'}.
c906108c
SS
2297
2298@kindex pwd
2299@item pwd
2300Print the @value{GDBN} working directory.
2301@end table
2302
60bf7e09
EZ
2303It is generally impossible to find the current working directory of
2304the process being debugged (since a program can change its directory
2305during its run). If you work on a system where @value{GDBN} is
2306configured with the @file{/proc} support, you can use the @code{info
2307proc} command (@pxref{SVR4 Process Information}) to find out the
2308current working directory of the debuggee.
2309
6d2ebf8b 2310@node Input/Output
79a6e687 2311@section Your Program's Input and Output
c906108c
SS
2312
2313@cindex redirection
2314@cindex i/o
2315@cindex terminal
2316By default, the program you run under @value{GDBN} does input and output to
5d161b24 2317the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
2318to its own terminal modes to interact with you, but it records the terminal
2319modes your program was using and switches back to them when you continue
2320running your program.
2321
2322@table @code
2323@kindex info terminal
2324@item info terminal
2325Displays information recorded by @value{GDBN} about the terminal modes your
2326program is using.
2327@end table
2328
2329You can redirect your program's input and/or output using shell
2330redirection with the @code{run} command. For example,
2331
474c8240 2332@smallexample
c906108c 2333run > outfile
474c8240 2334@end smallexample
c906108c
SS
2335
2336@noindent
2337starts your program, diverting its output to the file @file{outfile}.
2338
2339@kindex tty
2340@cindex controlling terminal
2341Another way to specify where your program should do input and output is
2342with the @code{tty} command. This command accepts a file name as
2343argument, and causes this file to be the default for future @code{run}
2344commands. It also resets the controlling terminal for the child
2345process, for future @code{run} commands. For example,
2346
474c8240 2347@smallexample
c906108c 2348tty /dev/ttyb
474c8240 2349@end smallexample
c906108c
SS
2350
2351@noindent
2352directs that processes started with subsequent @code{run} commands
2353default to do input and output on the terminal @file{/dev/ttyb} and have
2354that as their controlling terminal.
2355
2356An explicit redirection in @code{run} overrides the @code{tty} command's
2357effect on the input/output device, but not its effect on the controlling
2358terminal.
2359
2360When you use the @code{tty} command or redirect input in the @code{run}
2361command, only the input @emph{for your program} is affected. The input
3cb3b8df
BR
2362for @value{GDBN} still comes from your terminal. @code{tty} is an alias
2363for @code{set inferior-tty}.
2364
2365@cindex inferior tty
2366@cindex set inferior controlling terminal
2367You can use the @code{show inferior-tty} command to tell @value{GDBN} to
2368display the name of the terminal that will be used for future runs of your
2369program.
2370
2371@table @code
2372@item set inferior-tty /dev/ttyb
2373@kindex set inferior-tty
2374Set the tty for the program being debugged to /dev/ttyb.
2375
2376@item show inferior-tty
2377@kindex show inferior-tty
2378Show the current tty for the program being debugged.
2379@end table
c906108c 2380
6d2ebf8b 2381@node Attach
79a6e687 2382@section Debugging an Already-running Process
c906108c
SS
2383@kindex attach
2384@cindex attach
2385
2386@table @code
2387@item attach @var{process-id}
2388This command attaches to a running process---one that was started
2389outside @value{GDBN}. (@code{info files} shows your active
2390targets.) The command takes as argument a process ID. The usual way to
09d4efe1 2391find out the @var{process-id} of a Unix process is with the @code{ps} utility,
c906108c
SS
2392or with the @samp{jobs -l} shell command.
2393
2394@code{attach} does not repeat if you press @key{RET} a second time after
2395executing the command.
2396@end table
2397
2398To use @code{attach}, your program must be running in an environment
2399which supports processes; for example, @code{attach} does not work for
2400programs on bare-board targets that lack an operating system. You must
2401also have permission to send the process a signal.
2402
2403When you use @code{attach}, the debugger finds the program running in
2404the process first by looking in the current working directory, then (if
2405the program is not found) by using the source file search path
79a6e687 2406(@pxref{Source Path, ,Specifying Source Directories}). You can also use
c906108c
SS
2407the @code{file} command to load the program. @xref{Files, ,Commands to
2408Specify Files}.
2409
2410The first thing @value{GDBN} does after arranging to debug the specified
2411process is to stop it. You can examine and modify an attached process
53a5351d
JM
2412with all the @value{GDBN} commands that are ordinarily available when
2413you start processes with @code{run}. You can insert breakpoints; you
2414can step and continue; you can modify storage. If you would rather the
2415process continue running, you may use the @code{continue} command after
c906108c
SS
2416attaching @value{GDBN} to the process.
2417
2418@table @code
2419@kindex detach
2420@item detach
2421When you have finished debugging the attached process, you can use the
2422@code{detach} command to release it from @value{GDBN} control. Detaching
2423the process continues its execution. After the @code{detach} command,
2424that process and @value{GDBN} become completely independent once more, and you
2425are ready to @code{attach} another process or start one with @code{run}.
2426@code{detach} does not repeat if you press @key{RET} again after
2427executing the command.
2428@end table
2429
159fcc13
JK
2430If you exit @value{GDBN} while you have an attached process, you detach
2431that process. If you use the @code{run} command, you kill that process.
2432By default, @value{GDBN} asks for confirmation if you try to do either of these
2433things; you can control whether or not you need to confirm by using the
2434@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and
79a6e687 2435Messages}).
c906108c 2436
6d2ebf8b 2437@node Kill Process
79a6e687 2438@section Killing the Child Process
c906108c
SS
2439
2440@table @code
2441@kindex kill
2442@item kill
2443Kill the child process in which your program is running under @value{GDBN}.
2444@end table
2445
2446This command is useful if you wish to debug a core dump instead of a
2447running process. @value{GDBN} ignores any core dump file while your program
2448is running.
2449
2450On some operating systems, a program cannot be executed outside @value{GDBN}
2451while you have breakpoints set on it inside @value{GDBN}. You can use the
2452@code{kill} command in this situation to permit running your program
2453outside the debugger.
2454
2455The @code{kill} command is also useful if you wish to recompile and
2456relink your program, since on many systems it is impossible to modify an
2457executable file while it is running in a process. In this case, when you
2458next type @code{run}, @value{GDBN} notices that the file has changed, and
2459reads the symbol table again (while trying to preserve your current
2460breakpoint settings).
2461
6c95b8df
PA
2462@node Inferiors and Programs
2463@section Debugging Multiple Inferiors and Programs
b77209e0 2464
6c95b8df
PA
2465@value{GDBN} lets you run and debug multiple programs in a single
2466session. In addition, @value{GDBN} on some systems may let you run
2467several programs simultaneously (otherwise you have to exit from one
2468before starting another). In the most general case, you can have
2469multiple threads of execution in each of multiple processes, launched
2470from multiple executables.
b77209e0
PA
2471
2472@cindex inferior
2473@value{GDBN} represents the state of each program execution with an
2474object called an @dfn{inferior}. An inferior typically corresponds to
2475a process, but is more general and applies also to targets that do not
2476have processes. Inferiors may be created before a process runs, and
6c95b8df
PA
2477may be retained after a process exits. Inferiors have unique
2478identifiers that are different from process ids. Usually each
2479inferior will also have its own distinct address space, although some
2480embedded targets may have several inferiors running in different parts
2481of a single address space. Each inferior may in turn have multiple
2482threads running in it.
b77209e0 2483
6c95b8df
PA
2484To find out what inferiors exist at any moment, use @w{@code{info
2485inferiors}}:
b77209e0
PA
2486
2487@table @code
2488@kindex info inferiors
2489@item info inferiors
2490Print a list of all inferiors currently being managed by @value{GDBN}.
3a1ff0b6
PA
2491
2492@value{GDBN} displays for each inferior (in this order):
2493
2494@enumerate
2495@item
2496the inferior number assigned by @value{GDBN}
2497
2498@item
2499the target system's inferior identifier
6c95b8df
PA
2500
2501@item
2502the name of the executable the inferior is running.
2503
3a1ff0b6
PA
2504@end enumerate
2505
2506@noindent
2507An asterisk @samp{*} preceding the @value{GDBN} inferior number
2508indicates the current inferior.
2509
2510For example,
2277426b 2511@end table
3a1ff0b6
PA
2512@c end table here to get a little more width for example
2513
2514@smallexample
2515(@value{GDBP}) info inferiors
6c95b8df
PA
2516 Num Description Executable
2517 2 process 2307 hello
2518* 1 process 3401 goodbye
3a1ff0b6 2519@end smallexample
2277426b
PA
2520
2521To switch focus between inferiors, use the @code{inferior} command:
2522
2523@table @code
3a1ff0b6
PA
2524@kindex inferior @var{infno}
2525@item inferior @var{infno}
2526Make inferior number @var{infno} the current inferior. The argument
2527@var{infno} is the inferior number assigned by @value{GDBN}, as shown
2528in the first field of the @samp{info inferiors} display.
2277426b
PA
2529@end table
2530
6c95b8df
PA
2531
2532You can get multiple executables into a debugging session via the
2533@code{add-inferior} and @w{@code{clone-inferior}} commands. On some
2534systems @value{GDBN} can add inferiors to the debug session
2535automatically by following calls to @code{fork} and @code{exec}. To
2536remove inferiors from the debugging session use the
af624141 2537@w{@code{remove-inferiors}} command.
6c95b8df
PA
2538
2539@table @code
2540@kindex add-inferior
2541@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ]
2542Adds @var{n} inferiors to be run using @var{executable} as the
2543executable. @var{n} defaults to 1. If no executable is specified,
2544the inferiors begins empty, with no program. You can still assign or
2545change the program assigned to the inferior at any time by using the
2546@code{file} command with the executable name as its argument.
2547
2548@kindex clone-inferior
2549@item clone-inferior [ -copies @var{n} ] [ @var{infno} ]
2550Adds @var{n} inferiors ready to execute the same program as inferior
2551@var{infno}. @var{n} defaults to 1. @var{infno} defaults to the
2552number of the current inferior. This is a convenient command when you
2553want to run another instance of the inferior you are debugging.
2554
2555@smallexample
2556(@value{GDBP}) info inferiors
2557 Num Description Executable
2558* 1 process 29964 helloworld
2559(@value{GDBP}) clone-inferior
2560Added inferior 2.
25611 inferiors added.
2562(@value{GDBP}) info inferiors
2563 Num Description Executable
2564 2 <null> helloworld
2565* 1 process 29964 helloworld
2566@end smallexample
2567
2568You can now simply switch focus to inferior 2 and run it.
2569
af624141
MS
2570@kindex remove-inferiors
2571@item remove-inferiors @var{infno}@dots{}
2572Removes the inferior or inferiors @var{infno}@dots{}. It is not
2573possible to remove an inferior that is running with this command. For
2574those, use the @code{kill} or @code{detach} command first.
6c95b8df
PA
2575
2576@end table
2577
2578To quit debugging one of the running inferiors that is not the current
2579inferior, you can either detach from it by using the @w{@code{detach
2580inferior}} command (allowing it to run independently), or kill it
af624141 2581using the @w{@code{kill inferiors}} command:
2277426b
PA
2582
2583@table @code
af624141
MS
2584@kindex detach inferiors @var{infno}@dots{}
2585@item detach inferior @var{infno}@dots{}
2586Detach from the inferior or inferiors identified by @value{GDBN}
5e30da2c 2587inferior number(s) @var{infno}@dots{}. Note that the inferior's entry
af624141
MS
2588still stays on the list of inferiors shown by @code{info inferiors},
2589but its Description will show @samp{<null>}.
2590
2591@kindex kill inferiors @var{infno}@dots{}
2592@item kill inferiors @var{infno}@dots{}
2593Kill the inferior or inferiors identified by @value{GDBN} inferior
2594number(s) @var{infno}@dots{}. Note that the inferior's entry still
2595stays on the list of inferiors shown by @code{info inferiors}, but its
2596Description will show @samp{<null>}.
2277426b
PA
2597@end table
2598
6c95b8df 2599After the successful completion of a command such as @code{detach},
af624141 2600@code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after
6c95b8df
PA
2601a normal process exit, the inferior is still valid and listed with
2602@code{info inferiors}, ready to be restarted.
2603
2604
2277426b
PA
2605To be notified when inferiors are started or exit under @value{GDBN}'s
2606control use @w{@code{set print inferior-events}}:
b77209e0 2607
2277426b 2608@table @code
b77209e0
PA
2609@kindex set print inferior-events
2610@cindex print messages on inferior start and exit
2611@item set print inferior-events
2612@itemx set print inferior-events on
2613@itemx set print inferior-events off
2614The @code{set print inferior-events} command allows you to enable or
2615disable printing of messages when @value{GDBN} notices that new
2616inferiors have started or that inferiors have exited or have been
2617detached. By default, these messages will not be printed.
2618
2619@kindex show print inferior-events
2620@item show print inferior-events
2621Show whether messages will be printed when @value{GDBN} detects that
2622inferiors have started, exited or have been detached.
2623@end table
2624
6c95b8df
PA
2625Many commands will work the same with multiple programs as with a
2626single program: e.g., @code{print myglobal} will simply display the
2627value of @code{myglobal} in the current inferior.
2628
2629
2630Occasionaly, when debugging @value{GDBN} itself, it may be useful to
2631get more info about the relationship of inferiors, programs, address
2632spaces in a debug session. You can do that with the @w{@code{maint
2633info program-spaces}} command.
2634
2635@table @code
2636@kindex maint info program-spaces
2637@item maint info program-spaces
2638Print a list of all program spaces currently being managed by
2639@value{GDBN}.
2640
2641@value{GDBN} displays for each program space (in this order):
2642
2643@enumerate
2644@item
2645the program space number assigned by @value{GDBN}
2646
2647@item
2648the name of the executable loaded into the program space, with e.g.,
2649the @code{file} command.
2650
2651@end enumerate
2652
2653@noindent
2654An asterisk @samp{*} preceding the @value{GDBN} program space number
2655indicates the current program space.
2656
2657In addition, below each program space line, @value{GDBN} prints extra
2658information that isn't suitable to display in tabular form. For
2659example, the list of inferiors bound to the program space.
2660
2661@smallexample
2662(@value{GDBP}) maint info program-spaces
2663 Id Executable
2664 2 goodbye
2665 Bound inferiors: ID 1 (process 21561)
2666* 1 hello
2667@end smallexample
2668
2669Here we can see that no inferior is running the program @code{hello},
2670while @code{process 21561} is running the program @code{goodbye}. On
2671some targets, it is possible that multiple inferiors are bound to the
2672same program space. The most common example is that of debugging both
2673the parent and child processes of a @code{vfork} call. For example,
2674
2675@smallexample
2676(@value{GDBP}) maint info program-spaces
2677 Id Executable
2678* 1 vfork-test
2679 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045)
2680@end smallexample
2681
2682Here, both inferior 2 and inferior 1 are running in the same program
2683space as a result of inferior 1 having executed a @code{vfork} call.
2684@end table
2685
6d2ebf8b 2686@node Threads
79a6e687 2687@section Debugging Programs with Multiple Threads
c906108c
SS
2688
2689@cindex threads of execution
2690@cindex multiple threads
2691@cindex switching threads
2692In some operating systems, such as HP-UX and Solaris, a single program
2693may have more than one @dfn{thread} of execution. The precise semantics
2694of threads differ from one operating system to another, but in general
2695the threads of a single program are akin to multiple processes---except
2696that they share one address space (that is, they can all examine and
2697modify the same variables). On the other hand, each thread has its own
2698registers and execution stack, and perhaps private memory.
2699
2700@value{GDBN} provides these facilities for debugging multi-thread
2701programs:
2702
2703@itemize @bullet
2704@item automatic notification of new threads
2705@item @samp{thread @var{threadno}}, a command to switch among threads
2706@item @samp{info threads}, a command to inquire about existing threads
5d161b24 2707@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
2708a command to apply a command to a list of threads
2709@item thread-specific breakpoints
93815fbf
VP
2710@item @samp{set print thread-events}, which controls printing of
2711messages on thread start and exit.
17a37d48
PP
2712@item @samp{set libthread-db-search-path @var{path}}, which lets
2713the user specify which @code{libthread_db} to use if the default choice
2714isn't compatible with the program.
c906108c
SS
2715@end itemize
2716
c906108c
SS
2717@quotation
2718@emph{Warning:} These facilities are not yet available on every
2719@value{GDBN} configuration where the operating system supports threads.
2720If your @value{GDBN} does not support threads, these commands have no
2721effect. For example, a system without thread support shows no output
2722from @samp{info threads}, and always rejects the @code{thread} command,
2723like this:
2724
2725@smallexample
2726(@value{GDBP}) info threads
2727(@value{GDBP}) thread 1
2728Thread ID 1 not known. Use the "info threads" command to
2729see the IDs of currently known threads.
2730@end smallexample
2731@c FIXME to implementors: how hard would it be to say "sorry, this GDB
2732@c doesn't support threads"?
2733@end quotation
c906108c
SS
2734
2735@cindex focus of debugging
2736@cindex current thread
2737The @value{GDBN} thread debugging facility allows you to observe all
2738threads while your program runs---but whenever @value{GDBN} takes
2739control, one thread in particular is always the focus of debugging.
2740This thread is called the @dfn{current thread}. Debugging commands show
2741program information from the perspective of the current thread.
2742
41afff9a 2743@cindex @code{New} @var{systag} message
c906108c
SS
2744@cindex thread identifier (system)
2745@c FIXME-implementors!! It would be more helpful if the [New...] message
2746@c included GDB's numeric thread handle, so you could just go to that
2747@c thread without first checking `info threads'.
2748Whenever @value{GDBN} detects a new thread in your program, it displays
2749the target system's identification for the thread with a message in the
2750form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2751whose form varies depending on the particular system. For example, on
8807d78b 2752@sc{gnu}/Linux, you might see
c906108c 2753
474c8240 2754@smallexample
08e796bc 2755[New Thread 0x41e02940 (LWP 25582)]
474c8240 2756@end smallexample
c906108c
SS
2757
2758@noindent
2759when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2760the @var{systag} is simply something like @samp{process 368}, with no
2761further qualifier.
2762
2763@c FIXME!! (1) Does the [New...] message appear even for the very first
2764@c thread of a program, or does it only appear for the
6ca652b0 2765@c second---i.e.@: when it becomes obvious we have a multithread
c906108c
SS
2766@c program?
2767@c (2) *Is* there necessarily a first thread always? Or do some
2768@c multithread systems permit starting a program with multiple
5d161b24 2769@c threads ab initio?
c906108c
SS
2770
2771@cindex thread number
2772@cindex thread identifier (GDB)
2773For debugging purposes, @value{GDBN} associates its own thread
2774number---always a single integer---with each thread in your program.
2775
2776@table @code
2777@kindex info threads
60f98dde
MS
2778@item info threads @r{[}@var{id}@dots{}@r{]}
2779Display a summary of all threads currently in your program. Optional
2780argument @var{id}@dots{} is one or more thread ids separated by spaces, and
2781means to print information only about the specified thread or threads.
2782@value{GDBN} displays for each thread (in this order):
c906108c
SS
2783
2784@enumerate
09d4efe1
EZ
2785@item
2786the thread number assigned by @value{GDBN}
c906108c 2787
09d4efe1
EZ
2788@item
2789the target system's thread identifier (@var{systag})
c906108c 2790
4694da01
TT
2791@item
2792the thread's name, if one is known. A thread can either be named by
2793the user (see @code{thread name}, below), or, in some cases, by the
2794program itself.
2795
09d4efe1
EZ
2796@item
2797the current stack frame summary for that thread
c906108c
SS
2798@end enumerate
2799
2800@noindent
2801An asterisk @samp{*} to the left of the @value{GDBN} thread number
2802indicates the current thread.
2803
5d161b24 2804For example,
c906108c
SS
2805@end table
2806@c end table here to get a little more width for example
2807
2808@smallexample
2809(@value{GDBP}) info threads
13fd8b81
TT
2810 Id Target Id Frame
2811 3 process 35 thread 27 0x34e5 in sigpause ()
2812 2 process 35 thread 23 0x34e5 in sigpause ()
2813* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
c906108c
SS
2814 at threadtest.c:68
2815@end smallexample
53a5351d 2816
c45da7e6
EZ
2817On Solaris, you can display more information about user threads with a
2818Solaris-specific command:
2819
2820@table @code
2821@item maint info sol-threads
2822@kindex maint info sol-threads
2823@cindex thread info (Solaris)
2824Display info on Solaris user threads.
2825@end table
2826
c906108c
SS
2827@table @code
2828@kindex thread @var{threadno}
2829@item thread @var{threadno}
2830Make thread number @var{threadno} the current thread. The command
2831argument @var{threadno} is the internal @value{GDBN} thread number, as
2832shown in the first field of the @samp{info threads} display.
2833@value{GDBN} responds by displaying the system identifier of the thread
2834you selected, and its current stack frame summary:
2835
2836@smallexample
c906108c 2837(@value{GDBP}) thread 2
13fd8b81
TT
2838[Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))]
2839#0 some_function (ignore=0x0) at example.c:8
28408 printf ("hello\n");
c906108c
SS
2841@end smallexample
2842
2843@noindent
2844As with the @samp{[New @dots{}]} message, the form of the text after
2845@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2846threads.
c906108c 2847
6aed2dbc
SS
2848@vindex $_thread@r{, convenience variable}
2849The debugger convenience variable @samp{$_thread} contains the number
2850of the current thread. You may find this useful in writing breakpoint
2851conditional expressions, command scripts, and so forth. See
2852@xref{Convenience Vars,, Convenience Variables}, for general
2853information on convenience variables.
2854
9c16f35a 2855@kindex thread apply
638ac427 2856@cindex apply command to several threads
13fd8b81 2857@item thread apply [@var{threadno} | all] @var{command}
839c27b7
EZ
2858The @code{thread apply} command allows you to apply the named
2859@var{command} to one or more threads. Specify the numbers of the
2860threads that you want affected with the command argument
2861@var{threadno}. It can be a single thread number, one of the numbers
2862shown in the first field of the @samp{info threads} display; or it
2863could be a range of thread numbers, as in @code{2-4}. To apply a
2864command to all threads, type @kbd{thread apply all @var{command}}.
93815fbf 2865
4694da01
TT
2866@kindex thread name
2867@cindex name a thread
2868@item thread name [@var{name}]
2869This command assigns a name to the current thread. If no argument is
2870given, any existing user-specified name is removed. The thread name
2871appears in the @samp{info threads} display.
2872
2873On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to
2874determine the name of the thread as given by the OS. On these
2875systems, a name specified with @samp{thread name} will override the
2876system-give name, and removing the user-specified name will cause
2877@value{GDBN} to once again display the system-specified name.
2878
60f98dde
MS
2879@kindex thread find
2880@cindex search for a thread
2881@item thread find [@var{regexp}]
2882Search for and display thread ids whose name or @var{systag}
2883matches the supplied regular expression.
2884
2885As well as being the complement to the @samp{thread name} command,
2886this command also allows you to identify a thread by its target
2887@var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag}
2888is the LWP id.
2889
2890@smallexample
2891(@value{GDBN}) thread find 26688
2892Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)'
2893(@value{GDBN}) info thread 4
2894 Id Target Id Frame
2895 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select ()
2896@end smallexample
2897
93815fbf
VP
2898@kindex set print thread-events
2899@cindex print messages on thread start and exit
2900@item set print thread-events
2901@itemx set print thread-events on
2902@itemx set print thread-events off
2903The @code{set print thread-events} command allows you to enable or
2904disable printing of messages when @value{GDBN} notices that new threads have
2905started or that threads have exited. By default, these messages will
2906be printed if detection of these events is supported by the target.
2907Note that these messages cannot be disabled on all targets.
2908
2909@kindex show print thread-events
2910@item show print thread-events
2911Show whether messages will be printed when @value{GDBN} detects that threads
2912have started and exited.
c906108c
SS
2913@end table
2914
79a6e687 2915@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for
c906108c
SS
2916more information about how @value{GDBN} behaves when you stop and start
2917programs with multiple threads.
2918
79a6e687 2919@xref{Set Watchpoints,,Setting Watchpoints}, for information about
c906108c 2920watchpoints in programs with multiple threads.
c906108c 2921
bf88dd68 2922@anchor{set libthread-db-search-path}
17a37d48
PP
2923@table @code
2924@kindex set libthread-db-search-path
2925@cindex search path for @code{libthread_db}
2926@item set libthread-db-search-path @r{[}@var{path}@r{]}
2927If this variable is set, @var{path} is a colon-separated list of
2928directories @value{GDBN} will use to search for @code{libthread_db}.
2929If you omit @var{path}, @samp{libthread-db-search-path} will be reset to
98a5dd13 2930its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems).
7e0396aa
DE
2931Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH}
2932macro.
17a37d48
PP
2933
2934On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper''
2935@code{libthread_db} library to obtain information about threads in the
2936inferior process. @value{GDBN} will use @samp{libthread-db-search-path}
bf88dd68
JK
2937to find @code{libthread_db}. @value{GDBN} also consults first if inferior
2938specific thread debugging library loading is enabled
2939by @samp{set auto-load libthread-db} (@pxref{libthread_db.so.1 file}).
98a5dd13
DE
2940
2941A special entry @samp{$sdir} for @samp{libthread-db-search-path}
2942refers to the default system directories that are
bf88dd68
JK
2943normally searched for loading shared libraries. The @samp{$sdir} entry
2944is the only kind not needing to be enabled by @samp{set auto-load libthread-db}
2945(@pxref{libthread_db.so.1 file}).
98a5dd13
DE
2946
2947A special entry @samp{$pdir} for @samp{libthread-db-search-path}
2948refers to the directory from which @code{libpthread}
2949was loaded in the inferior process.
17a37d48
PP
2950
2951For any @code{libthread_db} library @value{GDBN} finds in above directories,
2952@value{GDBN} attempts to initialize it with the current inferior process.
2953If this initialization fails (which could happen because of a version
2954mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN}
2955will unload @code{libthread_db}, and continue with the next directory.
2956If none of @code{libthread_db} libraries initialize successfully,
2957@value{GDBN} will issue a warning and thread debugging will be disabled.
2958
2959Setting @code{libthread-db-search-path} is currently implemented
2960only on some platforms.
2961
2962@kindex show libthread-db-search-path
2963@item show libthread-db-search-path
2964Display current libthread_db search path.
02d868e8
PP
2965
2966@kindex set debug libthread-db
2967@kindex show debug libthread-db
2968@cindex debugging @code{libthread_db}
2969@item set debug libthread-db
2970@itemx show debug libthread-db
2971Turns on or off display of @code{libthread_db}-related events.
2972Use @code{1} to enable, @code{0} to disable.
17a37d48
PP
2973@end table
2974
6c95b8df
PA
2975@node Forks
2976@section Debugging Forks
c906108c
SS
2977
2978@cindex fork, debugging programs which call
2979@cindex multiple processes
2980@cindex processes, multiple
53a5351d
JM
2981On most systems, @value{GDBN} has no special support for debugging
2982programs which create additional processes using the @code{fork}
2983function. When a program forks, @value{GDBN} will continue to debug the
2984parent process and the child process will run unimpeded. If you have
2985set a breakpoint in any code which the child then executes, the child
2986will get a @code{SIGTRAP} signal which (unless it catches the signal)
2987will cause it to terminate.
c906108c
SS
2988
2989However, if you want to debug the child process there is a workaround
2990which isn't too painful. Put a call to @code{sleep} in the code which
2991the child process executes after the fork. It may be useful to sleep
2992only if a certain environment variable is set, or a certain file exists,
2993so that the delay need not occur when you don't want to run @value{GDBN}
2994on the child. While the child is sleeping, use the @code{ps} program to
2995get its process ID. Then tell @value{GDBN} (a new invocation of
2996@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 2997the child process (@pxref{Attach}). From that point on you can debug
c906108c 2998the child process just like any other process which you attached to.
c906108c 2999
b51970ac
DJ
3000On some systems, @value{GDBN} provides support for debugging programs that
3001create additional processes using the @code{fork} or @code{vfork} functions.
3002Currently, the only platforms with this feature are HP-UX (11.x and later
a6b151f1 3003only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later).
c906108c
SS
3004
3005By default, when a program forks, @value{GDBN} will continue to debug
3006the parent process and the child process will run unimpeded.
3007
3008If you want to follow the child process instead of the parent process,
3009use the command @w{@code{set follow-fork-mode}}.
3010
3011@table @code
3012@kindex set follow-fork-mode
3013@item set follow-fork-mode @var{mode}
3014Set the debugger response to a program call of @code{fork} or
3015@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
9c16f35a 3016process. The @var{mode} argument can be:
c906108c
SS
3017
3018@table @code
3019@item parent
3020The original process is debugged after a fork. The child process runs
2df3850c 3021unimpeded. This is the default.
c906108c
SS
3022
3023@item child
3024The new process is debugged after a fork. The parent process runs
3025unimpeded.
3026
c906108c
SS
3027@end table
3028
9c16f35a 3029@kindex show follow-fork-mode
c906108c 3030@item show follow-fork-mode
2df3850c 3031Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
3032@end table
3033
5c95884b
MS
3034@cindex debugging multiple processes
3035On Linux, if you want to debug both the parent and child processes, use the
3036command @w{@code{set detach-on-fork}}.
3037
3038@table @code
3039@kindex set detach-on-fork
3040@item set detach-on-fork @var{mode}
3041Tells gdb whether to detach one of the processes after a fork, or
3042retain debugger control over them both.
3043
3044@table @code
3045@item on
3046The child process (or parent process, depending on the value of
3047@code{follow-fork-mode}) will be detached and allowed to run
3048independently. This is the default.
3049
3050@item off
3051Both processes will be held under the control of @value{GDBN}.
3052One process (child or parent, depending on the value of
3053@code{follow-fork-mode}) is debugged as usual, while the other
3054is held suspended.
3055
3056@end table
3057
11310833
NR
3058@kindex show detach-on-fork
3059@item show detach-on-fork
3060Show whether detach-on-fork mode is on/off.
5c95884b
MS
3061@end table
3062
2277426b
PA
3063If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN}
3064will retain control of all forked processes (including nested forks).
3065You can list the forked processes under the control of @value{GDBN} by
3066using the @w{@code{info inferiors}} command, and switch from one fork
6c95b8df
PA
3067to another by using the @code{inferior} command (@pxref{Inferiors and
3068Programs, ,Debugging Multiple Inferiors and Programs}).
5c95884b
MS
3069
3070To quit debugging one of the forked processes, you can either detach
af624141
MS
3071from it by using the @w{@code{detach inferiors}} command (allowing it
3072to run independently), or kill it using the @w{@code{kill inferiors}}
6c95b8df
PA
3073command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors
3074and Programs}.
5c95884b 3075
c906108c
SS
3076If you ask to debug a child process and a @code{vfork} is followed by an
3077@code{exec}, @value{GDBN} executes the new target up to the first
3078breakpoint in the new target. If you have a breakpoint set on
3079@code{main} in your original program, the breakpoint will also be set on
3080the child process's @code{main}.
3081
2277426b
PA
3082On some systems, when a child process is spawned by @code{vfork}, you
3083cannot debug the child or parent until an @code{exec} call completes.
c906108c
SS
3084
3085If you issue a @code{run} command to @value{GDBN} after an @code{exec}
6c95b8df
PA
3086call executes, the new target restarts. To restart the parent
3087process, use the @code{file} command with the parent executable name
3088as its argument. By default, after an @code{exec} call executes,
3089@value{GDBN} discards the symbols of the previous executable image.
3090You can change this behaviour with the @w{@code{set follow-exec-mode}}
3091command.
3092
3093@table @code
3094@kindex set follow-exec-mode
3095@item set follow-exec-mode @var{mode}
3096
3097Set debugger response to a program call of @code{exec}. An
3098@code{exec} call replaces the program image of a process.
3099
3100@code{follow-exec-mode} can be:
3101
3102@table @code
3103@item new
3104@value{GDBN} creates a new inferior and rebinds the process to this
3105new inferior. The program the process was running before the
3106@code{exec} call can be restarted afterwards by restarting the
3107original inferior.
3108
3109For example:
3110
3111@smallexample
3112(@value{GDBP}) info inferiors
3113(gdb) info inferior
3114 Id Description Executable
3115* 1 <null> prog1
3116(@value{GDBP}) run
3117process 12020 is executing new program: prog2
3118Program exited normally.
3119(@value{GDBP}) info inferiors
3120 Id Description Executable
3121* 2 <null> prog2
3122 1 <null> prog1
3123@end smallexample
3124
3125@item same
3126@value{GDBN} keeps the process bound to the same inferior. The new
3127executable image replaces the previous executable loaded in the
3128inferior. Restarting the inferior after the @code{exec} call, with
3129e.g., the @code{run} command, restarts the executable the process was
3130running after the @code{exec} call. This is the default mode.
3131
3132For example:
3133
3134@smallexample
3135(@value{GDBP}) info inferiors
3136 Id Description Executable
3137* 1 <null> prog1
3138(@value{GDBP}) run
3139process 12020 is executing new program: prog2
3140Program exited normally.
3141(@value{GDBP}) info inferiors
3142 Id Description Executable
3143* 1 <null> prog2
3144@end smallexample
3145
3146@end table
3147@end table
c906108c
SS
3148
3149You can use the @code{catch} command to make @value{GDBN} stop whenever
3150a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
79a6e687 3151Catchpoints, ,Setting Catchpoints}.
c906108c 3152
5c95884b 3153@node Checkpoint/Restart
79a6e687 3154@section Setting a @emph{Bookmark} to Return to Later
5c95884b
MS
3155
3156@cindex checkpoint
3157@cindex restart
3158@cindex bookmark
3159@cindex snapshot of a process
3160@cindex rewind program state
3161
3162On certain operating systems@footnote{Currently, only
3163@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a
3164program's state, called a @dfn{checkpoint}, and come back to it
3165later.
3166
3167Returning to a checkpoint effectively undoes everything that has
3168happened in the program since the @code{checkpoint} was saved. This
3169includes changes in memory, registers, and even (within some limits)
3170system state. Effectively, it is like going back in time to the
3171moment when the checkpoint was saved.
3172
3173Thus, if you're stepping thru a program and you think you're
3174getting close to the point where things go wrong, you can save
3175a checkpoint. Then, if you accidentally go too far and miss
3176the critical statement, instead of having to restart your program
3177from the beginning, you can just go back to the checkpoint and
3178start again from there.
3179
3180This can be especially useful if it takes a lot of time or
3181steps to reach the point where you think the bug occurs.
3182
3183To use the @code{checkpoint}/@code{restart} method of debugging:
3184
3185@table @code
3186@kindex checkpoint
3187@item checkpoint
3188Save a snapshot of the debugged program's current execution state.
3189The @code{checkpoint} command takes no arguments, but each checkpoint
3190is assigned a small integer id, similar to a breakpoint id.
3191
3192@kindex info checkpoints
3193@item info checkpoints
3194List the checkpoints that have been saved in the current debugging
3195session. For each checkpoint, the following information will be
3196listed:
3197
3198@table @code
3199@item Checkpoint ID
3200@item Process ID
3201@item Code Address
3202@item Source line, or label
3203@end table
3204
3205@kindex restart @var{checkpoint-id}
3206@item restart @var{checkpoint-id}
3207Restore the program state that was saved as checkpoint number
3208@var{checkpoint-id}. All program variables, registers, stack frames
3209etc.@: will be returned to the values that they had when the checkpoint
3210was saved. In essence, gdb will ``wind back the clock'' to the point
3211in time when the checkpoint was saved.
3212
3213Note that breakpoints, @value{GDBN} variables, command history etc.
3214are not affected by restoring a checkpoint. In general, a checkpoint
3215only restores things that reside in the program being debugged, not in
3216the debugger.
3217
b8db102d
MS
3218@kindex delete checkpoint @var{checkpoint-id}
3219@item delete checkpoint @var{checkpoint-id}
5c95884b
MS
3220Delete the previously-saved checkpoint identified by @var{checkpoint-id}.
3221
3222@end table
3223
3224Returning to a previously saved checkpoint will restore the user state
3225of the program being debugged, plus a significant subset of the system
3226(OS) state, including file pointers. It won't ``un-write'' data from
3227a file, but it will rewind the file pointer to the previous location,
3228so that the previously written data can be overwritten. For files
3229opened in read mode, the pointer will also be restored so that the
3230previously read data can be read again.
3231
3232Of course, characters that have been sent to a printer (or other
3233external device) cannot be ``snatched back'', and characters received
3234from eg.@: a serial device can be removed from internal program buffers,
3235but they cannot be ``pushed back'' into the serial pipeline, ready to
3236be received again. Similarly, the actual contents of files that have
3237been changed cannot be restored (at this time).
3238
3239However, within those constraints, you actually can ``rewind'' your
3240program to a previously saved point in time, and begin debugging it
3241again --- and you can change the course of events so as to debug a
3242different execution path this time.
3243
3244@cindex checkpoints and process id
3245Finally, there is one bit of internal program state that will be
3246different when you return to a checkpoint --- the program's process
3247id. Each checkpoint will have a unique process id (or @var{pid}),
3248and each will be different from the program's original @var{pid}.
3249If your program has saved a local copy of its process id, this could
3250potentially pose a problem.
3251
79a6e687 3252@subsection A Non-obvious Benefit of Using Checkpoints
5c95884b
MS
3253
3254On some systems such as @sc{gnu}/Linux, address space randomization
3255is performed on new processes for security reasons. This makes it
3256difficult or impossible to set a breakpoint, or watchpoint, on an
3257absolute address if you have to restart the program, since the
3258absolute location of a symbol will change from one execution to the
3259next.
3260
3261A checkpoint, however, is an @emph{identical} copy of a process.
3262Therefore if you create a checkpoint at (eg.@:) the start of main,
3263and simply return to that checkpoint instead of restarting the
3264process, you can avoid the effects of address randomization and
3265your symbols will all stay in the same place.
3266
6d2ebf8b 3267@node Stopping
c906108c
SS
3268@chapter Stopping and Continuing
3269
3270The principal purposes of using a debugger are so that you can stop your
3271program before it terminates; or so that, if your program runs into
3272trouble, you can investigate and find out why.
3273
7a292a7a
SS
3274Inside @value{GDBN}, your program may stop for any of several reasons,
3275such as a signal, a breakpoint, or reaching a new line after a
3276@value{GDBN} command such as @code{step}. You may then examine and
3277change variables, set new breakpoints or remove old ones, and then
3278continue execution. Usually, the messages shown by @value{GDBN} provide
3279ample explanation of the status of your program---but you can also
3280explicitly request this information at any time.
c906108c
SS
3281
3282@table @code
3283@kindex info program
3284@item info program
3285Display information about the status of your program: whether it is
7a292a7a 3286running or not, what process it is, and why it stopped.
c906108c
SS
3287@end table
3288
3289@menu
3290* Breakpoints:: Breakpoints, watchpoints, and catchpoints
3291* Continuing and Stepping:: Resuming execution
aad1c02c
TT
3292* Skipping Over Functions and Files::
3293 Skipping over functions and files
c906108c 3294* Signals:: Signals
c906108c 3295* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
3296@end menu
3297
6d2ebf8b 3298@node Breakpoints
79a6e687 3299@section Breakpoints, Watchpoints, and Catchpoints
c906108c
SS
3300
3301@cindex breakpoints
3302A @dfn{breakpoint} makes your program stop whenever a certain point in
3303the program is reached. For each breakpoint, you can add conditions to
3304control in finer detail whether your program stops. You can set
3305breakpoints with the @code{break} command and its variants (@pxref{Set
79a6e687 3306Breaks, ,Setting Breakpoints}), to specify the place where your program
c906108c
SS
3307should stop by line number, function name or exact address in the
3308program.
3309
09d4efe1
EZ
3310On some systems, you can set breakpoints in shared libraries before
3311the executable is run. There is a minor limitation on HP-UX systems:
3312you must wait until the executable is run in order to set breakpoints
3313in shared library routines that are not called directly by the program
3314(for example, routines that are arguments in a @code{pthread_create}
3315call).
c906108c
SS
3316
3317@cindex watchpoints
fd60e0df 3318@cindex data breakpoints
c906108c
SS
3319@cindex memory tracing
3320@cindex breakpoint on memory address
3321@cindex breakpoint on variable modification
3322A @dfn{watchpoint} is a special breakpoint that stops your program
fd60e0df 3323when the value of an expression changes. The expression may be a value
0ced0c34 3324of a variable, or it could involve values of one or more variables
fd60e0df
EZ
3325combined by operators, such as @samp{a + b}. This is sometimes called
3326@dfn{data breakpoints}. You must use a different command to set
79a6e687 3327watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside
fd60e0df
EZ
3328from that, you can manage a watchpoint like any other breakpoint: you
3329enable, disable, and delete both breakpoints and watchpoints using the
3330same commands.
c906108c
SS
3331
3332You can arrange to have values from your program displayed automatically
3333whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
79a6e687 3334Automatic Display}.
c906108c
SS
3335
3336@cindex catchpoints
3337@cindex breakpoint on events
3338A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 3339when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
3340exception or the loading of a library. As with watchpoints, you use a
3341different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
79a6e687 3342Catchpoints}), but aside from that, you can manage a catchpoint like any
c906108c 3343other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 3344@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
3345
3346@cindex breakpoint numbers
3347@cindex numbers for breakpoints
3348@value{GDBN} assigns a number to each breakpoint, watchpoint, or
3349catchpoint when you create it; these numbers are successive integers
3350starting with one. In many of the commands for controlling various
3351features of breakpoints you use the breakpoint number to say which
3352breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
3353@dfn{disabled}; if disabled, it has no effect on your program until you
3354enable it again.
3355
c5394b80
JM
3356@cindex breakpoint ranges
3357@cindex ranges of breakpoints
3358Some @value{GDBN} commands accept a range of breakpoints on which to
3359operate. A breakpoint range is either a single breakpoint number, like
3360@samp{5}, or two such numbers, in increasing order, separated by a
3361hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
d52fb0e9 3362all breakpoints in that range are operated on.
c5394b80 3363
c906108c
SS
3364@menu
3365* Set Breaks:: Setting breakpoints
3366* Set Watchpoints:: Setting watchpoints
3367* Set Catchpoints:: Setting catchpoints
3368* Delete Breaks:: Deleting breakpoints
3369* Disabling:: Disabling breakpoints
3370* Conditions:: Break conditions
3371* Break Commands:: Breakpoint command lists
e7e0cddf 3372* Dynamic Printf:: Dynamic printf
6149aea9 3373* Save Breakpoints:: How to save breakpoints in a file
62e5f89c 3374* Static Probe Points:: Listing static probe points
d4f3574e 3375* Error in Breakpoints:: ``Cannot insert breakpoints''
79a6e687 3376* Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
c906108c
SS
3377@end menu
3378
6d2ebf8b 3379@node Set Breaks
79a6e687 3380@subsection Setting Breakpoints
c906108c 3381
5d161b24 3382@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
3383@c consider in particular declaration with/without initialization.
3384@c
3385@c FIXME 2 is there stuff on this already? break at fun start, already init?
3386
3387@kindex break
41afff9a
EZ
3388@kindex b @r{(@code{break})}
3389@vindex $bpnum@r{, convenience variable}
c906108c
SS
3390@cindex latest breakpoint
3391Breakpoints are set with the @code{break} command (abbreviated
5d161b24 3392@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 3393number of the breakpoint you've set most recently; see @ref{Convenience
79a6e687 3394Vars,, Convenience Variables}, for a discussion of what you can do with
c906108c
SS
3395convenience variables.
3396
c906108c 3397@table @code
2a25a5ba
EZ
3398@item break @var{location}
3399Set a breakpoint at the given @var{location}, which can specify a
3400function name, a line number, or an address of an instruction.
3401(@xref{Specify Location}, for a list of all the possible ways to
3402specify a @var{location}.) The breakpoint will stop your program just
3403before it executes any of the code in the specified @var{location}.
3404
c906108c 3405When using source languages that permit overloading of symbols, such as
2a25a5ba 3406C@t{++}, a function name may refer to more than one possible place to break.
6ba66d6a
JB
3407@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of
3408that situation.
c906108c 3409
45ac276d 3410It is also possible to insert a breakpoint that will stop the program
2c88c651
JB
3411only if a specific thread (@pxref{Thread-Specific Breakpoints})
3412or a specific task (@pxref{Ada Tasks}) hits that breakpoint.
45ac276d 3413
c906108c
SS
3414@item break
3415When called without any arguments, @code{break} sets a breakpoint at
3416the next instruction to be executed in the selected stack frame
3417(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
3418innermost, this makes your program stop as soon as control
3419returns to that frame. This is similar to the effect of a
3420@code{finish} command in the frame inside the selected frame---except
3421that @code{finish} does not leave an active breakpoint. If you use
3422@code{break} without an argument in the innermost frame, @value{GDBN} stops
3423the next time it reaches the current location; this may be useful
3424inside loops.
3425
3426@value{GDBN} normally ignores breakpoints when it resumes execution, until at
3427least one instruction has been executed. If it did not do this, you
3428would be unable to proceed past a breakpoint without first disabling the
3429breakpoint. This rule applies whether or not the breakpoint already
3430existed when your program stopped.
3431
3432@item break @dots{} if @var{cond}
3433Set a breakpoint with condition @var{cond}; evaluate the expression
3434@var{cond} each time the breakpoint is reached, and stop only if the
3435value is nonzero---that is, if @var{cond} evaluates as true.
3436@samp{@dots{}} stands for one of the possible arguments described
3437above (or no argument) specifying where to break. @xref{Conditions,
79a6e687 3438,Break Conditions}, for more information on breakpoint conditions.
c906108c
SS
3439
3440@kindex tbreak
3441@item tbreak @var{args}
3442Set a breakpoint enabled only for one stop. @var{args} are the
3443same as for the @code{break} command, and the breakpoint is set in the same
3444way, but the breakpoint is automatically deleted after the first time your
79a6e687 3445program stops there. @xref{Disabling, ,Disabling Breakpoints}.
c906108c 3446
c906108c 3447@kindex hbreak
ba04e063 3448@cindex hardware breakpoints
c906108c 3449@item hbreak @var{args}
d4f3574e
SS
3450Set a hardware-assisted breakpoint. @var{args} are the same as for the
3451@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
3452breakpoint requires hardware support and some target hardware may not
3453have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
3454debugging, so you can set a breakpoint at an instruction without
3455changing the instruction. This can be used with the new trap-generation
09d4efe1 3456provided by SPARClite DSU and most x86-based targets. These targets
d4f3574e
SS
3457will generate traps when a program accesses some data or instruction
3458address that is assigned to the debug registers. However the hardware
3459breakpoint registers can take a limited number of breakpoints. For
3460example, on the DSU, only two data breakpoints can be set at a time, and
3461@value{GDBN} will reject this command if more than two are used. Delete
3462or disable unused hardware breakpoints before setting new ones
79a6e687
BW
3463(@pxref{Disabling, ,Disabling Breakpoints}).
3464@xref{Conditions, ,Break Conditions}.
9c16f35a
EZ
3465For remote targets, you can restrict the number of hardware
3466breakpoints @value{GDBN} will use, see @ref{set remote
3467hardware-breakpoint-limit}.
501eef12 3468
c906108c
SS
3469@kindex thbreak
3470@item thbreak @var{args}
3471Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
3472are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 3473the same way. However, like the @code{tbreak} command,
c906108c
SS
3474the breakpoint is automatically deleted after the
3475first time your program stops there. Also, like the @code{hbreak}
5d161b24 3476command, the breakpoint requires hardware support and some target hardware
79a6e687
BW
3477may not have this support. @xref{Disabling, ,Disabling Breakpoints}.
3478See also @ref{Conditions, ,Break Conditions}.
c906108c
SS
3479
3480@kindex rbreak
3481@cindex regular expression
8bd10a10 3482@cindex breakpoints at functions matching a regexp
c45da7e6 3483@cindex set breakpoints in many functions
c906108c 3484@item rbreak @var{regex}
c906108c 3485Set breakpoints on all functions matching the regular expression
11cf8741
JM
3486@var{regex}. This command sets an unconditional breakpoint on all
3487matches, printing a list of all breakpoints it set. Once these
3488breakpoints are set, they are treated just like the breakpoints set with
3489the @code{break} command. You can delete them, disable them, or make
3490them conditional the same way as any other breakpoint.
3491
3492The syntax of the regular expression is the standard one used with tools
3493like @file{grep}. Note that this is different from the syntax used by
3494shells, so for instance @code{foo*} matches all functions that include
3495an @code{fo} followed by zero or more @code{o}s. There is an implicit
3496@code{.*} leading and trailing the regular expression you supply, so to
3497match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 3498
f7dc1244 3499@cindex non-member C@t{++} functions, set breakpoint in
b37052ae 3500When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
3501breakpoints on overloaded functions that are not members of any special
3502classes.
c906108c 3503
f7dc1244
EZ
3504@cindex set breakpoints on all functions
3505The @code{rbreak} command can be used to set breakpoints in
3506@strong{all} the functions in a program, like this:
3507
3508@smallexample
3509(@value{GDBP}) rbreak .
3510@end smallexample
3511
8bd10a10
CM
3512@item rbreak @var{file}:@var{regex}
3513If @code{rbreak} is called with a filename qualification, it limits
3514the search for functions matching the given regular expression to the
3515specified @var{file}. This can be used, for example, to set breakpoints on
3516every function in a given file:
3517
3518@smallexample
3519(@value{GDBP}) rbreak file.c:.
3520@end smallexample
3521
3522The colon separating the filename qualifier from the regex may
3523optionally be surrounded by spaces.
3524
c906108c
SS
3525@kindex info breakpoints
3526@cindex @code{$_} and @code{info breakpoints}
e5a67952
MS
3527@item info breakpoints @r{[}@var{n}@dots{}@r{]}
3528@itemx info break @r{[}@var{n}@dots{}@r{]}
c906108c 3529Print a table of all breakpoints, watchpoints, and catchpoints set and
45ac1734 3530not deleted. Optional argument @var{n} means print information only
e5a67952
MS
3531about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)).
3532For each breakpoint, following columns are printed:
c906108c
SS
3533
3534@table @emph
3535@item Breakpoint Numbers
3536@item Type
3537Breakpoint, watchpoint, or catchpoint.
3538@item Disposition
3539Whether the breakpoint is marked to be disabled or deleted when hit.
3540@item Enabled or Disabled
3541Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
b3db7447 3542that are not enabled.
c906108c 3543@item Address
fe6fbf8b 3544Where the breakpoint is in your program, as a memory address. For a
b3db7447
NR
3545pending breakpoint whose address is not yet known, this field will
3546contain @samp{<PENDING>}. Such breakpoint won't fire until a shared
3547library that has the symbol or line referred by breakpoint is loaded.
3548See below for details. A breakpoint with several locations will
3b784c4f 3549have @samp{<MULTIPLE>} in this field---see below for details.
c906108c
SS
3550@item What
3551Where the breakpoint is in the source for your program, as a file and
2650777c
JJ
3552line number. For a pending breakpoint, the original string passed to
3553the breakpoint command will be listed as it cannot be resolved until
3554the appropriate shared library is loaded in the future.
c906108c
SS
3555@end table
3556
3557@noindent
83364271
LM
3558If a breakpoint is conditional, there are two evaluation modes: ``host'' and
3559``target''. If mode is ``host'', breakpoint condition evaluation is done by
3560@value{GDBN} on the host's side. If it is ``target'', then the condition
3561is evaluated by the target. The @code{info break} command shows
3562the condition on the line following the affected breakpoint, together with
3563its condition evaluation mode in between parentheses.
3564
3565Breakpoint commands, if any, are listed after that. A pending breakpoint is
3566allowed to have a condition specified for it. The condition is not parsed for
3567validity until a shared library is loaded that allows the pending
3568breakpoint to resolve to a valid location.
c906108c
SS
3569
3570@noindent
3571@code{info break} with a breakpoint
3572number @var{n} as argument lists only that breakpoint. The
3573convenience variable @code{$_} and the default examining-address for
3574the @code{x} command are set to the address of the last breakpoint
79a6e687 3575listed (@pxref{Memory, ,Examining Memory}).
c906108c
SS
3576
3577@noindent
3578@code{info break} displays a count of the number of times the breakpoint
3579has been hit. This is especially useful in conjunction with the
3580@code{ignore} command. You can ignore a large number of breakpoint
3581hits, look at the breakpoint info to see how many times the breakpoint
3582was hit, and then run again, ignoring one less than that number. This
3583will get you quickly to the last hit of that breakpoint.
816338b5
SS
3584
3585@noindent
3586For a breakpoints with an enable count (xref) greater than 1,
3587@code{info break} also displays that count.
3588
c906108c
SS
3589@end table
3590
3591@value{GDBN} allows you to set any number of breakpoints at the same place in
3592your program. There is nothing silly or meaningless about this. When
3593the breakpoints are conditional, this is even useful
79a6e687 3594(@pxref{Conditions, ,Break Conditions}).
c906108c 3595
2e9132cc
EZ
3596@cindex multiple locations, breakpoints
3597@cindex breakpoints, multiple locations
fcda367b 3598It is possible that a breakpoint corresponds to several locations
fe6fbf8b
VP
3599in your program. Examples of this situation are:
3600
3601@itemize @bullet
f8eba3c6
TT
3602@item
3603Multiple functions in the program may have the same name.
3604
fe6fbf8b
VP
3605@item
3606For a C@t{++} constructor, the @value{NGCC} compiler generates several
3607instances of the function body, used in different cases.
3608
3609@item
3610For a C@t{++} template function, a given line in the function can
3611correspond to any number of instantiations.
3612
3613@item
3614For an inlined function, a given source line can correspond to
3615several places where that function is inlined.
fe6fbf8b
VP
3616@end itemize
3617
3618In all those cases, @value{GDBN} will insert a breakpoint at all
f8eba3c6 3619the relevant locations.
fe6fbf8b 3620
3b784c4f
EZ
3621A breakpoint with multiple locations is displayed in the breakpoint
3622table using several rows---one header row, followed by one row for
3623each breakpoint location. The header row has @samp{<MULTIPLE>} in the
3624address column. The rows for individual locations contain the actual
3625addresses for locations, and show the functions to which those
3626locations belong. The number column for a location is of the form
fe6fbf8b
VP
3627@var{breakpoint-number}.@var{location-number}.
3628
3629For example:
3b784c4f 3630
fe6fbf8b
VP
3631@smallexample
3632Num Type Disp Enb Address What
36331 breakpoint keep y <MULTIPLE>
3634 stop only if i==1
3635 breakpoint already hit 1 time
36361.1 y 0x080486a2 in void foo<int>() at t.cc:8
36371.2 y 0x080486ca in void foo<double>() at t.cc:8
3638@end smallexample
3639
3640Each location can be individually enabled or disabled by passing
3641@var{breakpoint-number}.@var{location-number} as argument to the
3b784c4f
EZ
3642@code{enable} and @code{disable} commands. Note that you cannot
3643delete the individual locations from the list, you can only delete the
16bfc218 3644entire list of locations that belong to their parent breakpoint (with
3b784c4f
EZ
3645the @kbd{delete @var{num}} command, where @var{num} is the number of
3646the parent breakpoint, 1 in the above example). Disabling or enabling
3647the parent breakpoint (@pxref{Disabling}) affects all of the locations
3648that belong to that breakpoint.
fe6fbf8b 3649
2650777c 3650@cindex pending breakpoints
fe6fbf8b 3651It's quite common to have a breakpoint inside a shared library.
3b784c4f 3652Shared libraries can be loaded and unloaded explicitly,
fe6fbf8b
VP
3653and possibly repeatedly, as the program is executed. To support
3654this use case, @value{GDBN} updates breakpoint locations whenever
3655any shared library is loaded or unloaded. Typically, you would
fcda367b 3656set a breakpoint in a shared library at the beginning of your
fe6fbf8b
VP
3657debugging session, when the library is not loaded, and when the
3658symbols from the library are not available. When you try to set
3659breakpoint, @value{GDBN} will ask you if you want to set
3b784c4f 3660a so called @dfn{pending breakpoint}---breakpoint whose address
fe6fbf8b
VP
3661is not yet resolved.
3662
3663After the program is run, whenever a new shared library is loaded,
3664@value{GDBN} reevaluates all the breakpoints. When a newly loaded
3665shared library contains the symbol or line referred to by some
3666pending breakpoint, that breakpoint is resolved and becomes an
3667ordinary breakpoint. When a library is unloaded, all breakpoints
3668that refer to its symbols or source lines become pending again.
3669
3670This logic works for breakpoints with multiple locations, too. For
3671example, if you have a breakpoint in a C@t{++} template function, and
3672a newly loaded shared library has an instantiation of that template,
3673a new location is added to the list of locations for the breakpoint.
3674
3675Except for having unresolved address, pending breakpoints do not
3676differ from regular breakpoints. You can set conditions or commands,
3677enable and disable them and perform other breakpoint operations.
3678
3679@value{GDBN} provides some additional commands for controlling what
3680happens when the @samp{break} command cannot resolve breakpoint
3681address specification to an address:
dd79a6cf
JJ
3682
3683@kindex set breakpoint pending
3684@kindex show breakpoint pending
3685@table @code
3686@item set breakpoint pending auto
3687This is the default behavior. When @value{GDBN} cannot find the breakpoint
3688location, it queries you whether a pending breakpoint should be created.
3689
3690@item set breakpoint pending on
3691This indicates that an unrecognized breakpoint location should automatically
3692result in a pending breakpoint being created.
3693
3694@item set breakpoint pending off
3695This indicates that pending breakpoints are not to be created. Any
3696unrecognized breakpoint location results in an error. This setting does
3697not affect any pending breakpoints previously created.
3698
3699@item show breakpoint pending
3700Show the current behavior setting for creating pending breakpoints.
3701@end table
2650777c 3702
fe6fbf8b
VP
3703The settings above only affect the @code{break} command and its
3704variants. Once breakpoint is set, it will be automatically updated
3705as shared libraries are loaded and unloaded.
2650777c 3706
765dc015
VP
3707@cindex automatic hardware breakpoints
3708For some targets, @value{GDBN} can automatically decide if hardware or
3709software breakpoints should be used, depending on whether the
3710breakpoint address is read-only or read-write. This applies to
3711breakpoints set with the @code{break} command as well as to internal
3712breakpoints set by commands like @code{next} and @code{finish}. For
fcda367b 3713breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware
765dc015
VP
3714breakpoints.
3715
3716You can control this automatic behaviour with the following commands::
3717
3718@kindex set breakpoint auto-hw
3719@kindex show breakpoint auto-hw
3720@table @code
3721@item set breakpoint auto-hw on
3722This is the default behavior. When @value{GDBN} sets a breakpoint, it
3723will try to use the target memory map to decide if software or hardware
3724breakpoint must be used.
3725
3726@item set breakpoint auto-hw off
3727This indicates @value{GDBN} should not automatically select breakpoint
3728type. If the target provides a memory map, @value{GDBN} will warn when
3729trying to set software breakpoint at a read-only address.
3730@end table
3731
74960c60
VP
3732@value{GDBN} normally implements breakpoints by replacing the program code
3733at the breakpoint address with a special instruction, which, when
3734executed, given control to the debugger. By default, the program
3735code is so modified only when the program is resumed. As soon as
3736the program stops, @value{GDBN} restores the original instructions. This
3737behaviour guards against leaving breakpoints inserted in the
3738target should gdb abrubptly disconnect. However, with slow remote
3739targets, inserting and removing breakpoint can reduce the performance.
3740This behavior can be controlled with the following commands::
3741
3742@kindex set breakpoint always-inserted
3743@kindex show breakpoint always-inserted
3744@table @code
3745@item set breakpoint always-inserted off
33e5cbd6
PA
3746All breakpoints, including newly added by the user, are inserted in
3747the target only when the target is resumed. All breakpoints are
3748removed from the target when it stops.
74960c60
VP
3749
3750@item set breakpoint always-inserted on
3751Causes all breakpoints to be inserted in the target at all times. If
3752the user adds a new breakpoint, or changes an existing breakpoint, the
3753breakpoints in the target are updated immediately. A breakpoint is
3754removed from the target only when breakpoint itself is removed.
33e5cbd6
PA
3755
3756@cindex non-stop mode, and @code{breakpoint always-inserted}
3757@item set breakpoint always-inserted auto
3758This is the default mode. If @value{GDBN} is controlling the inferior
3759in non-stop mode (@pxref{Non-Stop Mode}), gdb behaves as if
3760@code{breakpoint always-inserted} mode is on. If @value{GDBN} is
3761controlling the inferior in all-stop mode, @value{GDBN} behaves as if
3762@code{breakpoint always-inserted} mode is off.
74960c60 3763@end table
765dc015 3764
83364271
LM
3765@value{GDBN} handles conditional breakpoints by evaluating these conditions
3766when a breakpoint breaks. If the condition is true, then the process being
3767debugged stops, otherwise the process is resumed.
3768
3769If the target supports evaluating conditions on its end, @value{GDBN} may
3770download the breakpoint, together with its conditions, to it.
3771
3772This feature can be controlled via the following commands:
3773
3774@kindex set breakpoint condition-evaluation
3775@kindex show breakpoint condition-evaluation
3776@table @code
3777@item set breakpoint condition-evaluation host
3778This option commands @value{GDBN} to evaluate the breakpoint
3779conditions on the host's side. Unconditional breakpoints are sent to
3780the target which in turn receives the triggers and reports them back to GDB
3781for condition evaluation. This is the standard evaluation mode.
3782
3783@item set breakpoint condition-evaluation target
3784This option commands @value{GDBN} to download breakpoint conditions
3785to the target at the moment of their insertion. The target
3786is responsible for evaluating the conditional expression and reporting
3787breakpoint stop events back to @value{GDBN} whenever the condition
3788is true. Due to limitations of target-side evaluation, some conditions
3789cannot be evaluated there, e.g., conditions that depend on local data
3790that is only known to the host. Examples include
3791conditional expressions involving convenience variables, complex types
3792that cannot be handled by the agent expression parser and expressions
3793that are too long to be sent over to the target, specially when the
3794target is a remote system. In these cases, the conditions will be
3795evaluated by @value{GDBN}.
3796
3797@item set breakpoint condition-evaluation auto
3798This is the default mode. If the target supports evaluating breakpoint
3799conditions on its end, @value{GDBN} will download breakpoint conditions to
3800the target (limitations mentioned previously apply). If the target does
3801not support breakpoint condition evaluation, then @value{GDBN} will fallback
3802to evaluating all these conditions on the host's side.
3803@end table
3804
3805
c906108c
SS
3806@cindex negative breakpoint numbers
3807@cindex internal @value{GDBN} breakpoints
eb12ee30
AC
3808@value{GDBN} itself sometimes sets breakpoints in your program for
3809special purposes, such as proper handling of @code{longjmp} (in C
3810programs). These internal breakpoints are assigned negative numbers,
3811starting with @code{-1}; @samp{info breakpoints} does not display them.
c906108c 3812You can see these breakpoints with the @value{GDBN} maintenance command
eb12ee30 3813@samp{maint info breakpoints} (@pxref{maint info breakpoints}).
c906108c
SS
3814
3815
6d2ebf8b 3816@node Set Watchpoints
79a6e687 3817@subsection Setting Watchpoints
c906108c
SS
3818
3819@cindex setting watchpoints
c906108c
SS
3820You can use a watchpoint to stop execution whenever the value of an
3821expression changes, without having to predict a particular place where
fd60e0df
EZ
3822this may happen. (This is sometimes called a @dfn{data breakpoint}.)
3823The expression may be as simple as the value of a single variable, or
3824as complex as many variables combined by operators. Examples include:
3825
3826@itemize @bullet
3827@item
3828A reference to the value of a single variable.
3829
3830@item
3831An address cast to an appropriate data type. For example,
3832@samp{*(int *)0x12345678} will watch a 4-byte region at the specified
3833address (assuming an @code{int} occupies 4 bytes).
3834
3835@item
3836An arbitrarily complex expression, such as @samp{a*b + c/d}. The
3837expression can use any operators valid in the program's native
3838language (@pxref{Languages}).
3839@end itemize
c906108c 3840
fa4727a6
DJ
3841You can set a watchpoint on an expression even if the expression can
3842not be evaluated yet. For instance, you can set a watchpoint on
3843@samp{*global_ptr} before @samp{global_ptr} is initialized.
3844@value{GDBN} will stop when your program sets @samp{global_ptr} and
3845the expression produces a valid value. If the expression becomes
3846valid in some other way than changing a variable (e.g.@: if the memory
3847pointed to by @samp{*global_ptr} becomes readable as the result of a
3848@code{malloc} call), @value{GDBN} may not stop until the next time
3849the expression changes.
3850
82f2d802
EZ
3851@cindex software watchpoints
3852@cindex hardware watchpoints
c906108c 3853Depending on your system, watchpoints may be implemented in software or
2df3850c 3854hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
3855program and testing the variable's value each time, which is hundreds of
3856times slower than normal execution. (But this may still be worth it, to
3857catch errors where you have no clue what part of your program is the
3858culprit.)
3859
37e4754d 3860On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other
82f2d802
EZ
3861x86-based targets, @value{GDBN} includes support for hardware
3862watchpoints, which do not slow down the running of your program.
c906108c
SS
3863
3864@table @code
3865@kindex watch
9c06b0b4 3866@item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
fd60e0df
EZ
3867Set a watchpoint for an expression. @value{GDBN} will break when the
3868expression @var{expr} is written into by the program and its value
3869changes. The simplest (and the most popular) use of this command is
3870to watch the value of a single variable:
3871
3872@smallexample
3873(@value{GDBP}) watch foo
3874@end smallexample
c906108c 3875
d8b2a693 3876If the command includes a @code{@r{[}thread @var{threadnum}@r{]}}
9c06b0b4 3877argument, @value{GDBN} breaks only when the thread identified by
d8b2a693
JB
3878@var{threadnum} changes the value of @var{expr}. If any other threads
3879change the value of @var{expr}, @value{GDBN} will not break. Note
3880that watchpoints restricted to a single thread in this way only work
3881with Hardware Watchpoints.
3882
06a64a0b
TT
3883Ordinarily a watchpoint respects the scope of variables in @var{expr}
3884(see below). The @code{-location} argument tells @value{GDBN} to
3885instead watch the memory referred to by @var{expr}. In this case,
3886@value{GDBN} will evaluate @var{expr}, take the address of the result,
3887and watch the memory at that address. The type of the result is used
3888to determine the size of the watched memory. If the expression's
3889result does not have an address, then @value{GDBN} will print an
3890error.
3891
9c06b0b4
TJB
3892The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation
3893of masked watchpoints, if the current architecture supports this
3894feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC
3895Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition
3896to an address to watch. The mask specifies that some bits of an address
3897(the bits which are reset in the mask) should be ignored when matching
3898the address accessed by the inferior against the watchpoint address.
3899Thus, a masked watchpoint watches many addresses simultaneously---those
3900addresses whose unmasked bits are identical to the unmasked bits in the
3901watchpoint address. The @code{mask} argument implies @code{-location}.
3902Examples:
3903
3904@smallexample
3905(@value{GDBP}) watch foo mask 0xffff00ff
3906(@value{GDBP}) watch *0xdeadbeef mask 0xffffff00
3907@end smallexample
3908
c906108c 3909@kindex rwatch
9c06b0b4 3910@item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
09d4efe1
EZ
3911Set a watchpoint that will break when the value of @var{expr} is read
3912by the program.
c906108c
SS
3913
3914@kindex awatch
9c06b0b4 3915@item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
09d4efe1
EZ
3916Set a watchpoint that will break when @var{expr} is either read from
3917or written into by the program.
c906108c 3918
e5a67952
MS
3919@kindex info watchpoints @r{[}@var{n}@dots{}@r{]}
3920@item info watchpoints @r{[}@var{n}@dots{}@r{]}
d77f58be
SS
3921This command prints a list of watchpoints, using the same format as
3922@code{info break} (@pxref{Set Breaks}).
c906108c
SS
3923@end table
3924
65d79d4b
SDJ
3925If you watch for a change in a numerically entered address you need to
3926dereference it, as the address itself is just a constant number which will
3927never change. @value{GDBN} refuses to create a watchpoint that watches
3928a never-changing value:
3929
3930@smallexample
3931(@value{GDBP}) watch 0x600850
3932Cannot watch constant value 0x600850.
3933(@value{GDBP}) watch *(int *) 0x600850
3934Watchpoint 1: *(int *) 6293584
3935@end smallexample
3936
c906108c
SS
3937@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
3938watchpoints execute very quickly, and the debugger reports a change in
3939value at the exact instruction where the change occurs. If @value{GDBN}
3940cannot set a hardware watchpoint, it sets a software watchpoint, which
3941executes more slowly and reports the change in value at the next
82f2d802
EZ
3942@emph{statement}, not the instruction, after the change occurs.
3943
82f2d802
EZ
3944@cindex use only software watchpoints
3945You can force @value{GDBN} to use only software watchpoints with the
3946@kbd{set can-use-hw-watchpoints 0} command. With this variable set to
3947zero, @value{GDBN} will never try to use hardware watchpoints, even if
3948the underlying system supports them. (Note that hardware-assisted
3949watchpoints that were set @emph{before} setting
3950@code{can-use-hw-watchpoints} to zero will still use the hardware
d3e8051b 3951mechanism of watching expression values.)
c906108c 3952
9c16f35a
EZ
3953@table @code
3954@item set can-use-hw-watchpoints
3955@kindex set can-use-hw-watchpoints
3956Set whether or not to use hardware watchpoints.
3957
3958@item show can-use-hw-watchpoints
3959@kindex show can-use-hw-watchpoints
3960Show the current mode of using hardware watchpoints.
3961@end table
3962
3963For remote targets, you can restrict the number of hardware
3964watchpoints @value{GDBN} will use, see @ref{set remote
3965hardware-breakpoint-limit}.
3966
c906108c
SS
3967When you issue the @code{watch} command, @value{GDBN} reports
3968
474c8240 3969@smallexample
c906108c 3970Hardware watchpoint @var{num}: @var{expr}
474c8240 3971@end smallexample
c906108c
SS
3972
3973@noindent
3974if it was able to set a hardware watchpoint.
3975
7be570e7
JM
3976Currently, the @code{awatch} and @code{rwatch} commands can only set
3977hardware watchpoints, because accesses to data that don't change the
3978value of the watched expression cannot be detected without examining
3979every instruction as it is being executed, and @value{GDBN} does not do
3980that currently. If @value{GDBN} finds that it is unable to set a
3981hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
3982will print a message like this:
3983
3984@smallexample
3985Expression cannot be implemented with read/access watchpoint.
3986@end smallexample
3987
3988Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
3989data type of the watched expression is wider than what a hardware
3990watchpoint on the target machine can handle. For example, some systems
3991can only watch regions that are up to 4 bytes wide; on such systems you
3992cannot set hardware watchpoints for an expression that yields a
3993double-precision floating-point number (which is typically 8 bytes
3994wide). As a work-around, it might be possible to break the large region
3995into a series of smaller ones and watch them with separate watchpoints.
3996
3997If you set too many hardware watchpoints, @value{GDBN} might be unable
3998to insert all of them when you resume the execution of your program.
3999Since the precise number of active watchpoints is unknown until such
4000time as the program is about to be resumed, @value{GDBN} might not be
4001able to warn you about this when you set the watchpoints, and the
4002warning will be printed only when the program is resumed:
4003
4004@smallexample
4005Hardware watchpoint @var{num}: Could not insert watchpoint
4006@end smallexample
4007
4008@noindent
4009If this happens, delete or disable some of the watchpoints.
4010
fd60e0df
EZ
4011Watching complex expressions that reference many variables can also
4012exhaust the resources available for hardware-assisted watchpoints.
4013That's because @value{GDBN} needs to watch every variable in the
4014expression with separately allocated resources.
4015
c906108c 4016If you call a function interactively using @code{print} or @code{call},
2df3850c 4017any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
4018kind of breakpoint or the call completes.
4019
7be570e7
JM
4020@value{GDBN} automatically deletes watchpoints that watch local
4021(automatic) variables, or expressions that involve such variables, when
4022they go out of scope, that is, when the execution leaves the block in
4023which these variables were defined. In particular, when the program
4024being debugged terminates, @emph{all} local variables go out of scope,
4025and so only watchpoints that watch global variables remain set. If you
4026rerun the program, you will need to set all such watchpoints again. One
4027way of doing that would be to set a code breakpoint at the entry to the
4028@code{main} function and when it breaks, set all the watchpoints.
4029
c906108c
SS
4030@cindex watchpoints and threads
4031@cindex threads and watchpoints
d983da9c
DJ
4032In multi-threaded programs, watchpoints will detect changes to the
4033watched expression from every thread.
4034
4035@quotation
4036@emph{Warning:} In multi-threaded programs, software watchpoints
53a5351d
JM
4037have only limited usefulness. If @value{GDBN} creates a software
4038watchpoint, it can only watch the value of an expression @emph{in a
4039single thread}. If you are confident that the expression can only
4040change due to the current thread's activity (and if you are also
4041confident that no other thread can become current), then you can use
4042software watchpoints as usual. However, @value{GDBN} may not notice
4043when a non-current thread's activity changes the expression. (Hardware
4044watchpoints, in contrast, watch an expression in all threads.)
c906108c 4045@end quotation
c906108c 4046
501eef12
AC
4047@xref{set remote hardware-watchpoint-limit}.
4048
6d2ebf8b 4049@node Set Catchpoints
79a6e687 4050@subsection Setting Catchpoints
d4f3574e 4051@cindex catchpoints, setting
c906108c
SS
4052@cindex exception handlers
4053@cindex event handling
4054
4055You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 4056kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
4057shared library. Use the @code{catch} command to set a catchpoint.
4058
4059@table @code
4060@kindex catch
4061@item catch @var{event}
4062Stop when @var{event} occurs. @var{event} can be any of the following:
4063@table @code
4064@item throw
4644b6e3 4065@cindex stop on C@t{++} exceptions
b37052ae 4066The throwing of a C@t{++} exception.
c906108c
SS
4067
4068@item catch
b37052ae 4069The catching of a C@t{++} exception.
c906108c 4070
8936fcda
JB
4071@item exception
4072@cindex Ada exception catching
4073@cindex catch Ada exceptions
4074An Ada exception being raised. If an exception name is specified
4075at the end of the command (eg @code{catch exception Program_Error}),
4076the debugger will stop only when this specific exception is raised.
4077Otherwise, the debugger stops execution when any Ada exception is raised.
4078
87f67dba
JB
4079When inserting an exception catchpoint on a user-defined exception whose
4080name is identical to one of the exceptions defined by the language, the
4081fully qualified name must be used as the exception name. Otherwise,
4082@value{GDBN} will assume that it should stop on the pre-defined exception
4083rather than the user-defined one. For instance, assuming an exception
4084called @code{Constraint_Error} is defined in package @code{Pck}, then
4085the command to use to catch such exceptions is @kbd{catch exception
4086Pck.Constraint_Error}.
4087
8936fcda
JB
4088@item exception unhandled
4089An exception that was raised but is not handled by the program.
4090
4091@item assert
4092A failed Ada assertion.
4093
c906108c 4094@item exec
4644b6e3 4095@cindex break on fork/exec
5ee187d7
DJ
4096A call to @code{exec}. This is currently only available for HP-UX
4097and @sc{gnu}/Linux.
c906108c 4098
a96d9b2e 4099@item syscall
ee8e71d4 4100@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{}
a96d9b2e
SDJ
4101@cindex break on a system call.
4102A call to or return from a system call, a.k.a.@: @dfn{syscall}. A
4103syscall is a mechanism for application programs to request a service
4104from the operating system (OS) or one of the OS system services.
4105@value{GDBN} can catch some or all of the syscalls issued by the
4106debuggee, and show the related information for each syscall. If no
4107argument is specified, calls to and returns from all system calls
4108will be caught.
4109
4110@var{name} can be any system call name that is valid for the
4111underlying OS. Just what syscalls are valid depends on the OS. On
4112GNU and Unix systems, you can find the full list of valid syscall
4113names on @file{/usr/include/asm/unistd.h}.
4114
4115@c For MS-Windows, the syscall names and the corresponding numbers
4116@c can be found, e.g., on this URL:
4117@c http://www.metasploit.com/users/opcode/syscalls.html
4118@c but we don't support Windows syscalls yet.
4119
4120Normally, @value{GDBN} knows in advance which syscalls are valid for
4121each OS, so you can use the @value{GDBN} command-line completion
4122facilities (@pxref{Completion,, command completion}) to list the
4123available choices.
4124
4125You may also specify the system call numerically. A syscall's
4126number is the value passed to the OS's syscall dispatcher to
4127identify the requested service. When you specify the syscall by its
4128name, @value{GDBN} uses its database of syscalls to convert the name
4129into the corresponding numeric code, but using the number directly
4130may be useful if @value{GDBN}'s database does not have the complete
4131list of syscalls on your system (e.g., because @value{GDBN} lags
4132behind the OS upgrades).
4133
4134The example below illustrates how this command works if you don't provide
4135arguments to it:
4136
4137@smallexample
4138(@value{GDBP}) catch syscall
4139Catchpoint 1 (syscall)
4140(@value{GDBP}) r
4141Starting program: /tmp/catch-syscall
4142
4143Catchpoint 1 (call to syscall 'close'), \
4144 0xffffe424 in __kernel_vsyscall ()
4145(@value{GDBP}) c
4146Continuing.
4147
4148Catchpoint 1 (returned from syscall 'close'), \
4149 0xffffe424 in __kernel_vsyscall ()
4150(@value{GDBP})
4151@end smallexample
4152
4153Here is an example of catching a system call by name:
4154
4155@smallexample
4156(@value{GDBP}) catch syscall chroot
4157Catchpoint 1 (syscall 'chroot' [61])
4158(@value{GDBP}) r
4159Starting program: /tmp/catch-syscall
4160
4161Catchpoint 1 (call to syscall 'chroot'), \
4162 0xffffe424 in __kernel_vsyscall ()
4163(@value{GDBP}) c
4164Continuing.
4165
4166Catchpoint 1 (returned from syscall 'chroot'), \
4167 0xffffe424 in __kernel_vsyscall ()
4168(@value{GDBP})
4169@end smallexample
4170
4171An example of specifying a system call numerically. In the case
4172below, the syscall number has a corresponding entry in the XML
4173file, so @value{GDBN} finds its name and prints it:
4174
4175@smallexample
4176(@value{GDBP}) catch syscall 252
4177Catchpoint 1 (syscall(s) 'exit_group')
4178(@value{GDBP}) r
4179Starting program: /tmp/catch-syscall
4180
4181Catchpoint 1 (call to syscall 'exit_group'), \
4182 0xffffe424 in __kernel_vsyscall ()
4183(@value{GDBP}) c
4184Continuing.
4185
4186Program exited normally.
4187(@value{GDBP})
4188@end smallexample
4189
4190However, there can be situations when there is no corresponding name
4191in XML file for that syscall number. In this case, @value{GDBN} prints
4192a warning message saying that it was not able to find the syscall name,
4193but the catchpoint will be set anyway. See the example below:
4194
4195@smallexample
4196(@value{GDBP}) catch syscall 764
4197warning: The number '764' does not represent a known syscall.
4198Catchpoint 2 (syscall 764)
4199(@value{GDBP})
4200@end smallexample
4201
4202If you configure @value{GDBN} using the @samp{--without-expat} option,
4203it will not be able to display syscall names. Also, if your
4204architecture does not have an XML file describing its system calls,
4205you will not be able to see the syscall names. It is important to
4206notice that these two features are used for accessing the syscall
4207name database. In either case, you will see a warning like this:
4208
4209@smallexample
4210(@value{GDBP}) catch syscall
4211warning: Could not open "syscalls/i386-linux.xml"
4212warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'.
4213GDB will not be able to display syscall names.
4214Catchpoint 1 (syscall)
4215(@value{GDBP})
4216@end smallexample
4217
4218Of course, the file name will change depending on your architecture and system.
4219
4220Still using the example above, you can also try to catch a syscall by its
4221number. In this case, you would see something like:
4222
4223@smallexample
4224(@value{GDBP}) catch syscall 252
4225Catchpoint 1 (syscall(s) 252)
4226@end smallexample
4227
4228Again, in this case @value{GDBN} would not be able to display syscall's names.
4229
c906108c 4230@item fork
5ee187d7
DJ
4231A call to @code{fork}. This is currently only available for HP-UX
4232and @sc{gnu}/Linux.
c906108c
SS
4233
4234@item vfork
5ee187d7
DJ
4235A call to @code{vfork}. This is currently only available for HP-UX
4236and @sc{gnu}/Linux.
c906108c 4237
edcc5120
TT
4238@item load @r{[}regexp@r{]}
4239@itemx unload @r{[}regexp@r{]}
4240The loading or unloading of a shared library. If @var{regexp} is
4241given, then the catchpoint will stop only if the regular expression
4242matches one of the affected libraries.
4243
c906108c
SS
4244@end table
4245
4246@item tcatch @var{event}
4247Set a catchpoint that is enabled only for one stop. The catchpoint is
4248automatically deleted after the first time the event is caught.
4249
4250@end table
4251
4252Use the @code{info break} command to list the current catchpoints.
4253
b37052ae 4254There are currently some limitations to C@t{++} exception handling
c906108c
SS
4255(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
4256
4257@itemize @bullet
4258@item
4259If you call a function interactively, @value{GDBN} normally returns
4260control to you when the function has finished executing. If the call
4261raises an exception, however, the call may bypass the mechanism that
4262returns control to you and cause your program either to abort or to
4263simply continue running until it hits a breakpoint, catches a signal
4264that @value{GDBN} is listening for, or exits. This is the case even if
4265you set a catchpoint for the exception; catchpoints on exceptions are
4266disabled within interactive calls.
4267
4268@item
4269You cannot raise an exception interactively.
4270
4271@item
4272You cannot install an exception handler interactively.
4273@end itemize
4274
4275@cindex raise exceptions
4276Sometimes @code{catch} is not the best way to debug exception handling:
4277if you need to know exactly where an exception is raised, it is better to
4278stop @emph{before} the exception handler is called, since that way you
4279can see the stack before any unwinding takes place. If you set a
4280breakpoint in an exception handler instead, it may not be easy to find
4281out where the exception was raised.
4282
4283To stop just before an exception handler is called, you need some
b37052ae 4284knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
4285raised by calling a library function named @code{__raise_exception}
4286which has the following ANSI C interface:
4287
474c8240 4288@smallexample
c906108c 4289 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
4290 @var{id} is the exception identifier. */
4291 void __raise_exception (void **addr, void *id);
474c8240 4292@end smallexample
c906108c
SS
4293
4294@noindent
4295To make the debugger catch all exceptions before any stack
4296unwinding takes place, set a breakpoint on @code{__raise_exception}
79a6e687 4297(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Exceptions}).
c906108c 4298
79a6e687 4299With a conditional breakpoint (@pxref{Conditions, ,Break Conditions})
c906108c
SS
4300that depends on the value of @var{id}, you can stop your program when
4301a specific exception is raised. You can use multiple conditional
4302breakpoints to stop your program when any of a number of exceptions are
4303raised.
4304
4305
6d2ebf8b 4306@node Delete Breaks
79a6e687 4307@subsection Deleting Breakpoints
c906108c
SS
4308
4309@cindex clearing breakpoints, watchpoints, catchpoints
4310@cindex deleting breakpoints, watchpoints, catchpoints
4311It is often necessary to eliminate a breakpoint, watchpoint, or
4312catchpoint once it has done its job and you no longer want your program
4313to stop there. This is called @dfn{deleting} the breakpoint. A
4314breakpoint that has been deleted no longer exists; it is forgotten.
4315
4316With the @code{clear} command you can delete breakpoints according to
4317where they are in your program. With the @code{delete} command you can
4318delete individual breakpoints, watchpoints, or catchpoints by specifying
4319their breakpoint numbers.
4320
4321It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
4322automatically ignores breakpoints on the first instruction to be executed
4323when you continue execution without changing the execution address.
4324
4325@table @code
4326@kindex clear
4327@item clear
4328Delete any breakpoints at the next instruction to be executed in the
79a6e687 4329selected stack frame (@pxref{Selection, ,Selecting a Frame}). When
c906108c
SS
4330the innermost frame is selected, this is a good way to delete a
4331breakpoint where your program just stopped.
4332
2a25a5ba
EZ
4333@item clear @var{location}
4334Delete any breakpoints set at the specified @var{location}.
4335@xref{Specify Location}, for the various forms of @var{location}; the
4336most useful ones are listed below:
4337
4338@table @code
c906108c
SS
4339@item clear @var{function}
4340@itemx clear @var{filename}:@var{function}
09d4efe1 4341Delete any breakpoints set at entry to the named @var{function}.
c906108c
SS
4342
4343@item clear @var{linenum}
4344@itemx clear @var{filename}:@var{linenum}
09d4efe1
EZ
4345Delete any breakpoints set at or within the code of the specified
4346@var{linenum} of the specified @var{filename}.
2a25a5ba 4347@end table
c906108c
SS
4348
4349@cindex delete breakpoints
4350@kindex delete
41afff9a 4351@kindex d @r{(@code{delete})}
c5394b80
JM
4352@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
4353Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
4354ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
4355breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
4356confirm off}). You can abbreviate this command as @code{d}.
4357@end table
4358
6d2ebf8b 4359@node Disabling
79a6e687 4360@subsection Disabling Breakpoints
c906108c 4361
4644b6e3 4362@cindex enable/disable a breakpoint
c906108c
SS
4363Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
4364prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
4365it had been deleted, but remembers the information on the breakpoint so
4366that you can @dfn{enable} it again later.
4367
4368You disable and enable breakpoints, watchpoints, and catchpoints with
d77f58be
SS
4369the @code{enable} and @code{disable} commands, optionally specifying
4370one or more breakpoint numbers as arguments. Use @code{info break} to
4371print a list of all breakpoints, watchpoints, and catchpoints if you
4372do not know which numbers to use.
c906108c 4373
3b784c4f
EZ
4374Disabling and enabling a breakpoint that has multiple locations
4375affects all of its locations.
4376
816338b5
SS
4377A breakpoint, watchpoint, or catchpoint can have any of several
4378different states of enablement:
c906108c
SS
4379
4380@itemize @bullet
4381@item
4382Enabled. The breakpoint stops your program. A breakpoint set
4383with the @code{break} command starts out in this state.
4384@item
4385Disabled. The breakpoint has no effect on your program.
4386@item
4387Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 4388disabled.
c906108c 4389@item
816338b5
SS
4390Enabled for a count. The breakpoint stops your program for the next
4391N times, then becomes disabled.
4392@item
c906108c 4393Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
4394immediately after it does so it is deleted permanently. A breakpoint
4395set with the @code{tbreak} command starts out in this state.
c906108c
SS
4396@end itemize
4397
4398You can use the following commands to enable or disable breakpoints,
4399watchpoints, and catchpoints:
4400
4401@table @code
c906108c 4402@kindex disable
41afff9a 4403@kindex dis @r{(@code{disable})}
c5394b80 4404@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4405Disable the specified breakpoints---or all breakpoints, if none are
4406listed. A disabled breakpoint has no effect but is not forgotten. All
4407options such as ignore-counts, conditions and commands are remembered in
4408case the breakpoint is enabled again later. You may abbreviate
4409@code{disable} as @code{dis}.
4410
c906108c 4411@kindex enable
c5394b80 4412@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4413Enable the specified breakpoints (or all defined breakpoints). They
4414become effective once again in stopping your program.
4415
c5394b80 4416@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
4417Enable the specified breakpoints temporarily. @value{GDBN} disables any
4418of these breakpoints immediately after stopping your program.
4419
816338b5
SS
4420@item enable @r{[}breakpoints@r{]} count @var{count} @var{range}@dots{}
4421Enable the specified breakpoints temporarily. @value{GDBN} records
4422@var{count} with each of the specified breakpoints, and decrements a
4423breakpoint's count when it is hit. When any count reaches 0,
4424@value{GDBN} disables that breakpoint. If a breakpoint has an ignore
4425count (@pxref{Conditions, ,Break Conditions}), that will be
4426decremented to 0 before @var{count} is affected.
4427
c5394b80 4428@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
4429Enable the specified breakpoints to work once, then die. @value{GDBN}
4430deletes any of these breakpoints as soon as your program stops there.
09d4efe1 4431Breakpoints set by the @code{tbreak} command start out in this state.
c906108c
SS
4432@end table
4433
d4f3574e
SS
4434@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
4435@c confusing: tbreak is also initially enabled.
c906108c 4436Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
79a6e687 4437,Setting Breakpoints}), breakpoints that you set are initially enabled;
c906108c
SS
4438subsequently, they become disabled or enabled only when you use one of
4439the commands above. (The command @code{until} can set and delete a
4440breakpoint of its own, but it does not change the state of your other
4441breakpoints; see @ref{Continuing and Stepping, ,Continuing and
79a6e687 4442Stepping}.)
c906108c 4443
6d2ebf8b 4444@node Conditions
79a6e687 4445@subsection Break Conditions
c906108c
SS
4446@cindex conditional breakpoints
4447@cindex breakpoint conditions
4448
4449@c FIXME what is scope of break condition expr? Context where wanted?
5d161b24 4450@c in particular for a watchpoint?
c906108c
SS
4451The simplest sort of breakpoint breaks every time your program reaches a
4452specified place. You can also specify a @dfn{condition} for a
4453breakpoint. A condition is just a Boolean expression in your
4454programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
4455a condition evaluates the expression each time your program reaches it,
4456and your program stops only if the condition is @emph{true}.
4457
4458This is the converse of using assertions for program validation; in that
4459situation, you want to stop when the assertion is violated---that is,
4460when the condition is false. In C, if you want to test an assertion expressed
4461by the condition @var{assert}, you should set the condition
4462@samp{! @var{assert}} on the appropriate breakpoint.
4463
4464Conditions are also accepted for watchpoints; you may not need them,
4465since a watchpoint is inspecting the value of an expression anyhow---but
4466it might be simpler, say, to just set a watchpoint on a variable name,
4467and specify a condition that tests whether the new value is an interesting
4468one.
4469
4470Break conditions can have side effects, and may even call functions in
4471your program. This can be useful, for example, to activate functions
4472that log program progress, or to use your own print functions to
99e008fe 4473format special data structures. The effects are completely predictable
c906108c
SS
4474unless there is another enabled breakpoint at the same address. (In
4475that case, @value{GDBN} might see the other breakpoint first and stop your
4476program without checking the condition of this one.) Note that
d4f3574e
SS
4477breakpoint commands are usually more convenient and flexible than break
4478conditions for the
c906108c 4479purpose of performing side effects when a breakpoint is reached
79a6e687 4480(@pxref{Break Commands, ,Breakpoint Command Lists}).
c906108c 4481
83364271
LM
4482Breakpoint conditions can also be evaluated on the target's side if
4483the target supports it. Instead of evaluating the conditions locally,
4484@value{GDBN} encodes the expression into an agent expression
4485(@pxref{Agent Expressions}) suitable for execution on the target,
4486independently of @value{GDBN}. Global variables become raw memory
4487locations, locals become stack accesses, and so forth.
4488
4489In this case, @value{GDBN} will only be notified of a breakpoint trigger
4490when its condition evaluates to true. This mechanism may provide faster
4491response times depending on the performance characteristics of the target
4492since it does not need to keep @value{GDBN} informed about
4493every breakpoint trigger, even those with false conditions.
4494
c906108c
SS
4495Break conditions can be specified when a breakpoint is set, by using
4496@samp{if} in the arguments to the @code{break} command. @xref{Set
79a6e687 4497Breaks, ,Setting Breakpoints}. They can also be changed at any time
c906108c 4498with the @code{condition} command.
53a5351d 4499
c906108c
SS
4500You can also use the @code{if} keyword with the @code{watch} command.
4501The @code{catch} command does not recognize the @code{if} keyword;
4502@code{condition} is the only way to impose a further condition on a
4503catchpoint.
c906108c
SS
4504
4505@table @code
4506@kindex condition
4507@item condition @var{bnum} @var{expression}
4508Specify @var{expression} as the break condition for breakpoint,
4509watchpoint, or catchpoint number @var{bnum}. After you set a condition,
4510breakpoint @var{bnum} stops your program only if the value of
4511@var{expression} is true (nonzero, in C). When you use
4512@code{condition}, @value{GDBN} checks @var{expression} immediately for
4513syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
4514referents in the context of your breakpoint. If @var{expression} uses
4515symbols not referenced in the context of the breakpoint, @value{GDBN}
4516prints an error message:
4517
474c8240 4518@smallexample
d4f3574e 4519No symbol "foo" in current context.
474c8240 4520@end smallexample
d4f3574e
SS
4521
4522@noindent
c906108c
SS
4523@value{GDBN} does
4524not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
4525command (or a command that sets a breakpoint with a condition, like
4526@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
4527
4528@item condition @var{bnum}
4529Remove the condition from breakpoint number @var{bnum}. It becomes
4530an ordinary unconditional breakpoint.
4531@end table
4532
4533@cindex ignore count (of breakpoint)
4534A special case of a breakpoint condition is to stop only when the
4535breakpoint has been reached a certain number of times. This is so
4536useful that there is a special way to do it, using the @dfn{ignore
4537count} of the breakpoint. Every breakpoint has an ignore count, which
4538is an integer. Most of the time, the ignore count is zero, and
4539therefore has no effect. But if your program reaches a breakpoint whose
4540ignore count is positive, then instead of stopping, it just decrements
4541the ignore count by one and continues. As a result, if the ignore count
4542value is @var{n}, the breakpoint does not stop the next @var{n} times
4543your program reaches it.
4544
4545@table @code
4546@kindex ignore
4547@item ignore @var{bnum} @var{count}
4548Set the ignore count of breakpoint number @var{bnum} to @var{count}.
4549The next @var{count} times the breakpoint is reached, your program's
4550execution does not stop; other than to decrement the ignore count, @value{GDBN}
4551takes no action.
4552
4553To make the breakpoint stop the next time it is reached, specify
4554a count of zero.
4555
4556When you use @code{continue} to resume execution of your program from a
4557breakpoint, you can specify an ignore count directly as an argument to
4558@code{continue}, rather than using @code{ignore}. @xref{Continuing and
79a6e687 4559Stepping,,Continuing and Stepping}.
c906108c
SS
4560
4561If a breakpoint has a positive ignore count and a condition, the
4562condition is not checked. Once the ignore count reaches zero,
4563@value{GDBN} resumes checking the condition.
4564
4565You could achieve the effect of the ignore count with a condition such
4566as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
4567is decremented each time. @xref{Convenience Vars, ,Convenience
79a6e687 4568Variables}.
c906108c
SS
4569@end table
4570
4571Ignore counts apply to breakpoints, watchpoints, and catchpoints.
4572
4573
6d2ebf8b 4574@node Break Commands
79a6e687 4575@subsection Breakpoint Command Lists
c906108c
SS
4576
4577@cindex breakpoint commands
4578You can give any breakpoint (or watchpoint or catchpoint) a series of
4579commands to execute when your program stops due to that breakpoint. For
4580example, you might want to print the values of certain expressions, or
4581enable other breakpoints.
4582
4583@table @code
4584@kindex commands
ca91424e 4585@kindex end@r{ (breakpoint commands)}
95a42b64 4586@item commands @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4587@itemx @dots{} @var{command-list} @dots{}
4588@itemx end
95a42b64 4589Specify a list of commands for the given breakpoints. The commands
c906108c
SS
4590themselves appear on the following lines. Type a line containing just
4591@code{end} to terminate the commands.
4592
4593To remove all commands from a breakpoint, type @code{commands} and
4594follow it immediately with @code{end}; that is, give no commands.
4595
95a42b64
TT
4596With no argument, @code{commands} refers to the last breakpoint,
4597watchpoint, or catchpoint set (not to the breakpoint most recently
4598encountered). If the most recent breakpoints were set with a single
4599command, then the @code{commands} will apply to all the breakpoints
4600set by that command. This applies to breakpoints set by
86b17b60
PA
4601@code{rbreak}, and also applies when a single @code{break} command
4602creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous
4603Expressions}).
c906108c
SS
4604@end table
4605
4606Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
4607disabled within a @var{command-list}.
4608
4609You can use breakpoint commands to start your program up again. Simply
4610use the @code{continue} command, or @code{step}, or any other command
4611that resumes execution.
4612
4613Any other commands in the command list, after a command that resumes
4614execution, are ignored. This is because any time you resume execution
4615(even with a simple @code{next} or @code{step}), you may encounter
4616another breakpoint---which could have its own command list, leading to
4617ambiguities about which list to execute.
4618
4619@kindex silent
4620If the first command you specify in a command list is @code{silent}, the
4621usual message about stopping at a breakpoint is not printed. This may
4622be desirable for breakpoints that are to print a specific message and
4623then continue. If none of the remaining commands print anything, you
4624see no sign that the breakpoint was reached. @code{silent} is
4625meaningful only at the beginning of a breakpoint command list.
4626
4627The commands @code{echo}, @code{output}, and @code{printf} allow you to
4628print precisely controlled output, and are often useful in silent
79a6e687 4629breakpoints. @xref{Output, ,Commands for Controlled Output}.
c906108c
SS
4630
4631For example, here is how you could use breakpoint commands to print the
4632value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
4633
474c8240 4634@smallexample
c906108c
SS
4635break foo if x>0
4636commands
4637silent
4638printf "x is %d\n",x
4639cont
4640end
474c8240 4641@end smallexample
c906108c
SS
4642
4643One application for breakpoint commands is to compensate for one bug so
4644you can test for another. Put a breakpoint just after the erroneous line
4645of code, give it a condition to detect the case in which something
4646erroneous has been done, and give it commands to assign correct values
4647to any variables that need them. End with the @code{continue} command
4648so that your program does not stop, and start with the @code{silent}
4649command so that no output is produced. Here is an example:
4650
474c8240 4651@smallexample
c906108c
SS
4652break 403
4653commands
4654silent
4655set x = y + 4
4656cont
4657end
474c8240 4658@end smallexample
c906108c 4659
e7e0cddf
SS
4660@node Dynamic Printf
4661@subsection Dynamic Printf
4662
4663@cindex dynamic printf
4664@cindex dprintf
4665The dynamic printf command @code{dprintf} combines a breakpoint with
4666formatted printing of your program's data to give you the effect of
4667inserting @code{printf} calls into your program on-the-fly, without
4668having to recompile it.
4669
4670In its most basic form, the output goes to the GDB console. However,
4671you can set the variable @code{dprintf-style} for alternate handling.
4672For instance, you can ask to format the output by calling your
4673program's @code{printf} function. This has the advantage that the
4674characters go to the program's output device, so they can recorded in
4675redirects to files and so forth.
4676
d3ce09f5
SS
4677If you are doing remote debugging with a stub or agent, you can also
4678ask to have the printf handled by the remote agent. In addition to
4679ensuring that the output goes to the remote program's device along
4680with any other output the program might produce, you can also ask that
4681the dprintf remain active even after disconnecting from the remote
4682target. Using the stub/agent is also more efficient, as it can do
4683everything without needing to communicate with @value{GDBN}.
4684
e7e0cddf
SS
4685@table @code
4686@kindex dprintf
4687@item dprintf @var{location},@var{template},@var{expression}[,@var{expression}@dots{}]
4688Whenever execution reaches @var{location}, print the values of one or
4689more @var{expressions} under the control of the string @var{template}.
4690To print several values, separate them with commas.
4691
4692@item set dprintf-style @var{style}
4693Set the dprintf output to be handled in one of several different
4694styles enumerated below. A change of style affects all existing
4695dynamic printfs immediately. (If you need individual control over the
4696print commands, simply define normal breakpoints with
4697explicitly-supplied command lists.)
4698
4699@item gdb
4700@kindex dprintf-style gdb
4701Handle the output using the @value{GDBN} @code{printf} command.
4702
4703@item call
4704@kindex dprintf-style call
4705Handle the output by calling a function in your program (normally
4706@code{printf}).
4707
d3ce09f5
SS
4708@item agent
4709@kindex dprintf-style agent
4710Have the remote debugging agent (such as @code{gdbserver}) handle
4711the output itself. This style is only available for agents that
4712support running commands on the target.
4713
e7e0cddf
SS
4714@item set dprintf-function @var{function}
4715Set the function to call if the dprintf style is @code{call}. By
4716default its value is @code{printf}. You may set it to any expression.
4717that @value{GDBN} can evaluate to a function, as per the @code{call}
4718command.
4719
4720@item set dprintf-channel @var{channel}
4721Set a ``channel'' for dprintf. If set to a non-empty value,
4722@value{GDBN} will evaluate it as an expression and pass the result as
4723a first argument to the @code{dprintf-function}, in the manner of
4724@code{fprintf} and similar functions. Otherwise, the dprintf format
4725string will be the first argument, in the manner of @code{printf}.
4726
4727As an example, if you wanted @code{dprintf} output to go to a logfile
4728that is a standard I/O stream assigned to the variable @code{mylog},
4729you could do the following:
4730
4731@example
4732(gdb) set dprintf-style call
4733(gdb) set dprintf-function fprintf
4734(gdb) set dprintf-channel mylog
4735(gdb) dprintf 25,"at line 25, glob=%d\n",glob
4736Dprintf 1 at 0x123456: file main.c, line 25.
4737(gdb) info break
47381 dprintf keep y 0x00123456 in main at main.c:25
4739 call (void) fprintf (mylog,"at line 25, glob=%d\n",glob)
4740 continue
4741(gdb)
4742@end example
4743
4744Note that the @code{info break} displays the dynamic printf commands
4745as normal breakpoint commands; you can thus easily see the effect of
4746the variable settings.
4747
d3ce09f5
SS
4748@item set disconnected-dprintf on
4749@itemx set disconnected-dprintf off
4750@kindex set disconnected-dprintf
4751Choose whether @code{dprintf} commands should continue to run if
4752@value{GDBN} has disconnected from the target. This only applies
4753if the @code{dprintf-style} is @code{agent}.
4754
4755@item show disconnected-dprintf off
4756@kindex show disconnected-dprintf
4757Show the current choice for disconnected @code{dprintf}.
4758
e7e0cddf
SS
4759@end table
4760
4761@value{GDBN} does not check the validity of function and channel,
4762relying on you to supply values that are meaningful for the contexts
4763in which they are being used. For instance, the function and channel
4764may be the values of local variables, but if that is the case, then
4765all enabled dynamic prints must be at locations within the scope of
4766those locals. If evaluation fails, @value{GDBN} will report an error.
4767
6149aea9
PA
4768@node Save Breakpoints
4769@subsection How to save breakpoints to a file
4770
4771To save breakpoint definitions to a file use the @w{@code{save
4772breakpoints}} command.
4773
4774@table @code
4775@kindex save breakpoints
4776@cindex save breakpoints to a file for future sessions
4777@item save breakpoints [@var{filename}]
4778This command saves all current breakpoint definitions together with
4779their commands and ignore counts, into a file @file{@var{filename}}
4780suitable for use in a later debugging session. This includes all
4781types of breakpoints (breakpoints, watchpoints, catchpoints,
4782tracepoints). To read the saved breakpoint definitions, use the
4783@code{source} command (@pxref{Command Files}). Note that watchpoints
4784with expressions involving local variables may fail to be recreated
4785because it may not be possible to access the context where the
4786watchpoint is valid anymore. Because the saved breakpoint definitions
4787are simply a sequence of @value{GDBN} commands that recreate the
4788breakpoints, you can edit the file in your favorite editing program,
4789and remove the breakpoint definitions you're not interested in, or
4790that can no longer be recreated.
4791@end table
4792
62e5f89c
SDJ
4793@node Static Probe Points
4794@subsection Static Probe Points
4795
4796@cindex static probe point, SystemTap
4797@value{GDBN} supports @dfn{SDT} probes in the code. @acronym{SDT} stands
4798for Statically Defined Tracing, and the probes are designed to have a tiny
4799runtime code and data footprint, and no dynamic relocations. They are
4800usable from assembly, C and C@t{++} languages. See
4801@uref{http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation}
4802for a good reference on how the @acronym{SDT} probes are implemented.
4803
4804Currently, @code{SystemTap} (@uref{http://sourceware.org/systemtap/})
4805@acronym{SDT} probes are supported on ELF-compatible systems. See
4806@uref{http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps}
4807for more information on how to add @code{SystemTap} @acronym{SDT} probes
4808in your applications.
4809
4810@cindex semaphores on static probe points
4811Some probes have an associated semaphore variable; for instance, this
4812happens automatically if you defined your probe using a DTrace-style
4813@file{.d} file. If your probe has a semaphore, @value{GDBN} will
4814automatically enable it when you specify a breakpoint using the
4815@samp{-probe-stap} notation. But, if you put a breakpoint at a probe's
4816location by some other method (e.g., @code{break file:line}), then
4817@value{GDBN} will not automatically set the semaphore.
4818
4819You can examine the available static static probes using @code{info
4820probes}, with optional arguments:
4821
4822@table @code
4823@kindex info probes
4824@item info probes stap @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]}
4825If given, @var{provider} is a regular expression used to match against provider
4826names when selecting which probes to list. If omitted, probes by all
4827probes from all providers are listed.
4828
4829If given, @var{name} is a regular expression to match against probe names
4830when selecting which probes to list. If omitted, probe names are not
4831considered when deciding whether to display them.
4832
4833If given, @var{objfile} is a regular expression used to select which
4834object files (executable or shared libraries) to examine. If not
4835given, all object files are considered.
4836
4837@item info probes all
4838List the available static probes, from all types.
4839@end table
4840
4841@vindex $_probe_arg@r{, convenience variable}
4842A probe may specify up to twelve arguments. These are available at the
4843point at which the probe is defined---that is, when the current PC is
4844at the probe's location. The arguments are available using the
4845convenience variables (@pxref{Convenience Vars})
4846@code{$_probe_arg0}@dots{}@code{$_probe_arg11}. Each probe argument is
4847an integer of the appropriate size; types are not preserved. The
4848convenience variable @code{$_probe_argc} holds the number of arguments
4849at the current probe point.
4850
4851These variables are always available, but attempts to access them at
4852any location other than a probe point will cause @value{GDBN} to give
4853an error message.
4854
4855
c906108c 4856@c @ifclear BARETARGET
6d2ebf8b 4857@node Error in Breakpoints
d4f3574e 4858@subsection ``Cannot insert breakpoints''
c906108c 4859
fa3a767f
PA
4860If you request too many active hardware-assisted breakpoints and
4861watchpoints, you will see this error message:
d4f3574e
SS
4862
4863@c FIXME: the precise wording of this message may change; the relevant
4864@c source change is not committed yet (Sep 3, 1999).
4865@smallexample
4866Stopped; cannot insert breakpoints.
4867You may have requested too many hardware breakpoints and watchpoints.
4868@end smallexample
4869
4870@noindent
4871This message is printed when you attempt to resume the program, since
4872only then @value{GDBN} knows exactly how many hardware breakpoints and
4873watchpoints it needs to insert.
4874
4875When this message is printed, you need to disable or remove some of the
4876hardware-assisted breakpoints and watchpoints, and then continue.
4877
79a6e687 4878@node Breakpoint-related Warnings
1485d690
KB
4879@subsection ``Breakpoint address adjusted...''
4880@cindex breakpoint address adjusted
4881
4882Some processor architectures place constraints on the addresses at
4883which breakpoints may be placed. For architectures thus constrained,
4884@value{GDBN} will attempt to adjust the breakpoint's address to comply
4885with the constraints dictated by the architecture.
4886
4887One example of such an architecture is the Fujitsu FR-V. The FR-V is
4888a VLIW architecture in which a number of RISC-like instructions may be
4889bundled together for parallel execution. The FR-V architecture
4890constrains the location of a breakpoint instruction within such a
4891bundle to the instruction with the lowest address. @value{GDBN}
4892honors this constraint by adjusting a breakpoint's address to the
4893first in the bundle.
4894
4895It is not uncommon for optimized code to have bundles which contain
4896instructions from different source statements, thus it may happen that
4897a breakpoint's address will be adjusted from one source statement to
4898another. Since this adjustment may significantly alter @value{GDBN}'s
4899breakpoint related behavior from what the user expects, a warning is
4900printed when the breakpoint is first set and also when the breakpoint
4901is hit.
4902
4903A warning like the one below is printed when setting a breakpoint
4904that's been subject to address adjustment:
4905
4906@smallexample
4907warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
4908@end smallexample
4909
4910Such warnings are printed both for user settable and @value{GDBN}'s
4911internal breakpoints. If you see one of these warnings, you should
4912verify that a breakpoint set at the adjusted address will have the
4913desired affect. If not, the breakpoint in question may be removed and
b383017d 4914other breakpoints may be set which will have the desired behavior.
1485d690
KB
4915E.g., it may be sufficient to place the breakpoint at a later
4916instruction. A conditional breakpoint may also be useful in some
4917cases to prevent the breakpoint from triggering too often.
4918
4919@value{GDBN} will also issue a warning when stopping at one of these
4920adjusted breakpoints:
4921
4922@smallexample
4923warning: Breakpoint 1 address previously adjusted from 0x00010414
4924to 0x00010410.
4925@end smallexample
4926
4927When this warning is encountered, it may be too late to take remedial
4928action except in cases where the breakpoint is hit earlier or more
4929frequently than expected.
d4f3574e 4930
6d2ebf8b 4931@node Continuing and Stepping
79a6e687 4932@section Continuing and Stepping
c906108c
SS
4933
4934@cindex stepping
4935@cindex continuing
4936@cindex resuming execution
4937@dfn{Continuing} means resuming program execution until your program
4938completes normally. In contrast, @dfn{stepping} means executing just
4939one more ``step'' of your program, where ``step'' may mean either one
4940line of source code, or one machine instruction (depending on what
7a292a7a
SS
4941particular command you use). Either when continuing or when stepping,
4942your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
4943it stops due to a signal, you may want to use @code{handle}, or use
4944@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
4945
4946@table @code
4947@kindex continue
41afff9a
EZ
4948@kindex c @r{(@code{continue})}
4949@kindex fg @r{(resume foreground execution)}
c906108c
SS
4950@item continue @r{[}@var{ignore-count}@r{]}
4951@itemx c @r{[}@var{ignore-count}@r{]}
4952@itemx fg @r{[}@var{ignore-count}@r{]}
4953Resume program execution, at the address where your program last stopped;
4954any breakpoints set at that address are bypassed. The optional argument
4955@var{ignore-count} allows you to specify a further number of times to
4956ignore a breakpoint at this location; its effect is like that of
79a6e687 4957@code{ignore} (@pxref{Conditions, ,Break Conditions}).
c906108c
SS
4958
4959The argument @var{ignore-count} is meaningful only when your program
4960stopped due to a breakpoint. At other times, the argument to
4961@code{continue} is ignored.
4962
d4f3574e
SS
4963The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
4964debugged program is deemed to be the foreground program) are provided
4965purely for convenience, and have exactly the same behavior as
4966@code{continue}.
c906108c
SS
4967@end table
4968
4969To resume execution at a different place, you can use @code{return}
79a6e687 4970(@pxref{Returning, ,Returning from a Function}) to go back to the
c906108c 4971calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
79a6e687 4972Different Address}) to go to an arbitrary location in your program.
c906108c
SS
4973
4974A typical technique for using stepping is to set a breakpoint
79a6e687 4975(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the
c906108c
SS
4976beginning of the function or the section of your program where a problem
4977is believed to lie, run your program until it stops at that breakpoint,
4978and then step through the suspect area, examining the variables that are
4979interesting, until you see the problem happen.
4980
4981@table @code
4982@kindex step
41afff9a 4983@kindex s @r{(@code{step})}
c906108c
SS
4984@item step
4985Continue running your program until control reaches a different source
4986line, then stop it and return control to @value{GDBN}. This command is
4987abbreviated @code{s}.
4988
4989@quotation
4990@c "without debugging information" is imprecise; actually "without line
4991@c numbers in the debugging information". (gcc -g1 has debugging info but
4992@c not line numbers). But it seems complex to try to make that
4993@c distinction here.
4994@emph{Warning:} If you use the @code{step} command while control is
4995within a function that was compiled without debugging information,
4996execution proceeds until control reaches a function that does have
4997debugging information. Likewise, it will not step into a function which
4998is compiled without debugging information. To step through functions
4999without debugging information, use the @code{stepi} command, described
5000below.
5001@end quotation
5002
4a92d011
EZ
5003The @code{step} command only stops at the first instruction of a source
5004line. This prevents the multiple stops that could otherwise occur in
5005@code{switch} statements, @code{for} loops, etc. @code{step} continues
5006to stop if a function that has debugging information is called within
5007the line. In other words, @code{step} @emph{steps inside} any functions
5008called within the line.
c906108c 5009
d4f3574e
SS
5010Also, the @code{step} command only enters a function if there is line
5011number information for the function. Otherwise it acts like the
5d161b24 5012@code{next} command. This avoids problems when using @code{cc -gl}
eb17f351 5013on @acronym{MIPS} machines. Previously, @code{step} entered subroutines if there
5d161b24 5014was any debugging information about the routine.
c906108c
SS
5015
5016@item step @var{count}
5017Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
5018breakpoint is reached, or a signal not related to stepping occurs before
5019@var{count} steps, stepping stops right away.
c906108c
SS
5020
5021@kindex next
41afff9a 5022@kindex n @r{(@code{next})}
c906108c
SS
5023@item next @r{[}@var{count}@r{]}
5024Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
5025This is similar to @code{step}, but function calls that appear within
5026the line of code are executed without stopping. Execution stops when
5027control reaches a different line of code at the original stack level
5028that was executing when you gave the @code{next} command. This command
5029is abbreviated @code{n}.
c906108c
SS
5030
5031An argument @var{count} is a repeat count, as for @code{step}.
5032
5033
5034@c FIX ME!! Do we delete this, or is there a way it fits in with
5035@c the following paragraph? --- Vctoria
5036@c
5037@c @code{next} within a function that lacks debugging information acts like
5038@c @code{step}, but any function calls appearing within the code of the
5039@c function are executed without stopping.
5040
d4f3574e
SS
5041The @code{next} command only stops at the first instruction of a
5042source line. This prevents multiple stops that could otherwise occur in
4a92d011 5043@code{switch} statements, @code{for} loops, etc.
c906108c 5044
b90a5f51
CF
5045@kindex set step-mode
5046@item set step-mode
5047@cindex functions without line info, and stepping
5048@cindex stepping into functions with no line info
5049@itemx set step-mode on
4a92d011 5050The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
5051stop at the first instruction of a function which contains no debug line
5052information rather than stepping over it.
5053
4a92d011
EZ
5054This is useful in cases where you may be interested in inspecting the
5055machine instructions of a function which has no symbolic info and do not
5056want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
5057
5058@item set step-mode off
4a92d011 5059Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
5060debug information. This is the default.
5061
9c16f35a
EZ
5062@item show step-mode
5063Show whether @value{GDBN} will stop in or step over functions without
5064source line debug information.
5065
c906108c 5066@kindex finish
8dfa32fc 5067@kindex fin @r{(@code{finish})}
c906108c
SS
5068@item finish
5069Continue running until just after function in the selected stack frame
8dfa32fc
JB
5070returns. Print the returned value (if any). This command can be
5071abbreviated as @code{fin}.
c906108c
SS
5072
5073Contrast this with the @code{return} command (@pxref{Returning,
79a6e687 5074,Returning from a Function}).
c906108c
SS
5075
5076@kindex until
41afff9a 5077@kindex u @r{(@code{until})}
09d4efe1 5078@cindex run until specified location
c906108c
SS
5079@item until
5080@itemx u
5081Continue running until a source line past the current line, in the
5082current stack frame, is reached. This command is used to avoid single
5083stepping through a loop more than once. It is like the @code{next}
5084command, except that when @code{until} encounters a jump, it
5085automatically continues execution until the program counter is greater
5086than the address of the jump.
5087
5088This means that when you reach the end of a loop after single stepping
5089though it, @code{until} makes your program continue execution until it
5090exits the loop. In contrast, a @code{next} command at the end of a loop
5091simply steps back to the beginning of the loop, which forces you to step
5092through the next iteration.
5093
5094@code{until} always stops your program if it attempts to exit the current
5095stack frame.
5096
5097@code{until} may produce somewhat counterintuitive results if the order
5098of machine code does not match the order of the source lines. For
5099example, in the following excerpt from a debugging session, the @code{f}
5100(@code{frame}) command shows that execution is stopped at line
5101@code{206}; yet when we use @code{until}, we get to line @code{195}:
5102
474c8240 5103@smallexample
c906108c
SS
5104(@value{GDBP}) f
5105#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
5106206 expand_input();
5107(@value{GDBP}) until
5108195 for ( ; argc > 0; NEXTARG) @{
474c8240 5109@end smallexample
c906108c
SS
5110
5111This happened because, for execution efficiency, the compiler had
5112generated code for the loop closure test at the end, rather than the
5113start, of the loop---even though the test in a C @code{for}-loop is
5114written before the body of the loop. The @code{until} command appeared
5115to step back to the beginning of the loop when it advanced to this
5116expression; however, it has not really gone to an earlier
5117statement---not in terms of the actual machine code.
5118
5119@code{until} with no argument works by means of single
5120instruction stepping, and hence is slower than @code{until} with an
5121argument.
5122
5123@item until @var{location}
5124@itemx u @var{location}
5125Continue running your program until either the specified location is
5126reached, or the current stack frame returns. @var{location} is any of
2a25a5ba
EZ
5127the forms described in @ref{Specify Location}.
5128This form of the command uses temporary breakpoints, and
c60eb6f1
EZ
5129hence is quicker than @code{until} without an argument. The specified
5130location is actually reached only if it is in the current frame. This
5131implies that @code{until} can be used to skip over recursive function
5132invocations. For instance in the code below, if the current location is
5133line @code{96}, issuing @code{until 99} will execute the program up to
db2e3e2e 5134line @code{99} in the same invocation of factorial, i.e., after the inner
c60eb6f1
EZ
5135invocations have returned.
5136
5137@smallexample
513894 int factorial (int value)
513995 @{
514096 if (value > 1) @{
514197 value *= factorial (value - 1);
514298 @}
514399 return (value);
5144100 @}
5145@end smallexample
5146
5147
5148@kindex advance @var{location}
984359d2 5149@item advance @var{location}
09d4efe1 5150Continue running the program up to the given @var{location}. An argument is
2a25a5ba
EZ
5151required, which should be of one of the forms described in
5152@ref{Specify Location}.
5153Execution will also stop upon exit from the current stack
c60eb6f1
EZ
5154frame. This command is similar to @code{until}, but @code{advance} will
5155not skip over recursive function calls, and the target location doesn't
5156have to be in the same frame as the current one.
5157
c906108c
SS
5158
5159@kindex stepi
41afff9a 5160@kindex si @r{(@code{stepi})}
c906108c 5161@item stepi
96a2c332 5162@itemx stepi @var{arg}
c906108c
SS
5163@itemx si
5164Execute one machine instruction, then stop and return to the debugger.
5165
5166It is often useful to do @samp{display/i $pc} when stepping by machine
5167instructions. This makes @value{GDBN} automatically display the next
5168instruction to be executed, each time your program stops. @xref{Auto
79a6e687 5169Display,, Automatic Display}.
c906108c
SS
5170
5171An argument is a repeat count, as in @code{step}.
5172
5173@need 750
5174@kindex nexti
41afff9a 5175@kindex ni @r{(@code{nexti})}
c906108c 5176@item nexti
96a2c332 5177@itemx nexti @var{arg}
c906108c
SS
5178@itemx ni
5179Execute one machine instruction, but if it is a function call,
5180proceed until the function returns.
5181
5182An argument is a repeat count, as in @code{next}.
5183@end table
5184
aad1c02c
TT
5185@node Skipping Over Functions and Files
5186@section Skipping Over Functions and Files
1bfeeb0f
JL
5187@cindex skipping over functions and files
5188
5189The program you are debugging may contain some functions which are
5190uninteresting to debug. The @code{skip} comand lets you tell @value{GDBN} to
5191skip a function or all functions in a file when stepping.
5192
5193For example, consider the following C function:
5194
5195@smallexample
5196101 int func()
5197102 @{
5198103 foo(boring());
5199104 bar(boring());
5200105 @}
5201@end smallexample
5202
5203@noindent
5204Suppose you wish to step into the functions @code{foo} and @code{bar}, but you
5205are not interested in stepping through @code{boring}. If you run @code{step}
5206at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll
5207step over both @code{foo} and @code{boring}!
5208
5209One solution is to @code{step} into @code{boring} and use the @code{finish}
5210command to immediately exit it. But this can become tedious if @code{boring}
5211is called from many places.
5212
5213A more flexible solution is to execute @kbd{skip boring}. This instructs
5214@value{GDBN} never to step into @code{boring}. Now when you execute
5215@code{step} at line 103, you'll step over @code{boring} and directly into
5216@code{foo}.
5217
5218You can also instruct @value{GDBN} to skip all functions in a file, with, for
5219example, @code{skip file boring.c}.
5220
5221@table @code
5222@kindex skip function
5223@item skip @r{[}@var{linespec}@r{]}
5224@itemx skip function @r{[}@var{linespec}@r{]}
5225After running this command, the function named by @var{linespec} or the
5226function containing the line named by @var{linespec} will be skipped over when
983fb131 5227stepping. @xref{Specify Location}.
1bfeeb0f
JL
5228
5229If you do not specify @var{linespec}, the function you're currently debugging
5230will be skipped.
5231
5232(If you have a function called @code{file} that you want to skip, use
5233@kbd{skip function file}.)
5234
5235@kindex skip file
5236@item skip file @r{[}@var{filename}@r{]}
5237After running this command, any function whose source lives in @var{filename}
5238will be skipped over when stepping.
5239
5240If you do not specify @var{filename}, functions whose source lives in the file
5241you're currently debugging will be skipped.
5242@end table
5243
5244Skips can be listed, deleted, disabled, and enabled, much like breakpoints.
5245These are the commands for managing your list of skips:
5246
5247@table @code
5248@kindex info skip
5249@item info skip @r{[}@var{range}@r{]}
5250Print details about the specified skip(s). If @var{range} is not specified,
5251print a table with details about all functions and files marked for skipping.
5252@code{info skip} prints the following information about each skip:
5253
5254@table @emph
5255@item Identifier
5256A number identifying this skip.
5257@item Type
5258The type of this skip, either @samp{function} or @samp{file}.
5259@item Enabled or Disabled
5260Enabled skips are marked with @samp{y}. Disabled skips are marked with @samp{n}.
5261@item Address
5262For function skips, this column indicates the address in memory of the function
5263being skipped. If you've set a function skip on a function which has not yet
5264been loaded, this field will contain @samp{<PENDING>}. Once a shared library
5265which has the function is loaded, @code{info skip} will show the function's
5266address here.
5267@item What
5268For file skips, this field contains the filename being skipped. For functions
5269skips, this field contains the function name and its line number in the file
5270where it is defined.
5271@end table
5272
5273@kindex skip delete
5274@item skip delete @r{[}@var{range}@r{]}
5275Delete the specified skip(s). If @var{range} is not specified, delete all
5276skips.
5277
5278@kindex skip enable
5279@item skip enable @r{[}@var{range}@r{]}
5280Enable the specified skip(s). If @var{range} is not specified, enable all
5281skips.
5282
5283@kindex skip disable
5284@item skip disable @r{[}@var{range}@r{]}
5285Disable the specified skip(s). If @var{range} is not specified, disable all
5286skips.
5287
5288@end table
5289
6d2ebf8b 5290@node Signals
c906108c
SS
5291@section Signals
5292@cindex signals
5293
5294A signal is an asynchronous event that can happen in a program. The
5295operating system defines the possible kinds of signals, and gives each
5296kind a name and a number. For example, in Unix @code{SIGINT} is the
c8aa23ab 5297signal a program gets when you type an interrupt character (often @kbd{Ctrl-c});
c906108c
SS
5298@code{SIGSEGV} is the signal a program gets from referencing a place in
5299memory far away from all the areas in use; @code{SIGALRM} occurs when
5300the alarm clock timer goes off (which happens only if your program has
5301requested an alarm).
5302
5303@cindex fatal signals
5304Some signals, including @code{SIGALRM}, are a normal part of the
5305functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 5306errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
5307program has not specified in advance some other way to handle the signal.
5308@code{SIGINT} does not indicate an error in your program, but it is normally
5309fatal so it can carry out the purpose of the interrupt: to kill the program.
5310
5311@value{GDBN} has the ability to detect any occurrence of a signal in your
5312program. You can tell @value{GDBN} in advance what to do for each kind of
5313signal.
5314
5315@cindex handling signals
24f93129
EZ
5316Normally, @value{GDBN} is set up to let the non-erroneous signals like
5317@code{SIGALRM} be silently passed to your program
5318(so as not to interfere with their role in the program's functioning)
c906108c
SS
5319but to stop your program immediately whenever an error signal happens.
5320You can change these settings with the @code{handle} command.
5321
5322@table @code
5323@kindex info signals
09d4efe1 5324@kindex info handle
c906108c 5325@item info signals
96a2c332 5326@itemx info handle
c906108c
SS
5327Print a table of all the kinds of signals and how @value{GDBN} has been told to
5328handle each one. You can use this to see the signal numbers of all
5329the defined types of signals.
5330
45ac1734
EZ
5331@item info signals @var{sig}
5332Similar, but print information only about the specified signal number.
5333
d4f3574e 5334@code{info handle} is an alias for @code{info signals}.
c906108c
SS
5335
5336@kindex handle
45ac1734 5337@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]}
5ece1a18
EZ
5338Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
5339can be the number of a signal or its name (with or without the
24f93129 5340@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18 5341@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
45ac1734
EZ
5342known signals. Optional arguments @var{keywords}, described below,
5343say what change to make.
c906108c
SS
5344@end table
5345
5346@c @group
5347The keywords allowed by the @code{handle} command can be abbreviated.
5348Their full names are:
5349
5350@table @code
5351@item nostop
5352@value{GDBN} should not stop your program when this signal happens. It may
5353still print a message telling you that the signal has come in.
5354
5355@item stop
5356@value{GDBN} should stop your program when this signal happens. This implies
5357the @code{print} keyword as well.
5358
5359@item print
5360@value{GDBN} should print a message when this signal happens.
5361
5362@item noprint
5363@value{GDBN} should not mention the occurrence of the signal at all. This
5364implies the @code{nostop} keyword as well.
5365
5366@item pass
5ece1a18 5367@itemx noignore
c906108c
SS
5368@value{GDBN} should allow your program to see this signal; your program
5369can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 5370and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
5371
5372@item nopass
5ece1a18 5373@itemx ignore
c906108c 5374@value{GDBN} should not allow your program to see this signal.
5ece1a18 5375@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
5376@end table
5377@c @end group
5378
d4f3574e
SS
5379When a signal stops your program, the signal is not visible to the
5380program until you
c906108c
SS
5381continue. Your program sees the signal then, if @code{pass} is in
5382effect for the signal in question @emph{at that time}. In other words,
5383after @value{GDBN} reports a signal, you can use the @code{handle}
5384command with @code{pass} or @code{nopass} to control whether your
5385program sees that signal when you continue.
5386
24f93129
EZ
5387The default is set to @code{nostop}, @code{noprint}, @code{pass} for
5388non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
5389@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
5390erroneous signals.
5391
c906108c
SS
5392You can also use the @code{signal} command to prevent your program from
5393seeing a signal, or cause it to see a signal it normally would not see,
5394or to give it any signal at any time. For example, if your program stopped
5395due to some sort of memory reference error, you might store correct
5396values into the erroneous variables and continue, hoping to see more
5397execution; but your program would probably terminate immediately as
5398a result of the fatal signal once it saw the signal. To prevent this,
5399you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
79a6e687 5400Program a Signal}.
c906108c 5401
4aa995e1
PA
5402@cindex extra signal information
5403@anchor{extra signal information}
5404
5405On some targets, @value{GDBN} can inspect extra signal information
5406associated with the intercepted signal, before it is actually
5407delivered to the program being debugged. This information is exported
5408by the convenience variable @code{$_siginfo}, and consists of data
5409that is passed by the kernel to the signal handler at the time of the
5410receipt of a signal. The data type of the information itself is
5411target dependent. You can see the data type using the @code{ptype
5412$_siginfo} command. On Unix systems, it typically corresponds to the
5413standard @code{siginfo_t} type, as defined in the @file{signal.h}
5414system header.
5415
5416Here's an example, on a @sc{gnu}/Linux system, printing the stray
5417referenced address that raised a segmentation fault.
5418
5419@smallexample
5420@group
5421(@value{GDBP}) continue
5422Program received signal SIGSEGV, Segmentation fault.
54230x0000000000400766 in main ()
542469 *(int *)p = 0;
5425(@value{GDBP}) ptype $_siginfo
5426type = struct @{
5427 int si_signo;
5428 int si_errno;
5429 int si_code;
5430 union @{
5431 int _pad[28];
5432 struct @{...@} _kill;
5433 struct @{...@} _timer;
5434 struct @{...@} _rt;
5435 struct @{...@} _sigchld;
5436 struct @{...@} _sigfault;
5437 struct @{...@} _sigpoll;
5438 @} _sifields;
5439@}
5440(@value{GDBP}) ptype $_siginfo._sifields._sigfault
5441type = struct @{
5442 void *si_addr;
5443@}
5444(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr
5445$1 = (void *) 0x7ffff7ff7000
5446@end group
5447@end smallexample
5448
5449Depending on target support, @code{$_siginfo} may also be writable.
5450
6d2ebf8b 5451@node Thread Stops
79a6e687 5452@section Stopping and Starting Multi-thread Programs
c906108c 5453
0606b73b
SL
5454@cindex stopped threads
5455@cindex threads, stopped
5456
5457@cindex continuing threads
5458@cindex threads, continuing
5459
5460@value{GDBN} supports debugging programs with multiple threads
5461(@pxref{Threads,, Debugging Programs with Multiple Threads}). There
5462are two modes of controlling execution of your program within the
5463debugger. In the default mode, referred to as @dfn{all-stop mode},
5464when any thread in your program stops (for example, at a breakpoint
5465or while being stepped), all other threads in the program are also stopped by
5466@value{GDBN}. On some targets, @value{GDBN} also supports
5467@dfn{non-stop mode}, in which other threads can continue to run freely while
5468you examine the stopped thread in the debugger.
5469
5470@menu
5471* All-Stop Mode:: All threads stop when GDB takes control
5472* Non-Stop Mode:: Other threads continue to execute
5473* Background Execution:: Running your program asynchronously
5474* Thread-Specific Breakpoints:: Controlling breakpoints
5475* Interrupted System Calls:: GDB may interfere with system calls
d914c394 5476* Observer Mode:: GDB does not alter program behavior
0606b73b
SL
5477@end menu
5478
5479@node All-Stop Mode
5480@subsection All-Stop Mode
5481
5482@cindex all-stop mode
5483
5484In all-stop mode, whenever your program stops under @value{GDBN} for any reason,
5485@emph{all} threads of execution stop, not just the current thread. This
5486allows you to examine the overall state of the program, including
5487switching between threads, without worrying that things may change
5488underfoot.
5489
5490Conversely, whenever you restart the program, @emph{all} threads start
5491executing. @emph{This is true even when single-stepping} with commands
5492like @code{step} or @code{next}.
5493
5494In particular, @value{GDBN} cannot single-step all threads in lockstep.
5495Since thread scheduling is up to your debugging target's operating
5496system (not controlled by @value{GDBN}), other threads may
5497execute more than one statement while the current thread completes a
5498single step. Moreover, in general other threads stop in the middle of a
5499statement, rather than at a clean statement boundary, when the program
5500stops.
5501
5502You might even find your program stopped in another thread after
5503continuing or even single-stepping. This happens whenever some other
5504thread runs into a breakpoint, a signal, or an exception before the
5505first thread completes whatever you requested.
5506
5507@cindex automatic thread selection
5508@cindex switching threads automatically
5509@cindex threads, automatic switching
5510Whenever @value{GDBN} stops your program, due to a breakpoint or a
5511signal, it automatically selects the thread where that breakpoint or
5512signal happened. @value{GDBN} alerts you to the context switch with a
5513message such as @samp{[Switching to Thread @var{n}]} to identify the
5514thread.
5515
5516On some OSes, you can modify @value{GDBN}'s default behavior by
5517locking the OS scheduler to allow only a single thread to run.
5518
5519@table @code
5520@item set scheduler-locking @var{mode}
5521@cindex scheduler locking mode
5522@cindex lock scheduler
5523Set the scheduler locking mode. If it is @code{off}, then there is no
5524locking and any thread may run at any time. If @code{on}, then only the
5525current thread may run when the inferior is resumed. The @code{step}
5526mode optimizes for single-stepping; it prevents other threads
5527from preempting the current thread while you are stepping, so that
5528the focus of debugging does not change unexpectedly.
5529Other threads only rarely (or never) get a chance to run
5530when you step. They are more likely to run when you @samp{next} over a
5531function call, and they are completely free to run when you use commands
5532like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
5533thread hits a breakpoint during its timeslice, @value{GDBN} does not change
5534the current thread away from the thread that you are debugging.
5535
5536@item show scheduler-locking
5537Display the current scheduler locking mode.
5538@end table
5539
d4db2f36
PA
5540@cindex resume threads of multiple processes simultaneously
5541By default, when you issue one of the execution commands such as
5542@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only
5543threads of the current inferior to run. For example, if @value{GDBN}
5544is attached to two inferiors, each with two threads, the
5545@code{continue} command resumes only the two threads of the current
5546inferior. This is useful, for example, when you debug a program that
5547forks and you want to hold the parent stopped (so that, for instance,
5548it doesn't run to exit), while you debug the child. In other
5549situations, you may not be interested in inspecting the current state
5550of any of the processes @value{GDBN} is attached to, and you may want
5551to resume them all until some breakpoint is hit. In the latter case,
5552you can instruct @value{GDBN} to allow all threads of all the
5553inferiors to run with the @w{@code{set schedule-multiple}} command.
5554
5555@table @code
5556@kindex set schedule-multiple
5557@item set schedule-multiple
5558Set the mode for allowing threads of multiple processes to be resumed
5559when an execution command is issued. When @code{on}, all threads of
5560all processes are allowed to run. When @code{off}, only the threads
5561of the current process are resumed. The default is @code{off}. The
5562@code{scheduler-locking} mode takes precedence when set to @code{on},
5563or while you are stepping and set to @code{step}.
5564
5565@item show schedule-multiple
5566Display the current mode for resuming the execution of threads of
5567multiple processes.
5568@end table
5569
0606b73b
SL
5570@node Non-Stop Mode
5571@subsection Non-Stop Mode
5572
5573@cindex non-stop mode
5574
5575@c This section is really only a place-holder, and needs to be expanded
5576@c with more details.
5577
5578For some multi-threaded targets, @value{GDBN} supports an optional
5579mode of operation in which you can examine stopped program threads in
5580the debugger while other threads continue to execute freely. This
5581minimizes intrusion when debugging live systems, such as programs
5582where some threads have real-time constraints or must continue to
5583respond to external events. This is referred to as @dfn{non-stop} mode.
5584
5585In non-stop mode, when a thread stops to report a debugging event,
5586@emph{only} that thread is stopped; @value{GDBN} does not stop other
5587threads as well, in contrast to the all-stop mode behavior. Additionally,
5588execution commands such as @code{continue} and @code{step} apply by default
5589only to the current thread in non-stop mode, rather than all threads as
5590in all-stop mode. This allows you to control threads explicitly in
5591ways that are not possible in all-stop mode --- for example, stepping
5592one thread while allowing others to run freely, stepping
5593one thread while holding all others stopped, or stepping several threads
5594independently and simultaneously.
5595
5596To enter non-stop mode, use this sequence of commands before you run
5597or attach to your program:
5598
0606b73b
SL
5599@smallexample
5600# Enable the async interface.
c6ebd6cf 5601set target-async 1
0606b73b 5602
0606b73b
SL
5603# If using the CLI, pagination breaks non-stop.
5604set pagination off
5605
5606# Finally, turn it on!
5607set non-stop on
5608@end smallexample
5609
5610You can use these commands to manipulate the non-stop mode setting:
5611
5612@table @code
5613@kindex set non-stop
5614@item set non-stop on
5615Enable selection of non-stop mode.
5616@item set non-stop off
5617Disable selection of non-stop mode.
5618@kindex show non-stop
5619@item show non-stop
5620Show the current non-stop enablement setting.
5621@end table
5622
5623Note these commands only reflect whether non-stop mode is enabled,
5624not whether the currently-executing program is being run in non-stop mode.
5625In particular, the @code{set non-stop} preference is only consulted when
5626@value{GDBN} starts or connects to the target program, and it is generally
5627not possible to switch modes once debugging has started. Furthermore,
5628since not all targets support non-stop mode, even when you have enabled
5629non-stop mode, @value{GDBN} may still fall back to all-stop operation by
5630default.
5631
5632In non-stop mode, all execution commands apply only to the current thread
5633by default. That is, @code{continue} only continues one thread.
5634To continue all threads, issue @code{continue -a} or @code{c -a}.
5635
5636You can use @value{GDBN}'s background execution commands
5637(@pxref{Background Execution}) to run some threads in the background
5638while you continue to examine or step others from @value{GDBN}.
5639The MI execution commands (@pxref{GDB/MI Program Execution}) are
5640always executed asynchronously in non-stop mode.
5641
5642Suspending execution is done with the @code{interrupt} command when
5643running in the background, or @kbd{Ctrl-c} during foreground execution.
5644In all-stop mode, this stops the whole process;
5645but in non-stop mode the interrupt applies only to the current thread.
5646To stop the whole program, use @code{interrupt -a}.
5647
5648Other execution commands do not currently support the @code{-a} option.
5649
5650In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make
5651that thread current, as it does in all-stop mode. This is because the
5652thread stop notifications are asynchronous with respect to @value{GDBN}'s
5653command interpreter, and it would be confusing if @value{GDBN} unexpectedly
5654changed to a different thread just as you entered a command to operate on the
5655previously current thread.
5656
5657@node Background Execution
5658@subsection Background Execution
5659
5660@cindex foreground execution
5661@cindex background execution
5662@cindex asynchronous execution
5663@cindex execution, foreground, background and asynchronous
5664
5665@value{GDBN}'s execution commands have two variants: the normal
5666foreground (synchronous) behavior, and a background
5667(asynchronous) behavior. In foreground execution, @value{GDBN} waits for
5668the program to report that some thread has stopped before prompting for
5669another command. In background execution, @value{GDBN} immediately gives
5670a command prompt so that you can issue other commands while your program runs.
5671
32fc0df9
PA
5672You need to explicitly enable asynchronous mode before you can use
5673background execution commands. You can use these commands to
5674manipulate the asynchronous mode setting:
5675
5676@table @code
5677@kindex set target-async
5678@item set target-async on
5679Enable asynchronous mode.
5680@item set target-async off
5681Disable asynchronous mode.
5682@kindex show target-async
5683@item show target-async
5684Show the current target-async setting.
5685@end table
5686
5687If the target doesn't support async mode, @value{GDBN} issues an error
5688message if you attempt to use the background execution commands.
5689
0606b73b
SL
5690To specify background execution, add a @code{&} to the command. For example,
5691the background form of the @code{continue} command is @code{continue&}, or
5692just @code{c&}. The execution commands that accept background execution
5693are:
5694
5695@table @code
5696@kindex run&
5697@item run
5698@xref{Starting, , Starting your Program}.
5699
5700@item attach
5701@kindex attach&
5702@xref{Attach, , Debugging an Already-running Process}.
5703
5704@item step
5705@kindex step&
5706@xref{Continuing and Stepping, step}.
5707
5708@item stepi
5709@kindex stepi&
5710@xref{Continuing and Stepping, stepi}.
5711
5712@item next
5713@kindex next&
5714@xref{Continuing and Stepping, next}.
5715
7ce58dd2
DE
5716@item nexti
5717@kindex nexti&
5718@xref{Continuing and Stepping, nexti}.
5719
0606b73b
SL
5720@item continue
5721@kindex continue&
5722@xref{Continuing and Stepping, continue}.
5723
5724@item finish
5725@kindex finish&
5726@xref{Continuing and Stepping, finish}.
5727
5728@item until
5729@kindex until&
5730@xref{Continuing and Stepping, until}.
5731
5732@end table
5733
5734Background execution is especially useful in conjunction with non-stop
5735mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}.
5736However, you can also use these commands in the normal all-stop mode with
5737the restriction that you cannot issue another execution command until the
5738previous one finishes. Examples of commands that are valid in all-stop
5739mode while the program is running include @code{help} and @code{info break}.
5740
5741You can interrupt your program while it is running in the background by
5742using the @code{interrupt} command.
5743
5744@table @code
5745@kindex interrupt
5746@item interrupt
5747@itemx interrupt -a
5748
5749Suspend execution of the running program. In all-stop mode,
5750@code{interrupt} stops the whole process, but in non-stop mode, it stops
5751only the current thread. To stop the whole program in non-stop mode,
5752use @code{interrupt -a}.
5753@end table
5754
0606b73b
SL
5755@node Thread-Specific Breakpoints
5756@subsection Thread-Specific Breakpoints
5757
c906108c 5758When your program has multiple threads (@pxref{Threads,, Debugging
79a6e687 5759Programs with Multiple Threads}), you can choose whether to set
c906108c
SS
5760breakpoints on all threads, or on a particular thread.
5761
5762@table @code
5763@cindex breakpoints and threads
5764@cindex thread breakpoints
5765@kindex break @dots{} thread @var{threadno}
5766@item break @var{linespec} thread @var{threadno}
5767@itemx break @var{linespec} thread @var{threadno} if @dots{}
5768@var{linespec} specifies source lines; there are several ways of
2a25a5ba
EZ
5769writing them (@pxref{Specify Location}), but the effect is always to
5770specify some source line.
c906108c
SS
5771
5772Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
5773to specify that you only want @value{GDBN} to stop the program when a
5774particular thread reaches this breakpoint. @var{threadno} is one of the
5775numeric thread identifiers assigned by @value{GDBN}, shown in the first
5776column of the @samp{info threads} display.
5777
5778If you do not specify @samp{thread @var{threadno}} when you set a
5779breakpoint, the breakpoint applies to @emph{all} threads of your
5780program.
5781
5782You can use the @code{thread} qualifier on conditional breakpoints as
b6199126
DJ
5783well; in this case, place @samp{thread @var{threadno}} before or
5784after the breakpoint condition, like this:
c906108c
SS
5785
5786@smallexample
2df3850c 5787(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
5788@end smallexample
5789
5790@end table
5791
0606b73b
SL
5792@node Interrupted System Calls
5793@subsection Interrupted System Calls
c906108c 5794
36d86913
MC
5795@cindex thread breakpoints and system calls
5796@cindex system calls and thread breakpoints
5797@cindex premature return from system calls
0606b73b
SL
5798There is an unfortunate side effect when using @value{GDBN} to debug
5799multi-threaded programs. If one thread stops for a
36d86913
MC
5800breakpoint, or for some other reason, and another thread is blocked in a
5801system call, then the system call may return prematurely. This is a
5802consequence of the interaction between multiple threads and the signals
5803that @value{GDBN} uses to implement breakpoints and other events that
5804stop execution.
5805
5806To handle this problem, your program should check the return value of
5807each system call and react appropriately. This is good programming
5808style anyways.
5809
5810For example, do not write code like this:
5811
5812@smallexample
5813 sleep (10);
5814@end smallexample
5815
5816The call to @code{sleep} will return early if a different thread stops
5817at a breakpoint or for some other reason.
5818
5819Instead, write this:
5820
5821@smallexample
5822 int unslept = 10;
5823 while (unslept > 0)
5824 unslept = sleep (unslept);
5825@end smallexample
5826
5827A system call is allowed to return early, so the system is still
5828conforming to its specification. But @value{GDBN} does cause your
5829multi-threaded program to behave differently than it would without
5830@value{GDBN}.
5831
5832Also, @value{GDBN} uses internal breakpoints in the thread library to
5833monitor certain events such as thread creation and thread destruction.
5834When such an event happens, a system call in another thread may return
5835prematurely, even though your program does not appear to stop.
5836
d914c394
SS
5837@node Observer Mode
5838@subsection Observer Mode
5839
5840If you want to build on non-stop mode and observe program behavior
5841without any chance of disruption by @value{GDBN}, you can set
5842variables to disable all of the debugger's attempts to modify state,
5843whether by writing memory, inserting breakpoints, etc. These operate
5844at a low level, intercepting operations from all commands.
5845
5846When all of these are set to @code{off}, then @value{GDBN} is said to
5847be @dfn{observer mode}. As a convenience, the variable
5848@code{observer} can be set to disable these, plus enable non-stop
5849mode.
5850
5851Note that @value{GDBN} will not prevent you from making nonsensical
5852combinations of these settings. For instance, if you have enabled
5853@code{may-insert-breakpoints} but disabled @code{may-write-memory},
5854then breakpoints that work by writing trap instructions into the code
5855stream will still not be able to be placed.
5856
5857@table @code
5858
5859@kindex observer
5860@item set observer on
5861@itemx set observer off
5862When set to @code{on}, this disables all the permission variables
5863below (except for @code{insert-fast-tracepoints}), plus enables
5864non-stop debugging. Setting this to @code{off} switches back to
5865normal debugging, though remaining in non-stop mode.
5866
5867@item show observer
5868Show whether observer mode is on or off.
5869
5870@kindex may-write-registers
5871@item set may-write-registers on
5872@itemx set may-write-registers off
5873This controls whether @value{GDBN} will attempt to alter the values of
5874registers, such as with assignment expressions in @code{print}, or the
5875@code{jump} command. It defaults to @code{on}.
5876
5877@item show may-write-registers
5878Show the current permission to write registers.
5879
5880@kindex may-write-memory
5881@item set may-write-memory on
5882@itemx set may-write-memory off
5883This controls whether @value{GDBN} will attempt to alter the contents
5884of memory, such as with assignment expressions in @code{print}. It
5885defaults to @code{on}.
5886
5887@item show may-write-memory
5888Show the current permission to write memory.
5889
5890@kindex may-insert-breakpoints
5891@item set may-insert-breakpoints on
5892@itemx set may-insert-breakpoints off
5893This controls whether @value{GDBN} will attempt to insert breakpoints.
5894This affects all breakpoints, including internal breakpoints defined
5895by @value{GDBN}. It defaults to @code{on}.
5896
5897@item show may-insert-breakpoints
5898Show the current permission to insert breakpoints.
5899
5900@kindex may-insert-tracepoints
5901@item set may-insert-tracepoints on
5902@itemx set may-insert-tracepoints off
5903This controls whether @value{GDBN} will attempt to insert (regular)
5904tracepoints at the beginning of a tracing experiment. It affects only
5905non-fast tracepoints, fast tracepoints being under the control of
5906@code{may-insert-fast-tracepoints}. It defaults to @code{on}.
5907
5908@item show may-insert-tracepoints
5909Show the current permission to insert tracepoints.
5910
5911@kindex may-insert-fast-tracepoints
5912@item set may-insert-fast-tracepoints on
5913@itemx set may-insert-fast-tracepoints off
5914This controls whether @value{GDBN} will attempt to insert fast
5915tracepoints at the beginning of a tracing experiment. It affects only
5916fast tracepoints, regular (non-fast) tracepoints being under the
5917control of @code{may-insert-tracepoints}. It defaults to @code{on}.
5918
5919@item show may-insert-fast-tracepoints
5920Show the current permission to insert fast tracepoints.
5921
5922@kindex may-interrupt
5923@item set may-interrupt on
5924@itemx set may-interrupt off
5925This controls whether @value{GDBN} will attempt to interrupt or stop
5926program execution. When this variable is @code{off}, the
5927@code{interrupt} command will have no effect, nor will
5928@kbd{Ctrl-c}. It defaults to @code{on}.
5929
5930@item show may-interrupt
5931Show the current permission to interrupt or stop the program.
5932
5933@end table
c906108c 5934
bacec72f
MS
5935@node Reverse Execution
5936@chapter Running programs backward
5937@cindex reverse execution
5938@cindex running programs backward
5939
5940When you are debugging a program, it is not unusual to realize that
5941you have gone too far, and some event of interest has already happened.
5942If the target environment supports it, @value{GDBN} can allow you to
5943``rewind'' the program by running it backward.
5944
5945A target environment that supports reverse execution should be able
5946to ``undo'' the changes in machine state that have taken place as the
5947program was executing normally. Variables, registers etc.@: should
5948revert to their previous values. Obviously this requires a great
5949deal of sophistication on the part of the target environment; not
5950all target environments can support reverse execution.
5951
5952When a program is executed in reverse, the instructions that
5953have most recently been executed are ``un-executed'', in reverse
5954order. The program counter runs backward, following the previous
5955thread of execution in reverse. As each instruction is ``un-executed'',
5956the values of memory and/or registers that were changed by that
5957instruction are reverted to their previous states. After executing
5958a piece of source code in reverse, all side effects of that code
5959should be ``undone'', and all variables should be returned to their
5960prior values@footnote{
5961Note that some side effects are easier to undo than others. For instance,
5962memory and registers are relatively easy, but device I/O is hard. Some
5963targets may be able undo things like device I/O, and some may not.
5964
5965The contract between @value{GDBN} and the reverse executing target
5966requires only that the target do something reasonable when
5967@value{GDBN} tells it to execute backwards, and then report the
5968results back to @value{GDBN}. Whatever the target reports back to
5969@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN}
5970assumes that the memory and registers that the target reports are in a
5971consistant state, but @value{GDBN} accepts whatever it is given.
5972}.
5973
5974If you are debugging in a target environment that supports
5975reverse execution, @value{GDBN} provides the following commands.
5976
5977@table @code
5978@kindex reverse-continue
5979@kindex rc @r{(@code{reverse-continue})}
5980@item reverse-continue @r{[}@var{ignore-count}@r{]}
5981@itemx rc @r{[}@var{ignore-count}@r{]}
5982Beginning at the point where your program last stopped, start executing
5983in reverse. Reverse execution will stop for breakpoints and synchronous
5984exceptions (signals), just like normal execution. Behavior of
5985asynchronous signals depends on the target environment.
5986
5987@kindex reverse-step
5988@kindex rs @r{(@code{step})}
5989@item reverse-step @r{[}@var{count}@r{]}
5990Run the program backward until control reaches the start of a
5991different source line; then stop it, and return control to @value{GDBN}.
5992
5993Like the @code{step} command, @code{reverse-step} will only stop
5994at the beginning of a source line. It ``un-executes'' the previously
5995executed source line. If the previous source line included calls to
5996debuggable functions, @code{reverse-step} will step (backward) into
5997the called function, stopping at the beginning of the @emph{last}
5998statement in the called function (typically a return statement).
5999
6000Also, as with the @code{step} command, if non-debuggable functions are
6001called, @code{reverse-step} will run thru them backward without stopping.
6002
6003@kindex reverse-stepi
6004@kindex rsi @r{(@code{reverse-stepi})}
6005@item reverse-stepi @r{[}@var{count}@r{]}
6006Reverse-execute one machine instruction. Note that the instruction
6007to be reverse-executed is @emph{not} the one pointed to by the program
6008counter, but the instruction executed prior to that one. For instance,
6009if the last instruction was a jump, @code{reverse-stepi} will take you
6010back from the destination of the jump to the jump instruction itself.
6011
6012@kindex reverse-next
6013@kindex rn @r{(@code{reverse-next})}
6014@item reverse-next @r{[}@var{count}@r{]}
6015Run backward to the beginning of the previous line executed in
6016the current (innermost) stack frame. If the line contains function
6017calls, they will be ``un-executed'' without stopping. Starting from
6018the first line of a function, @code{reverse-next} will take you back
6019to the caller of that function, @emph{before} the function was called,
6020just as the normal @code{next} command would take you from the last
6021line of a function back to its return to its caller
16af530a 6022@footnote{Unless the code is too heavily optimized.}.
bacec72f
MS
6023
6024@kindex reverse-nexti
6025@kindex rni @r{(@code{reverse-nexti})}
6026@item reverse-nexti @r{[}@var{count}@r{]}
6027Like @code{nexti}, @code{reverse-nexti} executes a single instruction
6028in reverse, except that called functions are ``un-executed'' atomically.
6029That is, if the previously executed instruction was a return from
540aa8e7 6030another function, @code{reverse-nexti} will continue to execute
bacec72f
MS
6031in reverse until the call to that function (from the current stack
6032frame) is reached.
6033
6034@kindex reverse-finish
6035@item reverse-finish
6036Just as the @code{finish} command takes you to the point where the
6037current function returns, @code{reverse-finish} takes you to the point
6038where it was called. Instead of ending up at the end of the current
6039function invocation, you end up at the beginning.
6040
6041@kindex set exec-direction
6042@item set exec-direction
6043Set the direction of target execution.
984359d2 6044@item set exec-direction reverse
bacec72f
MS
6045@cindex execute forward or backward in time
6046@value{GDBN} will perform all execution commands in reverse, until the
6047exec-direction mode is changed to ``forward''. Affected commands include
6048@code{step, stepi, next, nexti, continue, and finish}. The @code{return}
6049command cannot be used in reverse mode.
6050@item set exec-direction forward
6051@value{GDBN} will perform all execution commands in the normal fashion.
6052This is the default.
6053@end table
6054
c906108c 6055
a2311334
EZ
6056@node Process Record and Replay
6057@chapter Recording Inferior's Execution and Replaying It
53cc454a
HZ
6058@cindex process record and replay
6059@cindex recording inferior's execution and replaying it
6060
8e05493c
EZ
6061On some platforms, @value{GDBN} provides a special @dfn{process record
6062and replay} target that can record a log of the process execution, and
6063replay it later with both forward and reverse execution commands.
a2311334
EZ
6064
6065@cindex replay mode
6066When this target is in use, if the execution log includes the record
6067for the next instruction, @value{GDBN} will debug in @dfn{replay
6068mode}. In the replay mode, the inferior does not really execute code
6069instructions. Instead, all the events that normally happen during
6070code execution are taken from the execution log. While code is not
6071really executed in replay mode, the values of registers (including the
6072program counter register) and the memory of the inferior are still
8e05493c
EZ
6073changed as they normally would. Their contents are taken from the
6074execution log.
a2311334
EZ
6075
6076@cindex record mode
6077If the record for the next instruction is not in the execution log,
6078@value{GDBN} will debug in @dfn{record mode}. In this mode, the
6079inferior executes normally, and @value{GDBN} records the execution log
6080for future replay.
6081
8e05493c
EZ
6082The process record and replay target supports reverse execution
6083(@pxref{Reverse Execution}), even if the platform on which the
6084inferior runs does not. However, the reverse execution is limited in
6085this case by the range of the instructions recorded in the execution
6086log. In other words, reverse execution on platforms that don't
6087support it directly can only be done in the replay mode.
6088
6089When debugging in the reverse direction, @value{GDBN} will work in
6090replay mode as long as the execution log includes the record for the
6091previous instruction; otherwise, it will work in record mode, if the
6092platform supports reverse execution, or stop if not.
6093
a2311334
EZ
6094For architecture environments that support process record and replay,
6095@value{GDBN} provides the following commands:
53cc454a
HZ
6096
6097@table @code
6098@kindex target record
6099@kindex record
6100@kindex rec
6101@item target record
a2311334
EZ
6102This command starts the process record and replay target. The process
6103record and replay target can only debug a process that is already
6104running. Therefore, you need first to start the process with the
6105@kbd{run} or @kbd{start} commands, and then start the recording with
6106the @kbd{target record} command.
6107
6108Both @code{record} and @code{rec} are aliases of @code{target record}.
6109
6110@cindex displaced stepping, and process record and replay
6111Displaced stepping (@pxref{Maintenance Commands,, displaced stepping})
6112will be automatically disabled when process record and replay target
6113is started. That's because the process record and replay target
6114doesn't support displaced stepping.
6115
6116@cindex non-stop mode, and process record and replay
6117@cindex asynchronous execution, and process record and replay
6118If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in
6119the asynchronous execution mode (@pxref{Background Execution}), the
6120process record and replay target cannot be started because it doesn't
6121support these two modes.
53cc454a
HZ
6122
6123@kindex record stop
6124@kindex rec s
6125@item record stop
a2311334
EZ
6126Stop the process record and replay target. When process record and
6127replay target stops, the entire execution log will be deleted and the
6128inferior will either be terminated, or will remain in its final state.
53cc454a 6129
a2311334
EZ
6130When you stop the process record and replay target in record mode (at
6131the end of the execution log), the inferior will be stopped at the
6132next instruction that would have been recorded. In other words, if
6133you record for a while and then stop recording, the inferior process
6134will be left in the same state as if the recording never happened.
53cc454a 6135
a2311334
EZ
6136On the other hand, if the process record and replay target is stopped
6137while in replay mode (that is, not at the end of the execution log,
6138but at some earlier point), the inferior process will become ``live''
6139at that earlier state, and it will then be possible to continue the
6140usual ``live'' debugging of the process from that state.
53cc454a 6141
a2311334
EZ
6142When the inferior process exits, or @value{GDBN} detaches from it,
6143process record and replay target will automatically stop itself.
53cc454a 6144
24e933df
HZ
6145@kindex record save
6146@item record save @var{filename}
6147Save the execution log to a file @file{@var{filename}}.
6148Default filename is @file{gdb_record.@var{process_id}}, where
6149@var{process_id} is the process ID of the inferior.
6150
6151@kindex record restore
6152@item record restore @var{filename}
6153Restore the execution log from a file @file{@var{filename}}.
6154File must have been created with @code{record save}.
6155
53cc454a
HZ
6156@kindex set record insn-number-max
6157@item set record insn-number-max @var{limit}
6158Set the limit of instructions to be recorded. Default value is 200000.
6159
a2311334
EZ
6160If @var{limit} is a positive number, then @value{GDBN} will start
6161deleting instructions from the log once the number of the record
6162instructions becomes greater than @var{limit}. For every new recorded
6163instruction, @value{GDBN} will delete the earliest recorded
6164instruction to keep the number of recorded instructions at the limit.
6165(Since deleting recorded instructions loses information, @value{GDBN}
6166lets you control what happens when the limit is reached, by means of
6167the @code{stop-at-limit} option, described below.)
53cc454a 6168
a2311334
EZ
6169If @var{limit} is zero, @value{GDBN} will never delete recorded
6170instructions from the execution log. The number of recorded
6171instructions is unlimited in this case.
53cc454a
HZ
6172
6173@kindex show record insn-number-max
6174@item show record insn-number-max
a2311334 6175Show the limit of instructions to be recorded.
53cc454a
HZ
6176
6177@kindex set record stop-at-limit
a2311334
EZ
6178@item set record stop-at-limit
6179Control the behavior when the number of recorded instructions reaches
6180the limit. If ON (the default), @value{GDBN} will stop when the limit
6181is reached for the first time and ask you whether you want to stop the
6182inferior or continue running it and recording the execution log. If
6183you decide to continue recording, each new recorded instruction will
6184cause the oldest one to be deleted.
53cc454a 6185
a2311334
EZ
6186If this option is OFF, @value{GDBN} will automatically delete the
6187oldest record to make room for each new one, without asking.
53cc454a
HZ
6188
6189@kindex show record stop-at-limit
6190@item show record stop-at-limit
a2311334 6191Show the current setting of @code{stop-at-limit}.
53cc454a 6192
bb08c432
HZ
6193@kindex set record memory-query
6194@item set record memory-query
6195Control the behavior when @value{GDBN} is unable to record memory
6196changes caused by an instruction. If ON, @value{GDBN} will query
6197whether to stop the inferior in that case.
6198
6199If this option is OFF (the default), @value{GDBN} will automatically
6200ignore the effect of such instructions on memory. Later, when
6201@value{GDBN} replays this execution log, it will mark the log of this
6202instruction as not accessible, and it will not affect the replay
6203results.
6204
6205@kindex show record memory-query
6206@item show record memory-query
6207Show the current setting of @code{memory-query}.
6208
29153c24
MS
6209@kindex info record
6210@item info record
6211Show various statistics about the state of process record and its
6212in-memory execution log buffer, including:
6213
6214@itemize @bullet
6215@item
6216Whether in record mode or replay mode.
6217@item
6218Lowest recorded instruction number (counting from when the current execution log started recording instructions).
6219@item
6220Highest recorded instruction number.
6221@item
6222Current instruction about to be replayed (if in replay mode).
6223@item
6224Number of instructions contained in the execution log.
6225@item
6226Maximum number of instructions that may be contained in the execution log.
6227@end itemize
53cc454a
HZ
6228
6229@kindex record delete
6230@kindex rec del
6231@item record delete
a2311334 6232When record target runs in replay mode (``in the past''), delete the
53cc454a 6233subsequent execution log and begin to record a new execution log starting
a2311334 6234from the current address. This means you will abandon the previously
53cc454a
HZ
6235recorded ``future'' and begin recording a new ``future''.
6236@end table
6237
6238
6d2ebf8b 6239@node Stack
c906108c
SS
6240@chapter Examining the Stack
6241
6242When your program has stopped, the first thing you need to know is where it
6243stopped and how it got there.
6244
6245@cindex call stack
5d161b24
DB
6246Each time your program performs a function call, information about the call
6247is generated.
6248That information includes the location of the call in your program,
6249the arguments of the call,
c906108c 6250and the local variables of the function being called.
5d161b24 6251The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
6252The stack frames are allocated in a region of memory called the @dfn{call
6253stack}.
6254
6255When your program stops, the @value{GDBN} commands for examining the
6256stack allow you to see all of this information.
6257
6258@cindex selected frame
6259One of the stack frames is @dfn{selected} by @value{GDBN} and many
6260@value{GDBN} commands refer implicitly to the selected frame. In
6261particular, whenever you ask @value{GDBN} for the value of a variable in
6262your program, the value is found in the selected frame. There are
6263special @value{GDBN} commands to select whichever frame you are
79a6e687 6264interested in. @xref{Selection, ,Selecting a Frame}.
c906108c
SS
6265
6266When your program stops, @value{GDBN} automatically selects the
5d161b24 6267currently executing frame and describes it briefly, similar to the
79a6e687 6268@code{frame} command (@pxref{Frame Info, ,Information about a Frame}).
c906108c
SS
6269
6270@menu
6271* Frames:: Stack frames
6272* Backtrace:: Backtraces
6273* Selection:: Selecting a frame
6274* Frame Info:: Information on a frame
c906108c
SS
6275
6276@end menu
6277
6d2ebf8b 6278@node Frames
79a6e687 6279@section Stack Frames
c906108c 6280
d4f3574e 6281@cindex frame, definition
c906108c
SS
6282@cindex stack frame
6283The call stack is divided up into contiguous pieces called @dfn{stack
6284frames}, or @dfn{frames} for short; each frame is the data associated
6285with one call to one function. The frame contains the arguments given
6286to the function, the function's local variables, and the address at
6287which the function is executing.
6288
6289@cindex initial frame
6290@cindex outermost frame
6291@cindex innermost frame
6292When your program is started, the stack has only one frame, that of the
6293function @code{main}. This is called the @dfn{initial} frame or the
6294@dfn{outermost} frame. Each time a function is called, a new frame is
6295made. Each time a function returns, the frame for that function invocation
6296is eliminated. If a function is recursive, there can be many frames for
6297the same function. The frame for the function in which execution is
6298actually occurring is called the @dfn{innermost} frame. This is the most
6299recently created of all the stack frames that still exist.
6300
6301@cindex frame pointer
6302Inside your program, stack frames are identified by their addresses. A
6303stack frame consists of many bytes, each of which has its own address; each
6304kind of computer has a convention for choosing one byte whose
6305address serves as the address of the frame. Usually this address is kept
e09f16f9
EZ
6306in a register called the @dfn{frame pointer register}
6307(@pxref{Registers, $fp}) while execution is going on in that frame.
c906108c
SS
6308
6309@cindex frame number
6310@value{GDBN} assigns numbers to all existing stack frames, starting with
6311zero for the innermost frame, one for the frame that called it,
6312and so on upward. These numbers do not really exist in your program;
6313they are assigned by @value{GDBN} to give you a way of designating stack
6314frames in @value{GDBN} commands.
6315
6d2ebf8b
SS
6316@c The -fomit-frame-pointer below perennially causes hbox overflow
6317@c underflow problems.
c906108c
SS
6318@cindex frameless execution
6319Some compilers provide a way to compile functions so that they operate
e22ea452 6320without stack frames. (For example, the @value{NGCC} option
474c8240 6321@smallexample
6d2ebf8b 6322@samp{-fomit-frame-pointer}
474c8240 6323@end smallexample
6d2ebf8b 6324generates functions without a frame.)
c906108c
SS
6325This is occasionally done with heavily used library functions to save
6326the frame setup time. @value{GDBN} has limited facilities for dealing
6327with these function invocations. If the innermost function invocation
6328has no stack frame, @value{GDBN} nevertheless regards it as though
6329it had a separate frame, which is numbered zero as usual, allowing
6330correct tracing of the function call chain. However, @value{GDBN} has
6331no provision for frameless functions elsewhere in the stack.
6332
6333@table @code
d4f3574e 6334@kindex frame@r{, command}
41afff9a 6335@cindex current stack frame
c906108c 6336@item frame @var{args}
5d161b24 6337The @code{frame} command allows you to move from one stack frame to another,
c906108c 6338and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
6339address of the frame or the stack frame number. Without an argument,
6340@code{frame} prints the current stack frame.
c906108c
SS
6341
6342@kindex select-frame
41afff9a 6343@cindex selecting frame silently
c906108c
SS
6344@item select-frame
6345The @code{select-frame} command allows you to move from one stack frame
6346to another without printing the frame. This is the silent version of
6347@code{frame}.
6348@end table
6349
6d2ebf8b 6350@node Backtrace
c906108c
SS
6351@section Backtraces
6352
09d4efe1
EZ
6353@cindex traceback
6354@cindex call stack traces
c906108c
SS
6355A backtrace is a summary of how your program got where it is. It shows one
6356line per frame, for many frames, starting with the currently executing
6357frame (frame zero), followed by its caller (frame one), and on up the
6358stack.
6359
6360@table @code
6361@kindex backtrace
41afff9a 6362@kindex bt @r{(@code{backtrace})}
c906108c
SS
6363@item backtrace
6364@itemx bt
6365Print a backtrace of the entire stack: one line per frame for all
6366frames in the stack.
6367
6368You can stop the backtrace at any time by typing the system interrupt
c8aa23ab 6369character, normally @kbd{Ctrl-c}.
c906108c
SS
6370
6371@item backtrace @var{n}
6372@itemx bt @var{n}
6373Similar, but print only the innermost @var{n} frames.
6374
6375@item backtrace -@var{n}
6376@itemx bt -@var{n}
6377Similar, but print only the outermost @var{n} frames.
0f061b69
NR
6378
6379@item backtrace full
0f061b69 6380@itemx bt full
dd74f6ae
NR
6381@itemx bt full @var{n}
6382@itemx bt full -@var{n}
e7109c7e 6383Print the values of the local variables also. @var{n} specifies the
286ba84d 6384number of frames to print, as described above.
c906108c
SS
6385@end table
6386
6387@kindex where
6388@kindex info stack
c906108c
SS
6389The names @code{where} and @code{info stack} (abbreviated @code{info s})
6390are additional aliases for @code{backtrace}.
6391
839c27b7
EZ
6392@cindex multiple threads, backtrace
6393In a multi-threaded program, @value{GDBN} by default shows the
6394backtrace only for the current thread. To display the backtrace for
6395several or all of the threads, use the command @code{thread apply}
6396(@pxref{Threads, thread apply}). For example, if you type @kbd{thread
6397apply all backtrace}, @value{GDBN} will display the backtrace for all
6398the threads; this is handy when you debug a core dump of a
6399multi-threaded program.
6400
c906108c
SS
6401Each line in the backtrace shows the frame number and the function name.
6402The program counter value is also shown---unless you use @code{set
6403print address off}. The backtrace also shows the source file name and
6404line number, as well as the arguments to the function. The program
6405counter value is omitted if it is at the beginning of the code for that
6406line number.
6407
6408Here is an example of a backtrace. It was made with the command
6409@samp{bt 3}, so it shows the innermost three frames.
6410
6411@smallexample
6412@group
5d161b24 6413#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c 6414 at builtin.c:993
4f5376b2 6415#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242
c906108c
SS
6416#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
6417 at macro.c:71
6418(More stack frames follow...)
6419@end group
6420@end smallexample
6421
6422@noindent
6423The display for frame zero does not begin with a program counter
6424value, indicating that your program has stopped at the beginning of the
6425code for line @code{993} of @code{builtin.c}.
6426
4f5376b2
JB
6427@noindent
6428The value of parameter @code{data} in frame 1 has been replaced by
6429@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter
6430only if it is a scalar (integer, pointer, enumeration, etc). See command
6431@kbd{set print frame-arguments} in @ref{Print Settings} for more details
6432on how to configure the way function parameter values are printed.
6433
585fdaa1 6434@cindex optimized out, in backtrace
18999be5
EZ
6435@cindex function call arguments, optimized out
6436If your program was compiled with optimizations, some compilers will
6437optimize away arguments passed to functions if those arguments are
6438never used after the call. Such optimizations generate code that
6439passes arguments through registers, but doesn't store those arguments
6440in the stack frame. @value{GDBN} has no way of displaying such
6441arguments in stack frames other than the innermost one. Here's what
6442such a backtrace might look like:
6443
6444@smallexample
6445@group
6446#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
6447 at builtin.c:993
585fdaa1
PA
6448#1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242
6449#2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08)
18999be5
EZ
6450 at macro.c:71
6451(More stack frames follow...)
6452@end group
6453@end smallexample
6454
6455@noindent
6456The values of arguments that were not saved in their stack frames are
585fdaa1 6457shown as @samp{<optimized out>}.
18999be5
EZ
6458
6459If you need to display the values of such optimized-out arguments,
6460either deduce that from other variables whose values depend on the one
6461you are interested in, or recompile without optimizations.
6462
a8f24a35
EZ
6463@cindex backtrace beyond @code{main} function
6464@cindex program entry point
6465@cindex startup code, and backtrace
25d29d70
AC
6466Most programs have a standard user entry point---a place where system
6467libraries and startup code transition into user code. For C this is
d416eeec
EZ
6468@code{main}@footnote{
6469Note that embedded programs (the so-called ``free-standing''
6470environment) are not required to have a @code{main} function as the
6471entry point. They could even have multiple entry points.}.
6472When @value{GDBN} finds the entry function in a backtrace
25d29d70
AC
6473it will terminate the backtrace, to avoid tracing into highly
6474system-specific (and generally uninteresting) code.
6475
6476If you need to examine the startup code, or limit the number of levels
6477in a backtrace, you can change this behavior:
95f90d25
DJ
6478
6479@table @code
25d29d70
AC
6480@item set backtrace past-main
6481@itemx set backtrace past-main on
4644b6e3 6482@kindex set backtrace
25d29d70
AC
6483Backtraces will continue past the user entry point.
6484
6485@item set backtrace past-main off
95f90d25
DJ
6486Backtraces will stop when they encounter the user entry point. This is the
6487default.
6488
25d29d70 6489@item show backtrace past-main
4644b6e3 6490@kindex show backtrace
25d29d70
AC
6491Display the current user entry point backtrace policy.
6492
2315ffec
RC
6493@item set backtrace past-entry
6494@itemx set backtrace past-entry on
a8f24a35 6495Backtraces will continue past the internal entry point of an application.
2315ffec
RC
6496This entry point is encoded by the linker when the application is built,
6497and is likely before the user entry point @code{main} (or equivalent) is called.
6498
6499@item set backtrace past-entry off
d3e8051b 6500Backtraces will stop when they encounter the internal entry point of an
2315ffec
RC
6501application. This is the default.
6502
6503@item show backtrace past-entry
6504Display the current internal entry point backtrace policy.
6505
25d29d70
AC
6506@item set backtrace limit @var{n}
6507@itemx set backtrace limit 0
6508@cindex backtrace limit
6509Limit the backtrace to @var{n} levels. A value of zero means
6510unlimited.
95f90d25 6511
25d29d70
AC
6512@item show backtrace limit
6513Display the current limit on backtrace levels.
95f90d25
DJ
6514@end table
6515
6d2ebf8b 6516@node Selection
79a6e687 6517@section Selecting a Frame
c906108c
SS
6518
6519Most commands for examining the stack and other data in your program work on
6520whichever stack frame is selected at the moment. Here are the commands for
6521selecting a stack frame; all of them finish by printing a brief description
6522of the stack frame just selected.
6523
6524@table @code
d4f3574e 6525@kindex frame@r{, selecting}
41afff9a 6526@kindex f @r{(@code{frame})}
c906108c
SS
6527@item frame @var{n}
6528@itemx f @var{n}
6529Select frame number @var{n}. Recall that frame zero is the innermost
6530(currently executing) frame, frame one is the frame that called the
6531innermost one, and so on. The highest-numbered frame is the one for
6532@code{main}.
6533
6534@item frame @var{addr}
6535@itemx f @var{addr}
6536Select the frame at address @var{addr}. This is useful mainly if the
6537chaining of stack frames has been damaged by a bug, making it
6538impossible for @value{GDBN} to assign numbers properly to all frames. In
6539addition, this can be useful when your program has multiple stacks and
6540switches between them.
6541
c906108c
SS
6542On the SPARC architecture, @code{frame} needs two addresses to
6543select an arbitrary frame: a frame pointer and a stack pointer.
6544
eb17f351 6545On the @acronym{MIPS} and Alpha architecture, it needs two addresses: a stack
c906108c
SS
6546pointer and a program counter.
6547
6548On the 29k architecture, it needs three addresses: a register stack
6549pointer, a program counter, and a memory stack pointer.
c906108c
SS
6550
6551@kindex up
6552@item up @var{n}
6553Move @var{n} frames up the stack. For positive numbers @var{n}, this
6554advances toward the outermost frame, to higher frame numbers, to frames
6555that have existed longer. @var{n} defaults to one.
6556
6557@kindex down
41afff9a 6558@kindex do @r{(@code{down})}
c906108c
SS
6559@item down @var{n}
6560Move @var{n} frames down the stack. For positive numbers @var{n}, this
6561advances toward the innermost frame, to lower frame numbers, to frames
6562that were created more recently. @var{n} defaults to one. You may
6563abbreviate @code{down} as @code{do}.
6564@end table
6565
6566All of these commands end by printing two lines of output describing the
6567frame. The first line shows the frame number, the function name, the
6568arguments, and the source file and line number of execution in that
5d161b24 6569frame. The second line shows the text of that source line.
c906108c
SS
6570
6571@need 1000
6572For example:
6573
6574@smallexample
6575@group
6576(@value{GDBP}) up
6577#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
6578 at env.c:10
657910 read_input_file (argv[i]);
6580@end group
6581@end smallexample
6582
6583After such a printout, the @code{list} command with no arguments
6584prints ten lines centered on the point of execution in the frame.
87885426
FN
6585You can also edit the program at the point of execution with your favorite
6586editing program by typing @code{edit}.
79a6e687 6587@xref{List, ,Printing Source Lines},
87885426 6588for details.
c906108c
SS
6589
6590@table @code
6591@kindex down-silently
6592@kindex up-silently
6593@item up-silently @var{n}
6594@itemx down-silently @var{n}
6595These two commands are variants of @code{up} and @code{down},
6596respectively; they differ in that they do their work silently, without
6597causing display of the new frame. They are intended primarily for use
6598in @value{GDBN} command scripts, where the output might be unnecessary and
6599distracting.
6600@end table
6601
6d2ebf8b 6602@node Frame Info
79a6e687 6603@section Information About a Frame
c906108c
SS
6604
6605There are several other commands to print information about the selected
6606stack frame.
6607
6608@table @code
6609@item frame
6610@itemx f
6611When used without any argument, this command does not change which
6612frame is selected, but prints a brief description of the currently
6613selected stack frame. It can be abbreviated @code{f}. With an
6614argument, this command is used to select a stack frame.
79a6e687 6615@xref{Selection, ,Selecting a Frame}.
c906108c
SS
6616
6617@kindex info frame
41afff9a 6618@kindex info f @r{(@code{info frame})}
c906108c
SS
6619@item info frame
6620@itemx info f
6621This command prints a verbose description of the selected stack frame,
6622including:
6623
6624@itemize @bullet
5d161b24
DB
6625@item
6626the address of the frame
c906108c
SS
6627@item
6628the address of the next frame down (called by this frame)
6629@item
6630the address of the next frame up (caller of this frame)
6631@item
6632the language in which the source code corresponding to this frame is written
6633@item
6634the address of the frame's arguments
6635@item
d4f3574e
SS
6636the address of the frame's local variables
6637@item
c906108c
SS
6638the program counter saved in it (the address of execution in the caller frame)
6639@item
6640which registers were saved in the frame
6641@end itemize
6642
6643@noindent The verbose description is useful when
6644something has gone wrong that has made the stack format fail to fit
6645the usual conventions.
6646
6647@item info frame @var{addr}
6648@itemx info f @var{addr}
6649Print a verbose description of the frame at address @var{addr}, without
6650selecting that frame. The selected frame remains unchanged by this
6651command. This requires the same kind of address (more than one for some
6652architectures) that you specify in the @code{frame} command.
79a6e687 6653@xref{Selection, ,Selecting a Frame}.
c906108c
SS
6654
6655@kindex info args
6656@item info args
6657Print the arguments of the selected frame, each on a separate line.
6658
6659@item info locals
6660@kindex info locals
6661Print the local variables of the selected frame, each on a separate
6662line. These are all variables (declared either static or automatic)
6663accessible at the point of execution of the selected frame.
6664
c906108c
SS
6665@end table
6666
c906108c 6667
6d2ebf8b 6668@node Source
c906108c
SS
6669@chapter Examining Source Files
6670
6671@value{GDBN} can print parts of your program's source, since the debugging
6672information recorded in the program tells @value{GDBN} what source files were
6673used to build it. When your program stops, @value{GDBN} spontaneously prints
6674the line where it stopped. Likewise, when you select a stack frame
79a6e687 6675(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where
c906108c
SS
6676execution in that frame has stopped. You can print other portions of
6677source files by explicit command.
6678
7a292a7a 6679If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 6680prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 6681@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
6682
6683@menu
6684* List:: Printing source lines
2a25a5ba 6685* Specify Location:: How to specify code locations
87885426 6686* Edit:: Editing source files
c906108c 6687* Search:: Searching source files
c906108c
SS
6688* Source Path:: Specifying source directories
6689* Machine Code:: Source and machine code
6690@end menu
6691
6d2ebf8b 6692@node List
79a6e687 6693@section Printing Source Lines
c906108c
SS
6694
6695@kindex list
41afff9a 6696@kindex l @r{(@code{list})}
c906108c 6697To print lines from a source file, use the @code{list} command
5d161b24 6698(abbreviated @code{l}). By default, ten lines are printed.
2a25a5ba
EZ
6699There are several ways to specify what part of the file you want to
6700print; see @ref{Specify Location}, for the full list.
c906108c
SS
6701
6702Here are the forms of the @code{list} command most commonly used:
6703
6704@table @code
6705@item list @var{linenum}
6706Print lines centered around line number @var{linenum} in the
6707current source file.
6708
6709@item list @var{function}
6710Print lines centered around the beginning of function
6711@var{function}.
6712
6713@item list
6714Print more lines. If the last lines printed were printed with a
6715@code{list} command, this prints lines following the last lines
6716printed; however, if the last line printed was a solitary line printed
6717as part of displaying a stack frame (@pxref{Stack, ,Examining the
6718Stack}), this prints lines centered around that line.
6719
6720@item list -
6721Print lines just before the lines last printed.
6722@end table
6723
9c16f35a 6724@cindex @code{list}, how many lines to display
c906108c
SS
6725By default, @value{GDBN} prints ten source lines with any of these forms of
6726the @code{list} command. You can change this using @code{set listsize}:
6727
6728@table @code
6729@kindex set listsize
6730@item set listsize @var{count}
6731Make the @code{list} command display @var{count} source lines (unless
6732the @code{list} argument explicitly specifies some other number).
6fc1c773
YQ
6733Setting @var{count} to -1 means there's no limit and 0 means suppress
6734display of source lines.
c906108c
SS
6735
6736@kindex show listsize
6737@item show listsize
6738Display the number of lines that @code{list} prints.
6739@end table
6740
6741Repeating a @code{list} command with @key{RET} discards the argument,
6742so it is equivalent to typing just @code{list}. This is more useful
6743than listing the same lines again. An exception is made for an
6744argument of @samp{-}; that argument is preserved in repetition so that
6745each repetition moves up in the source file.
6746
c906108c
SS
6747In general, the @code{list} command expects you to supply zero, one or two
6748@dfn{linespecs}. Linespecs specify source lines; there are several ways
2a25a5ba
EZ
6749of writing them (@pxref{Specify Location}), but the effect is always
6750to specify some source line.
6751
c906108c
SS
6752Here is a complete description of the possible arguments for @code{list}:
6753
6754@table @code
6755@item list @var{linespec}
6756Print lines centered around the line specified by @var{linespec}.
6757
6758@item list @var{first},@var{last}
6759Print lines from @var{first} to @var{last}. Both arguments are
2a25a5ba
EZ
6760linespecs. When a @code{list} command has two linespecs, and the
6761source file of the second linespec is omitted, this refers to
6762the same source file as the first linespec.
c906108c
SS
6763
6764@item list ,@var{last}
6765Print lines ending with @var{last}.
6766
6767@item list @var{first},
6768Print lines starting with @var{first}.
6769
6770@item list +
6771Print lines just after the lines last printed.
6772
6773@item list -
6774Print lines just before the lines last printed.
6775
6776@item list
6777As described in the preceding table.
6778@end table
6779
2a25a5ba
EZ
6780@node Specify Location
6781@section Specifying a Location
6782@cindex specifying location
6783@cindex linespec
c906108c 6784
2a25a5ba
EZ
6785Several @value{GDBN} commands accept arguments that specify a location
6786of your program's code. Since @value{GDBN} is a source-level
6787debugger, a location usually specifies some line in the source code;
6788for that reason, locations are also known as @dfn{linespecs}.
c906108c 6789
2a25a5ba
EZ
6790Here are all the different ways of specifying a code location that
6791@value{GDBN} understands:
c906108c 6792
2a25a5ba
EZ
6793@table @code
6794@item @var{linenum}
6795Specifies the line number @var{linenum} of the current source file.
c906108c 6796
2a25a5ba
EZ
6797@item -@var{offset}
6798@itemx +@var{offset}
6799Specifies the line @var{offset} lines before or after the @dfn{current
6800line}. For the @code{list} command, the current line is the last one
6801printed; for the breakpoint commands, this is the line at which
6802execution stopped in the currently selected @dfn{stack frame}
6803(@pxref{Frames, ,Frames}, for a description of stack frames.) When
6804used as the second of the two linespecs in a @code{list} command,
6805this specifies the line @var{offset} lines up or down from the first
6806linespec.
6807
6808@item @var{filename}:@var{linenum}
6809Specifies the line @var{linenum} in the source file @var{filename}.
4aac40c8
TT
6810If @var{filename} is a relative file name, then it will match any
6811source file name with the same trailing components. For example, if
6812@var{filename} is @samp{gcc/expr.c}, then it will match source file
6813name of @file{/build/trunk/gcc/expr.c}, but not
6814@file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
c906108c
SS
6815
6816@item @var{function}
6817Specifies the line that begins the body of the function @var{function}.
2a25a5ba 6818For example, in C, this is the line with the open brace.
c906108c 6819
9ef07c8c
TT
6820@item @var{function}:@var{label}
6821Specifies the line where @var{label} appears in @var{function}.
6822
c906108c 6823@item @var{filename}:@var{function}
2a25a5ba
EZ
6824Specifies the line that begins the body of the function @var{function}
6825in the file @var{filename}. You only need the file name with a
6826function name to avoid ambiguity when there are identically named
6827functions in different source files.
c906108c 6828
0f5238ed
TT
6829@item @var{label}
6830Specifies the line at which the label named @var{label} appears.
6831@value{GDBN} searches for the label in the function corresponding to
6832the currently selected stack frame. If there is no current selected
6833stack frame (for instance, if the inferior is not running), then
6834@value{GDBN} will not search for a label.
6835
c906108c 6836@item *@var{address}
2a25a5ba
EZ
6837Specifies the program address @var{address}. For line-oriented
6838commands, such as @code{list} and @code{edit}, this specifies a source
6839line that contains @var{address}. For @code{break} and other
6840breakpoint oriented commands, this can be used to set breakpoints in
6841parts of your program which do not have debugging information or
6842source files.
6843
6844Here @var{address} may be any expression valid in the current working
6845language (@pxref{Languages, working language}) that specifies a code
5fa54e5d
EZ
6846address. In addition, as a convenience, @value{GDBN} extends the
6847semantics of expressions used in locations to cover the situations
6848that frequently happen during debugging. Here are the various forms
6849of @var{address}:
2a25a5ba
EZ
6850
6851@table @code
6852@item @var{expression}
6853Any expression valid in the current working language.
6854
6855@item @var{funcaddr}
6856An address of a function or procedure derived from its name. In C,
6857C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is
6858simply the function's name @var{function} (and actually a special case
6859of a valid expression). In Pascal and Modula-2, this is
6860@code{&@var{function}}. In Ada, this is @code{@var{function}'Address}
6861(although the Pascal form also works).
6862
6863This form specifies the address of the function's first instruction,
6864before the stack frame and arguments have been set up.
6865
6866@item '@var{filename}'::@var{funcaddr}
6867Like @var{funcaddr} above, but also specifies the name of the source
6868file explicitly. This is useful if the name of the function does not
6869specify the function unambiguously, e.g., if there are several
6870functions with identical names in different source files.
c906108c
SS
6871@end table
6872
62e5f89c
SDJ
6873@cindex breakpoint at static probe point
6874@item -pstap|-probe-stap @r{[}@var{objfile}:@r{[}@var{provider}:@r{]}@r{]}@var{name}
6875The @sc{gnu}/Linux tool @code{SystemTap} provides a way for
6876applications to embed static probes. @xref{Static Probe Points}, for more
6877information on finding and using static probes. This form of linespec
6878specifies the location of such a static probe.
6879
6880If @var{objfile} is given, only probes coming from that shared library
6881or executable matching @var{objfile} as a regular expression are considered.
6882If @var{provider} is given, then only probes from that provider are considered.
6883If several probes match the spec, @value{GDBN} will insert a breakpoint at
6884each one of those probes.
6885
2a25a5ba
EZ
6886@end table
6887
6888
87885426 6889@node Edit
79a6e687 6890@section Editing Source Files
87885426
FN
6891@cindex editing source files
6892
6893@kindex edit
6894@kindex e @r{(@code{edit})}
6895To edit the lines in a source file, use the @code{edit} command.
6896The editing program of your choice
6897is invoked with the current line set to
6898the active line in the program.
6899Alternatively, there are several ways to specify what part of the file you
2a25a5ba 6900want to print if you want to see other parts of the program:
87885426
FN
6901
6902@table @code
2a25a5ba
EZ
6903@item edit @var{location}
6904Edit the source file specified by @code{location}. Editing starts at
6905that @var{location}, e.g., at the specified source line of the
6906specified file. @xref{Specify Location}, for all the possible forms
6907of the @var{location} argument; here are the forms of the @code{edit}
6908command most commonly used:
87885426 6909
2a25a5ba 6910@table @code
87885426
FN
6911@item edit @var{number}
6912Edit the current source file with @var{number} as the active line number.
6913
6914@item edit @var{function}
6915Edit the file containing @var{function} at the beginning of its definition.
2a25a5ba 6916@end table
87885426 6917
87885426
FN
6918@end table
6919
79a6e687 6920@subsection Choosing your Editor
87885426
FN
6921You can customize @value{GDBN} to use any editor you want
6922@footnote{
6923The only restriction is that your editor (say @code{ex}), recognizes the
6924following command-line syntax:
10998722 6925@smallexample
87885426 6926ex +@var{number} file
10998722 6927@end smallexample
15387254
EZ
6928The optional numeric value +@var{number} specifies the number of the line in
6929the file where to start editing.}.
6930By default, it is @file{@value{EDITOR}}, but you can change this
10998722
AC
6931by setting the environment variable @code{EDITOR} before using
6932@value{GDBN}. For example, to configure @value{GDBN} to use the
6933@code{vi} editor, you could use these commands with the @code{sh} shell:
6934@smallexample
87885426
FN
6935EDITOR=/usr/bin/vi
6936export EDITOR
15387254 6937gdb @dots{}
10998722 6938@end smallexample
87885426 6939or in the @code{csh} shell,
10998722 6940@smallexample
87885426 6941setenv EDITOR /usr/bin/vi
15387254 6942gdb @dots{}
10998722 6943@end smallexample
87885426 6944
6d2ebf8b 6945@node Search
79a6e687 6946@section Searching Source Files
15387254 6947@cindex searching source files
c906108c
SS
6948
6949There are two commands for searching through the current source file for a
6950regular expression.
6951
6952@table @code
6953@kindex search
6954@kindex forward-search
1e96de83 6955@kindex fo @r{(@code{forward-search})}
c906108c
SS
6956@item forward-search @var{regexp}
6957@itemx search @var{regexp}
6958The command @samp{forward-search @var{regexp}} checks each line,
6959starting with the one following the last line listed, for a match for
5d161b24 6960@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
6961synonym @samp{search @var{regexp}} or abbreviate the command name as
6962@code{fo}.
6963
09d4efe1 6964@kindex reverse-search
c906108c
SS
6965@item reverse-search @var{regexp}
6966The command @samp{reverse-search @var{regexp}} checks each line, starting
6967with the one before the last line listed and going backward, for a match
6968for @var{regexp}. It lists the line that is found. You can abbreviate
6969this command as @code{rev}.
6970@end table
c906108c 6971
6d2ebf8b 6972@node Source Path
79a6e687 6973@section Specifying Source Directories
c906108c
SS
6974
6975@cindex source path
6976@cindex directories for source files
6977Executable programs sometimes do not record the directories of the source
6978files from which they were compiled, just the names. Even when they do,
6979the directories could be moved between the compilation and your debugging
6980session. @value{GDBN} has a list of directories to search for source files;
6981this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
6982it tries all the directories in the list, in the order they are present
0b66e38c
EZ
6983in the list, until it finds a file with the desired name.
6984
6985For example, suppose an executable references the file
6986@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
6987@file{/mnt/cross}. The file is first looked up literally; if this
6988fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
6989fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
6990message is printed. @value{GDBN} does not look up the parts of the
6991source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
6992Likewise, the subdirectories of the source path are not searched: if
6993the source path is @file{/mnt/cross}, and the binary refers to
6994@file{foo.c}, @value{GDBN} would not find it under
6995@file{/mnt/cross/usr/src/foo-1.0/lib}.
6996
6997Plain file names, relative file names with leading directories, file
6998names containing dots, etc.@: are all treated as described above; for
6999instance, if the source path is @file{/mnt/cross}, and the source file
7000is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
7001@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
7002that---@file{/mnt/cross/foo.c}.
7003
7004Note that the executable search path is @emph{not} used to locate the
cd852561 7005source files.
c906108c
SS
7006
7007Whenever you reset or rearrange the source path, @value{GDBN} clears out
7008any information it has cached about where source files are found and where
7009each line is in the file.
7010
7011@kindex directory
7012@kindex dir
d4f3574e
SS
7013When you start @value{GDBN}, its source path includes only @samp{cdir}
7014and @samp{cwd}, in that order.
c906108c
SS
7015To add other directories, use the @code{directory} command.
7016
4b505b12
AS
7017The search path is used to find both program source files and @value{GDBN}
7018script files (read using the @samp{-command} option and @samp{source} command).
7019
30daae6c
JB
7020In addition to the source path, @value{GDBN} provides a set of commands
7021that manage a list of source path substitution rules. A @dfn{substitution
7022rule} specifies how to rewrite source directories stored in the program's
7023debug information in case the sources were moved to a different
7024directory between compilation and debugging. A rule is made of
7025two strings, the first specifying what needs to be rewritten in
7026the path, and the second specifying how it should be rewritten.
7027In @ref{set substitute-path}, we name these two parts @var{from} and
7028@var{to} respectively. @value{GDBN} does a simple string replacement
7029of @var{from} with @var{to} at the start of the directory part of the
7030source file name, and uses that result instead of the original file
7031name to look up the sources.
7032
7033Using the previous example, suppose the @file{foo-1.0} tree has been
7034moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell
3f94c067 7035@value{GDBN} to replace @file{/usr/src} in all source path names with
30daae6c
JB
7036@file{/mnt/cross}. The first lookup will then be
7037@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location
7038of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path
7039substitution rule, use the @code{set substitute-path} command
7040(@pxref{set substitute-path}).
7041
7042To avoid unexpected substitution results, a rule is applied only if the
7043@var{from} part of the directory name ends at a directory separator.
7044For instance, a rule substituting @file{/usr/source} into
7045@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but
7046not to @file{/usr/sourceware/foo-2.0}. And because the substitution
d3e8051b 7047is applied only at the beginning of the directory name, this rule will
30daae6c
JB
7048not be applied to @file{/root/usr/source/baz.c} either.
7049
7050In many cases, you can achieve the same result using the @code{directory}
7051command. However, @code{set substitute-path} can be more efficient in
7052the case where the sources are organized in a complex tree with multiple
7053subdirectories. With the @code{directory} command, you need to add each
7054subdirectory of your project. If you moved the entire tree while
7055preserving its internal organization, then @code{set substitute-path}
7056allows you to direct the debugger to all the sources with one single
7057command.
7058
7059@code{set substitute-path} is also more than just a shortcut command.
7060The source path is only used if the file at the original location no
7061longer exists. On the other hand, @code{set substitute-path} modifies
7062the debugger behavior to look at the rewritten location instead. So, if
7063for any reason a source file that is not relevant to your executable is
7064located at the original location, a substitution rule is the only
3f94c067 7065method available to point @value{GDBN} at the new location.
30daae6c 7066
29b0e8a2
JM
7067@cindex @samp{--with-relocated-sources}
7068@cindex default source path substitution
7069You can configure a default source path substitution rule by
7070configuring @value{GDBN} with the
7071@samp{--with-relocated-sources=@var{dir}} option. The @var{dir}
7072should be the name of a directory under @value{GDBN}'s configured
7073prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and
7074directory names in debug information under @var{dir} will be adjusted
7075automatically if the installed @value{GDBN} is moved to a new
7076location. This is useful if @value{GDBN}, libraries or executables
7077with debug information and corresponding source code are being moved
7078together.
7079
c906108c
SS
7080@table @code
7081@item directory @var{dirname} @dots{}
7082@item dir @var{dirname} @dots{}
7083Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
7084directory names may be given to this command, separated by @samp{:}
7085(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
7086part of absolute file names) or
c906108c
SS
7087whitespace. You may specify a directory that is already in the source
7088path; this moves it forward, so @value{GDBN} searches it sooner.
7089
7090@kindex cdir
7091@kindex cwd
41afff9a 7092@vindex $cdir@r{, convenience variable}
d3e8051b 7093@vindex $cwd@r{, convenience variable}
c906108c
SS
7094@cindex compilation directory
7095@cindex current directory
7096@cindex working directory
7097@cindex directory, current
7098@cindex directory, compilation
7099You can use the string @samp{$cdir} to refer to the compilation
7100directory (if one is recorded), and @samp{$cwd} to refer to the current
7101working directory. @samp{$cwd} is not the same as @samp{.}---the former
7102tracks the current working directory as it changes during your @value{GDBN}
7103session, while the latter is immediately expanded to the current
7104directory at the time you add an entry to the source path.
7105
7106@item directory
cd852561 7107Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation.
c906108c
SS
7108
7109@c RET-repeat for @code{directory} is explicitly disabled, but since
7110@c repeating it would be a no-op we do not say that. (thanks to RMS)
7111
99e7ae30
DE
7112@item set directories @var{path-list}
7113@kindex set directories
7114Set the source path to @var{path-list}.
7115@samp{$cdir:$cwd} are added if missing.
7116
c906108c
SS
7117@item show directories
7118@kindex show directories
7119Print the source path: show which directories it contains.
30daae6c
JB
7120
7121@anchor{set substitute-path}
7122@item set substitute-path @var{from} @var{to}
7123@kindex set substitute-path
7124Define a source path substitution rule, and add it at the end of the
7125current list of existing substitution rules. If a rule with the same
7126@var{from} was already defined, then the old rule is also deleted.
7127
7128For example, if the file @file{/foo/bar/baz.c} was moved to
7129@file{/mnt/cross/baz.c}, then the command
7130
7131@smallexample
7132(@value{GDBP}) set substitute-path /usr/src /mnt/cross
7133@end smallexample
7134
7135@noindent
7136will tell @value{GDBN} to replace @samp{/usr/src} with
7137@samp{/mnt/cross}, which will allow @value{GDBN} to find the file
7138@file{baz.c} even though it was moved.
7139
7140In the case when more than one substitution rule have been defined,
7141the rules are evaluated one by one in the order where they have been
7142defined. The first one matching, if any, is selected to perform
7143the substitution.
7144
7145For instance, if we had entered the following commands:
7146
7147@smallexample
7148(@value{GDBP}) set substitute-path /usr/src/include /mnt/include
7149(@value{GDBP}) set substitute-path /usr/src /mnt/src
7150@end smallexample
7151
7152@noindent
7153@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into
7154@file{/mnt/include/defs.h} by using the first rule. However, it would
7155use the second rule to rewrite @file{/usr/src/lib/foo.c} into
7156@file{/mnt/src/lib/foo.c}.
7157
7158
7159@item unset substitute-path [path]
7160@kindex unset substitute-path
7161If a path is specified, search the current list of substitution rules
7162for a rule that would rewrite that path. Delete that rule if found.
7163A warning is emitted by the debugger if no rule could be found.
7164
7165If no path is specified, then all substitution rules are deleted.
7166
7167@item show substitute-path [path]
7168@kindex show substitute-path
7169If a path is specified, then print the source path substitution rule
7170which would rewrite that path, if any.
7171
7172If no path is specified, then print all existing source path substitution
7173rules.
7174
c906108c
SS
7175@end table
7176
7177If your source path is cluttered with directories that are no longer of
7178interest, @value{GDBN} may sometimes cause confusion by finding the wrong
7179versions of source. You can correct the situation as follows:
7180
7181@enumerate
7182@item
cd852561 7183Use @code{directory} with no argument to reset the source path to its default value.
c906108c
SS
7184
7185@item
7186Use @code{directory} with suitable arguments to reinstall the
7187directories you want in the source path. You can add all the
7188directories in one command.
7189@end enumerate
7190
6d2ebf8b 7191@node Machine Code
79a6e687 7192@section Source and Machine Code
15387254 7193@cindex source line and its code address
c906108c
SS
7194
7195You can use the command @code{info line} to map source lines to program
7196addresses (and vice versa), and the command @code{disassemble} to display
91440f57
HZ
7197a range of addresses as machine instructions. You can use the command
7198@code{set disassemble-next-line} to set whether to disassemble next
7199source line when execution stops. When run under @sc{gnu} Emacs
d4f3574e 7200mode, the @code{info line} command causes the arrow to point to the
5d161b24 7201line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
7202well as hex.
7203
7204@table @code
7205@kindex info line
7206@item info line @var{linespec}
7207Print the starting and ending addresses of the compiled code for
7208source line @var{linespec}. You can specify source lines in any of
2a25a5ba 7209the ways documented in @ref{Specify Location}.
c906108c
SS
7210@end table
7211
7212For example, we can use @code{info line} to discover the location of
7213the object code for the first line of function
7214@code{m4_changequote}:
7215
d4f3574e
SS
7216@c FIXME: I think this example should also show the addresses in
7217@c symbolic form, as they usually would be displayed.
c906108c 7218@smallexample
96a2c332 7219(@value{GDBP}) info line m4_changequote
c906108c
SS
7220Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
7221@end smallexample
7222
7223@noindent
15387254 7224@cindex code address and its source line
c906108c
SS
7225We can also inquire (using @code{*@var{addr}} as the form for
7226@var{linespec}) what source line covers a particular address:
7227@smallexample
7228(@value{GDBP}) info line *0x63ff
7229Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
7230@end smallexample
7231
7232@cindex @code{$_} and @code{info line}
15387254 7233@cindex @code{x} command, default address
41afff9a 7234@kindex x@r{(examine), and} info line
c906108c
SS
7235After @code{info line}, the default address for the @code{x} command
7236is changed to the starting address of the line, so that @samp{x/i} is
7237sufficient to begin examining the machine code (@pxref{Memory,
79a6e687 7238,Examining Memory}). Also, this address is saved as the value of the
c906108c 7239convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
79a6e687 7240Variables}).
c906108c
SS
7241
7242@table @code
7243@kindex disassemble
7244@cindex assembly instructions
7245@cindex instructions, assembly
7246@cindex machine instructions
7247@cindex listing machine instructions
7248@item disassemble
d14508fe 7249@itemx disassemble /m
9b117ef3 7250@itemx disassemble /r
c906108c 7251This specialized command dumps a range of memory as machine
d14508fe 7252instructions. It can also print mixed source+disassembly by specifying
9b117ef3
HZ
7253the @code{/m} modifier and print the raw instructions in hex as well as
7254in symbolic form by specifying the @code{/r}.
d14508fe 7255The default memory range is the function surrounding the
c906108c
SS
7256program counter of the selected frame. A single argument to this
7257command is a program counter value; @value{GDBN} dumps the function
21a0512e
PP
7258surrounding this value. When two arguments are given, they should
7259be separated by a comma, possibly surrounded by whitespace. The
53a71c06
CR
7260arguments specify a range of addresses to dump, in one of two forms:
7261
7262@table @code
7263@item @var{start},@var{end}
7264the addresses from @var{start} (inclusive) to @var{end} (exclusive)
7265@item @var{start},+@var{length}
7266the addresses from @var{start} (inclusive) to
7267@code{@var{start}+@var{length}} (exclusive).
7268@end table
7269
7270@noindent
7271When 2 arguments are specified, the name of the function is also
7272printed (since there could be several functions in the given range).
21a0512e
PP
7273
7274The argument(s) can be any expression yielding a numeric value, such as
7275@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}.
2b28d209
PP
7276
7277If the range of memory being disassembled contains current program counter,
7278the instruction at that location is shown with a @code{=>} marker.
c906108c
SS
7279@end table
7280
c906108c
SS
7281The following example shows the disassembly of a range of addresses of
7282HP PA-RISC 2.0 code:
7283
7284@smallexample
21a0512e 7285(@value{GDBP}) disas 0x32c4, 0x32e4
c906108c 7286Dump of assembler code from 0x32c4 to 0x32e4:
2b28d209
PP
7287 0x32c4 <main+204>: addil 0,dp
7288 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
7289 0x32cc <main+212>: ldil 0x3000,r31
7290 0x32d0 <main+216>: ble 0x3f8(sr4,r31)
7291 0x32d4 <main+220>: ldo 0(r31),rp
7292 0x32d8 <main+224>: addil -0x800,dp
7293 0x32dc <main+228>: ldo 0x588(r1),r26
7294 0x32e0 <main+232>: ldil 0x3000,r31
c906108c
SS
7295End of assembler dump.
7296@end smallexample
c906108c 7297
2b28d209
PP
7298Here is an example showing mixed source+assembly for Intel x86, when the
7299program is stopped just after function prologue:
d14508fe
DE
7300
7301@smallexample
7302(@value{GDBP}) disas /m main
7303Dump of assembler code for function main:
73045 @{
9c419145
PP
7305 0x08048330 <+0>: push %ebp
7306 0x08048331 <+1>: mov %esp,%ebp
7307 0x08048333 <+3>: sub $0x8,%esp
7308 0x08048336 <+6>: and $0xfffffff0,%esp
7309 0x08048339 <+9>: sub $0x10,%esp
d14508fe
DE
7310
73116 printf ("Hello.\n");
9c419145
PP
7312=> 0x0804833c <+12>: movl $0x8048440,(%esp)
7313 0x08048343 <+19>: call 0x8048284 <puts@@plt>
d14508fe
DE
7314
73157 return 0;
73168 @}
9c419145
PP
7317 0x08048348 <+24>: mov $0x0,%eax
7318 0x0804834d <+29>: leave
7319 0x0804834e <+30>: ret
d14508fe
DE
7320
7321End of assembler dump.
7322@end smallexample
7323
53a71c06
CR
7324Here is another example showing raw instructions in hex for AMD x86-64,
7325
7326@smallexample
7327(gdb) disas /r 0x400281,+10
7328Dump of assembler code from 0x400281 to 0x40028b:
7329 0x0000000000400281: 38 36 cmp %dh,(%rsi)
7330 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax
7331 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx)
7332 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al
7333End of assembler dump.
7334@end smallexample
7335
c906108c
SS
7336Some architectures have more than one commonly-used set of instruction
7337mnemonics or other syntax.
7338
76d17f34
EZ
7339For programs that were dynamically linked and use shared libraries,
7340instructions that call functions or branch to locations in the shared
7341libraries might show a seemingly bogus location---it's actually a
7342location of the relocation table. On some architectures, @value{GDBN}
7343might be able to resolve these to actual function names.
7344
c906108c 7345@table @code
d4f3574e 7346@kindex set disassembly-flavor
d4f3574e
SS
7347@cindex Intel disassembly flavor
7348@cindex AT&T disassembly flavor
7349@item set disassembly-flavor @var{instruction-set}
c906108c
SS
7350Select the instruction set to use when disassembling the
7351program via the @code{disassemble} or @code{x/i} commands.
7352
7353Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
7354can set @var{instruction-set} to either @code{intel} or @code{att}.
7355The default is @code{att}, the AT&T flavor used by default by Unix
7356assemblers for x86-based targets.
9c16f35a
EZ
7357
7358@kindex show disassembly-flavor
7359@item show disassembly-flavor
7360Show the current setting of the disassembly flavor.
c906108c
SS
7361@end table
7362
91440f57
HZ
7363@table @code
7364@kindex set disassemble-next-line
7365@kindex show disassemble-next-line
7366@item set disassemble-next-line
7367@itemx show disassemble-next-line
32ae1842
EZ
7368Control whether or not @value{GDBN} will disassemble the next source
7369line or instruction when execution stops. If ON, @value{GDBN} will
7370display disassembly of the next source line when execution of the
7371program being debugged stops. This is @emph{in addition} to
7372displaying the source line itself, which @value{GDBN} always does if
7373possible. If the next source line cannot be displayed for some reason
7374(e.g., if @value{GDBN} cannot find the source file, or there's no line
7375info in the debug info), @value{GDBN} will display disassembly of the
7376next @emph{instruction} instead of showing the next source line. If
7377AUTO, @value{GDBN} will display disassembly of next instruction only
7378if the source line cannot be displayed. This setting causes
7379@value{GDBN} to display some feedback when you step through a function
7380with no line info or whose source file is unavailable. The default is
7381OFF, which means never display the disassembly of the next line or
7382instruction.
91440f57
HZ
7383@end table
7384
c906108c 7385
6d2ebf8b 7386@node Data
c906108c
SS
7387@chapter Examining Data
7388
7389@cindex printing data
7390@cindex examining data
7391@kindex print
7392@kindex inspect
7393@c "inspect" is not quite a synonym if you are using Epoch, which we do not
7394@c document because it is nonstandard... Under Epoch it displays in a
7395@c different window or something like that.
7396The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
7397command (abbreviated @code{p}), or its synonym @code{inspect}. It
7398evaluates and prints the value of an expression of the language your
7399program is written in (@pxref{Languages, ,Using @value{GDBN} with
78e2826b
TT
7400Different Languages}). It may also print the expression using a
7401Python-based pretty-printer (@pxref{Pretty Printing}).
c906108c
SS
7402
7403@table @code
d4f3574e
SS
7404@item print @var{expr}
7405@itemx print /@var{f} @var{expr}
7406@var{expr} is an expression (in the source language). By default the
7407value of @var{expr} is printed in a format appropriate to its data type;
c906108c 7408you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 7409@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
79a6e687 7410Formats}.
c906108c
SS
7411
7412@item print
7413@itemx print /@var{f}
15387254 7414@cindex reprint the last value
d4f3574e 7415If you omit @var{expr}, @value{GDBN} displays the last value again (from the
79a6e687 7416@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to
c906108c
SS
7417conveniently inspect the same value in an alternative format.
7418@end table
7419
7420A more low-level way of examining data is with the @code{x} command.
7421It examines data in memory at a specified address and prints it in a
79a6e687 7422specified format. @xref{Memory, ,Examining Memory}.
c906108c 7423
7a292a7a 7424If you are interested in information about types, or about how the
d4f3574e
SS
7425fields of a struct or a class are declared, use the @code{ptype @var{exp}}
7426command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 7427Table}.
c906108c 7428
06fc020f
SCR
7429@cindex exploring hierarchical data structures
7430@kindex explore
7431Another way of examining values of expressions and type information is
7432through the Python extension command @code{explore} (available only if
7433the @value{GDBN} build is configured with @code{--with-python}). It
7434offers an interactive way to start at the highest level (or, the most
7435abstract level) of the data type of an expression (or, the data type
7436itself) and explore all the way down to leaf scalar values/fields
7437embedded in the higher level data types.
7438
7439@table @code
7440@item explore @var{arg}
7441@var{arg} is either an expression (in the source language), or a type
7442visible in the current context of the program being debugged.
7443@end table
7444
7445The working of the @code{explore} command can be illustrated with an
7446example. If a data type @code{struct ComplexStruct} is defined in your
7447C program as
7448
7449@smallexample
7450struct SimpleStruct
7451@{
7452 int i;
7453 double d;
7454@};
7455
7456struct ComplexStruct
7457@{
7458 struct SimpleStruct *ss_p;
7459 int arr[10];
7460@};
7461@end smallexample
7462
7463@noindent
7464followed by variable declarations as
7465
7466@smallexample
7467struct SimpleStruct ss = @{ 10, 1.11 @};
7468struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @};
7469@end smallexample
7470
7471@noindent
7472then, the value of the variable @code{cs} can be explored using the
7473@code{explore} command as follows.
7474
7475@smallexample
7476(gdb) explore cs
7477The value of `cs' is a struct/class of type `struct ComplexStruct' with
7478the following fields:
7479
7480 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'>
7481 arr = <Enter 1 to explore this field of type `int [10]'>
7482
7483Enter the field number of choice:
7484@end smallexample
7485
7486@noindent
7487Since the fields of @code{cs} are not scalar values, you are being
7488prompted to chose the field you want to explore. Let's say you choose
7489the field @code{ss_p} by entering @code{0}. Then, since this field is a
7490pointer, you will be asked if it is pointing to a single value. From
7491the declaration of @code{cs} above, it is indeed pointing to a single
7492value, hence you enter @code{y}. If you enter @code{n}, then you will
7493be asked if it were pointing to an array of values, in which case this
7494field will be explored as if it were an array.
7495
7496@smallexample
7497`cs.ss_p' is a pointer to a value of type `struct SimpleStruct'
7498Continue exploring it as a pointer to a single value [y/n]: y
7499The value of `*(cs.ss_p)' is a struct/class of type `struct
7500SimpleStruct' with the following fields:
7501
7502 i = 10 .. (Value of type `int')
7503 d = 1.1100000000000001 .. (Value of type `double')
7504
7505Press enter to return to parent value:
7506@end smallexample
7507
7508@noindent
7509If the field @code{arr} of @code{cs} was chosen for exploration by
7510entering @code{1} earlier, then since it is as array, you will be
7511prompted to enter the index of the element in the array that you want
7512to explore.
7513
7514@smallexample
7515`cs.arr' is an array of `int'.
7516Enter the index of the element you want to explore in `cs.arr': 5
7517
7518`(cs.arr)[5]' is a scalar value of type `int'.
7519
7520(cs.arr)[5] = 4
7521
7522Press enter to return to parent value:
7523@end smallexample
7524
7525In general, at any stage of exploration, you can go deeper towards the
7526leaf values by responding to the prompts appropriately, or hit the
7527return key to return to the enclosing data structure (the @i{higher}
7528level data structure).
7529
7530Similar to exploring values, you can use the @code{explore} command to
7531explore types. Instead of specifying a value (which is typically a
7532variable name or an expression valid in the current context of the
7533program being debugged), you specify a type name. If you consider the
7534same example as above, your can explore the type
7535@code{struct ComplexStruct} by passing the argument
7536@code{struct ComplexStruct} to the @code{explore} command.
7537
7538@smallexample
7539(gdb) explore struct ComplexStruct
7540@end smallexample
7541
7542@noindent
7543By responding to the prompts appropriately in the subsequent interactive
7544session, you can explore the type @code{struct ComplexStruct} in a
7545manner similar to how the value @code{cs} was explored in the above
7546example.
7547
7548The @code{explore} command also has two sub-commands,
7549@code{explore value} and @code{explore type}. The former sub-command is
7550a way to explicitly specify that value exploration of the argument is
7551being invoked, while the latter is a way to explicitly specify that type
7552exploration of the argument is being invoked.
7553
7554@table @code
7555@item explore value @var{expr}
7556@cindex explore value
7557This sub-command of @code{explore} explores the value of the
7558expression @var{expr} (if @var{expr} is an expression valid in the
7559current context of the program being debugged). The behavior of this
7560command is identical to that of the behavior of the @code{explore}
7561command being passed the argument @var{expr}.
7562
7563@item explore type @var{arg}
7564@cindex explore type
7565This sub-command of @code{explore} explores the type of @var{arg} (if
7566@var{arg} is a type visible in the current context of program being
7567debugged), or the type of the value/expression @var{arg} (if @var{arg}
7568is an expression valid in the current context of the program being
7569debugged). If @var{arg} is a type, then the behavior of this command is
7570identical to that of the @code{explore} command being passed the
7571argument @var{arg}. If @var{arg} is an expression, then the behavior of
7572this command will be identical to that of the @code{explore} command
7573being passed the type of @var{arg} as the argument.
7574@end table
7575
c906108c
SS
7576@menu
7577* Expressions:: Expressions
6ba66d6a 7578* Ambiguous Expressions:: Ambiguous Expressions
c906108c
SS
7579* Variables:: Program variables
7580* Arrays:: Artificial arrays
7581* Output Formats:: Output formats
7582* Memory:: Examining memory
7583* Auto Display:: Automatic display
7584* Print Settings:: Print settings
4c374409 7585* Pretty Printing:: Python pretty printing
c906108c
SS
7586* Value History:: Value history
7587* Convenience Vars:: Convenience variables
a72c3253 7588* Convenience Funs:: Convenience functions
c906108c 7589* Registers:: Registers
c906108c 7590* Floating Point Hardware:: Floating point hardware
53c69bd7 7591* Vector Unit:: Vector Unit
721c2651 7592* OS Information:: Auxiliary data provided by operating system
29e57380 7593* Memory Region Attributes:: Memory region attributes
16d9dec6 7594* Dump/Restore Files:: Copy between memory and a file
384ee23f 7595* Core File Generation:: Cause a program dump its core
a0eb71c5
KB
7596* Character Sets:: Debugging programs that use a different
7597 character set than GDB does
09d4efe1 7598* Caching Remote Data:: Data caching for remote targets
08388c79 7599* Searching Memory:: Searching memory for a sequence of bytes
c906108c
SS
7600@end menu
7601
6d2ebf8b 7602@node Expressions
c906108c
SS
7603@section Expressions
7604
7605@cindex expressions
7606@code{print} and many other @value{GDBN} commands accept an expression and
7607compute its value. Any kind of constant, variable or operator defined
7608by the programming language you are using is valid in an expression in
e2e0bcd1
JB
7609@value{GDBN}. This includes conditional expressions, function calls,
7610casts, and string constants. It also includes preprocessor macros, if
7611you compiled your program to include this information; see
7612@ref{Compilation}.
c906108c 7613
15387254 7614@cindex arrays in expressions
d4f3574e
SS
7615@value{GDBN} supports array constants in expressions input by
7616the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
63092375
DJ
7617you can use the command @code{print @{1, 2, 3@}} to create an array
7618of three integers. If you pass an array to a function or assign it
7619to a program variable, @value{GDBN} copies the array to memory that
7620is @code{malloc}ed in the target program.
c906108c 7621
c906108c
SS
7622Because C is so widespread, most of the expressions shown in examples in
7623this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
7624Languages}, for information on how to use expressions in other
7625languages.
7626
7627In this section, we discuss operators that you can use in @value{GDBN}
7628expressions regardless of your programming language.
7629
15387254 7630@cindex casts, in expressions
c906108c
SS
7631Casts are supported in all languages, not just in C, because it is so
7632useful to cast a number into a pointer in order to examine a structure
7633at that address in memory.
7634@c FIXME: casts supported---Mod2 true?
c906108c
SS
7635
7636@value{GDBN} supports these operators, in addition to those common
7637to programming languages:
7638
7639@table @code
7640@item @@
7641@samp{@@} is a binary operator for treating parts of memory as arrays.
79a6e687 7642@xref{Arrays, ,Artificial Arrays}, for more information.
c906108c
SS
7643
7644@item ::
7645@samp{::} allows you to specify a variable in terms of the file or
79a6e687 7646function where it is defined. @xref{Variables, ,Program Variables}.
c906108c
SS
7647
7648@cindex @{@var{type}@}
7649@cindex type casting memory
7650@cindex memory, viewing as typed object
7651@cindex casts, to view memory
7652@item @{@var{type}@} @var{addr}
7653Refers to an object of type @var{type} stored at address @var{addr} in
7654memory. @var{addr} may be any expression whose value is an integer or
7655pointer (but parentheses are required around binary operators, just as in
7656a cast). This construct is allowed regardless of what kind of data is
7657normally supposed to reside at @var{addr}.
7658@end table
7659
6ba66d6a
JB
7660@node Ambiguous Expressions
7661@section Ambiguous Expressions
7662@cindex ambiguous expressions
7663
7664Expressions can sometimes contain some ambiguous elements. For instance,
7665some programming languages (notably Ada, C@t{++} and Objective-C) permit
7666a single function name to be defined several times, for application in
7667different contexts. This is called @dfn{overloading}. Another example
7668involving Ada is generics. A @dfn{generic package} is similar to C@t{++}
7669templates and is typically instantiated several times, resulting in
7670the same function name being defined in different contexts.
7671
7672In some cases and depending on the language, it is possible to adjust
7673the expression to remove the ambiguity. For instance in C@t{++}, you
7674can specify the signature of the function you want to break on, as in
7675@kbd{break @var{function}(@var{types})}. In Ada, using the fully
7676qualified name of your function often makes the expression unambiguous
7677as well.
7678
7679When an ambiguity that needs to be resolved is detected, the debugger
7680has the capability to display a menu of numbered choices for each
7681possibility, and then waits for the selection with the prompt @samp{>}.
7682The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}}
7683aborts the current command. If the command in which the expression was
7684used allows more than one choice to be selected, the next option in the
7685menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible
7686choices.
7687
7688For example, the following session excerpt shows an attempt to set a
7689breakpoint at the overloaded symbol @code{String::after}.
7690We choose three particular definitions of that function name:
7691
7692@c FIXME! This is likely to change to show arg type lists, at least
7693@smallexample
7694@group
7695(@value{GDBP}) b String::after
7696[0] cancel
7697[1] all
7698[2] file:String.cc; line number:867
7699[3] file:String.cc; line number:860
7700[4] file:String.cc; line number:875
7701[5] file:String.cc; line number:853
7702[6] file:String.cc; line number:846
7703[7] file:String.cc; line number:735
7704> 2 4 6
7705Breakpoint 1 at 0xb26c: file String.cc, line 867.
7706Breakpoint 2 at 0xb344: file String.cc, line 875.
7707Breakpoint 3 at 0xafcc: file String.cc, line 846.
7708Multiple breakpoints were set.
7709Use the "delete" command to delete unwanted
7710 breakpoints.
7711(@value{GDBP})
7712@end group
7713@end smallexample
7714
7715@table @code
7716@kindex set multiple-symbols
7717@item set multiple-symbols @var{mode}
7718@cindex multiple-symbols menu
7719
7720This option allows you to adjust the debugger behavior when an expression
7721is ambiguous.
7722
7723By default, @var{mode} is set to @code{all}. If the command with which
7724the expression is used allows more than one choice, then @value{GDBN}
7725automatically selects all possible choices. For instance, inserting
7726a breakpoint on a function using an ambiguous name results in a breakpoint
7727inserted on each possible match. However, if a unique choice must be made,
7728then @value{GDBN} uses the menu to help you disambiguate the expression.
7729For instance, printing the address of an overloaded function will result
7730in the use of the menu.
7731
7732When @var{mode} is set to @code{ask}, the debugger always uses the menu
7733when an ambiguity is detected.
7734
7735Finally, when @var{mode} is set to @code{cancel}, the debugger reports
7736an error due to the ambiguity and the command is aborted.
7737
7738@kindex show multiple-symbols
7739@item show multiple-symbols
7740Show the current value of the @code{multiple-symbols} setting.
7741@end table
7742
6d2ebf8b 7743@node Variables
79a6e687 7744@section Program Variables
c906108c
SS
7745
7746The most common kind of expression to use is the name of a variable
7747in your program.
7748
7749Variables in expressions are understood in the selected stack frame
79a6e687 7750(@pxref{Selection, ,Selecting a Frame}); they must be either:
c906108c
SS
7751
7752@itemize @bullet
7753@item
7754global (or file-static)
7755@end itemize
7756
5d161b24 7757@noindent or
c906108c
SS
7758
7759@itemize @bullet
7760@item
7761visible according to the scope rules of the
7762programming language from the point of execution in that frame
5d161b24 7763@end itemize
c906108c
SS
7764
7765@noindent This means that in the function
7766
474c8240 7767@smallexample
c906108c
SS
7768foo (a)
7769 int a;
7770@{
7771 bar (a);
7772 @{
7773 int b = test ();
7774 bar (b);
7775 @}
7776@}
474c8240 7777@end smallexample
c906108c
SS
7778
7779@noindent
7780you can examine and use the variable @code{a} whenever your program is
7781executing within the function @code{foo}, but you can only use or
7782examine the variable @code{b} while your program is executing inside
7783the block where @code{b} is declared.
7784
7785@cindex variable name conflict
7786There is an exception: you can refer to a variable or function whose
7787scope is a single source file even if the current execution point is not
7788in this file. But it is possible to have more than one such variable or
7789function with the same name (in different source files). If that
7790happens, referring to that name has unpredictable effects. If you wish,
72384ba3 7791you can specify a static variable in a particular function or file by
15387254 7792using the colon-colon (@code{::}) notation:
c906108c 7793
d4f3574e 7794@cindex colon-colon, context for variables/functions
12c27660 7795@ifnotinfo
c906108c 7796@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 7797@cindex @code{::}, context for variables/functions
12c27660 7798@end ifnotinfo
474c8240 7799@smallexample
c906108c
SS
7800@var{file}::@var{variable}
7801@var{function}::@var{variable}
474c8240 7802@end smallexample
c906108c
SS
7803
7804@noindent
7805Here @var{file} or @var{function} is the name of the context for the
7806static @var{variable}. In the case of file names, you can use quotes to
7807make sure @value{GDBN} parses the file name as a single word---for example,
7808to print a global value of @code{x} defined in @file{f2.c}:
7809
474c8240 7810@smallexample
c906108c 7811(@value{GDBP}) p 'f2.c'::x
474c8240 7812@end smallexample
c906108c 7813
72384ba3
PH
7814The @code{::} notation is normally used for referring to
7815static variables, since you typically disambiguate uses of local variables
7816in functions by selecting the appropriate frame and using the
7817simple name of the variable. However, you may also use this notation
7818to refer to local variables in frames enclosing the selected frame:
7819
7820@smallexample
7821void
7822foo (int a)
7823@{
7824 if (a < 10)
7825 bar (a);
7826 else
7827 process (a); /* Stop here */
7828@}
7829
7830int
7831bar (int a)
7832@{
7833 foo (a + 5);
7834@}
7835@end smallexample
7836
7837@noindent
7838For example, if there is a breakpoint at the commented line,
7839here is what you might see
7840when the program stops after executing the call @code{bar(0)}:
7841
7842@smallexample
7843(@value{GDBP}) p a
7844$1 = 10
7845(@value{GDBP}) p bar::a
7846$2 = 5
7847(@value{GDBP}) up 2
7848#2 0x080483d0 in foo (a=5) at foobar.c:12
7849(@value{GDBP}) p a
7850$3 = 5
7851(@value{GDBP}) p bar::a
7852$4 = 0
7853@end smallexample
7854
b37052ae 7855@cindex C@t{++} scope resolution
72384ba3 7856These uses of @samp{::} are very rarely in conflict with the very similar
b37052ae 7857use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
7858scope resolution operator in @value{GDBN} expressions.
7859@c FIXME: Um, so what happens in one of those rare cases where it's in
7860@c conflict?? --mew
c906108c
SS
7861
7862@cindex wrong values
7863@cindex variable values, wrong
15387254
EZ
7864@cindex function entry/exit, wrong values of variables
7865@cindex optimized code, wrong values of variables
c906108c
SS
7866@quotation
7867@emph{Warning:} Occasionally, a local variable may appear to have the
7868wrong value at certain points in a function---just after entry to a new
7869scope, and just before exit.
7870@end quotation
7871You may see this problem when you are stepping by machine instructions.
7872This is because, on most machines, it takes more than one instruction to
7873set up a stack frame (including local variable definitions); if you are
7874stepping by machine instructions, variables may appear to have the wrong
7875values until the stack frame is completely built. On exit, it usually
7876also takes more than one machine instruction to destroy a stack frame;
7877after you begin stepping through that group of instructions, local
7878variable definitions may be gone.
7879
7880This may also happen when the compiler does significant optimizations.
7881To be sure of always seeing accurate values, turn off all optimization
7882when compiling.
7883
d4f3574e
SS
7884@cindex ``No symbol "foo" in current context''
7885Another possible effect of compiler optimizations is to optimize
7886unused variables out of existence, or assign variables to registers (as
7887opposed to memory addresses). Depending on the support for such cases
7888offered by the debug info format used by the compiler, @value{GDBN}
7889might not be able to display values for such local variables. If that
7890happens, @value{GDBN} will print a message like this:
7891
474c8240 7892@smallexample
d4f3574e 7893No symbol "foo" in current context.
474c8240 7894@end smallexample
d4f3574e
SS
7895
7896To solve such problems, either recompile without optimizations, or use a
7897different debug info format, if the compiler supports several such
e0f8f636
TT
7898formats. @xref{Compilation}, for more information on choosing compiler
7899options. @xref{C, ,C and C@t{++}}, for more information about debug
7900info formats that are best suited to C@t{++} programs.
d4f3574e 7901
ab1adacd
EZ
7902If you ask to print an object whose contents are unknown to
7903@value{GDBN}, e.g., because its data type is not completely specified
7904by the debug information, @value{GDBN} will say @samp{<incomplete
7905type>}. @xref{Symbols, incomplete type}, for more about this.
7906
36b11add
JK
7907If you append @kbd{@@entry} string to a function parameter name you get its
7908value at the time the function got called. If the value is not available an
7909error message is printed. Entry values are available only with some compilers.
7910Entry values are normally also printed at the function parameter list according
7911to @ref{set print entry-values}.
7912
7913@smallexample
7914Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29
791529 i++;
7916(gdb) next
791730 e (i);
7918(gdb) print i
7919$1 = 31
7920(gdb) print i@@entry
7921$2 = 30
7922@end smallexample
7923
3a60f64e
JK
7924Strings are identified as arrays of @code{char} values without specified
7925signedness. Arrays of either @code{signed char} or @code{unsigned char} get
7926printed as arrays of 1 byte sized integers. @code{-fsigned-char} or
7927@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN}
7928defines literal string type @code{"char"} as @code{char} without a sign.
7929For program code
7930
7931@smallexample
7932char var0[] = "A";
7933signed char var1[] = "A";
7934@end smallexample
7935
7936You get during debugging
7937@smallexample
7938(gdb) print var0
7939$1 = "A"
7940(gdb) print var1
7941$2 = @{65 'A', 0 '\0'@}
7942@end smallexample
7943
6d2ebf8b 7944@node Arrays
79a6e687 7945@section Artificial Arrays
c906108c
SS
7946
7947@cindex artificial array
15387254 7948@cindex arrays
41afff9a 7949@kindex @@@r{, referencing memory as an array}
c906108c
SS
7950It is often useful to print out several successive objects of the
7951same type in memory; a section of an array, or an array of
7952dynamically determined size for which only a pointer exists in the
7953program.
7954
7955You can do this by referring to a contiguous span of memory as an
7956@dfn{artificial array}, using the binary operator @samp{@@}. The left
7957operand of @samp{@@} should be the first element of the desired array
7958and be an individual object. The right operand should be the desired length
7959of the array. The result is an array value whose elements are all of
7960the type of the left argument. The first element is actually the left
7961argument; the second element comes from bytes of memory immediately
7962following those that hold the first element, and so on. Here is an
7963example. If a program says
7964
474c8240 7965@smallexample
c906108c 7966int *array = (int *) malloc (len * sizeof (int));
474c8240 7967@end smallexample
c906108c
SS
7968
7969@noindent
7970you can print the contents of @code{array} with
7971
474c8240 7972@smallexample
c906108c 7973p *array@@len
474c8240 7974@end smallexample
c906108c
SS
7975
7976The left operand of @samp{@@} must reside in memory. Array values made
7977with @samp{@@} in this way behave just like other arrays in terms of
7978subscripting, and are coerced to pointers when used in expressions.
7979Artificial arrays most often appear in expressions via the value history
79a6e687 7980(@pxref{Value History, ,Value History}), after printing one out.
c906108c
SS
7981
7982Another way to create an artificial array is to use a cast.
7983This re-interprets a value as if it were an array.
7984The value need not be in memory:
474c8240 7985@smallexample
c906108c
SS
7986(@value{GDBP}) p/x (short[2])0x12345678
7987$1 = @{0x1234, 0x5678@}
474c8240 7988@end smallexample
c906108c
SS
7989
7990As a convenience, if you leave the array length out (as in
c3f6f71d 7991@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c 7992the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
474c8240 7993@smallexample
c906108c
SS
7994(@value{GDBP}) p/x (short[])0x12345678
7995$2 = @{0x1234, 0x5678@}
474c8240 7996@end smallexample
c906108c
SS
7997
7998Sometimes the artificial array mechanism is not quite enough; in
7999moderately complex data structures, the elements of interest may not
8000actually be adjacent---for example, if you are interested in the values
8001of pointers in an array. One useful work-around in this situation is
8002to use a convenience variable (@pxref{Convenience Vars, ,Convenience
79a6e687 8003Variables}) as a counter in an expression that prints the first
c906108c
SS
8004interesting value, and then repeat that expression via @key{RET}. For
8005instance, suppose you have an array @code{dtab} of pointers to
8006structures, and you are interested in the values of a field @code{fv}
8007in each structure. Here is an example of what you might type:
8008
474c8240 8009@smallexample
c906108c
SS
8010set $i = 0
8011p dtab[$i++]->fv
8012@key{RET}
8013@key{RET}
8014@dots{}
474c8240 8015@end smallexample
c906108c 8016
6d2ebf8b 8017@node Output Formats
79a6e687 8018@section Output Formats
c906108c
SS
8019
8020@cindex formatted output
8021@cindex output formats
8022By default, @value{GDBN} prints a value according to its data type. Sometimes
8023this is not what you want. For example, you might want to print a number
8024in hex, or a pointer in decimal. Or you might want to view data in memory
8025at a certain address as a character string or as an instruction. To do
8026these things, specify an @dfn{output format} when you print a value.
8027
8028The simplest use of output formats is to say how to print a value
8029already computed. This is done by starting the arguments of the
8030@code{print} command with a slash and a format letter. The format
8031letters supported are:
8032
8033@table @code
8034@item x
8035Regard the bits of the value as an integer, and print the integer in
8036hexadecimal.
8037
8038@item d
8039Print as integer in signed decimal.
8040
8041@item u
8042Print as integer in unsigned decimal.
8043
8044@item o
8045Print as integer in octal.
8046
8047@item t
8048Print as integer in binary. The letter @samp{t} stands for ``two''.
8049@footnote{@samp{b} cannot be used because these format letters are also
8050used with the @code{x} command, where @samp{b} stands for ``byte'';
79a6e687 8051see @ref{Memory,,Examining Memory}.}
c906108c
SS
8052
8053@item a
8054@cindex unknown address, locating
3d67e040 8055@cindex locate address
c906108c
SS
8056Print as an address, both absolute in hexadecimal and as an offset from
8057the nearest preceding symbol. You can use this format used to discover
8058where (in what function) an unknown address is located:
8059
474c8240 8060@smallexample
c906108c
SS
8061(@value{GDBP}) p/a 0x54320
8062$3 = 0x54320 <_initialize_vx+396>
474c8240 8063@end smallexample
c906108c 8064
3d67e040
EZ
8065@noindent
8066The command @code{info symbol 0x54320} yields similar results.
8067@xref{Symbols, info symbol}.
8068
c906108c 8069@item c
51274035
EZ
8070Regard as an integer and print it as a character constant. This
8071prints both the numerical value and its character representation. The
8072character representation is replaced with the octal escape @samp{\nnn}
8073for characters outside the 7-bit @sc{ascii} range.
c906108c 8074
ea37ba09
DJ
8075Without this format, @value{GDBN} displays @code{char},
8076@w{@code{unsigned char}}, and @w{@code{signed char}} data as character
8077constants. Single-byte members of vectors are displayed as integer
8078data.
8079
c906108c
SS
8080@item f
8081Regard the bits of the value as a floating point number and print
8082using typical floating point syntax.
ea37ba09
DJ
8083
8084@item s
8085@cindex printing strings
8086@cindex printing byte arrays
8087Regard as a string, if possible. With this format, pointers to single-byte
8088data are displayed as null-terminated strings and arrays of single-byte data
8089are displayed as fixed-length strings. Other values are displayed in their
8090natural types.
8091
8092Without this format, @value{GDBN} displays pointers to and arrays of
8093@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
8094strings. Single-byte members of a vector are displayed as an integer
8095array.
a6bac58e
TT
8096
8097@item r
8098@cindex raw printing
8099Print using the @samp{raw} formatting. By default, @value{GDBN} will
78e2826b
TT
8100use a Python-based pretty-printer, if one is available (@pxref{Pretty
8101Printing}). This typically results in a higher-level display of the
8102value's contents. The @samp{r} format bypasses any Python
8103pretty-printer which might exist.
c906108c
SS
8104@end table
8105
8106For example, to print the program counter in hex (@pxref{Registers}), type
8107
474c8240 8108@smallexample
c906108c 8109p/x $pc
474c8240 8110@end smallexample
c906108c
SS
8111
8112@noindent
8113Note that no space is required before the slash; this is because command
8114names in @value{GDBN} cannot contain a slash.
8115
8116To reprint the last value in the value history with a different format,
8117you can use the @code{print} command with just a format and no
8118expression. For example, @samp{p/x} reprints the last value in hex.
8119
6d2ebf8b 8120@node Memory
79a6e687 8121@section Examining Memory
c906108c
SS
8122
8123You can use the command @code{x} (for ``examine'') to examine memory in
8124any of several formats, independently of your program's data types.
8125
8126@cindex examining memory
8127@table @code
41afff9a 8128@kindex x @r{(examine memory)}
c906108c
SS
8129@item x/@var{nfu} @var{addr}
8130@itemx x @var{addr}
8131@itemx x
8132Use the @code{x} command to examine memory.
8133@end table
8134
8135@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
8136much memory to display and how to format it; @var{addr} is an
8137expression giving the address where you want to start displaying memory.
8138If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
8139Several commands set convenient defaults for @var{addr}.
8140
8141@table @r
8142@item @var{n}, the repeat count
8143The repeat count is a decimal integer; the default is 1. It specifies
8144how much memory (counting by units @var{u}) to display.
8145@c This really is **decimal**; unaffected by 'set radix' as of GDB
8146@c 4.1.2.
8147
8148@item @var{f}, the display format
51274035
EZ
8149The display format is one of the formats used by @code{print}
8150(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c},
ea37ba09
DJ
8151@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions).
8152The default is @samp{x} (hexadecimal) initially. The default changes
8153each time you use either @code{x} or @code{print}.
c906108c
SS
8154
8155@item @var{u}, the unit size
8156The unit size is any of
8157
8158@table @code
8159@item b
8160Bytes.
8161@item h
8162Halfwords (two bytes).
8163@item w
8164Words (four bytes). This is the initial default.
8165@item g
8166Giant words (eight bytes).
8167@end table
8168
8169Each time you specify a unit size with @code{x}, that size becomes the
9a22f0d0
PM
8170default unit the next time you use @code{x}. For the @samp{i} format,
8171the unit size is ignored and is normally not written. For the @samp{s} format,
8172the unit size defaults to @samp{b}, unless it is explicitly given.
8173Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display
817432-bit strings. The next use of @kbd{x /s} will again display 8-bit strings.
8175Note that the results depend on the programming language of the
8176current compilation unit. If the language is C, the @samp{s}
8177modifier will use the UTF-16 encoding while @samp{w} will use
8178UTF-32. The encoding is set by the programming language and cannot
8179be altered.
c906108c
SS
8180
8181@item @var{addr}, starting display address
8182@var{addr} is the address where you want @value{GDBN} to begin displaying
8183memory. The expression need not have a pointer value (though it may);
8184it is always interpreted as an integer address of a byte of memory.
8185@xref{Expressions, ,Expressions}, for more information on expressions. The default for
8186@var{addr} is usually just after the last address examined---but several
8187other commands also set the default address: @code{info breakpoints} (to
8188the address of the last breakpoint listed), @code{info line} (to the
8189starting address of a line), and @code{print} (if you use it to display
8190a value from memory).
8191@end table
8192
8193For example, @samp{x/3uh 0x54320} is a request to display three halfwords
8194(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
8195starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
8196words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 8197@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
8198
8199Since the letters indicating unit sizes are all distinct from the
8200letters specifying output formats, you do not have to remember whether
8201unit size or format comes first; either order works. The output
8202specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
8203(However, the count @var{n} must come first; @samp{wx4} does not work.)
8204
8205Even though the unit size @var{u} is ignored for the formats @samp{s}
8206and @samp{i}, you might still want to use a count @var{n}; for example,
8207@samp{3i} specifies that you want to see three machine instructions,
a4642986
MR
8208including any operands. For convenience, especially when used with
8209the @code{display} command, the @samp{i} format also prints branch delay
8210slot instructions, if any, beyond the count specified, which immediately
8211follow the last instruction that is within the count. The command
8212@code{disassemble} gives an alternative way of inspecting machine
8213instructions; see @ref{Machine Code,,Source and Machine Code}.
c906108c
SS
8214
8215All the defaults for the arguments to @code{x} are designed to make it
8216easy to continue scanning memory with minimal specifications each time
8217you use @code{x}. For example, after you have inspected three machine
8218instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
8219with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
8220the repeat count @var{n} is used again; the other arguments default as
8221for successive uses of @code{x}.
8222
2b28d209
PP
8223When examining machine instructions, the instruction at current program
8224counter is shown with a @code{=>} marker. For example:
8225
8226@smallexample
8227(@value{GDBP}) x/5i $pc-6
8228 0x804837f <main+11>: mov %esp,%ebp
8229 0x8048381 <main+13>: push %ecx
8230 0x8048382 <main+14>: sub $0x4,%esp
8231=> 0x8048385 <main+17>: movl $0x8048460,(%esp)
8232 0x804838c <main+24>: call 0x80482d4 <puts@@plt>
8233@end smallexample
8234
c906108c
SS
8235@cindex @code{$_}, @code{$__}, and value history
8236The addresses and contents printed by the @code{x} command are not saved
8237in the value history because there is often too much of them and they
8238would get in the way. Instead, @value{GDBN} makes these values available for
8239subsequent use in expressions as values of the convenience variables
8240@code{$_} and @code{$__}. After an @code{x} command, the last address
8241examined is available for use in expressions in the convenience variable
8242@code{$_}. The contents of that address, as examined, are available in
8243the convenience variable @code{$__}.
8244
8245If the @code{x} command has a repeat count, the address and contents saved
8246are from the last memory unit printed; this is not the same as the last
8247address printed if several units were printed on the last line of output.
8248
09d4efe1
EZ
8249@cindex remote memory comparison
8250@cindex verify remote memory image
8251When you are debugging a program running on a remote target machine
ea35711c 8252(@pxref{Remote Debugging}), you may wish to verify the program's image in the
09d4efe1
EZ
8253remote machine's memory against the executable file you downloaded to
8254the target. The @code{compare-sections} command is provided for such
8255situations.
8256
8257@table @code
8258@kindex compare-sections
8259@item compare-sections @r{[}@var{section-name}@r{]}
8260Compare the data of a loadable section @var{section-name} in the
8261executable file of the program being debugged with the same section in
8262the remote machine's memory, and report any mismatches. With no
8263arguments, compares all loadable sections. This command's
8264availability depends on the target's support for the @code{"qCRC"}
8265remote request.
8266@end table
8267
6d2ebf8b 8268@node Auto Display
79a6e687 8269@section Automatic Display
c906108c
SS
8270@cindex automatic display
8271@cindex display of expressions
8272
8273If you find that you want to print the value of an expression frequently
8274(to see how it changes), you might want to add it to the @dfn{automatic
8275display list} so that @value{GDBN} prints its value each time your program stops.
8276Each expression added to the list is given a number to identify it;
8277to remove an expression from the list, you specify that number.
8278The automatic display looks like this:
8279
474c8240 8280@smallexample
c906108c
SS
82812: foo = 38
82823: bar[5] = (struct hack *) 0x3804
474c8240 8283@end smallexample
c906108c
SS
8284
8285@noindent
8286This display shows item numbers, expressions and their current values. As with
8287displays you request manually using @code{x} or @code{print}, you can
8288specify the output format you prefer; in fact, @code{display} decides
ea37ba09
DJ
8289whether to use @code{print} or @code{x} depending your format
8290specification---it uses @code{x} if you specify either the @samp{i}
8291or @samp{s} format, or a unit size; otherwise it uses @code{print}.
c906108c
SS
8292
8293@table @code
8294@kindex display
d4f3574e
SS
8295@item display @var{expr}
8296Add the expression @var{expr} to the list of expressions to display
c906108c
SS
8297each time your program stops. @xref{Expressions, ,Expressions}.
8298
8299@code{display} does not repeat if you press @key{RET} again after using it.
8300
d4f3574e 8301@item display/@var{fmt} @var{expr}
c906108c 8302For @var{fmt} specifying only a display format and not a size or
d4f3574e 8303count, add the expression @var{expr} to the auto-display list but
c906108c 8304arrange to display it each time in the specified format @var{fmt}.
79a6e687 8305@xref{Output Formats,,Output Formats}.
c906108c
SS
8306
8307@item display/@var{fmt} @var{addr}
8308For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
8309number of units, add the expression @var{addr} as a memory address to
8310be examined each time your program stops. Examining means in effect
79a6e687 8311doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}.
c906108c
SS
8312@end table
8313
8314For example, @samp{display/i $pc} can be helpful, to see the machine
8315instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 8316is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
8317
8318@table @code
8319@kindex delete display
8320@kindex undisplay
8321@item undisplay @var{dnums}@dots{}
8322@itemx delete display @var{dnums}@dots{}
c9174737
PA
8323Remove items from the list of expressions to display. Specify the
8324numbers of the displays that you want affected with the command
8325argument @var{dnums}. It can be a single display number, one of the
8326numbers shown in the first field of the @samp{info display} display;
8327or it could be a range of display numbers, as in @code{2-4}.
c906108c
SS
8328
8329@code{undisplay} does not repeat if you press @key{RET} after using it.
8330(Otherwise you would just get the error @samp{No display number @dots{}}.)
8331
8332@kindex disable display
8333@item disable display @var{dnums}@dots{}
8334Disable the display of item numbers @var{dnums}. A disabled display
8335item is not printed automatically, but is not forgotten. It may be
c9174737
PA
8336enabled again later. Specify the numbers of the displays that you
8337want affected with the command argument @var{dnums}. It can be a
8338single display number, one of the numbers shown in the first field of
8339the @samp{info display} display; or it could be a range of display
8340numbers, as in @code{2-4}.
c906108c
SS
8341
8342@kindex enable display
8343@item enable display @var{dnums}@dots{}
8344Enable display of item numbers @var{dnums}. It becomes effective once
8345again in auto display of its expression, until you specify otherwise.
c9174737
PA
8346Specify the numbers of the displays that you want affected with the
8347command argument @var{dnums}. It can be a single display number, one
8348of the numbers shown in the first field of the @samp{info display}
8349display; or it could be a range of display numbers, as in @code{2-4}.
c906108c
SS
8350
8351@item display
8352Display the current values of the expressions on the list, just as is
8353done when your program stops.
8354
8355@kindex info display
8356@item info display
8357Print the list of expressions previously set up to display
8358automatically, each one with its item number, but without showing the
8359values. This includes disabled expressions, which are marked as such.
8360It also includes expressions which would not be displayed right now
8361because they refer to automatic variables not currently available.
8362@end table
8363
15387254 8364@cindex display disabled out of scope
c906108c
SS
8365If a display expression refers to local variables, then it does not make
8366sense outside the lexical context for which it was set up. Such an
8367expression is disabled when execution enters a context where one of its
8368variables is not defined. For example, if you give the command
8369@code{display last_char} while inside a function with an argument
8370@code{last_char}, @value{GDBN} displays this argument while your program
8371continues to stop inside that function. When it stops elsewhere---where
8372there is no variable @code{last_char}---the display is disabled
8373automatically. The next time your program stops where @code{last_char}
8374is meaningful, you can enable the display expression once again.
8375
6d2ebf8b 8376@node Print Settings
79a6e687 8377@section Print Settings
c906108c
SS
8378
8379@cindex format options
8380@cindex print settings
8381@value{GDBN} provides the following ways to control how arrays, structures,
8382and symbols are printed.
8383
8384@noindent
8385These settings are useful for debugging programs in any language:
8386
8387@table @code
4644b6e3 8388@kindex set print
c906108c
SS
8389@item set print address
8390@itemx set print address on
4644b6e3 8391@cindex print/don't print memory addresses
c906108c
SS
8392@value{GDBN} prints memory addresses showing the location of stack
8393traces, structure values, pointer values, breakpoints, and so forth,
8394even when it also displays the contents of those addresses. The default
8395is @code{on}. For example, this is what a stack frame display looks like with
8396@code{set print address on}:
8397
8398@smallexample
8399@group
8400(@value{GDBP}) f
8401#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
8402 at input.c:530
8403530 if (lquote != def_lquote)
8404@end group
8405@end smallexample
8406
8407@item set print address off
8408Do not print addresses when displaying their contents. For example,
8409this is the same stack frame displayed with @code{set print address off}:
8410
8411@smallexample
8412@group
8413(@value{GDBP}) set print addr off
8414(@value{GDBP}) f
8415#0 set_quotes (lq="<<", rq=">>") at input.c:530
8416530 if (lquote != def_lquote)
8417@end group
8418@end smallexample
8419
8420You can use @samp{set print address off} to eliminate all machine
8421dependent displays from the @value{GDBN} interface. For example, with
8422@code{print address off}, you should get the same text for backtraces on
8423all machines---whether or not they involve pointer arguments.
8424
4644b6e3 8425@kindex show print
c906108c
SS
8426@item show print address
8427Show whether or not addresses are to be printed.
8428@end table
8429
8430When @value{GDBN} prints a symbolic address, it normally prints the
8431closest earlier symbol plus an offset. If that symbol does not uniquely
8432identify the address (for example, it is a name whose scope is a single
8433source file), you may need to clarify. One way to do this is with
8434@code{info line}, for example @samp{info line *0x4537}. Alternately,
8435you can set @value{GDBN} to print the source file and line number when
8436it prints a symbolic address:
8437
8438@table @code
c906108c 8439@item set print symbol-filename on
9c16f35a
EZ
8440@cindex source file and line of a symbol
8441@cindex symbol, source file and line
c906108c
SS
8442Tell @value{GDBN} to print the source file name and line number of a
8443symbol in the symbolic form of an address.
8444
8445@item set print symbol-filename off
8446Do not print source file name and line number of a symbol. This is the
8447default.
8448
c906108c
SS
8449@item show print symbol-filename
8450Show whether or not @value{GDBN} will print the source file name and
8451line number of a symbol in the symbolic form of an address.
8452@end table
8453
8454Another situation where it is helpful to show symbol filenames and line
8455numbers is when disassembling code; @value{GDBN} shows you the line
8456number and source file that corresponds to each instruction.
8457
8458Also, you may wish to see the symbolic form only if the address being
8459printed is reasonably close to the closest earlier symbol:
8460
8461@table @code
c906108c 8462@item set print max-symbolic-offset @var{max-offset}
4644b6e3 8463@cindex maximum value for offset of closest symbol
c906108c
SS
8464Tell @value{GDBN} to only display the symbolic form of an address if the
8465offset between the closest earlier symbol and the address is less than
5d161b24 8466@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
8467to always print the symbolic form of an address if any symbol precedes it.
8468
c906108c
SS
8469@item show print max-symbolic-offset
8470Ask how large the maximum offset is that @value{GDBN} prints in a
8471symbolic address.
8472@end table
8473
8474@cindex wild pointer, interpreting
8475@cindex pointer, finding referent
8476If you have a pointer and you are not sure where it points, try
8477@samp{set print symbol-filename on}. Then you can determine the name
8478and source file location of the variable where it points, using
8479@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
8480For example, here @value{GDBN} shows that a variable @code{ptt} points
8481at another variable @code{t}, defined in @file{hi2.c}:
8482
474c8240 8483@smallexample
c906108c
SS
8484(@value{GDBP}) set print symbol-filename on
8485(@value{GDBP}) p/a ptt
8486$4 = 0xe008 <t in hi2.c>
474c8240 8487@end smallexample
c906108c
SS
8488
8489@quotation
8490@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
8491does not show the symbol name and filename of the referent, even with
8492the appropriate @code{set print} options turned on.
8493@end quotation
8494
9cb709b6
TT
8495You can also enable @samp{/a}-like formatting all the time using
8496@samp{set print symbol on}:
8497
8498@table @code
8499@item set print symbol on
8500Tell @value{GDBN} to print the symbol corresponding to an address, if
8501one exists.
8502
8503@item set print symbol off
8504Tell @value{GDBN} not to print the symbol corresponding to an
8505address. In this mode, @value{GDBN} will still print the symbol
8506corresponding to pointers to functions. This is the default.
8507
8508@item show print symbol
8509Show whether @value{GDBN} will display the symbol corresponding to an
8510address.
8511@end table
8512
c906108c
SS
8513Other settings control how different kinds of objects are printed:
8514
8515@table @code
c906108c
SS
8516@item set print array
8517@itemx set print array on
4644b6e3 8518@cindex pretty print arrays
c906108c
SS
8519Pretty print arrays. This format is more convenient to read,
8520but uses more space. The default is off.
8521
8522@item set print array off
8523Return to compressed format for arrays.
8524
c906108c
SS
8525@item show print array
8526Show whether compressed or pretty format is selected for displaying
8527arrays.
8528
3c9c013a
JB
8529@cindex print array indexes
8530@item set print array-indexes
8531@itemx set print array-indexes on
8532Print the index of each element when displaying arrays. May be more
8533convenient to locate a given element in the array or quickly find the
8534index of a given element in that printed array. The default is off.
8535
8536@item set print array-indexes off
8537Stop printing element indexes when displaying arrays.
8538
8539@item show print array-indexes
8540Show whether the index of each element is printed when displaying
8541arrays.
8542
c906108c 8543@item set print elements @var{number-of-elements}
4644b6e3 8544@cindex number of array elements to print
9c16f35a 8545@cindex limit on number of printed array elements
c906108c
SS
8546Set a limit on how many elements of an array @value{GDBN} will print.
8547If @value{GDBN} is printing a large array, it stops printing after it has
8548printed the number of elements set by the @code{set print elements} command.
8549This limit also applies to the display of strings.
d4f3574e 8550When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
8551Setting @var{number-of-elements} to zero means that the printing is unlimited.
8552
c906108c
SS
8553@item show print elements
8554Display the number of elements of a large array that @value{GDBN} will print.
8555If the number is 0, then the printing is unlimited.
8556
b4740add 8557@item set print frame-arguments @var{value}
a0381d3a 8558@kindex set print frame-arguments
b4740add
JB
8559@cindex printing frame argument values
8560@cindex print all frame argument values
8561@cindex print frame argument values for scalars only
8562@cindex do not print frame argument values
8563This command allows to control how the values of arguments are printed
8564when the debugger prints a frame (@pxref{Frames}). The possible
8565values are:
8566
8567@table @code
8568@item all
4f5376b2 8569The values of all arguments are printed.
b4740add
JB
8570
8571@item scalars
8572Print the value of an argument only if it is a scalar. The value of more
8573complex arguments such as arrays, structures, unions, etc, is replaced
4f5376b2
JB
8574by @code{@dots{}}. This is the default. Here is an example where
8575only scalar arguments are shown:
b4740add
JB
8576
8577@smallexample
8578#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green)
8579 at frame-args.c:23
8580@end smallexample
8581
8582@item none
8583None of the argument values are printed. Instead, the value of each argument
8584is replaced by @code{@dots{}}. In this case, the example above now becomes:
8585
8586@smallexample
8587#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
8588 at frame-args.c:23
8589@end smallexample
8590@end table
8591
4f5376b2
JB
8592By default, only scalar arguments are printed. This command can be used
8593to configure the debugger to print the value of all arguments, regardless
8594of their type. However, it is often advantageous to not print the value
8595of more complex parameters. For instance, it reduces the amount of
8596information printed in each frame, making the backtrace more readable.
8597Also, it improves performance when displaying Ada frames, because
8598the computation of large arguments can sometimes be CPU-intensive,
8599especially in large applications. Setting @code{print frame-arguments}
8600to @code{scalars} (the default) or @code{none} avoids this computation,
8601thus speeding up the display of each Ada frame.
b4740add
JB
8602
8603@item show print frame-arguments
8604Show how the value of arguments should be displayed when printing a frame.
8605
36b11add 8606@anchor{set print entry-values}
e18b2753
JK
8607@item set print entry-values @var{value}
8608@kindex set print entry-values
8609Set printing of frame argument values at function entry. In some cases
8610@value{GDBN} can determine the value of function argument which was passed by
8611the function caller, even if the value was modified inside the called function
8612and therefore is different. With optimized code, the current value could be
8613unavailable, but the entry value may still be known.
8614
8615The default value is @code{default} (see below for its description). Older
8616@value{GDBN} behaved as with the setting @code{no}. Compilers not supporting
8617this feature will behave in the @code{default} setting the same way as with the
8618@code{no} setting.
8619
8620This functionality is currently supported only by DWARF 2 debugging format and
8621the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With
8622@value{NGCC}, you need to specify @option{-O -g} during compilation, to get
8623this information.
8624
8625The @var{value} parameter can be one of the following:
8626
8627@table @code
8628@item no
8629Print only actual parameter values, never print values from function entry
8630point.
8631@smallexample
8632#0 equal (val=5)
8633#0 different (val=6)
8634#0 lost (val=<optimized out>)
8635#0 born (val=10)
8636#0 invalid (val=<optimized out>)
8637@end smallexample
8638
8639@item only
8640Print only parameter values from function entry point. The actual parameter
8641values are never printed.
8642@smallexample
8643#0 equal (val@@entry=5)
8644#0 different (val@@entry=5)
8645#0 lost (val@@entry=5)
8646#0 born (val@@entry=<optimized out>)
8647#0 invalid (val@@entry=<optimized out>)
8648@end smallexample
8649
8650@item preferred
8651Print only parameter values from function entry point. If value from function
8652entry point is not known while the actual value is known, print the actual
8653value for such parameter.
8654@smallexample
8655#0 equal (val@@entry=5)
8656#0 different (val@@entry=5)
8657#0 lost (val@@entry=5)
8658#0 born (val=10)
8659#0 invalid (val@@entry=<optimized out>)
8660@end smallexample
8661
8662@item if-needed
8663Print actual parameter values. If actual parameter value is not known while
8664value from function entry point is known, print the entry point value for such
8665parameter.
8666@smallexample
8667#0 equal (val=5)
8668#0 different (val=6)
8669#0 lost (val@@entry=5)
8670#0 born (val=10)
8671#0 invalid (val=<optimized out>)
8672@end smallexample
8673
8674@item both
8675Always print both the actual parameter value and its value from function entry
8676point, even if values of one or both are not available due to compiler
8677optimizations.
8678@smallexample
8679#0 equal (val=5, val@@entry=5)
8680#0 different (val=6, val@@entry=5)
8681#0 lost (val=<optimized out>, val@@entry=5)
8682#0 born (val=10, val@@entry=<optimized out>)
8683#0 invalid (val=<optimized out>, val@@entry=<optimized out>)
8684@end smallexample
8685
8686@item compact
8687Print the actual parameter value if it is known and also its value from
8688function entry point if it is known. If neither is known, print for the actual
8689value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both
8690values are known and identical, print the shortened
8691@code{param=param@@entry=VALUE} notation.
8692@smallexample
8693#0 equal (val=val@@entry=5)
8694#0 different (val=6, val@@entry=5)
8695#0 lost (val@@entry=5)
8696#0 born (val=10)
8697#0 invalid (val=<optimized out>)
8698@end smallexample
8699
8700@item default
8701Always print the actual parameter value. Print also its value from function
8702entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and
8703if both values are known and identical, print the shortened
8704@code{param=param@@entry=VALUE} notation.
8705@smallexample
8706#0 equal (val=val@@entry=5)
8707#0 different (val=6, val@@entry=5)
8708#0 lost (val=<optimized out>, val@@entry=5)
8709#0 born (val=10)
8710#0 invalid (val=<optimized out>)
8711@end smallexample
8712@end table
8713
8714For analysis messages on possible failures of frame argument values at function
8715entry resolution see @ref{set debug entry-values}.
8716
8717@item show print entry-values
8718Show the method being used for printing of frame argument values at function
8719entry.
8720
9c16f35a
EZ
8721@item set print repeats
8722@cindex repeated array elements
8723Set the threshold for suppressing display of repeated array
d3e8051b 8724elements. When the number of consecutive identical elements of an
9c16f35a
EZ
8725array exceeds the threshold, @value{GDBN} prints the string
8726@code{"<repeats @var{n} times>"}, where @var{n} is the number of
8727identical repetitions, instead of displaying the identical elements
8728themselves. Setting the threshold to zero will cause all elements to
8729be individually printed. The default threshold is 10.
8730
8731@item show print repeats
8732Display the current threshold for printing repeated identical
8733elements.
8734
c906108c 8735@item set print null-stop
4644b6e3 8736@cindex @sc{null} elements in arrays
c906108c 8737Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 8738@sc{null} is encountered. This is useful when large arrays actually
c906108c 8739contain only short strings.
d4f3574e 8740The default is off.
c906108c 8741
9c16f35a
EZ
8742@item show print null-stop
8743Show whether @value{GDBN} stops printing an array on the first
8744@sc{null} character.
8745
c906108c 8746@item set print pretty on
9c16f35a
EZ
8747@cindex print structures in indented form
8748@cindex indentation in structure display
5d161b24 8749Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
8750per line, like this:
8751
8752@smallexample
8753@group
8754$1 = @{
8755 next = 0x0,
8756 flags = @{
8757 sweet = 1,
8758 sour = 1
8759 @},
8760 meat = 0x54 "Pork"
8761@}
8762@end group
8763@end smallexample
8764
8765@item set print pretty off
8766Cause @value{GDBN} to print structures in a compact format, like this:
8767
8768@smallexample
8769@group
8770$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
8771meat = 0x54 "Pork"@}
8772@end group
8773@end smallexample
8774
8775@noindent
8776This is the default format.
8777
c906108c
SS
8778@item show print pretty
8779Show which format @value{GDBN} is using to print structures.
8780
c906108c 8781@item set print sevenbit-strings on
4644b6e3
EZ
8782@cindex eight-bit characters in strings
8783@cindex octal escapes in strings
c906108c
SS
8784Print using only seven-bit characters; if this option is set,
8785@value{GDBN} displays any eight-bit characters (in strings or
8786character values) using the notation @code{\}@var{nnn}. This setting is
8787best if you are working in English (@sc{ascii}) and you use the
8788high-order bit of characters as a marker or ``meta'' bit.
8789
8790@item set print sevenbit-strings off
8791Print full eight-bit characters. This allows the use of more
8792international character sets, and is the default.
8793
c906108c
SS
8794@item show print sevenbit-strings
8795Show whether or not @value{GDBN} is printing only seven-bit characters.
8796
c906108c 8797@item set print union on
4644b6e3 8798@cindex unions in structures, printing
9c16f35a
EZ
8799Tell @value{GDBN} to print unions which are contained in structures
8800and other unions. This is the default setting.
c906108c
SS
8801
8802@item set print union off
9c16f35a
EZ
8803Tell @value{GDBN} not to print unions which are contained in
8804structures and other unions. @value{GDBN} will print @code{"@{...@}"}
8805instead.
c906108c 8806
c906108c
SS
8807@item show print union
8808Ask @value{GDBN} whether or not it will print unions which are contained in
9c16f35a 8809structures and other unions.
c906108c
SS
8810
8811For example, given the declarations
8812
8813@smallexample
8814typedef enum @{Tree, Bug@} Species;
8815typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 8816typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
8817 Bug_forms;
8818
8819struct thing @{
8820 Species it;
8821 union @{
8822 Tree_forms tree;
8823 Bug_forms bug;
8824 @} form;
8825@};
8826
8827struct thing foo = @{Tree, @{Acorn@}@};
8828@end smallexample
8829
8830@noindent
8831with @code{set print union on} in effect @samp{p foo} would print
8832
8833@smallexample
8834$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
8835@end smallexample
8836
8837@noindent
8838and with @code{set print union off} in effect it would print
8839
8840@smallexample
8841$1 = @{it = Tree, form = @{...@}@}
8842@end smallexample
9c16f35a
EZ
8843
8844@noindent
8845@code{set print union} affects programs written in C-like languages
8846and in Pascal.
c906108c
SS
8847@end table
8848
c906108c
SS
8849@need 1000
8850@noindent
b37052ae 8851These settings are of interest when debugging C@t{++} programs:
c906108c
SS
8852
8853@table @code
4644b6e3 8854@cindex demangling C@t{++} names
c906108c
SS
8855@item set print demangle
8856@itemx set print demangle on
b37052ae 8857Print C@t{++} names in their source form rather than in the encoded
c906108c 8858(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 8859linkage. The default is on.
c906108c 8860
c906108c 8861@item show print demangle
b37052ae 8862Show whether C@t{++} names are printed in mangled or demangled form.
c906108c 8863
c906108c
SS
8864@item set print asm-demangle
8865@itemx set print asm-demangle on
b37052ae 8866Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
8867in assembler code printouts such as instruction disassemblies.
8868The default is off.
8869
c906108c 8870@item show print asm-demangle
b37052ae 8871Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
8872or demangled form.
8873
b37052ae
EZ
8874@cindex C@t{++} symbol decoding style
8875@cindex symbol decoding style, C@t{++}
a8f24a35 8876@kindex set demangle-style
c906108c
SS
8877@item set demangle-style @var{style}
8878Choose among several encoding schemes used by different compilers to
b37052ae 8879represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
8880
8881@table @code
8882@item auto
8883Allow @value{GDBN} to choose a decoding style by inspecting your program.
891df0ea 8884This is the default.
c906108c
SS
8885
8886@item gnu
b37052ae 8887Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c
SS
8888
8889@item hp
b37052ae 8890Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
8891
8892@item lucid
b37052ae 8893Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
8894
8895@item arm
b37052ae 8896Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
8897@strong{Warning:} this setting alone is not sufficient to allow
8898debugging @code{cfront}-generated executables. @value{GDBN} would
8899require further enhancement to permit that.
8900
8901@end table
8902If you omit @var{style}, you will see a list of possible formats.
8903
c906108c 8904@item show demangle-style
b37052ae 8905Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c 8906
c906108c
SS
8907@item set print object
8908@itemx set print object on
4644b6e3 8909@cindex derived type of an object, printing
9c16f35a 8910@cindex display derived types
c906108c
SS
8911When displaying a pointer to an object, identify the @emph{actual}
8912(derived) type of the object rather than the @emph{declared} type, using
625c0d47
TT
8913the virtual function table. Note that the virtual function table is
8914required---this feature can only work for objects that have run-time
8915type identification; a single virtual method in the object's declared
8264ba82
AG
8916type is sufficient. Note that this setting is also taken into account when
8917working with variable objects via MI (@pxref{GDB/MI}).
c906108c
SS
8918
8919@item set print object off
8920Display only the declared type of objects, without reference to the
8921virtual function table. This is the default setting.
8922
c906108c
SS
8923@item show print object
8924Show whether actual, or declared, object types are displayed.
8925
c906108c
SS
8926@item set print static-members
8927@itemx set print static-members on
4644b6e3 8928@cindex static members of C@t{++} objects
b37052ae 8929Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
8930
8931@item set print static-members off
b37052ae 8932Do not print static members when displaying a C@t{++} object.
c906108c 8933
c906108c 8934@item show print static-members
9c16f35a
EZ
8935Show whether C@t{++} static members are printed or not.
8936
8937@item set print pascal_static-members
8938@itemx set print pascal_static-members on
d3e8051b
EZ
8939@cindex static members of Pascal objects
8940@cindex Pascal objects, static members display
9c16f35a
EZ
8941Print static members when displaying a Pascal object. The default is on.
8942
8943@item set print pascal_static-members off
8944Do not print static members when displaying a Pascal object.
8945
8946@item show print pascal_static-members
8947Show whether Pascal static members are printed or not.
c906108c
SS
8948
8949@c These don't work with HP ANSI C++ yet.
c906108c
SS
8950@item set print vtbl
8951@itemx set print vtbl on
4644b6e3 8952@cindex pretty print C@t{++} virtual function tables
9c16f35a
EZ
8953@cindex virtual functions (C@t{++}) display
8954@cindex VTBL display
b37052ae 8955Pretty print C@t{++} virtual function tables. The default is off.
c906108c 8956(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 8957ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
8958
8959@item set print vtbl off
b37052ae 8960Do not pretty print C@t{++} virtual function tables.
c906108c 8961
c906108c 8962@item show print vtbl
b37052ae 8963Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 8964@end table
c906108c 8965
4c374409
JK
8966@node Pretty Printing
8967@section Pretty Printing
8968
8969@value{GDBN} provides a mechanism to allow pretty-printing of values using
8970Python code. It greatly simplifies the display of complex objects. This
8971mechanism works for both MI and the CLI.
8972
7b51bc51
DE
8973@menu
8974* Pretty-Printer Introduction:: Introduction to pretty-printers
8975* Pretty-Printer Example:: An example pretty-printer
8976* Pretty-Printer Commands:: Pretty-printer commands
8977@end menu
8978
8979@node Pretty-Printer Introduction
8980@subsection Pretty-Printer Introduction
8981
8982When @value{GDBN} prints a value, it first sees if there is a pretty-printer
8983registered for the value. If there is then @value{GDBN} invokes the
8984pretty-printer to print the value. Otherwise the value is printed normally.
8985
8986Pretty-printers are normally named. This makes them easy to manage.
8987The @samp{info pretty-printer} command will list all the installed
8988pretty-printers with their names.
8989If a pretty-printer can handle multiple data types, then its
8990@dfn{subprinters} are the printers for the individual data types.
8991Each such subprinter has its own name.
4e04c971 8992The format of the name is @var{printer-name};@var{subprinter-name}.
7b51bc51
DE
8993
8994Pretty-printers are installed by @dfn{registering} them with @value{GDBN}.
8995Typically they are automatically loaded and registered when the corresponding
8996debug information is loaded, thus making them available without having to
8997do anything special.
8998
8999There are three places where a pretty-printer can be registered.
9000
9001@itemize @bullet
9002@item
9003Pretty-printers registered globally are available when debugging
9004all inferiors.
9005
9006@item
9007Pretty-printers registered with a program space are available only
9008when debugging that program.
9009@xref{Progspaces In Python}, for more details on program spaces in Python.
9010
9011@item
9012Pretty-printers registered with an objfile are loaded and unloaded
9013with the corresponding objfile (e.g., shared library).
9014@xref{Objfiles In Python}, for more details on objfiles in Python.
9015@end itemize
9016
9017@xref{Selecting Pretty-Printers}, for further information on how
9018pretty-printers are selected,
9019
9020@xref{Writing a Pretty-Printer}, for implementing pretty printers
9021for new types.
9022
9023@node Pretty-Printer Example
9024@subsection Pretty-Printer Example
9025
9026Here is how a C@t{++} @code{std::string} looks without a pretty-printer:
4c374409
JK
9027
9028@smallexample
9029(@value{GDBP}) print s
9030$1 = @{
9031 static npos = 4294967295,
9032 _M_dataplus = @{
9033 <std::allocator<char>> = @{
9034 <__gnu_cxx::new_allocator<char>> = @{
9035 <No data fields>@}, <No data fields>
9036 @},
9037 members of std::basic_string<char, std::char_traits<char>,
9038 std::allocator<char> >::_Alloc_hider:
9039 _M_p = 0x804a014 "abcd"
9040 @}
9041@}
9042@end smallexample
9043
9044With a pretty-printer for @code{std::string} only the contents are printed:
9045
9046@smallexample
9047(@value{GDBP}) print s
9048$2 = "abcd"
9049@end smallexample
9050
7b51bc51
DE
9051@node Pretty-Printer Commands
9052@subsection Pretty-Printer Commands
9053@cindex pretty-printer commands
9054
9055@table @code
9056@kindex info pretty-printer
9057@item info pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9058Print the list of installed pretty-printers.
9059This includes disabled pretty-printers, which are marked as such.
9060
9061@var{object-regexp} is a regular expression matching the objects
9062whose pretty-printers to list.
9063Objects can be @code{global}, the program space's file
9064(@pxref{Progspaces In Python}),
9065and the object files within that program space (@pxref{Objfiles In Python}).
9066@xref{Selecting Pretty-Printers}, for details on how @value{GDBN}
9067looks up a printer from these three objects.
9068
9069@var{name-regexp} is a regular expression matching the name of the printers
9070to list.
9071
9072@kindex disable pretty-printer
9073@item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9074Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
9075A disabled pretty-printer is not forgotten, it may be enabled again later.
9076
9077@kindex enable pretty-printer
9078@item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9079Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
9080@end table
9081
9082Example:
9083
9084Suppose we have three pretty-printers installed: one from library1.so
9085named @code{foo} that prints objects of type @code{foo}, and
9086another from library2.so named @code{bar} that prints two types of objects,
9087@code{bar1} and @code{bar2}.
9088
9089@smallexample
9090(gdb) info pretty-printer
9091library1.so:
9092 foo
9093library2.so:
9094 bar
9095 bar1
9096 bar2
9097(gdb) info pretty-printer library2
9098library2.so:
9099 bar
9100 bar1
9101 bar2
9102(gdb) disable pretty-printer library1
91031 printer disabled
91042 of 3 printers enabled
9105(gdb) info pretty-printer
9106library1.so:
9107 foo [disabled]
9108library2.so:
9109 bar
9110 bar1
9111 bar2
9112(gdb) disable pretty-printer library2 bar:bar1
91131 printer disabled
91141 of 3 printers enabled
9115(gdb) info pretty-printer library2
9116library1.so:
9117 foo [disabled]
9118library2.so:
9119 bar
9120 bar1 [disabled]
9121 bar2
9122(gdb) disable pretty-printer library2 bar
91231 printer disabled
91240 of 3 printers enabled
9125(gdb) info pretty-printer library2
9126library1.so:
9127 foo [disabled]
9128library2.so:
9129 bar [disabled]
9130 bar1 [disabled]
9131 bar2
9132@end smallexample
9133
9134Note that for @code{bar} the entire printer can be disabled,
9135as can each individual subprinter.
4c374409 9136
6d2ebf8b 9137@node Value History
79a6e687 9138@section Value History
c906108c
SS
9139
9140@cindex value history
9c16f35a 9141@cindex history of values printed by @value{GDBN}
5d161b24
DB
9142Values printed by the @code{print} command are saved in the @value{GDBN}
9143@dfn{value history}. This allows you to refer to them in other expressions.
9144Values are kept until the symbol table is re-read or discarded
9145(for example with the @code{file} or @code{symbol-file} commands).
9146When the symbol table changes, the value history is discarded,
9147since the values may contain pointers back to the types defined in the
c906108c
SS
9148symbol table.
9149
9150@cindex @code{$}
9151@cindex @code{$$}
9152@cindex history number
9153The values printed are given @dfn{history numbers} by which you can
9154refer to them. These are successive integers starting with one.
9155@code{print} shows you the history number assigned to a value by
9156printing @samp{$@var{num} = } before the value; here @var{num} is the
9157history number.
9158
9159To refer to any previous value, use @samp{$} followed by the value's
9160history number. The way @code{print} labels its output is designed to
9161remind you of this. Just @code{$} refers to the most recent value in
9162the history, and @code{$$} refers to the value before that.
9163@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
9164is the value just prior to @code{$$}, @code{$$1} is equivalent to
9165@code{$$}, and @code{$$0} is equivalent to @code{$}.
9166
9167For example, suppose you have just printed a pointer to a structure and
9168want to see the contents of the structure. It suffices to type
9169
474c8240 9170@smallexample
c906108c 9171p *$
474c8240 9172@end smallexample
c906108c
SS
9173
9174If you have a chain of structures where the component @code{next} points
9175to the next one, you can print the contents of the next one with this:
9176
474c8240 9177@smallexample
c906108c 9178p *$.next
474c8240 9179@end smallexample
c906108c
SS
9180
9181@noindent
9182You can print successive links in the chain by repeating this
9183command---which you can do by just typing @key{RET}.
9184
9185Note that the history records values, not expressions. If the value of
9186@code{x} is 4 and you type these commands:
9187
474c8240 9188@smallexample
c906108c
SS
9189print x
9190set x=5
474c8240 9191@end smallexample
c906108c
SS
9192
9193@noindent
9194then the value recorded in the value history by the @code{print} command
9195remains 4 even though the value of @code{x} has changed.
9196
9197@table @code
9198@kindex show values
9199@item show values
9200Print the last ten values in the value history, with their item numbers.
9201This is like @samp{p@ $$9} repeated ten times, except that @code{show
9202values} does not change the history.
9203
9204@item show values @var{n}
9205Print ten history values centered on history item number @var{n}.
9206
9207@item show values +
9208Print ten history values just after the values last printed. If no more
9209values are available, @code{show values +} produces no display.
9210@end table
9211
9212Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
9213same effect as @samp{show values +}.
9214
6d2ebf8b 9215@node Convenience Vars
79a6e687 9216@section Convenience Variables
c906108c
SS
9217
9218@cindex convenience variables
9c16f35a 9219@cindex user-defined variables
c906108c
SS
9220@value{GDBN} provides @dfn{convenience variables} that you can use within
9221@value{GDBN} to hold on to a value and refer to it later. These variables
9222exist entirely within @value{GDBN}; they are not part of your program, and
9223setting a convenience variable has no direct effect on further execution
9224of your program. That is why you can use them freely.
9225
9226Convenience variables are prefixed with @samp{$}. Any name preceded by
9227@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 9228the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c 9229(Value history references, in contrast, are @emph{numbers} preceded
79a6e687 9230by @samp{$}. @xref{Value History, ,Value History}.)
c906108c
SS
9231
9232You can save a value in a convenience variable with an assignment
9233expression, just as you would set a variable in your program.
9234For example:
9235
474c8240 9236@smallexample
c906108c 9237set $foo = *object_ptr
474c8240 9238@end smallexample
c906108c
SS
9239
9240@noindent
9241would save in @code{$foo} the value contained in the object pointed to by
9242@code{object_ptr}.
9243
9244Using a convenience variable for the first time creates it, but its
9245value is @code{void} until you assign a new value. You can alter the
9246value with another assignment at any time.
9247
9248Convenience variables have no fixed types. You can assign a convenience
9249variable any type of value, including structures and arrays, even if
9250that variable already has a value of a different type. The convenience
9251variable, when used as an expression, has the type of its current value.
9252
9253@table @code
9254@kindex show convenience
f47f77df 9255@cindex show all user variables and functions
c906108c 9256@item show convenience
f47f77df
DE
9257Print a list of convenience variables used so far, and their values,
9258as well as a list of the convenience functions.
d4f3574e 9259Abbreviated @code{show conv}.
53e5f3cf
AS
9260
9261@kindex init-if-undefined
9262@cindex convenience variables, initializing
9263@item init-if-undefined $@var{variable} = @var{expression}
9264Set a convenience variable if it has not already been set. This is useful
9265for user-defined commands that keep some state. It is similar, in concept,
9266to using local static variables with initializers in C (except that
9267convenience variables are global). It can also be used to allow users to
9268override default values used in a command script.
9269
9270If the variable is already defined then the expression is not evaluated so
9271any side-effects do not occur.
c906108c
SS
9272@end table
9273
9274One of the ways to use a convenience variable is as a counter to be
9275incremented or a pointer to be advanced. For example, to print
9276a field from successive elements of an array of structures:
9277
474c8240 9278@smallexample
c906108c
SS
9279set $i = 0
9280print bar[$i++]->contents
474c8240 9281@end smallexample
c906108c 9282
d4f3574e
SS
9283@noindent
9284Repeat that command by typing @key{RET}.
c906108c
SS
9285
9286Some convenience variables are created automatically by @value{GDBN} and given
9287values likely to be useful.
9288
9289@table @code
41afff9a 9290@vindex $_@r{, convenience variable}
c906108c
SS
9291@item $_
9292The variable @code{$_} is automatically set by the @code{x} command to
79a6e687 9293the last address examined (@pxref{Memory, ,Examining Memory}). Other
c906108c
SS
9294commands which provide a default address for @code{x} to examine also
9295set @code{$_} to that address; these commands include @code{info line}
9296and @code{info breakpoint}. The type of @code{$_} is @code{void *}
9297except when set by the @code{x} command, in which case it is a pointer
9298to the type of @code{$__}.
9299
41afff9a 9300@vindex $__@r{, convenience variable}
c906108c
SS
9301@item $__
9302The variable @code{$__} is automatically set by the @code{x} command
9303to the value found in the last address examined. Its type is chosen
9304to match the format in which the data was printed.
9305
9306@item $_exitcode
41afff9a 9307@vindex $_exitcode@r{, convenience variable}
c906108c
SS
9308The variable @code{$_exitcode} is automatically set to the exit code when
9309the program being debugged terminates.
4aa995e1 9310
62e5f89c
SDJ
9311@item $_probe_argc
9312@itemx $_probe_arg0@dots{}$_probe_arg11
9313Arguments to a static probe. @xref{Static Probe Points}.
9314
0fb4aa4b
PA
9315@item $_sdata
9316@vindex $_sdata@r{, inspect, convenience variable}
9317The variable @code{$_sdata} contains extra collected static tracepoint
9318data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that
9319@code{$_sdata} could be empty, if not inspecting a trace buffer, or
9320if extra static tracepoint data has not been collected.
9321
4aa995e1
PA
9322@item $_siginfo
9323@vindex $_siginfo@r{, convenience variable}
ec7e75e7
PP
9324The variable @code{$_siginfo} contains extra signal information
9325(@pxref{extra signal information}). Note that @code{$_siginfo}
9326could be empty, if the application has not yet received any signals.
9327For example, it will be empty before you execute the @code{run} command.
711e434b
PM
9328
9329@item $_tlb
9330@vindex $_tlb@r{, convenience variable}
9331The variable @code{$_tlb} is automatically set when debugging
9332applications running on MS-Windows in native mode or connected to
9333gdbserver that supports the @code{qGetTIBAddr} request.
9334@xref{General Query Packets}.
9335This variable contains the address of the thread information block.
9336
c906108c
SS
9337@end table
9338
53a5351d
JM
9339On HP-UX systems, if you refer to a function or variable name that
9340begins with a dollar sign, @value{GDBN} searches for a user or system
9341name first, before it searches for a convenience variable.
c906108c 9342
a72c3253
DE
9343@node Convenience Funs
9344@section Convenience Functions
9345
bc3b79fd
TJB
9346@cindex convenience functions
9347@value{GDBN} also supplies some @dfn{convenience functions}. These
9348have a syntax similar to convenience variables. A convenience
9349function can be used in an expression just like an ordinary function;
9350however, a convenience function is implemented internally to
9351@value{GDBN}.
9352
a72c3253
DE
9353These functions require @value{GDBN} to be configured with
9354@code{Python} support.
9355
9356@table @code
9357
9358@item $_memeq(@var{buf1}, @var{buf2}, @var{length})
9359@findex $_memeq@r{, convenience function}
9360Returns one if the @var{length} bytes at the addresses given by
9361@var{buf1} and @var{buf2} are equal.
9362Otherwise it returns zero.
9363
9364@item $_regex(@var{str}, @var{regex})
9365@findex $_regex@r{, convenience function}
9366Returns one if the string @var{str} matches the regular expression
9367@var{regex}. Otherwise it returns zero.
9368The syntax of the regular expression is that specified by @code{Python}'s
9369regular expression support.
9370
9371@item $_streq(@var{str1}, @var{str2})
9372@findex $_streq@r{, convenience function}
9373Returns one if the strings @var{str1} and @var{str2} are equal.
9374Otherwise it returns zero.
9375
9376@item $_strlen(@var{str})
9377@findex $_strlen@r{, convenience function}
9378Returns the length of string @var{str}.
9379
9380@end table
9381
9382@value{GDBN} provides the ability to list and get help on
9383convenience functions.
9384
bc3b79fd
TJB
9385@table @code
9386@item help function
9387@kindex help function
9388@cindex show all convenience functions
9389Print a list of all convenience functions.
9390@end table
9391
6d2ebf8b 9392@node Registers
c906108c
SS
9393@section Registers
9394
9395@cindex registers
9396You can refer to machine register contents, in expressions, as variables
9397with names starting with @samp{$}. The names of registers are different
9398for each machine; use @code{info registers} to see the names used on
9399your machine.
9400
9401@table @code
9402@kindex info registers
9403@item info registers
9404Print the names and values of all registers except floating-point
c85508ee 9405and vector registers (in the selected stack frame).
c906108c
SS
9406
9407@kindex info all-registers
9408@cindex floating point registers
9409@item info all-registers
9410Print the names and values of all registers, including floating-point
c85508ee 9411and vector registers (in the selected stack frame).
c906108c
SS
9412
9413@item info registers @var{regname} @dots{}
9414Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
9415As discussed in detail below, register values are normally relative to
9416the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
9417the machine you are using, with or without the initial @samp{$}.
9418@end table
9419
e09f16f9
EZ
9420@cindex stack pointer register
9421@cindex program counter register
9422@cindex process status register
9423@cindex frame pointer register
9424@cindex standard registers
c906108c
SS
9425@value{GDBN} has four ``standard'' register names that are available (in
9426expressions) on most machines---whenever they do not conflict with an
9427architecture's canonical mnemonics for registers. The register names
9428@code{$pc} and @code{$sp} are used for the program counter register and
9429the stack pointer. @code{$fp} is used for a register that contains a
9430pointer to the current stack frame, and @code{$ps} is used for a
9431register that contains the processor status. For example,
9432you could print the program counter in hex with
9433
474c8240 9434@smallexample
c906108c 9435p/x $pc
474c8240 9436@end smallexample
c906108c
SS
9437
9438@noindent
9439or print the instruction to be executed next with
9440
474c8240 9441@smallexample
c906108c 9442x/i $pc
474c8240 9443@end smallexample
c906108c
SS
9444
9445@noindent
9446or add four to the stack pointer@footnote{This is a way of removing
9447one word from the stack, on machines where stacks grow downward in
9448memory (most machines, nowadays). This assumes that the innermost
9449stack frame is selected; setting @code{$sp} is not allowed when other
9450stack frames are selected. To pop entire frames off the stack,
9451regardless of machine architecture, use @code{return};
79a6e687 9452see @ref{Returning, ,Returning from a Function}.} with
c906108c 9453
474c8240 9454@smallexample
c906108c 9455set $sp += 4
474c8240 9456@end smallexample
c906108c
SS
9457
9458Whenever possible, these four standard register names are available on
9459your machine even though the machine has different canonical mnemonics,
9460so long as there is no conflict. The @code{info registers} command
9461shows the canonical names. For example, on the SPARC, @code{info
9462registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
9463can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
9464is an alias for the @sc{eflags} register.
c906108c
SS
9465
9466@value{GDBN} always considers the contents of an ordinary register as an
9467integer when the register is examined in this way. Some machines have
9468special registers which can hold nothing but floating point; these
9469registers are considered to have floating point values. There is no way
9470to refer to the contents of an ordinary register as floating point value
9471(although you can @emph{print} it as a floating point value with
9472@samp{print/f $@var{regname}}).
9473
9474Some registers have distinct ``raw'' and ``virtual'' data formats. This
9475means that the data format in which the register contents are saved by
9476the operating system is not the same one that your program normally
9477sees. For example, the registers of the 68881 floating point
9478coprocessor are always saved in ``extended'' (raw) format, but all C
9479programs expect to work with ``double'' (virtual) format. In such
5d161b24 9480cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
9481that makes sense for your program), but the @code{info registers} command
9482prints the data in both formats.
9483
36b80e65
EZ
9484@cindex SSE registers (x86)
9485@cindex MMX registers (x86)
9486Some machines have special registers whose contents can be interpreted
9487in several different ways. For example, modern x86-based machines
9488have SSE and MMX registers that can hold several values packed
9489together in several different formats. @value{GDBN} refers to such
9490registers in @code{struct} notation:
9491
9492@smallexample
9493(@value{GDBP}) print $xmm1
9494$1 = @{
9495 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@},
9496 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@},
9497 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
9498 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@},
9499 v4_int32 = @{0, 20657912, 11, 13@},
9500 v2_int64 = @{88725056443645952, 55834574859@},
9501 uint128 = 0x0000000d0000000b013b36f800000000
9502@}
9503@end smallexample
9504
9505@noindent
9506To set values of such registers, you need to tell @value{GDBN} which
9507view of the register you wish to change, as if you were assigning
9508value to a @code{struct} member:
9509
9510@smallexample
9511 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
9512@end smallexample
9513
c906108c 9514Normally, register values are relative to the selected stack frame
79a6e687 9515(@pxref{Selection, ,Selecting a Frame}). This means that you get the
c906108c
SS
9516value that the register would contain if all stack frames farther in
9517were exited and their saved registers restored. In order to see the
9518true contents of hardware registers, you must select the innermost
9519frame (with @samp{frame 0}).
9520
9521However, @value{GDBN} must deduce where registers are saved, from the machine
9522code generated by your compiler. If some registers are not saved, or if
9523@value{GDBN} is unable to locate the saved registers, the selected stack
9524frame makes no difference.
9525
6d2ebf8b 9526@node Floating Point Hardware
79a6e687 9527@section Floating Point Hardware
c906108c
SS
9528@cindex floating point
9529
9530Depending on the configuration, @value{GDBN} may be able to give
9531you more information about the status of the floating point hardware.
9532
9533@table @code
9534@kindex info float
9535@item info float
9536Display hardware-dependent information about the floating
9537point unit. The exact contents and layout vary depending on the
9538floating point chip. Currently, @samp{info float} is supported on
9539the ARM and x86 machines.
9540@end table
c906108c 9541
e76f1f2e
AC
9542@node Vector Unit
9543@section Vector Unit
9544@cindex vector unit
9545
9546Depending on the configuration, @value{GDBN} may be able to give you
9547more information about the status of the vector unit.
9548
9549@table @code
9550@kindex info vector
9551@item info vector
9552Display information about the vector unit. The exact contents and
9553layout vary depending on the hardware.
9554@end table
9555
721c2651 9556@node OS Information
79a6e687 9557@section Operating System Auxiliary Information
721c2651
EZ
9558@cindex OS information
9559
9560@value{GDBN} provides interfaces to useful OS facilities that can help
9561you debug your program.
9562
b383017d
RM
9563@cindex auxiliary vector
9564@cindex vector, auxiliary
b383017d
RM
9565Some operating systems supply an @dfn{auxiliary vector} to programs at
9566startup. This is akin to the arguments and environment that you
9567specify for a program, but contains a system-dependent variety of
9568binary values that tell system libraries important details about the
9569hardware, operating system, and process. Each value's purpose is
9570identified by an integer tag; the meanings are well-known but system-specific.
9571Depending on the configuration and operating system facilities,
9c16f35a
EZ
9572@value{GDBN} may be able to show you this information. For remote
9573targets, this functionality may further depend on the remote stub's
427c3a89
DJ
9574support of the @samp{qXfer:auxv:read} packet, see
9575@ref{qXfer auxiliary vector read}.
b383017d
RM
9576
9577@table @code
9578@kindex info auxv
9579@item info auxv
9580Display the auxiliary vector of the inferior, which can be either a
e4937fc1 9581live process or a core dump file. @value{GDBN} prints each tag value
b383017d
RM
9582numerically, and also shows names and text descriptions for recognized
9583tags. Some values in the vector are numbers, some bit masks, and some
e4937fc1 9584pointers to strings or other data. @value{GDBN} displays each value in the
b383017d
RM
9585most appropriate form for a recognized tag, and in hexadecimal for
9586an unrecognized tag.
9587@end table
9588
85d4a676
SS
9589On some targets, @value{GDBN} can access operating system-specific
9590information and show it to you. The types of information available
9591will differ depending on the type of operating system running on the
9592target. The mechanism used to fetch the data is described in
9593@ref{Operating System Information}. For remote targets, this
9594functionality depends on the remote stub's support of the
07e059b5
VP
9595@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}.
9596
9597@table @code
a61408f8 9598@kindex info os
85d4a676
SS
9599@item info os @var{infotype}
9600
9601Display OS information of the requested type.
a61408f8 9602
85d4a676
SS
9603On @sc{gnu}/Linux, the following values of @var{infotype} are valid:
9604
9605@anchor{linux info os infotypes}
9606@table @code
07e059b5 9607@kindex info os processes
85d4a676 9608@item processes
07e059b5 9609Display the list of processes on the target. For each process,
85d4a676
SS
9610@value{GDBN} prints the process identifier, the name of the user, the
9611command corresponding to the process, and the list of processor cores
9612that the process is currently running on. (To understand what these
9613properties mean, for this and the following info types, please consult
9614the general @sc{gnu}/Linux documentation.)
9615
9616@kindex info os procgroups
9617@item procgroups
9618Display the list of process groups on the target. For each process,
9619@value{GDBN} prints the identifier of the process group that it belongs
9620to, the command corresponding to the process group leader, the process
9621identifier, and the command line of the process. The list is sorted
9622first by the process group identifier, then by the process identifier,
9623so that processes belonging to the same process group are grouped together
9624and the process group leader is listed first.
9625
9626@kindex info os threads
9627@item threads
9628Display the list of threads running on the target. For each thread,
9629@value{GDBN} prints the identifier of the process that the thread
9630belongs to, the command of the process, the thread identifier, and the
9631processor core that it is currently running on. The main thread of a
9632process is not listed.
9633
9634@kindex info os files
9635@item files
9636Display the list of open file descriptors on the target. For each
9637file descriptor, @value{GDBN} prints the identifier of the process
9638owning the descriptor, the command of the owning process, the value
9639of the descriptor, and the target of the descriptor.
9640
9641@kindex info os sockets
9642@item sockets
9643Display the list of Internet-domain sockets on the target. For each
9644socket, @value{GDBN} prints the address and port of the local and
9645remote endpoints, the current state of the connection, the creator of
9646the socket, the IP address family of the socket, and the type of the
9647connection.
9648
9649@kindex info os shm
9650@item shm
9651Display the list of all System V shared-memory regions on the target.
9652For each shared-memory region, @value{GDBN} prints the region key,
9653the shared-memory identifier, the access permissions, the size of the
9654region, the process that created the region, the process that last
9655attached to or detached from the region, the current number of live
9656attaches to the region, and the times at which the region was last
9657attached to, detach from, and changed.
9658
9659@kindex info os semaphores
9660@item semaphores
9661Display the list of all System V semaphore sets on the target. For each
9662semaphore set, @value{GDBN} prints the semaphore set key, the semaphore
9663set identifier, the access permissions, the number of semaphores in the
9664set, the user and group of the owner and creator of the semaphore set,
9665and the times at which the semaphore set was operated upon and changed.
9666
9667@kindex info os msg
9668@item msg
9669Display the list of all System V message queues on the target. For each
9670message queue, @value{GDBN} prints the message queue key, the message
9671queue identifier, the access permissions, the current number of bytes
9672on the queue, the current number of messages on the queue, the processes
9673that last sent and received a message on the queue, the user and group
9674of the owner and creator of the message queue, the times at which a
9675message was last sent and received on the queue, and the time at which
9676the message queue was last changed.
9677
9678@kindex info os modules
9679@item modules
9680Display the list of all loaded kernel modules on the target. For each
9681module, @value{GDBN} prints the module name, the size of the module in
9682bytes, the number of times the module is used, the dependencies of the
9683module, the status of the module, and the address of the loaded module
9684in memory.
9685@end table
9686
9687@item info os
9688If @var{infotype} is omitted, then list the possible values for
9689@var{infotype} and the kind of OS information available for each
9690@var{infotype}. If the target does not return a list of possible
9691types, this command will report an error.
07e059b5 9692@end table
721c2651 9693
29e57380 9694@node Memory Region Attributes
79a6e687 9695@section Memory Region Attributes
29e57380
C
9696@cindex memory region attributes
9697
b383017d 9698@dfn{Memory region attributes} allow you to describe special handling
fd79ecee
DJ
9699required by regions of your target's memory. @value{GDBN} uses
9700attributes to determine whether to allow certain types of memory
9701accesses; whether to use specific width accesses; and whether to cache
9702target memory. By default the description of memory regions is
9703fetched from the target (if the current target supports this), but the
9704user can override the fetched regions.
29e57380
C
9705
9706Defined memory regions can be individually enabled and disabled. When a
9707memory region is disabled, @value{GDBN} uses the default attributes when
9708accessing memory in that region. Similarly, if no memory regions have
9709been defined, @value{GDBN} uses the default attributes when accessing
9710all memory.
9711
b383017d 9712When a memory region is defined, it is given a number to identify it;
29e57380
C
9713to enable, disable, or remove a memory region, you specify that number.
9714
9715@table @code
9716@kindex mem
bfac230e 9717@item mem @var{lower} @var{upper} @var{attributes}@dots{}
09d4efe1
EZ
9718Define a memory region bounded by @var{lower} and @var{upper} with
9719attributes @var{attributes}@dots{}, and add it to the list of regions
9720monitored by @value{GDBN}. Note that @var{upper} == 0 is a special
d3e8051b 9721case: it is treated as the target's maximum memory address.
bfac230e 9722(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
29e57380 9723
fd79ecee
DJ
9724@item mem auto
9725Discard any user changes to the memory regions and use target-supplied
9726regions, if available, or no regions if the target does not support.
9727
29e57380
C
9728@kindex delete mem
9729@item delete mem @var{nums}@dots{}
09d4efe1
EZ
9730Remove memory regions @var{nums}@dots{} from the list of regions
9731monitored by @value{GDBN}.
29e57380
C
9732
9733@kindex disable mem
9734@item disable mem @var{nums}@dots{}
09d4efe1 9735Disable monitoring of memory regions @var{nums}@dots{}.
b383017d 9736A disabled memory region is not forgotten.
29e57380
C
9737It may be enabled again later.
9738
9739@kindex enable mem
9740@item enable mem @var{nums}@dots{}
09d4efe1 9741Enable monitoring of memory regions @var{nums}@dots{}.
29e57380
C
9742
9743@kindex info mem
9744@item info mem
9745Print a table of all defined memory regions, with the following columns
09d4efe1 9746for each region:
29e57380
C
9747
9748@table @emph
9749@item Memory Region Number
9750@item Enabled or Disabled.
b383017d 9751Enabled memory regions are marked with @samp{y}.
29e57380
C
9752Disabled memory regions are marked with @samp{n}.
9753
9754@item Lo Address
9755The address defining the inclusive lower bound of the memory region.
9756
9757@item Hi Address
9758The address defining the exclusive upper bound of the memory region.
9759
9760@item Attributes
9761The list of attributes set for this memory region.
9762@end table
9763@end table
9764
9765
9766@subsection Attributes
9767
b383017d 9768@subsubsection Memory Access Mode
29e57380
C
9769The access mode attributes set whether @value{GDBN} may make read or
9770write accesses to a memory region.
9771
9772While these attributes prevent @value{GDBN} from performing invalid
9773memory accesses, they do nothing to prevent the target system, I/O DMA,
359df76b 9774etc.@: from accessing memory.
29e57380
C
9775
9776@table @code
9777@item ro
9778Memory is read only.
9779@item wo
9780Memory is write only.
9781@item rw
6ca652b0 9782Memory is read/write. This is the default.
29e57380
C
9783@end table
9784
9785@subsubsection Memory Access Size
d3e8051b 9786The access size attribute tells @value{GDBN} to use specific sized
29e57380
C
9787accesses in the memory region. Often memory mapped device registers
9788require specific sized accesses. If no access size attribute is
9789specified, @value{GDBN} may use accesses of any size.
9790
9791@table @code
9792@item 8
9793Use 8 bit memory accesses.
9794@item 16
9795Use 16 bit memory accesses.
9796@item 32
9797Use 32 bit memory accesses.
9798@item 64
9799Use 64 bit memory accesses.
9800@end table
9801
9802@c @subsubsection Hardware/Software Breakpoints
9803@c The hardware/software breakpoint attributes set whether @value{GDBN}
9804@c will use hardware or software breakpoints for the internal breakpoints
9805@c used by the step, next, finish, until, etc. commands.
9806@c
9807@c @table @code
9808@c @item hwbreak
b383017d 9809@c Always use hardware breakpoints
29e57380
C
9810@c @item swbreak (default)
9811@c @end table
9812
9813@subsubsection Data Cache
9814The data cache attributes set whether @value{GDBN} will cache target
9815memory. While this generally improves performance by reducing debug
9816protocol overhead, it can lead to incorrect results because @value{GDBN}
9817does not know about volatile variables or memory mapped device
9818registers.
9819
9820@table @code
9821@item cache
b383017d 9822Enable @value{GDBN} to cache target memory.
6ca652b0
EZ
9823@item nocache
9824Disable @value{GDBN} from caching target memory. This is the default.
29e57380
C
9825@end table
9826
4b5752d0
VP
9827@subsection Memory Access Checking
9828@value{GDBN} can be instructed to refuse accesses to memory that is
9829not explicitly described. This can be useful if accessing such
9830regions has undesired effects for a specific target, or to provide
9831better error checking. The following commands control this behaviour.
9832
9833@table @code
9834@kindex set mem inaccessible-by-default
9835@item set mem inaccessible-by-default [on|off]
9836If @code{on} is specified, make @value{GDBN} treat memory not
9837explicitly described by the memory ranges as non-existent and refuse accesses
9838to such memory. The checks are only performed if there's at least one
9839memory range defined. If @code{off} is specified, make @value{GDBN}
9840treat the memory not explicitly described by the memory ranges as RAM.
56cf5405 9841The default value is @code{on}.
4b5752d0
VP
9842@kindex show mem inaccessible-by-default
9843@item show mem inaccessible-by-default
9844Show the current handling of accesses to unknown memory.
9845@end table
9846
9847
29e57380 9848@c @subsubsection Memory Write Verification
b383017d 9849@c The memory write verification attributes set whether @value{GDBN}
29e57380
C
9850@c will re-reads data after each write to verify the write was successful.
9851@c
9852@c @table @code
9853@c @item verify
9854@c @item noverify (default)
9855@c @end table
9856
16d9dec6 9857@node Dump/Restore Files
79a6e687 9858@section Copy Between Memory and a File
16d9dec6
MS
9859@cindex dump/restore files
9860@cindex append data to a file
9861@cindex dump data to a file
9862@cindex restore data from a file
16d9dec6 9863
df5215a6
JB
9864You can use the commands @code{dump}, @code{append}, and
9865@code{restore} to copy data between target memory and a file. The
9866@code{dump} and @code{append} commands write data to a file, and the
9867@code{restore} command reads data from a file back into the inferior's
9868memory. Files may be in binary, Motorola S-record, Intel hex, or
9869Tektronix Hex format; however, @value{GDBN} can only append to binary
9870files.
9871
9872@table @code
9873
9874@kindex dump
9875@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
9876@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
9877Dump the contents of memory from @var{start_addr} to @var{end_addr},
9878or the value of @var{expr}, to @var{filename} in the given format.
16d9dec6 9879
df5215a6 9880The @var{format} parameter may be any one of:
16d9dec6 9881@table @code
df5215a6
JB
9882@item binary
9883Raw binary form.
9884@item ihex
9885Intel hex format.
9886@item srec
9887Motorola S-record format.
9888@item tekhex
9889Tektronix Hex format.
9890@end table
9891
9892@value{GDBN} uses the same definitions of these formats as the
9893@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
9894@var{format} is omitted, @value{GDBN} dumps the data in raw binary
9895form.
9896
9897@kindex append
9898@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
9899@itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
9900Append the contents of memory from @var{start_addr} to @var{end_addr},
09d4efe1 9901or the value of @var{expr}, to the file @var{filename}, in raw binary form.
df5215a6
JB
9902(@value{GDBN} can only append data to files in raw binary form.)
9903
9904@kindex restore
9905@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
9906Restore the contents of file @var{filename} into memory. The
9907@code{restore} command can automatically recognize any known @sc{bfd}
9908file format, except for raw binary. To restore a raw binary file you
9909must specify the optional keyword @code{binary} after the filename.
16d9dec6 9910
b383017d 9911If @var{bias} is non-zero, its value will be added to the addresses
16d9dec6
MS
9912contained in the file. Binary files always start at address zero, so
9913they will be restored at address @var{bias}. Other bfd files have
9914a built-in location; they will be restored at offset @var{bias}
9915from that location.
9916
9917If @var{start} and/or @var{end} are non-zero, then only data between
9918file offset @var{start} and file offset @var{end} will be restored.
b383017d 9919These offsets are relative to the addresses in the file, before
16d9dec6
MS
9920the @var{bias} argument is applied.
9921
9922@end table
9923
384ee23f
EZ
9924@node Core File Generation
9925@section How to Produce a Core File from Your Program
9926@cindex dump core from inferior
9927
9928A @dfn{core file} or @dfn{core dump} is a file that records the memory
9929image of a running process and its process status (register values
9930etc.). Its primary use is post-mortem debugging of a program that
9931crashed while it ran outside a debugger. A program that crashes
9932automatically produces a core file, unless this feature is disabled by
9933the user. @xref{Files}, for information on invoking @value{GDBN} in
9934the post-mortem debugging mode.
9935
9936Occasionally, you may wish to produce a core file of the program you
9937are debugging in order to preserve a snapshot of its state.
9938@value{GDBN} has a special command for that.
9939
9940@table @code
9941@kindex gcore
9942@kindex generate-core-file
9943@item generate-core-file [@var{file}]
9944@itemx gcore [@var{file}]
9945Produce a core dump of the inferior process. The optional argument
9946@var{file} specifies the file name where to put the core dump. If not
9947specified, the file name defaults to @file{core.@var{pid}}, where
9948@var{pid} is the inferior process ID.
9949
9950Note that this command is implemented only for some systems (as of
05b4bd79 9951this writing, @sc{gnu}/Linux, FreeBSD, Solaris, and S390).
384ee23f
EZ
9952@end table
9953
a0eb71c5
KB
9954@node Character Sets
9955@section Character Sets
9956@cindex character sets
9957@cindex charset
9958@cindex translating between character sets
9959@cindex host character set
9960@cindex target character set
9961
9962If the program you are debugging uses a different character set to
9963represent characters and strings than the one @value{GDBN} uses itself,
9964@value{GDBN} can automatically translate between the character sets for
9965you. The character set @value{GDBN} uses we call the @dfn{host
9966character set}; the one the inferior program uses we call the
9967@dfn{target character set}.
9968
9969For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
9970uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
ea35711c 9971remote protocol (@pxref{Remote Debugging}) to debug a program
a0eb71c5
KB
9972running on an IBM mainframe, which uses the @sc{ebcdic} character set,
9973then the host character set is Latin-1, and the target character set is
9974@sc{ebcdic}. If you give @value{GDBN} the command @code{set
e33d66ec 9975target-charset EBCDIC-US}, then @value{GDBN} translates between
a0eb71c5
KB
9976@sc{ebcdic} and Latin 1 as you print character or string values, or use
9977character and string literals in expressions.
9978
9979@value{GDBN} has no way to automatically recognize which character set
9980the inferior program uses; you must tell it, using the @code{set
9981target-charset} command, described below.
9982
9983Here are the commands for controlling @value{GDBN}'s character set
9984support:
9985
9986@table @code
9987@item set target-charset @var{charset}
9988@kindex set target-charset
10af6951
EZ
9989Set the current target character set to @var{charset}. To display the
9990list of supported target character sets, type
9991@kbd{@w{set target-charset @key{TAB}@key{TAB}}}.
a0eb71c5 9992
a0eb71c5
KB
9993@item set host-charset @var{charset}
9994@kindex set host-charset
9995Set the current host character set to @var{charset}.
9996
9997By default, @value{GDBN} uses a host character set appropriate to the
9998system it is running on; you can override that default using the
732f6a93
TT
9999@code{set host-charset} command. On some systems, @value{GDBN} cannot
10000automatically determine the appropriate host character set. In this
10001case, @value{GDBN} uses @samp{UTF-8}.
a0eb71c5
KB
10002
10003@value{GDBN} can only use certain character sets as its host character
c1b6b909 10004set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}},
10af6951 10005@value{GDBN} will list the host character sets it supports.
a0eb71c5
KB
10006
10007@item set charset @var{charset}
10008@kindex set charset
e33d66ec 10009Set the current host and target character sets to @var{charset}. As
10af6951
EZ
10010above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}},
10011@value{GDBN} will list the names of the character sets that can be used
e33d66ec
EZ
10012for both host and target.
10013
a0eb71c5 10014@item show charset
a0eb71c5 10015@kindex show charset
10af6951 10016Show the names of the current host and target character sets.
e33d66ec 10017
10af6951 10018@item show host-charset
a0eb71c5 10019@kindex show host-charset
10af6951 10020Show the name of the current host character set.
e33d66ec 10021
10af6951 10022@item show target-charset
a0eb71c5 10023@kindex show target-charset
10af6951 10024Show the name of the current target character set.
a0eb71c5 10025
10af6951
EZ
10026@item set target-wide-charset @var{charset}
10027@kindex set target-wide-charset
10028Set the current target's wide character set to @var{charset}. This is
10029the character set used by the target's @code{wchar_t} type. To
10030display the list of supported wide character sets, type
10031@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}.
10032
10033@item show target-wide-charset
10034@kindex show target-wide-charset
10035Show the name of the current target's wide character set.
a0eb71c5
KB
10036@end table
10037
a0eb71c5
KB
10038Here is an example of @value{GDBN}'s character set support in action.
10039Assume that the following source code has been placed in the file
10040@file{charset-test.c}:
10041
10042@smallexample
10043#include <stdio.h>
10044
10045char ascii_hello[]
10046 = @{72, 101, 108, 108, 111, 44, 32, 119,
10047 111, 114, 108, 100, 33, 10, 0@};
10048char ibm1047_hello[]
10049 = @{200, 133, 147, 147, 150, 107, 64, 166,
10050 150, 153, 147, 132, 90, 37, 0@};
10051
10052main ()
10053@{
10054 printf ("Hello, world!\n");
10055@}
10998722 10056@end smallexample
a0eb71c5
KB
10057
10058In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
10059containing the string @samp{Hello, world!} followed by a newline,
10060encoded in the @sc{ascii} and @sc{ibm1047} character sets.
10061
10062We compile the program, and invoke the debugger on it:
10063
10064@smallexample
10065$ gcc -g charset-test.c -o charset-test
10066$ gdb -nw charset-test
10067GNU gdb 2001-12-19-cvs
10068Copyright 2001 Free Software Foundation, Inc.
10069@dots{}
f7dc1244 10070(@value{GDBP})
10998722 10071@end smallexample
a0eb71c5
KB
10072
10073We can use the @code{show charset} command to see what character sets
10074@value{GDBN} is currently using to interpret and display characters and
10075strings:
10076
10077@smallexample
f7dc1244 10078(@value{GDBP}) show charset
e33d66ec 10079The current host and target character set is `ISO-8859-1'.
f7dc1244 10080(@value{GDBP})
10998722 10081@end smallexample
a0eb71c5
KB
10082
10083For the sake of printing this manual, let's use @sc{ascii} as our
10084initial character set:
10085@smallexample
f7dc1244
EZ
10086(@value{GDBP}) set charset ASCII
10087(@value{GDBP}) show charset
e33d66ec 10088The current host and target character set is `ASCII'.
f7dc1244 10089(@value{GDBP})
10998722 10090@end smallexample
a0eb71c5
KB
10091
10092Let's assume that @sc{ascii} is indeed the correct character set for our
10093host system --- in other words, let's assume that if @value{GDBN} prints
10094characters using the @sc{ascii} character set, our terminal will display
10095them properly. Since our current target character set is also
10096@sc{ascii}, the contents of @code{ascii_hello} print legibly:
10097
10098@smallexample
f7dc1244 10099(@value{GDBP}) print ascii_hello
a0eb71c5 10100$1 = 0x401698 "Hello, world!\n"
f7dc1244 10101(@value{GDBP}) print ascii_hello[0]
a0eb71c5 10102$2 = 72 'H'
f7dc1244 10103(@value{GDBP})
10998722 10104@end smallexample
a0eb71c5
KB
10105
10106@value{GDBN} uses the target character set for character and string
10107literals you use in expressions:
10108
10109@smallexample
f7dc1244 10110(@value{GDBP}) print '+'
a0eb71c5 10111$3 = 43 '+'
f7dc1244 10112(@value{GDBP})
10998722 10113@end smallexample
a0eb71c5
KB
10114
10115The @sc{ascii} character set uses the number 43 to encode the @samp{+}
10116character.
10117
10118@value{GDBN} relies on the user to tell it which character set the
10119target program uses. If we print @code{ibm1047_hello} while our target
10120character set is still @sc{ascii}, we get jibberish:
10121
10122@smallexample
f7dc1244 10123(@value{GDBP}) print ibm1047_hello
a0eb71c5 10124$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
f7dc1244 10125(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 10126$5 = 200 '\310'
f7dc1244 10127(@value{GDBP})
10998722 10128@end smallexample
a0eb71c5 10129
e33d66ec 10130If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
a0eb71c5
KB
10131@value{GDBN} tells us the character sets it supports:
10132
10133@smallexample
f7dc1244 10134(@value{GDBP}) set target-charset
b383017d 10135ASCII EBCDIC-US IBM1047 ISO-8859-1
f7dc1244 10136(@value{GDBP}) set target-charset
10998722 10137@end smallexample
a0eb71c5
KB
10138
10139We can select @sc{ibm1047} as our target character set, and examine the
10140program's strings again. Now the @sc{ascii} string is wrong, but
10141@value{GDBN} translates the contents of @code{ibm1047_hello} from the
10142target character set, @sc{ibm1047}, to the host character set,
10143@sc{ascii}, and they display correctly:
10144
10145@smallexample
f7dc1244
EZ
10146(@value{GDBP}) set target-charset IBM1047
10147(@value{GDBP}) show charset
e33d66ec
EZ
10148The current host character set is `ASCII'.
10149The current target character set is `IBM1047'.
f7dc1244 10150(@value{GDBP}) print ascii_hello
a0eb71c5 10151$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
f7dc1244 10152(@value{GDBP}) print ascii_hello[0]
a0eb71c5 10153$7 = 72 '\110'
f7dc1244 10154(@value{GDBP}) print ibm1047_hello
a0eb71c5 10155$8 = 0x4016a8 "Hello, world!\n"
f7dc1244 10156(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 10157$9 = 200 'H'
f7dc1244 10158(@value{GDBP})
10998722 10159@end smallexample
a0eb71c5
KB
10160
10161As above, @value{GDBN} uses the target character set for character and
10162string literals you use in expressions:
10163
10164@smallexample
f7dc1244 10165(@value{GDBP}) print '+'
a0eb71c5 10166$10 = 78 '+'
f7dc1244 10167(@value{GDBP})
10998722 10168@end smallexample
a0eb71c5 10169
e33d66ec 10170The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
a0eb71c5
KB
10171character.
10172
09d4efe1
EZ
10173@node Caching Remote Data
10174@section Caching Data of Remote Targets
10175@cindex caching data of remote targets
10176
4e5d721f 10177@value{GDBN} caches data exchanged between the debugger and a
ea35711c 10178remote target (@pxref{Remote Debugging}). Such caching generally improves
09d4efe1 10179performance, because it reduces the overhead of the remote protocol by
4e5d721f
DE
10180bundling memory reads and writes into large chunks. Unfortunately, simply
10181caching everything would lead to incorrect results, since @value{GDBN}
10182does not necessarily know anything about volatile values, memory-mapped I/O
29b090c0
DE
10183addresses, etc. Furthermore, in non-stop mode (@pxref{Non-Stop Mode})
10184memory can be changed @emph{while} a gdb command is executing.
10185Therefore, by default, @value{GDBN} only caches data
10186known to be on the stack@footnote{In non-stop mode, it is moderately
10187rare for a running thread to modify the stack of a stopped thread
10188in a way that would interfere with a backtrace, and caching of
10189stack reads provides a significant speed up of remote backtraces.}.
10190Other regions of memory can be explicitly marked as
4e5d721f 10191cacheable; see @pxref{Memory Region Attributes}.
09d4efe1
EZ
10192
10193@table @code
10194@kindex set remotecache
10195@item set remotecache on
10196@itemx set remotecache off
4e5d721f
DE
10197This option no longer does anything; it exists for compatibility
10198with old scripts.
09d4efe1
EZ
10199
10200@kindex show remotecache
10201@item show remotecache
4e5d721f
DE
10202Show the current state of the obsolete remotecache flag.
10203
10204@kindex set stack-cache
10205@item set stack-cache on
10206@itemx set stack-cache off
10207Enable or disable caching of stack accesses. When @code{ON}, use
10208caching. By default, this option is @code{ON}.
10209
10210@kindex show stack-cache
10211@item show stack-cache
10212Show the current state of data caching for memory accesses.
09d4efe1
EZ
10213
10214@kindex info dcache
4e5d721f 10215@item info dcache @r{[}line@r{]}
09d4efe1 10216Print the information about the data cache performance. The
4e5d721f
DE
10217information displayed includes the dcache width and depth, and for
10218each cache line, its number, address, and how many times it was
10219referenced. This command is useful for debugging the data cache
10220operation.
10221
10222If a line number is specified, the contents of that line will be
10223printed in hex.
1a532630
PP
10224
10225@item set dcache size @var{size}
10226@cindex dcache size
10227@kindex set dcache size
10228Set maximum number of entries in dcache (dcache depth above).
10229
10230@item set dcache line-size @var{line-size}
10231@cindex dcache line-size
10232@kindex set dcache line-size
10233Set number of bytes each dcache entry caches (dcache width above).
10234Must be a power of 2.
10235
10236@item show dcache size
10237@kindex show dcache size
10238Show maximum number of dcache entries. See also @ref{Caching Remote Data, info dcache}.
10239
10240@item show dcache line-size
10241@kindex show dcache line-size
10242Show default size of dcache lines. See also @ref{Caching Remote Data, info dcache}.
10243
09d4efe1
EZ
10244@end table
10245
08388c79
DE
10246@node Searching Memory
10247@section Search Memory
10248@cindex searching memory
10249
10250Memory can be searched for a particular sequence of bytes with the
10251@code{find} command.
10252
10253@table @code
10254@kindex find
10255@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
10256@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
10257Search memory for the sequence of bytes specified by @var{val1}, @var{val2},
10258etc. The search begins at address @var{start_addr} and continues for either
10259@var{len} bytes or through to @var{end_addr} inclusive.
10260@end table
10261
10262@var{s} and @var{n} are optional parameters.
10263They may be specified in either order, apart or together.
10264
10265@table @r
10266@item @var{s}, search query size
10267The size of each search query value.
10268
10269@table @code
10270@item b
10271bytes
10272@item h
10273halfwords (two bytes)
10274@item w
10275words (four bytes)
10276@item g
10277giant words (eight bytes)
10278@end table
10279
10280All values are interpreted in the current language.
10281This means, for example, that if the current source language is C/C@t{++}
10282then searching for the string ``hello'' includes the trailing '\0'.
10283
10284If the value size is not specified, it is taken from the
10285value's type in the current language.
10286This is useful when one wants to specify the search
10287pattern as a mixture of types.
10288Note that this means, for example, that in the case of C-like languages
10289a search for an untyped 0x42 will search for @samp{(int) 0x42}
10290which is typically four bytes.
10291
10292@item @var{n}, maximum number of finds
10293The maximum number of matches to print. The default is to print all finds.
10294@end table
10295
10296You can use strings as search values. Quote them with double-quotes
10297 (@code{"}).
10298The string value is copied into the search pattern byte by byte,
10299regardless of the endianness of the target and the size specification.
10300
10301The address of each match found is printed as well as a count of the
10302number of matches found.
10303
10304The address of the last value found is stored in convenience variable
10305@samp{$_}.
10306A count of the number of matches is stored in @samp{$numfound}.
10307
10308For example, if stopped at the @code{printf} in this function:
10309
10310@smallexample
10311void
10312hello ()
10313@{
10314 static char hello[] = "hello-hello";
10315 static struct @{ char c; short s; int i; @}
10316 __attribute__ ((packed)) mixed
10317 = @{ 'c', 0x1234, 0x87654321 @};
10318 printf ("%s\n", hello);
10319@}
10320@end smallexample
10321
10322@noindent
10323you get during debugging:
10324
10325@smallexample
10326(gdb) find &hello[0], +sizeof(hello), "hello"
103270x804956d <hello.1620+6>
103281 pattern found
10329(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o'
103300x8049567 <hello.1620>
103310x804956d <hello.1620+6>
103322 patterns found
10333(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l'
103340x8049567 <hello.1620>
103351 pattern found
10336(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
103370x8049560 <mixed.1625>
103381 pattern found
10339(gdb) print $numfound
10340$1 = 1
10341(gdb) print $_
10342$2 = (void *) 0x8049560
10343@end smallexample
a0eb71c5 10344
edb3359d
DJ
10345@node Optimized Code
10346@chapter Debugging Optimized Code
10347@cindex optimized code, debugging
10348@cindex debugging optimized code
10349
10350Almost all compilers support optimization. With optimization
10351disabled, the compiler generates assembly code that corresponds
10352directly to your source code, in a simplistic way. As the compiler
10353applies more powerful optimizations, the generated assembly code
10354diverges from your original source code. With help from debugging
10355information generated by the compiler, @value{GDBN} can map from
10356the running program back to constructs from your original source.
10357
10358@value{GDBN} is more accurate with optimization disabled. If you
10359can recompile without optimization, it is easier to follow the
10360progress of your program during debugging. But, there are many cases
10361where you may need to debug an optimized version.
10362
10363When you debug a program compiled with @samp{-g -O}, remember that the
10364optimizer has rearranged your code; the debugger shows you what is
10365really there. Do not be too surprised when the execution path does not
10366exactly match your source file! An extreme example: if you define a
10367variable, but never use it, @value{GDBN} never sees that
10368variable---because the compiler optimizes it out of existence.
10369
10370Some things do not work as well with @samp{-g -O} as with just
10371@samp{-g}, particularly on machines with instruction scheduling. If in
10372doubt, recompile with @samp{-g} alone, and if this fixes the problem,
10373please report it to us as a bug (including a test case!).
10374@xref{Variables}, for more information about debugging optimized code.
10375
10376@menu
10377* Inline Functions:: How @value{GDBN} presents inlining
111c6489 10378* Tail Call Frames:: @value{GDBN} analysis of jumps to functions
edb3359d
DJ
10379@end menu
10380
10381@node Inline Functions
10382@section Inline Functions
10383@cindex inline functions, debugging
10384
10385@dfn{Inlining} is an optimization that inserts a copy of the function
10386body directly at each call site, instead of jumping to a shared
10387routine. @value{GDBN} displays inlined functions just like
10388non-inlined functions. They appear in backtraces. You can view their
10389arguments and local variables, step into them with @code{step}, skip
10390them with @code{next}, and escape from them with @code{finish}.
10391You can check whether a function was inlined by using the
10392@code{info frame} command.
10393
10394For @value{GDBN} to support inlined functions, the compiler must
10395record information about inlining in the debug information ---
10396@value{NGCC} using the @sc{dwarf 2} format does this, and several
10397other compilers do also. @value{GDBN} only supports inlined functions
10398when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1
10399do not emit two required attributes (@samp{DW_AT_call_file} and
10400@samp{DW_AT_call_line}); @value{GDBN} does not display inlined
10401function calls with earlier versions of @value{NGCC}. It instead
10402displays the arguments and local variables of inlined functions as
10403local variables in the caller.
10404
10405The body of an inlined function is directly included at its call site;
10406unlike a non-inlined function, there are no instructions devoted to
10407the call. @value{GDBN} still pretends that the call site and the
10408start of the inlined function are different instructions. Stepping to
10409the call site shows the call site, and then stepping again shows
10410the first line of the inlined function, even though no additional
10411instructions are executed.
10412
10413This makes source-level debugging much clearer; you can see both the
10414context of the call and then the effect of the call. Only stepping by
10415a single instruction using @code{stepi} or @code{nexti} does not do
10416this; single instruction steps always show the inlined body.
10417
10418There are some ways that @value{GDBN} does not pretend that inlined
10419function calls are the same as normal calls:
10420
10421@itemize @bullet
edb3359d
DJ
10422@item
10423Setting breakpoints at the call site of an inlined function may not
10424work, because the call site does not contain any code. @value{GDBN}
10425may incorrectly move the breakpoint to the next line of the enclosing
10426function, after the call. This limitation will be removed in a future
10427version of @value{GDBN}; until then, set a breakpoint on an earlier line
10428or inside the inlined function instead.
10429
10430@item
10431@value{GDBN} cannot locate the return value of inlined calls after
10432using the @code{finish} command. This is a limitation of compiler-generated
10433debugging information; after @code{finish}, you can step to the next line
10434and print a variable where your program stored the return value.
10435
10436@end itemize
10437
111c6489
JK
10438@node Tail Call Frames
10439@section Tail Call Frames
10440@cindex tail call frames, debugging
10441
10442Function @code{B} can call function @code{C} in its very last statement. In
10443unoptimized compilation the call of @code{C} is immediately followed by return
10444instruction at the end of @code{B} code. Optimizing compiler may replace the
10445call and return in function @code{B} into one jump to function @code{C}
10446instead. Such use of a jump instruction is called @dfn{tail call}.
10447
10448During execution of function @code{C}, there will be no indication in the
10449function call stack frames that it was tail-called from @code{B}. If function
10450@code{A} regularly calls function @code{B} which tail-calls function @code{C},
10451then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in
10452some cases @value{GDBN} can determine that @code{C} was tail-called from
10453@code{B}, and it will then create fictitious call frame for that, with the
10454return address set up as if @code{B} called @code{C} normally.
10455
10456This functionality is currently supported only by DWARF 2 debugging format and
10457the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With
10458@value{NGCC}, you need to specify @option{-O -g} during compilation, to get
10459this information.
10460
10461@kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame
10462kind by text @code{tail call frame} such as in this sample @value{GDBN} output:
10463
10464@smallexample
10465(gdb) x/i $pc - 2
10466 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)>
10467(gdb) info frame
10468Stack level 1, frame at 0x7fffffffda30:
10469 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5
10470 tail call frame, caller of frame at 0x7fffffffda30
10471 source language c++.
10472 Arglist at unknown address.
10473 Locals at unknown address, Previous frame's sp is 0x7fffffffda30
10474@end smallexample
10475
10476The detection of all the possible code path executions can find them ambiguous.
10477There is no execution history stored (possible @ref{Reverse Execution} is never
10478used for this purpose) and the last known caller could have reached the known
10479callee by multiple different jump sequences. In such case @value{GDBN} still
10480tries to show at least all the unambiguous top tail callers and all the
10481unambiguous bottom tail calees, if any.
10482
10483@table @code
e18b2753 10484@anchor{set debug entry-values}
111c6489
JK
10485@item set debug entry-values
10486@kindex set debug entry-values
10487When set to on, enables printing of analysis messages for both frame argument
10488values at function entry and tail calls. It will show all the possible valid
10489tail calls code paths it has considered. It will also print the intersection
10490of them with the final unambiguous (possibly partial or even empty) code path
10491result.
10492
10493@item show debug entry-values
10494@kindex show debug entry-values
10495Show the current state of analysis messages printing for both frame argument
10496values at function entry and tail calls.
10497@end table
10498
10499The analysis messages for tail calls can for example show why the virtual tail
10500call frame for function @code{c} has not been recognized (due to the indirect
10501reference by variable @code{x}):
10502
10503@smallexample
10504static void __attribute__((noinline, noclone)) c (void);
10505void (*x) (void) = c;
10506static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
10507static void __attribute__((noinline, noclone)) c (void) @{ a (); @}
10508int main (void) @{ x (); return 0; @}
10509
10510Breakpoint 1, DW_OP_GNU_entry_value resolving cannot find
10511DW_TAG_GNU_call_site 0x40039a in main
10512a () at t.c:3
105133 static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
10514(gdb) bt
10515#0 a () at t.c:3
10516#1 0x000000000040039a in main () at t.c:5
10517@end smallexample
10518
10519Another possibility is an ambiguous virtual tail call frames resolution:
10520
10521@smallexample
10522int i;
10523static void __attribute__((noinline, noclone)) f (void) @{ i++; @}
10524static void __attribute__((noinline, noclone)) e (void) @{ f (); @}
10525static void __attribute__((noinline, noclone)) d (void) @{ f (); @}
10526static void __attribute__((noinline, noclone)) c (void) @{ d (); @}
10527static void __attribute__((noinline, noclone)) b (void)
10528@{ if (i) c (); else e (); @}
10529static void __attribute__((noinline, noclone)) a (void) @{ b (); @}
10530int main (void) @{ a (); return 0; @}
10531
10532tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d)
10533tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e)
10534tailcall: reduced: 0x4004d2(a) |
10535(gdb) bt
10536#0 f () at t.c:2
10537#1 0x00000000004004d2 in a () at t.c:8
10538#2 0x0000000000400395 in main () at t.c:9
10539@end smallexample
10540
5048e516
JK
10541@set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f}
10542@set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f}
10543
10544@c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK.
10545@ifset HAVE_MAKEINFO_CLICK
10546@set ARROW @click{}
10547@set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}}
10548@set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}}
10549@end ifset
10550@ifclear HAVE_MAKEINFO_CLICK
10551@set ARROW ->
10552@set CALLSEQ1B @value{CALLSEQ1A}
10553@set CALLSEQ2B @value{CALLSEQ2A}
10554@end ifclear
10555
10556Frames #0 and #2 are real, #1 is a virtual tail call frame.
10557The code can have possible execution paths @value{CALLSEQ1B} or
10558@value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state.
111c6489
JK
10559
10560@code{initial:} state shows some random possible calling sequence @value{GDBN}
10561has found. It then finds another possible calling sequcen - that one is
10562prefixed by @code{compare:}. The non-ambiguous intersection of these two is
10563printed as the @code{reduced:} calling sequence. That one could have many
10564futher @code{compare:} and @code{reduced:} statements as long as there remain
10565any non-ambiguous sequence entries.
10566
10567For the frame of function @code{b} in both cases there are different possible
10568@code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is
10569also ambigous. The only non-ambiguous frame is the one for function @code{a},
10570therefore this one is displayed to the user while the ambiguous frames are
10571omitted.
edb3359d 10572
e18b2753
JK
10573There can be also reasons why printing of frame argument values at function
10574entry may fail:
10575
10576@smallexample
10577int v;
10578static void __attribute__((noinline, noclone)) c (int i) @{ v++; @}
10579static void __attribute__((noinline, noclone)) a (int i);
10580static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @}
10581static void __attribute__((noinline, noclone)) a (int i)
10582@{ if (i) b (i - 1); else c (0); @}
10583int main (void) @{ a (5); return 0; @}
10584
10585(gdb) bt
10586#0 c (i=i@@entry=0) at t.c:2
10587#1 0x0000000000400428 in a (DW_OP_GNU_entry_value resolving has found
10588function "a" at 0x400420 can call itself via tail calls
10589i=<optimized out>) at t.c:6
10590#2 0x000000000040036e in main () at t.c:7
10591@end smallexample
10592
10593@value{GDBN} cannot find out from the inferior state if and how many times did
10594function @code{a} call itself (via function @code{b}) as these calls would be
10595tail calls. Such tail calls would modify thue @code{i} variable, therefore
10596@value{GDBN} cannot be sure the value it knows would be right - @value{GDBN}
10597prints @code{<optimized out>} instead.
10598
e2e0bcd1
JB
10599@node Macros
10600@chapter C Preprocessor Macros
10601
49efadf5 10602Some languages, such as C and C@t{++}, provide a way to define and invoke
e2e0bcd1
JB
10603``preprocessor macros'' which expand into strings of tokens.
10604@value{GDBN} can evaluate expressions containing macro invocations, show
10605the result of macro expansion, and show a macro's definition, including
10606where it was defined.
10607
10608You may need to compile your program specially to provide @value{GDBN}
10609with information about preprocessor macros. Most compilers do not
10610include macros in their debugging information, even when you compile
10611with the @option{-g} flag. @xref{Compilation}.
10612
10613A program may define a macro at one point, remove that definition later,
10614and then provide a different definition after that. Thus, at different
10615points in the program, a macro may have different definitions, or have
10616no definition at all. If there is a current stack frame, @value{GDBN}
10617uses the macros in scope at that frame's source code line. Otherwise,
10618@value{GDBN} uses the macros in scope at the current listing location;
10619see @ref{List}.
10620
e2e0bcd1
JB
10621Whenever @value{GDBN} evaluates an expression, it always expands any
10622macro invocations present in the expression. @value{GDBN} also provides
10623the following commands for working with macros explicitly.
10624
10625@table @code
10626
10627@kindex macro expand
10628@cindex macro expansion, showing the results of preprocessor
10629@cindex preprocessor macro expansion, showing the results of
10630@cindex expanding preprocessor macros
10631@item macro expand @var{expression}
10632@itemx macro exp @var{expression}
10633Show the results of expanding all preprocessor macro invocations in
10634@var{expression}. Since @value{GDBN} simply expands macros, but does
10635not parse the result, @var{expression} need not be a valid expression;
10636it can be any string of tokens.
10637
09d4efe1 10638@kindex macro exp1
e2e0bcd1
JB
10639@item macro expand-once @var{expression}
10640@itemx macro exp1 @var{expression}
4644b6e3 10641@cindex expand macro once
e2e0bcd1
JB
10642@i{(This command is not yet implemented.)} Show the results of
10643expanding those preprocessor macro invocations that appear explicitly in
10644@var{expression}. Macro invocations appearing in that expansion are
10645left unchanged. This command allows you to see the effect of a
10646particular macro more clearly, without being confused by further
10647expansions. Since @value{GDBN} simply expands macros, but does not
10648parse the result, @var{expression} need not be a valid expression; it
10649can be any string of tokens.
10650
475b0867 10651@kindex info macro
e2e0bcd1 10652@cindex macro definition, showing
9b158ba0 10653@cindex definition of a macro, showing
10654@cindex macros, from debug info
71eba9c2 10655@item info macro [-a|-all] [--] @var{macro}
10656Show the current definition or all definitions of the named @var{macro},
10657and describe the source location or compiler command-line where that
10658definition was established. The optional double dash is to signify the end of
10659argument processing and the beginning of @var{macro} for non C-like macros where
10660the macro may begin with a hyphen.
e2e0bcd1 10661
9b158ba0 10662@kindex info macros
10663@item info macros @var{linespec}
10664Show all macro definitions that are in effect at the location specified
10665by @var{linespec}, and describe the source location or compiler
10666command-line where those definitions were established.
10667
e2e0bcd1
JB
10668@kindex macro define
10669@cindex user-defined macros
10670@cindex defining macros interactively
10671@cindex macros, user-defined
10672@item macro define @var{macro} @var{replacement-list}
10673@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
d7d9f01e
TT
10674Introduce a definition for a preprocessor macro named @var{macro},
10675invocations of which are replaced by the tokens given in
10676@var{replacement-list}. The first form of this command defines an
10677``object-like'' macro, which takes no arguments; the second form
10678defines a ``function-like'' macro, which takes the arguments given in
10679@var{arglist}.
10680
10681A definition introduced by this command is in scope in every
10682expression evaluated in @value{GDBN}, until it is removed with the
10683@code{macro undef} command, described below. The definition overrides
10684all definitions for @var{macro} present in the program being debugged,
10685as well as any previous user-supplied definition.
e2e0bcd1
JB
10686
10687@kindex macro undef
10688@item macro undef @var{macro}
d7d9f01e
TT
10689Remove any user-supplied definition for the macro named @var{macro}.
10690This command only affects definitions provided with the @code{macro
10691define} command, described above; it cannot remove definitions present
10692in the program being debugged.
e2e0bcd1 10693
09d4efe1
EZ
10694@kindex macro list
10695@item macro list
d7d9f01e 10696List all the macros defined using the @code{macro define} command.
e2e0bcd1
JB
10697@end table
10698
10699@cindex macros, example of debugging with
10700Here is a transcript showing the above commands in action. First, we
10701show our source files:
10702
10703@smallexample
10704$ cat sample.c
10705#include <stdio.h>
10706#include "sample.h"
10707
10708#define M 42
10709#define ADD(x) (M + x)
10710
10711main ()
10712@{
10713#define N 28
10714 printf ("Hello, world!\n");
10715#undef N
10716 printf ("We're so creative.\n");
10717#define N 1729
10718 printf ("Goodbye, world!\n");
10719@}
10720$ cat sample.h
10721#define Q <
10722$
10723@end smallexample
10724
e0f8f636
TT
10725Now, we compile the program using the @sc{gnu} C compiler,
10726@value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the
10727minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3}
10728and @option{-gdwarf-4}; we recommend always choosing the most recent
10729version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler
10730includes information about preprocessor macros in the debugging
e2e0bcd1
JB
10731information.
10732
10733@smallexample
10734$ gcc -gdwarf-2 -g3 sample.c -o sample
10735$
10736@end smallexample
10737
10738Now, we start @value{GDBN} on our sample program:
10739
10740@smallexample
10741$ gdb -nw sample
10742GNU gdb 2002-05-06-cvs
10743Copyright 2002 Free Software Foundation, Inc.
10744GDB is free software, @dots{}
f7dc1244 10745(@value{GDBP})
e2e0bcd1
JB
10746@end smallexample
10747
10748We can expand macros and examine their definitions, even when the
10749program is not running. @value{GDBN} uses the current listing position
10750to decide which macro definitions are in scope:
10751
10752@smallexample
f7dc1244 10753(@value{GDBP}) list main
e2e0bcd1
JB
107543
107554 #define M 42
107565 #define ADD(x) (M + x)
107576
107587 main ()
107598 @{
107609 #define N 28
1076110 printf ("Hello, world!\n");
1076211 #undef N
1076312 printf ("We're so creative.\n");
f7dc1244 10764(@value{GDBP}) info macro ADD
e2e0bcd1
JB
10765Defined at /home/jimb/gdb/macros/play/sample.c:5
10766#define ADD(x) (M + x)
f7dc1244 10767(@value{GDBP}) info macro Q
e2e0bcd1
JB
10768Defined at /home/jimb/gdb/macros/play/sample.h:1
10769 included at /home/jimb/gdb/macros/play/sample.c:2
10770#define Q <
f7dc1244 10771(@value{GDBP}) macro expand ADD(1)
e2e0bcd1 10772expands to: (42 + 1)
f7dc1244 10773(@value{GDBP}) macro expand-once ADD(1)
e2e0bcd1 10774expands to: once (M + 1)
f7dc1244 10775(@value{GDBP})
e2e0bcd1
JB
10776@end smallexample
10777
d7d9f01e 10778In the example above, note that @code{macro expand-once} expands only
e2e0bcd1
JB
10779the macro invocation explicit in the original text --- the invocation of
10780@code{ADD} --- but does not expand the invocation of the macro @code{M},
10781which was introduced by @code{ADD}.
10782
3f94c067
BW
10783Once the program is running, @value{GDBN} uses the macro definitions in
10784force at the source line of the current stack frame:
e2e0bcd1
JB
10785
10786@smallexample
f7dc1244 10787(@value{GDBP}) break main
e2e0bcd1 10788Breakpoint 1 at 0x8048370: file sample.c, line 10.
f7dc1244 10789(@value{GDBP}) run
b383017d 10790Starting program: /home/jimb/gdb/macros/play/sample
e2e0bcd1
JB
10791
10792Breakpoint 1, main () at sample.c:10
1079310 printf ("Hello, world!\n");
f7dc1244 10794(@value{GDBP})
e2e0bcd1
JB
10795@end smallexample
10796
10797At line 10, the definition of the macro @code{N} at line 9 is in force:
10798
10799@smallexample
f7dc1244 10800(@value{GDBP}) info macro N
e2e0bcd1
JB
10801Defined at /home/jimb/gdb/macros/play/sample.c:9
10802#define N 28
f7dc1244 10803(@value{GDBP}) macro expand N Q M
e2e0bcd1 10804expands to: 28 < 42
f7dc1244 10805(@value{GDBP}) print N Q M
e2e0bcd1 10806$1 = 1
f7dc1244 10807(@value{GDBP})
e2e0bcd1
JB
10808@end smallexample
10809
10810As we step over directives that remove @code{N}'s definition, and then
10811give it a new definition, @value{GDBN} finds the definition (or lack
10812thereof) in force at each point:
10813
10814@smallexample
f7dc1244 10815(@value{GDBP}) next
e2e0bcd1
JB
10816Hello, world!
1081712 printf ("We're so creative.\n");
f7dc1244 10818(@value{GDBP}) info macro N
e2e0bcd1
JB
10819The symbol `N' has no definition as a C/C++ preprocessor macro
10820at /home/jimb/gdb/macros/play/sample.c:12
f7dc1244 10821(@value{GDBP}) next
e2e0bcd1
JB
10822We're so creative.
1082314 printf ("Goodbye, world!\n");
f7dc1244 10824(@value{GDBP}) info macro N
e2e0bcd1
JB
10825Defined at /home/jimb/gdb/macros/play/sample.c:13
10826#define N 1729
f7dc1244 10827(@value{GDBP}) macro expand N Q M
e2e0bcd1 10828expands to: 1729 < 42
f7dc1244 10829(@value{GDBP}) print N Q M
e2e0bcd1 10830$2 = 0
f7dc1244 10831(@value{GDBP})
e2e0bcd1
JB
10832@end smallexample
10833
484086b7
JK
10834In addition to source files, macros can be defined on the compilation command
10835line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in
10836such a way, @value{GDBN} displays the location of their definition as line zero
10837of the source file submitted to the compiler.
10838
10839@smallexample
10840(@value{GDBP}) info macro __STDC__
10841Defined at /home/jimb/gdb/macros/play/sample.c:0
10842-D__STDC__=1
10843(@value{GDBP})
10844@end smallexample
10845
e2e0bcd1 10846
b37052ae
EZ
10847@node Tracepoints
10848@chapter Tracepoints
10849@c This chapter is based on the documentation written by Michael
10850@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
10851
10852@cindex tracepoints
10853In some applications, it is not feasible for the debugger to interrupt
10854the program's execution long enough for the developer to learn
10855anything helpful about its behavior. If the program's correctness
10856depends on its real-time behavior, delays introduced by a debugger
10857might cause the program to change its behavior drastically, or perhaps
10858fail, even when the code itself is correct. It is useful to be able
10859to observe the program's behavior without interrupting it.
10860
10861Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
10862specify locations in the program, called @dfn{tracepoints}, and
10863arbitrary expressions to evaluate when those tracepoints are reached.
10864Later, using the @code{tfind} command, you can examine the values
10865those expressions had when the program hit the tracepoints. The
10866expressions may also denote objects in memory---structures or arrays,
10867for example---whose values @value{GDBN} should record; while visiting
10868a particular tracepoint, you may inspect those objects as if they were
10869in memory at that moment. However, because @value{GDBN} records these
10870values without interacting with you, it can do so quickly and
10871unobtrusively, hopefully not disturbing the program's behavior.
10872
10873The tracepoint facility is currently available only for remote
9d29849a
JB
10874targets. @xref{Targets}. In addition, your remote target must know
10875how to collect trace data. This functionality is implemented in the
10876remote stub; however, none of the stubs distributed with @value{GDBN}
10877support tracepoints as of this writing. The format of the remote
10878packets used to implement tracepoints are described in @ref{Tracepoint
10879Packets}.
b37052ae 10880
00bf0b85
SS
10881It is also possible to get trace data from a file, in a manner reminiscent
10882of corefiles; you specify the filename, and use @code{tfind} to search
10883through the file. @xref{Trace Files}, for more details.
10884
b37052ae
EZ
10885This chapter describes the tracepoint commands and features.
10886
10887@menu
b383017d
RM
10888* Set Tracepoints::
10889* Analyze Collected Data::
10890* Tracepoint Variables::
00bf0b85 10891* Trace Files::
b37052ae
EZ
10892@end menu
10893
10894@node Set Tracepoints
10895@section Commands to Set Tracepoints
10896
10897Before running such a @dfn{trace experiment}, an arbitrary number of
1042e4c0
SS
10898tracepoints can be set. A tracepoint is actually a special type of
10899breakpoint (@pxref{Set Breaks}), so you can manipulate it using
10900standard breakpoint commands. For instance, as with breakpoints,
10901tracepoint numbers are successive integers starting from one, and many
10902of the commands associated with tracepoints take the tracepoint number
10903as their argument, to identify which tracepoint to work on.
b37052ae
EZ
10904
10905For each tracepoint, you can specify, in advance, some arbitrary set
10906of data that you want the target to collect in the trace buffer when
10907it hits that tracepoint. The collected data can include registers,
10908local variables, or global data. Later, you can use @value{GDBN}
10909commands to examine the values these data had at the time the
10910tracepoint was hit.
10911
7d13fe92
SS
10912Tracepoints do not support every breakpoint feature. Ignore counts on
10913tracepoints have no effect, and tracepoints cannot run @value{GDBN}
10914commands when they are hit. Tracepoints may not be thread-specific
10915either.
1042e4c0 10916
7a697b8d
SS
10917@cindex fast tracepoints
10918Some targets may support @dfn{fast tracepoints}, which are inserted in
10919a different way (such as with a jump instead of a trap), that is
10920faster but possibly restricted in where they may be installed.
10921
0fb4aa4b
PA
10922@cindex static tracepoints
10923@cindex markers, static tracepoints
10924@cindex probing markers, static tracepoints
10925Regular and fast tracepoints are dynamic tracing facilities, meaning
10926that they can be used to insert tracepoints at (almost) any location
10927in the target. Some targets may also support controlling @dfn{static
10928tracepoints} from @value{GDBN}. With static tracing, a set of
10929instrumentation points, also known as @dfn{markers}, are embedded in
10930the target program, and can be activated or deactivated by name or
10931address. These are usually placed at locations which facilitate
10932investigating what the target is actually doing. @value{GDBN}'s
10933support for static tracing includes being able to list instrumentation
10934points, and attach them with @value{GDBN} defined high level
10935tracepoints that expose the whole range of convenience of
8786b2bd 10936@value{GDBN}'s tracepoints support. Namely, support for collecting
0fb4aa4b
PA
10937registers values and values of global or local (to the instrumentation
10938point) variables; tracepoint conditions and trace state variables.
10939The act of installing a @value{GDBN} static tracepoint on an
10940instrumentation point, or marker, is referred to as @dfn{probing} a
10941static tracepoint marker.
10942
fa593d66
PA
10943@code{gdbserver} supports tracepoints on some target systems.
10944@xref{Server,,Tracepoints support in @code{gdbserver}}.
10945
b37052ae
EZ
10946This section describes commands to set tracepoints and associated
10947conditions and actions.
10948
10949@menu
b383017d
RM
10950* Create and Delete Tracepoints::
10951* Enable and Disable Tracepoints::
10952* Tracepoint Passcounts::
782b2b07 10953* Tracepoint Conditions::
f61e138d 10954* Trace State Variables::
b383017d
RM
10955* Tracepoint Actions::
10956* Listing Tracepoints::
0fb4aa4b 10957* Listing Static Tracepoint Markers::
79a6e687 10958* Starting and Stopping Trace Experiments::
c9429232 10959* Tracepoint Restrictions::
b37052ae
EZ
10960@end menu
10961
10962@node Create and Delete Tracepoints
10963@subsection Create and Delete Tracepoints
10964
10965@table @code
10966@cindex set tracepoint
10967@kindex trace
1042e4c0 10968@item trace @var{location}
b37052ae 10969The @code{trace} command is very similar to the @code{break} command.
1042e4c0
SS
10970Its argument @var{location} can be a source line, a function name, or
10971an address in the target program. @xref{Specify Location}. The
10972@code{trace} command defines a tracepoint, which is a point in the
10973target program where the debugger will briefly stop, collect some
10974data, and then allow the program to continue. Setting a tracepoint or
1e4d1764
YQ
10975changing its actions takes effect immediately if the remote stub
10976supports the @samp{InstallInTrace} feature (@pxref{install tracepoint
10977in tracing}).
10978If remote stub doesn't support the @samp{InstallInTrace} feature, all
10979these changes don't take effect until the next @code{tstart}
1042e4c0 10980command, and once a trace experiment is running, further changes will
bfccc43c
YQ
10981not have any effect until the next trace experiment starts. In addition,
10982@value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose
10983address is not yet resolved. (This is similar to pending breakpoints.)
10984Pending tracepoints are not downloaded to the target and not installed
10985until they are resolved. The resolution of pending tracepoints requires
10986@value{GDBN} support---when debugging with the remote target, and
10987@value{GDBN} disconnects from the remote stub (@pxref{disconnected
10988tracing}), pending tracepoints can not be resolved (and downloaded to
10989the remote stub) while @value{GDBN} is disconnected.
b37052ae
EZ
10990
10991Here are some examples of using the @code{trace} command:
10992
10993@smallexample
10994(@value{GDBP}) @b{trace foo.c:121} // a source file and line number
10995
10996(@value{GDBP}) @b{trace +2} // 2 lines forward
10997
10998(@value{GDBP}) @b{trace my_function} // first source line of function
10999
11000(@value{GDBP}) @b{trace *my_function} // EXACT start address of function
11001
11002(@value{GDBP}) @b{trace *0x2117c4} // an address
11003@end smallexample
11004
11005@noindent
11006You can abbreviate @code{trace} as @code{tr}.
11007
782b2b07
SS
11008@item trace @var{location} if @var{cond}
11009Set a tracepoint with condition @var{cond}; evaluate the expression
11010@var{cond} each time the tracepoint is reached, and collect data only
11011if the value is nonzero---that is, if @var{cond} evaluates as true.
11012@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more
11013information on tracepoint conditions.
11014
7a697b8d
SS
11015@item ftrace @var{location} [ if @var{cond} ]
11016@cindex set fast tracepoint
74c761c1 11017@cindex fast tracepoints, setting
7a697b8d
SS
11018@kindex ftrace
11019The @code{ftrace} command sets a fast tracepoint. For targets that
11020support them, fast tracepoints will use a more efficient but possibly
11021less general technique to trigger data collection, such as a jump
11022instruction instead of a trap, or some sort of hardware support. It
11023may not be possible to create a fast tracepoint at the desired
11024location, in which case the command will exit with an explanatory
11025message.
11026
11027@value{GDBN} handles arguments to @code{ftrace} exactly as for
11028@code{trace}.
11029
405f8e94
SS
11030On 32-bit x86-architecture systems, fast tracepoints normally need to
11031be placed at an instruction that is 5 bytes or longer, but can be
11032placed at 4-byte instructions if the low 64K of memory of the target
11033program is available to install trampolines. Some Unix-type systems,
11034such as @sc{gnu}/Linux, exclude low addresses from the program's
11035address space; but for instance with the Linux kernel it is possible
11036to let @value{GDBN} use this area by doing a @command{sysctl} command
11037to set the @code{mmap_min_addr} kernel parameter, as in
11038
11039@example
11040sudo sysctl -w vm.mmap_min_addr=32768
11041@end example
11042
11043@noindent
11044which sets the low address to 32K, which leaves plenty of room for
11045trampolines. The minimum address should be set to a page boundary.
11046
0fb4aa4b 11047@item strace @var{location} [ if @var{cond} ]
74c761c1
PA
11048@cindex set static tracepoint
11049@cindex static tracepoints, setting
11050@cindex probe static tracepoint marker
0fb4aa4b
PA
11051@kindex strace
11052The @code{strace} command sets a static tracepoint. For targets that
11053support it, setting a static tracepoint probes a static
11054instrumentation point, or marker, found at @var{location}. It may not
11055be possible to set a static tracepoint at the desired location, in
11056which case the command will exit with an explanatory message.
11057
11058@value{GDBN} handles arguments to @code{strace} exactly as for
11059@code{trace}, with the addition that the user can also specify
11060@code{-m @var{marker}} as @var{location}. This probes the marker
11061identified by the @var{marker} string identifier. This identifier
11062depends on the static tracepoint backend library your program is
11063using. You can find all the marker identifiers in the @samp{ID} field
11064of the @code{info static-tracepoint-markers} command output.
11065@xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint
11066Markers}. For example, in the following small program using the UST
11067tracing engine:
11068
11069@smallexample
11070main ()
11071@{
11072 trace_mark(ust, bar33, "str %s", "FOOBAZ");
11073@}
11074@end smallexample
11075
11076@noindent
11077the marker id is composed of joining the first two arguments to the
11078@code{trace_mark} call with a slash, which translates to:
11079
11080@smallexample
11081(@value{GDBP}) info static-tracepoint-markers
11082Cnt Enb ID Address What
110831 n ust/bar33 0x0000000000400ddc in main at stexample.c:22
11084 Data: "str %s"
11085[etc...]
11086@end smallexample
11087
11088@noindent
11089so you may probe the marker above with:
11090
11091@smallexample
11092(@value{GDBP}) strace -m ust/bar33
11093@end smallexample
11094
11095Static tracepoints accept an extra collect action --- @code{collect
11096$_sdata}. This collects arbitrary user data passed in the probe point
11097call to the tracing library. In the UST example above, you'll see
11098that the third argument to @code{trace_mark} is a printf-like format
11099string. The user data is then the result of running that formating
11100string against the following arguments. Note that @code{info
11101static-tracepoint-markers} command output lists that format string in
11102the @samp{Data:} field.
11103
11104You can inspect this data when analyzing the trace buffer, by printing
11105the $_sdata variable like any other variable available to
11106@value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}.
11107
b37052ae
EZ
11108@vindex $tpnum
11109@cindex last tracepoint number
11110@cindex recent tracepoint number
11111@cindex tracepoint number
11112The convenience variable @code{$tpnum} records the tracepoint number
11113of the most recently set tracepoint.
11114
11115@kindex delete tracepoint
11116@cindex tracepoint deletion
11117@item delete tracepoint @r{[}@var{num}@r{]}
11118Permanently delete one or more tracepoints. With no argument, the
1042e4c0
SS
11119default is to delete all tracepoints. Note that the regular
11120@code{delete} command can remove tracepoints also.
b37052ae
EZ
11121
11122Examples:
11123
11124@smallexample
11125(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
11126
11127(@value{GDBP}) @b{delete trace} // remove all tracepoints
11128@end smallexample
11129
11130@noindent
11131You can abbreviate this command as @code{del tr}.
11132@end table
11133
11134@node Enable and Disable Tracepoints
11135@subsection Enable and Disable Tracepoints
11136
1042e4c0
SS
11137These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}.
11138
b37052ae
EZ
11139@table @code
11140@kindex disable tracepoint
11141@item disable tracepoint @r{[}@var{num}@r{]}
11142Disable tracepoint @var{num}, or all tracepoints if no argument
11143@var{num} is given. A disabled tracepoint will have no effect during
d248b706 11144a trace experiment, but it is not forgotten. You can re-enable
b37052ae 11145a disabled tracepoint using the @code{enable tracepoint} command.
d248b706
KY
11146If the command is issued during a trace experiment and the debug target
11147has support for disabling tracepoints during a trace experiment, then the
11148change will be effective immediately. Otherwise, it will be applied to the
11149next trace experiment.
b37052ae
EZ
11150
11151@kindex enable tracepoint
11152@item enable tracepoint @r{[}@var{num}@r{]}
d248b706
KY
11153Enable tracepoint @var{num}, or all tracepoints. If this command is
11154issued during a trace experiment and the debug target supports enabling
11155tracepoints during a trace experiment, then the enabled tracepoints will
11156become effective immediately. Otherwise, they will become effective the
11157next time a trace experiment is run.
b37052ae
EZ
11158@end table
11159
11160@node Tracepoint Passcounts
11161@subsection Tracepoint Passcounts
11162
11163@table @code
11164@kindex passcount
11165@cindex tracepoint pass count
11166@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
11167Set the @dfn{passcount} of a tracepoint. The passcount is a way to
11168automatically stop a trace experiment. If a tracepoint's passcount is
11169@var{n}, then the trace experiment will be automatically stopped on
11170the @var{n}'th time that tracepoint is hit. If the tracepoint number
11171@var{num} is not specified, the @code{passcount} command sets the
11172passcount of the most recently defined tracepoint. If no passcount is
11173given, the trace experiment will run until stopped explicitly by the
11174user.
11175
11176Examples:
11177
11178@smallexample
b383017d 11179(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
6826cf00 11180@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
b37052ae
EZ
11181
11182(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
6826cf00 11183@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
b37052ae
EZ
11184(@value{GDBP}) @b{trace foo}
11185(@value{GDBP}) @b{pass 3}
11186(@value{GDBP}) @b{trace bar}
11187(@value{GDBP}) @b{pass 2}
11188(@value{GDBP}) @b{trace baz}
11189(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
6826cf00
EZ
11190@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
11191@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
11192@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
b37052ae
EZ
11193@end smallexample
11194@end table
11195
782b2b07
SS
11196@node Tracepoint Conditions
11197@subsection Tracepoint Conditions
11198@cindex conditional tracepoints
11199@cindex tracepoint conditions
11200
11201The simplest sort of tracepoint collects data every time your program
11202reaches a specified place. You can also specify a @dfn{condition} for
11203a tracepoint. A condition is just a Boolean expression in your
11204programming language (@pxref{Expressions, ,Expressions}). A
11205tracepoint with a condition evaluates the expression each time your
11206program reaches it, and data collection happens only if the condition
11207is true.
11208
11209Tracepoint conditions can be specified when a tracepoint is set, by
11210using @samp{if} in the arguments to the @code{trace} command.
11211@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can
11212also be set or changed at any time with the @code{condition} command,
11213just as with breakpoints.
11214
11215Unlike breakpoint conditions, @value{GDBN} does not actually evaluate
11216the conditional expression itself. Instead, @value{GDBN} encodes the
6dcd5565 11217expression into an agent expression (@pxref{Agent Expressions})
782b2b07
SS
11218suitable for execution on the target, independently of @value{GDBN}.
11219Global variables become raw memory locations, locals become stack
11220accesses, and so forth.
11221
11222For instance, suppose you have a function that is usually called
11223frequently, but should not be called after an error has occurred. You
11224could use the following tracepoint command to collect data about calls
11225of that function that happen while the error code is propagating
11226through the program; an unconditional tracepoint could end up
11227collecting thousands of useless trace frames that you would have to
11228search through.
11229
11230@smallexample
11231(@value{GDBP}) @kbd{trace normal_operation if errcode > 0}
11232@end smallexample
11233
f61e138d
SS
11234@node Trace State Variables
11235@subsection Trace State Variables
11236@cindex trace state variables
11237
11238A @dfn{trace state variable} is a special type of variable that is
11239created and managed by target-side code. The syntax is the same as
11240that for GDB's convenience variables (a string prefixed with ``$''),
11241but they are stored on the target. They must be created explicitly,
11242using a @code{tvariable} command. They are always 64-bit signed
11243integers.
11244
11245Trace state variables are remembered by @value{GDBN}, and downloaded
11246to the target along with tracepoint information when the trace
11247experiment starts. There are no intrinsic limits on the number of
11248trace state variables, beyond memory limitations of the target.
11249
11250@cindex convenience variables, and trace state variables
11251Although trace state variables are managed by the target, you can use
11252them in print commands and expressions as if they were convenience
11253variables; @value{GDBN} will get the current value from the target
11254while the trace experiment is running. Trace state variables share
11255the same namespace as other ``$'' variables, which means that you
11256cannot have trace state variables with names like @code{$23} or
11257@code{$pc}, nor can you have a trace state variable and a convenience
11258variable with the same name.
11259
11260@table @code
11261
11262@item tvariable $@var{name} [ = @var{expression} ]
11263@kindex tvariable
11264The @code{tvariable} command creates a new trace state variable named
11265@code{$@var{name}}, and optionally gives it an initial value of
11266@var{expression}. @var{expression} is evaluated when this command is
11267entered; the result will be converted to an integer if possible,
11268otherwise @value{GDBN} will report an error. A subsequent
11269@code{tvariable} command specifying the same name does not create a
11270variable, but instead assigns the supplied initial value to the
11271existing variable of that name, overwriting any previous initial
11272value. The default initial value is 0.
11273
11274@item info tvariables
11275@kindex info tvariables
11276List all the trace state variables along with their initial values.
11277Their current values may also be displayed, if the trace experiment is
11278currently running.
11279
11280@item delete tvariable @r{[} $@var{name} @dots{} @r{]}
11281@kindex delete tvariable
11282Delete the given trace state variables, or all of them if no arguments
11283are specified.
11284
11285@end table
11286
b37052ae
EZ
11287@node Tracepoint Actions
11288@subsection Tracepoint Action Lists
11289
11290@table @code
11291@kindex actions
11292@cindex tracepoint actions
11293@item actions @r{[}@var{num}@r{]}
11294This command will prompt for a list of actions to be taken when the
11295tracepoint is hit. If the tracepoint number @var{num} is not
11296specified, this command sets the actions for the one that was most
11297recently defined (so that you can define a tracepoint and then say
11298@code{actions} without bothering about its number). You specify the
11299actions themselves on the following lines, one action at a time, and
11300terminate the actions list with a line containing just @code{end}. So
7d13fe92 11301far, the only defined actions are @code{collect}, @code{teval}, and
b37052ae
EZ
11302@code{while-stepping}.
11303
5a9351ae
SS
11304@code{actions} is actually equivalent to @code{commands} (@pxref{Break
11305Commands, ,Breakpoint Command Lists}), except that only the defined
11306actions are allowed; any other @value{GDBN} command is rejected.
11307
b37052ae
EZ
11308@cindex remove actions from a tracepoint
11309To remove all actions from a tracepoint, type @samp{actions @var{num}}
11310and follow it immediately with @samp{end}.
11311
11312@smallexample
11313(@value{GDBP}) @b{collect @var{data}} // collect some data
11314
6826cf00 11315(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
b37052ae 11316
6826cf00 11317(@value{GDBP}) @b{end} // signals the end of actions.
b37052ae
EZ
11318@end smallexample
11319
11320In the following example, the action list begins with @code{collect}
11321commands indicating the things to be collected when the tracepoint is
11322hit. Then, in order to single-step and collect additional data
11323following the tracepoint, a @code{while-stepping} command is used,
7d13fe92
SS
11324followed by the list of things to be collected after each step in a
11325sequence of single steps. The @code{while-stepping} command is
11326terminated by its own separate @code{end} command. Lastly, the action
11327list is terminated by an @code{end} command.
b37052ae
EZ
11328
11329@smallexample
11330(@value{GDBP}) @b{trace foo}
11331(@value{GDBP}) @b{actions}
11332Enter actions for tracepoint 1, one per line:
11333> collect bar,baz
11334> collect $regs
11335> while-stepping 12
5a9351ae 11336 > collect $pc, arr[i]
b37052ae
EZ
11337 > end
11338end
11339@end smallexample
11340
11341@kindex collect @r{(tracepoints)}
3065dfb6 11342@item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{}
b37052ae
EZ
11343Collect values of the given expressions when the tracepoint is hit.
11344This command accepts a comma-separated list of any valid expressions.
11345In addition to global, static, or local variables, the following
11346special arguments are supported:
11347
11348@table @code
11349@item $regs
0fb4aa4b 11350Collect all registers.
b37052ae
EZ
11351
11352@item $args
0fb4aa4b 11353Collect all function arguments.
b37052ae
EZ
11354
11355@item $locals
0fb4aa4b
PA
11356Collect all local variables.
11357
6710bf39
SS
11358@item $_ret
11359Collect the return address. This is helpful if you want to see more
11360of a backtrace.
11361
62e5f89c
SDJ
11362@item $_probe_argc
11363Collects the number of arguments from the static probe at which the
11364tracepoint is located.
11365@xref{Static Probe Points}.
11366
11367@item $_probe_arg@var{n}
11368@var{n} is an integer between 0 and 11. Collects the @var{n}th argument
11369from the static probe at which the tracepoint is located.
11370@xref{Static Probe Points}.
11371
0fb4aa4b
PA
11372@item $_sdata
11373@vindex $_sdata@r{, collect}
11374Collect static tracepoint marker specific data. Only available for
11375static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action
11376Lists}. On the UST static tracepoints library backend, an
11377instrumentation point resembles a @code{printf} function call. The
11378tracing library is able to collect user specified data formatted to a
11379character string using the format provided by the programmer that
11380instrumented the program. Other backends have similar mechanisms.
11381Here's an example of a UST marker call:
11382
11383@smallexample
11384 const char master_name[] = "$your_name";
11385 trace_mark(channel1, marker1, "hello %s", master_name)
11386@end smallexample
11387
11388In this case, collecting @code{$_sdata} collects the string
11389@samp{hello $yourname}. When analyzing the trace buffer, you can
11390inspect @samp{$_sdata} like any other variable available to
11391@value{GDBN}.
b37052ae
EZ
11392@end table
11393
11394You can give several consecutive @code{collect} commands, each one
11395with a single argument, or one @code{collect} command with several
5a9351ae 11396arguments separated by commas; the effect is the same.
b37052ae 11397
3065dfb6
SS
11398The optional @var{mods} changes the usual handling of the arguments.
11399@code{s} requests that pointers to chars be handled as strings, in
11400particular collecting the contents of the memory being pointed at, up
11401to the first zero. The upper bound is by default the value of the
11402@code{print elements} variable; if @code{s} is followed by a decimal
11403number, that is the upper bound instead. So for instance
11404@samp{collect/s25 mystr} collects as many as 25 characters at
11405@samp{mystr}.
11406
f5c37c66
EZ
11407The command @code{info scope} (@pxref{Symbols, info scope}) is
11408particularly useful for figuring out what data to collect.
11409
6da95a67
SS
11410@kindex teval @r{(tracepoints)}
11411@item teval @var{expr1}, @var{expr2}, @dots{}
11412Evaluate the given expressions when the tracepoint is hit. This
11413command accepts a comma-separated list of expressions. The results
11414are discarded, so this is mainly useful for assigning values to trace
11415state variables (@pxref{Trace State Variables}) without adding those
11416values to the trace buffer, as would be the case if the @code{collect}
11417action were used.
11418
b37052ae
EZ
11419@kindex while-stepping @r{(tracepoints)}
11420@item while-stepping @var{n}
c9429232 11421Perform @var{n} single-step instruction traces after the tracepoint,
7d13fe92 11422collecting new data after each step. The @code{while-stepping}
c9429232
SS
11423command is followed by the list of what to collect while stepping
11424(followed by its own @code{end} command):
b37052ae
EZ
11425
11426@smallexample
11427> while-stepping 12
11428 > collect $regs, myglobal
11429 > end
11430>
11431@end smallexample
11432
11433@noindent
7d13fe92
SS
11434Note that @code{$pc} is not automatically collected by
11435@code{while-stepping}; you need to explicitly collect that register if
11436you need it. You may abbreviate @code{while-stepping} as @code{ws} or
b37052ae 11437@code{stepping}.
236f1d4d
SS
11438
11439@item set default-collect @var{expr1}, @var{expr2}, @dots{}
11440@kindex set default-collect
11441@cindex default collection action
11442This variable is a list of expressions to collect at each tracepoint
11443hit. It is effectively an additional @code{collect} action prepended
11444to every tracepoint action list. The expressions are parsed
11445individually for each tracepoint, so for instance a variable named
11446@code{xyz} may be interpreted as a global for one tracepoint, and a
11447local for another, as appropriate to the tracepoint's location.
11448
11449@item show default-collect
11450@kindex show default-collect
11451Show the list of expressions that are collected by default at each
11452tracepoint hit.
11453
b37052ae
EZ
11454@end table
11455
11456@node Listing Tracepoints
11457@subsection Listing Tracepoints
11458
11459@table @code
e5a67952
MS
11460@kindex info tracepoints @r{[}@var{n}@dots{}@r{]}
11461@kindex info tp @r{[}@var{n}@dots{}@r{]}
b37052ae 11462@cindex information about tracepoints
e5a67952 11463@item info tracepoints @r{[}@var{num}@dots{}@r{]}
1042e4c0
SS
11464Display information about the tracepoint @var{num}. If you don't
11465specify a tracepoint number, displays information about all the
11466tracepoints defined so far. The format is similar to that used for
11467@code{info breakpoints}; in fact, @code{info tracepoints} is the same
11468command, simply restricting itself to tracepoints.
11469
11470A tracepoint's listing may include additional information specific to
11471tracing:
b37052ae
EZ
11472
11473@itemize @bullet
11474@item
b37052ae 11475its passcount as given by the @code{passcount @var{n}} command
f2a8bc8a
YQ
11476
11477@item
11478the state about installed on target of each location
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
f2a8bc8a
YQ
114912 tracepoint keep y <MULTIPLE>
11492 collect $eip
114932.1 y 0x0804859c in func4 at change-loc.h:35
11494 installed on target
114952.2 y 0xb7ffc480 in func4 at change-loc.h:35
11496 installed on target
114972.3 y <PENDING> set_tracepoint
114983 tracepoint keep y 0x080485b1 in foo at change-loc.c:29
11499 not installed on target
b37052ae
EZ
11500(@value{GDBP})
11501@end smallexample
11502
11503@noindent
11504This command can be abbreviated @code{info tp}.
11505@end table
11506
0fb4aa4b
PA
11507@node Listing Static Tracepoint Markers
11508@subsection Listing Static Tracepoint Markers
11509
11510@table @code
11511@kindex info static-tracepoint-markers
11512@cindex information about static tracepoint markers
11513@item info static-tracepoint-markers
11514Display information about all static tracepoint markers defined in the
11515program.
11516
11517For each marker, the following columns are printed:
11518
11519@table @emph
11520@item Count
11521An incrementing counter, output to help readability. This is not a
11522stable identifier.
11523@item ID
11524The marker ID, as reported by the target.
11525@item Enabled or Disabled
11526Probed markers are tagged with @samp{y}. @samp{n} identifies marks
11527that are not enabled.
11528@item Address
11529Where the marker is in your program, as a memory address.
11530@item What
11531Where the marker is in the source for your program, as a file and line
11532number. If the debug information included in the program does not
11533allow @value{GDBN} to locate the source of the marker, this column
11534will be left blank.
11535@end table
11536
11537@noindent
11538In addition, the following information may be printed for each marker:
11539
11540@table @emph
11541@item Data
11542User data passed to the tracing library by the marker call. In the
11543UST backend, this is the format string passed as argument to the
11544marker call.
11545@item Static tracepoints probing the marker
11546The list of static tracepoints attached to the marker.
11547@end table
11548
11549@smallexample
11550(@value{GDBP}) info static-tracepoint-markers
11551Cnt ID Enb Address What
115521 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25
11553 Data: number1 %d number2 %d
11554 Probed by static tracepoints: #2
115552 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24
11556 Data: str %s
11557(@value{GDBP})
11558@end smallexample
11559@end table
11560
79a6e687
BW
11561@node Starting and Stopping Trace Experiments
11562@subsection Starting and Stopping Trace Experiments
b37052ae
EZ
11563
11564@table @code
f196051f 11565@kindex tstart [ @var{notes} ]
b37052ae
EZ
11566@cindex start a new trace experiment
11567@cindex collected data discarded
11568@item tstart
f196051f
SS
11569This command starts the trace experiment, and begins collecting data.
11570It has the side effect of discarding all the data collected in the
11571trace buffer during the previous trace experiment. If any arguments
11572are supplied, they are taken as a note and stored with the trace
11573experiment's state. The notes may be arbitrary text, and are
11574especially useful with disconnected tracing in a multi-user context;
11575the notes can explain what the trace is doing, supply user contact
11576information, and so forth.
11577
11578@kindex tstop [ @var{notes} ]
b37052ae
EZ
11579@cindex stop a running trace experiment
11580@item tstop
f196051f
SS
11581This command stops the trace experiment. If any arguments are
11582supplied, they are recorded with the experiment as a note. This is
11583useful if you are stopping a trace started by someone else, for
11584instance if the trace is interfering with the system's behavior and
11585needs to be stopped quickly.
b37052ae 11586
68c71a2e 11587@strong{Note}: a trace experiment and data collection may stop
b37052ae
EZ
11588automatically if any tracepoint's passcount is reached
11589(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
11590
11591@kindex tstatus
11592@cindex status of trace data collection
11593@cindex trace experiment, status of
11594@item tstatus
11595This command displays the status of the current trace data
11596collection.
11597@end table
11598
11599Here is an example of the commands we described so far:
11600
11601@smallexample
11602(@value{GDBP}) @b{trace gdb_c_test}
11603(@value{GDBP}) @b{actions}
11604Enter actions for tracepoint #1, one per line.
11605> collect $regs,$locals,$args
11606> while-stepping 11
11607 > collect $regs
11608 > end
11609> end
11610(@value{GDBP}) @b{tstart}
11611 [time passes @dots{}]
11612(@value{GDBP}) @b{tstop}
11613@end smallexample
11614
03f2bd59 11615@anchor{disconnected tracing}
d5551862
SS
11616@cindex disconnected tracing
11617You can choose to continue running the trace experiment even if
11618@value{GDBN} disconnects from the target, voluntarily or
11619involuntarily. For commands such as @code{detach}, the debugger will
11620ask what you want to do with the trace. But for unexpected
11621terminations (@value{GDBN} crash, network outage), it would be
11622unfortunate to lose hard-won trace data, so the variable
11623@code{disconnected-tracing} lets you decide whether the trace should
11624continue running without @value{GDBN}.
11625
11626@table @code
11627@item set disconnected-tracing on
11628@itemx set disconnected-tracing off
11629@kindex set disconnected-tracing
11630Choose whether a tracing run should continue to run if @value{GDBN}
11631has disconnected from the target. Note that @code{detach} or
11632@code{quit} will ask you directly what to do about a running trace no
11633matter what this variable's setting, so the variable is mainly useful
11634for handling unexpected situations, such as loss of the network.
11635
11636@item show disconnected-tracing
11637@kindex show disconnected-tracing
11638Show the current choice for disconnected tracing.
11639
11640@end table
11641
11642When you reconnect to the target, the trace experiment may or may not
11643still be running; it might have filled the trace buffer in the
11644meantime, or stopped for one of the other reasons. If it is running,
11645it will continue after reconnection.
11646
11647Upon reconnection, the target will upload information about the
11648tracepoints in effect. @value{GDBN} will then compare that
11649information to the set of tracepoints currently defined, and attempt
11650to match them up, allowing for the possibility that the numbers may
11651have changed due to creation and deletion in the meantime. If one of
11652the target's tracepoints does not match any in @value{GDBN}, the
11653debugger will create a new tracepoint, so that you have a number with
11654which to specify that tracepoint. This matching-up process is
11655necessarily heuristic, and it may result in useless tracepoints being
11656created; you may simply delete them if they are of no use.
b37052ae 11657
4daf5ac0
SS
11658@cindex circular trace buffer
11659If your target agent supports a @dfn{circular trace buffer}, then you
11660can run a trace experiment indefinitely without filling the trace
11661buffer; when space runs out, the agent deletes already-collected trace
11662frames, oldest first, until there is enough room to continue
11663collecting. This is especially useful if your tracepoints are being
11664hit too often, and your trace gets terminated prematurely because the
11665buffer is full. To ask for a circular trace buffer, simply set
81896e36 11666@samp{circular-trace-buffer} to on. You can set this at any time,
4daf5ac0
SS
11667including during tracing; if the agent can do it, it will change
11668buffer handling on the fly, otherwise it will not take effect until
11669the next run.
11670
11671@table @code
11672@item set circular-trace-buffer on
11673@itemx set circular-trace-buffer off
11674@kindex set circular-trace-buffer
11675Choose whether a tracing run should use a linear or circular buffer
11676for trace data. A linear buffer will not lose any trace data, but may
11677fill up prematurely, while a circular buffer will discard old trace
11678data, but it will have always room for the latest tracepoint hits.
11679
11680@item show circular-trace-buffer
11681@kindex show circular-trace-buffer
11682Show the current choice for the trace buffer. Note that this may not
11683match the agent's current buffer handling, nor is it guaranteed to
11684match the setting that might have been in effect during a past run,
11685for instance if you are looking at frames from a trace file.
11686
11687@end table
11688
f196051f
SS
11689@table @code
11690@item set trace-user @var{text}
11691@kindex set trace-user
11692
11693@item show trace-user
11694@kindex show trace-user
11695
11696@item set trace-notes @var{text}
11697@kindex set trace-notes
11698Set the trace run's notes.
11699
11700@item show trace-notes
11701@kindex show trace-notes
11702Show the trace run's notes.
11703
11704@item set trace-stop-notes @var{text}
11705@kindex set trace-stop-notes
11706Set the trace run's stop notes. The handling of the note is as for
11707@code{tstop} arguments; the set command is convenient way to fix a
11708stop note that is mistaken or incomplete.
11709
11710@item show trace-stop-notes
11711@kindex show trace-stop-notes
11712Show the trace run's stop notes.
11713
11714@end table
11715
c9429232
SS
11716@node Tracepoint Restrictions
11717@subsection Tracepoint Restrictions
11718
11719@cindex tracepoint restrictions
11720There are a number of restrictions on the use of tracepoints. As
11721described above, tracepoint data gathering occurs on the target
11722without interaction from @value{GDBN}. Thus the full capabilities of
11723the debugger are not available during data gathering, and then at data
11724examination time, you will be limited by only having what was
11725collected. The following items describe some common problems, but it
11726is not exhaustive, and you may run into additional difficulties not
11727mentioned here.
11728
11729@itemize @bullet
11730
11731@item
11732Tracepoint expressions are intended to gather objects (lvalues). Thus
11733the full flexibility of GDB's expression evaluator is not available.
11734You cannot call functions, cast objects to aggregate types, access
11735convenience variables or modify values (except by assignment to trace
11736state variables). Some language features may implicitly call
11737functions (for instance Objective-C fields with accessors), and therefore
11738cannot be collected either.
11739
11740@item
11741Collection of local variables, either individually or in bulk with
11742@code{$locals} or @code{$args}, during @code{while-stepping} may
11743behave erratically. The stepping action may enter a new scope (for
11744instance by stepping into a function), or the location of the variable
11745may change (for instance it is loaded into a register). The
11746tracepoint data recorded uses the location information for the
11747variables that is correct for the tracepoint location. When the
11748tracepoint is created, it is not possible, in general, to determine
11749where the steps of a @code{while-stepping} sequence will advance the
11750program---particularly if a conditional branch is stepped.
11751
11752@item
11753Collection of an incompletely-initialized or partially-destroyed object
11754may result in something that @value{GDBN} cannot display, or displays
11755in a misleading way.
11756
11757@item
11758When @value{GDBN} displays a pointer to character it automatically
11759dereferences the pointer to also display characters of the string
11760being pointed to. However, collecting the pointer during tracing does
11761not automatically collect the string. You need to explicitly
11762dereference the pointer and provide size information if you want to
11763collect not only the pointer, but the memory pointed to. For example,
11764@code{*ptr@@50} can be used to collect the 50 element array pointed to
11765by @code{ptr}.
11766
11767@item
11768It is not possible to collect a complete stack backtrace at a
11769tracepoint. Instead, you may collect the registers and a few hundred
d99f7e48 11770bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300}
c9429232
SS
11771(adjust to use the name of the actual stack pointer register on your
11772target architecture, and the amount of stack you wish to capture).
11773Then the @code{backtrace} command will show a partial backtrace when
11774using a trace frame. The number of stack frames that can be examined
11775depends on the sizes of the frames in the collected stack. Note that
11776if you ask for a block so large that it goes past the bottom of the
11777stack, the target agent may report an error trying to read from an
11778invalid address.
11779
af54718e
SS
11780@item
11781If you do not collect registers at a tracepoint, @value{GDBN} can
11782infer that the value of @code{$pc} must be the same as the address of
11783the tracepoint and use that when you are looking at a trace frame
11784for that tracepoint. However, this cannot work if the tracepoint has
11785multiple locations (for instance if it was set in a function that was
11786inlined), or if it has a @code{while-stepping} loop. In those cases
11787@value{GDBN} will warn you that it can't infer @code{$pc}, and default
11788it to zero.
11789
c9429232
SS
11790@end itemize
11791
b37052ae 11792@node Analyze Collected Data
79a6e687 11793@section Using the Collected Data
b37052ae
EZ
11794
11795After the tracepoint experiment ends, you use @value{GDBN} commands
11796for examining the trace data. The basic idea is that each tracepoint
11797collects a trace @dfn{snapshot} every time it is hit and another
11798snapshot every time it single-steps. All these snapshots are
11799consecutively numbered from zero and go into a buffer, and you can
11800examine them later. The way you examine them is to @dfn{focus} on a
11801specific trace snapshot. When the remote stub is focused on a trace
11802snapshot, it will respond to all @value{GDBN} requests for memory and
11803registers by reading from the buffer which belongs to that snapshot,
11804rather than from @emph{real} memory or registers of the program being
11805debugged. This means that @strong{all} @value{GDBN} commands
11806(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
11807behave as if we were currently debugging the program state as it was
11808when the tracepoint occurred. Any requests for data that are not in
11809the buffer will fail.
11810
11811@menu
11812* tfind:: How to select a trace snapshot
11813* tdump:: How to display all data for a snapshot
6149aea9 11814* save tracepoints:: How to save tracepoints for a future run
b37052ae
EZ
11815@end menu
11816
11817@node tfind
11818@subsection @code{tfind @var{n}}
11819
11820@kindex tfind
11821@cindex select trace snapshot
11822@cindex find trace snapshot
11823The basic command for selecting a trace snapshot from the buffer is
11824@code{tfind @var{n}}, which finds trace snapshot number @var{n},
11825counting from zero. If no argument @var{n} is given, the next
11826snapshot is selected.
11827
11828Here are the various forms of using the @code{tfind} command.
11829
11830@table @code
11831@item tfind start
11832Find the first snapshot in the buffer. This is a synonym for
11833@code{tfind 0} (since 0 is the number of the first snapshot).
11834
11835@item tfind none
11836Stop debugging trace snapshots, resume @emph{live} debugging.
11837
11838@item tfind end
11839Same as @samp{tfind none}.
11840
11841@item tfind
11842No argument means find the next trace snapshot.
11843
11844@item tfind -
11845Find the previous trace snapshot before the current one. This permits
11846retracing earlier steps.
11847
11848@item tfind tracepoint @var{num}
11849Find the next snapshot associated with tracepoint @var{num}. Search
11850proceeds forward from the last examined trace snapshot. If no
11851argument @var{num} is given, it means find the next snapshot collected
11852for the same tracepoint as the current snapshot.
11853
11854@item tfind pc @var{addr}
11855Find the next snapshot associated with the value @var{addr} of the
11856program counter. Search proceeds forward from the last examined trace
11857snapshot. If no argument @var{addr} is given, it means find the next
11858snapshot with the same value of PC as the current snapshot.
11859
11860@item tfind outside @var{addr1}, @var{addr2}
11861Find the next snapshot whose PC is outside the given range of
081dfbf7 11862addresses (exclusive).
b37052ae
EZ
11863
11864@item tfind range @var{addr1}, @var{addr2}
11865Find the next snapshot whose PC is between @var{addr1} and
081dfbf7 11866@var{addr2} (inclusive).
b37052ae
EZ
11867
11868@item tfind line @r{[}@var{file}:@r{]}@var{n}
11869Find the next snapshot associated with the source line @var{n}. If
11870the optional argument @var{file} is given, refer to line @var{n} in
11871that source file. Search proceeds forward from the last examined
11872trace snapshot. If no argument @var{n} is given, it means find the
11873next line other than the one currently being examined; thus saying
11874@code{tfind line} repeatedly can appear to have the same effect as
11875stepping from line to line in a @emph{live} debugging session.
11876@end table
11877
11878The default arguments for the @code{tfind} commands are specifically
11879designed to make it easy to scan through the trace buffer. For
11880instance, @code{tfind} with no argument selects the next trace
11881snapshot, and @code{tfind -} with no argument selects the previous
11882trace snapshot. So, by giving one @code{tfind} command, and then
11883simply hitting @key{RET} repeatedly you can examine all the trace
11884snapshots in order. Or, by saying @code{tfind -} and then hitting
11885@key{RET} repeatedly you can examine the snapshots in reverse order.
11886The @code{tfind line} command with no argument selects the snapshot
11887for the next source line executed. The @code{tfind pc} command with
11888no argument selects the next snapshot with the same program counter
11889(PC) as the current frame. The @code{tfind tracepoint} command with
11890no argument selects the next trace snapshot collected by the same
11891tracepoint as the current one.
11892
11893In addition to letting you scan through the trace buffer manually,
11894these commands make it easy to construct @value{GDBN} scripts that
11895scan through the trace buffer and print out whatever collected data
11896you are interested in. Thus, if we want to examine the PC, FP, and SP
11897registers from each trace frame in the buffer, we can say this:
11898
11899@smallexample
11900(@value{GDBP}) @b{tfind start}
11901(@value{GDBP}) @b{while ($trace_frame != -1)}
11902> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
11903 $trace_frame, $pc, $sp, $fp
11904> tfind
11905> end
11906
11907Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
11908Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
11909Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
11910Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
11911Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
11912Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
11913Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
11914Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
11915Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
11916Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
11917Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
11918@end smallexample
11919
11920Or, if we want to examine the variable @code{X} at each source line in
11921the buffer:
11922
11923@smallexample
11924(@value{GDBP}) @b{tfind start}
11925(@value{GDBP}) @b{while ($trace_frame != -1)}
11926> printf "Frame %d, X == %d\n", $trace_frame, X
11927> tfind line
11928> end
11929
11930Frame 0, X = 1
11931Frame 7, X = 2
11932Frame 13, X = 255
11933@end smallexample
11934
11935@node tdump
11936@subsection @code{tdump}
11937@kindex tdump
11938@cindex dump all data collected at tracepoint
11939@cindex tracepoint data, display
11940
11941This command takes no arguments. It prints all the data collected at
11942the current trace snapshot.
11943
11944@smallexample
11945(@value{GDBP}) @b{trace 444}
11946(@value{GDBP}) @b{actions}
11947Enter actions for tracepoint #2, one per line:
11948> collect $regs, $locals, $args, gdb_long_test
11949> end
11950
11951(@value{GDBP}) @b{tstart}
11952
11953(@value{GDBP}) @b{tfind line 444}
11954#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
11955at gdb_test.c:444
11956444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
11957
11958(@value{GDBP}) @b{tdump}
11959Data collected at tracepoint 2, trace frame 1:
11960d0 0xc4aa0085 -995491707
11961d1 0x18 24
11962d2 0x80 128
11963d3 0x33 51
11964d4 0x71aea3d 119204413
11965d5 0x22 34
11966d6 0xe0 224
11967d7 0x380035 3670069
11968a0 0x19e24a 1696330
11969a1 0x3000668 50333288
11970a2 0x100 256
11971a3 0x322000 3284992
11972a4 0x3000698 50333336
11973a5 0x1ad3cc 1758156
11974fp 0x30bf3c 0x30bf3c
11975sp 0x30bf34 0x30bf34
11976ps 0x0 0
11977pc 0x20b2c8 0x20b2c8
11978fpcontrol 0x0 0
11979fpstatus 0x0 0
11980fpiaddr 0x0 0
11981p = 0x20e5b4 "gdb-test"
11982p1 = (void *) 0x11
11983p2 = (void *) 0x22
11984p3 = (void *) 0x33
11985p4 = (void *) 0x44
11986p5 = (void *) 0x55
11987p6 = (void *) 0x66
11988gdb_long_test = 17 '\021'
11989
11990(@value{GDBP})
11991@end smallexample
11992
af54718e
SS
11993@code{tdump} works by scanning the tracepoint's current collection
11994actions and printing the value of each expression listed. So
11995@code{tdump} can fail, if after a run, you change the tracepoint's
11996actions to mention variables that were not collected during the run.
11997
11998Also, for tracepoints with @code{while-stepping} loops, @code{tdump}
11999uses the collected value of @code{$pc} to distinguish between trace
12000frames that were collected at the tracepoint hit, and frames that were
12001collected while stepping. This allows it to correctly choose whether
12002to display the basic list of collections, or the collections from the
12003body of the while-stepping loop. However, if @code{$pc} was not collected,
12004then @code{tdump} will always attempt to dump using the basic collection
12005list, and may fail if a while-stepping frame does not include all the
12006same data that is collected at the tracepoint hit.
12007@c This is getting pretty arcane, example would be good.
12008
6149aea9
PA
12009@node save tracepoints
12010@subsection @code{save tracepoints @var{filename}}
12011@kindex save tracepoints
b37052ae
EZ
12012@kindex save-tracepoints
12013@cindex save tracepoints for future sessions
12014
12015This command saves all current tracepoint definitions together with
12016their actions and passcounts, into a file @file{@var{filename}}
12017suitable for use in a later debugging session. To read the saved
12018tracepoint definitions, use the @code{source} command (@pxref{Command
6149aea9
PA
12019Files}). The @w{@code{save-tracepoints}} command is a deprecated
12020alias for @w{@code{save tracepoints}}
b37052ae
EZ
12021
12022@node Tracepoint Variables
12023@section Convenience Variables for Tracepoints
12024@cindex tracepoint variables
12025@cindex convenience variables for tracepoints
12026
12027@table @code
12028@vindex $trace_frame
12029@item (int) $trace_frame
12030The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
12031snapshot is selected.
12032
12033@vindex $tracepoint
12034@item (int) $tracepoint
12035The tracepoint for the current trace snapshot.
12036
12037@vindex $trace_line
12038@item (int) $trace_line
12039The line number for the current trace snapshot.
12040
12041@vindex $trace_file
12042@item (char []) $trace_file
12043The source file for the current trace snapshot.
12044
12045@vindex $trace_func
12046@item (char []) $trace_func
12047The name of the function containing @code{$tracepoint}.
12048@end table
12049
12050Note: @code{$trace_file} is not suitable for use in @code{printf},
12051use @code{output} instead.
12052
12053Here's a simple example of using these convenience variables for
12054stepping through all the trace snapshots and printing some of their
f61e138d
SS
12055data. Note that these are not the same as trace state variables,
12056which are managed by the target.
b37052ae
EZ
12057
12058@smallexample
12059(@value{GDBP}) @b{tfind start}
12060
12061(@value{GDBP}) @b{while $trace_frame != -1}
12062> output $trace_file
12063> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
12064> tfind
12065> end
12066@end smallexample
12067
00bf0b85
SS
12068@node Trace Files
12069@section Using Trace Files
12070@cindex trace files
12071
12072In some situations, the target running a trace experiment may no
12073longer be available; perhaps it crashed, or the hardware was needed
12074for a different activity. To handle these cases, you can arrange to
12075dump the trace data into a file, and later use that file as a source
12076of trace data, via the @code{target tfile} command.
12077
12078@table @code
12079
12080@kindex tsave
12081@item tsave [ -r ] @var{filename}
12082Save the trace data to @var{filename}. By default, this command
12083assumes that @var{filename} refers to the host filesystem, so if
12084necessary @value{GDBN} will copy raw trace data up from the target and
12085then save it. If the target supports it, you can also supply the
12086optional argument @code{-r} (``remote'') to direct the target to save
12087the data directly into @var{filename} in its own filesystem, which may be
12088more efficient if the trace buffer is very large. (Note, however, that
12089@code{target tfile} can only read from files accessible to the host.)
12090
12091@kindex target tfile
12092@kindex tfile
12093@item target tfile @var{filename}
12094Use the file named @var{filename} as a source of trace data. Commands
12095that examine data work as they do with a live target, but it is not
12096possible to run any new trace experiments. @code{tstatus} will report
12097the state of the trace run at the moment the data was saved, as well
12098as the current trace frame you are examining. @var{filename} must be
12099on a filesystem accessible to the host.
12100
12101@end table
12102
df0cd8c5
JB
12103@node Overlays
12104@chapter Debugging Programs That Use Overlays
12105@cindex overlays
12106
12107If your program is too large to fit completely in your target system's
12108memory, you can sometimes use @dfn{overlays} to work around this
12109problem. @value{GDBN} provides some support for debugging programs that
12110use overlays.
12111
12112@menu
12113* How Overlays Work:: A general explanation of overlays.
12114* Overlay Commands:: Managing overlays in @value{GDBN}.
12115* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
12116 mapped by asking the inferior.
12117* Overlay Sample Program:: A sample program using overlays.
12118@end menu
12119
12120@node How Overlays Work
12121@section How Overlays Work
12122@cindex mapped overlays
12123@cindex unmapped overlays
12124@cindex load address, overlay's
12125@cindex mapped address
12126@cindex overlay area
12127
12128Suppose you have a computer whose instruction address space is only 64
12129kilobytes long, but which has much more memory which can be accessed by
12130other means: special instructions, segment registers, or memory
12131management hardware, for example. Suppose further that you want to
12132adapt a program which is larger than 64 kilobytes to run on this system.
12133
12134One solution is to identify modules of your program which are relatively
12135independent, and need not call each other directly; call these modules
12136@dfn{overlays}. Separate the overlays from the main program, and place
12137their machine code in the larger memory. Place your main program in
12138instruction memory, but leave at least enough space there to hold the
12139largest overlay as well.
12140
12141Now, to call a function located in an overlay, you must first copy that
12142overlay's machine code from the large memory into the space set aside
12143for it in the instruction memory, and then jump to its entry point
12144there.
12145
c928edc0
AC
12146@c NB: In the below the mapped area's size is greater or equal to the
12147@c size of all overlays. This is intentional to remind the developer
12148@c that overlays don't necessarily need to be the same size.
12149
474c8240 12150@smallexample
df0cd8c5 12151@group
c928edc0
AC
12152 Data Instruction Larger
12153Address Space Address Space Address Space
12154+-----------+ +-----------+ +-----------+
12155| | | | | |
12156+-----------+ +-----------+ +-----------+<-- overlay 1
12157| program | | main | .----| overlay 1 | load address
12158| variables | | program | | +-----------+
12159| and heap | | | | | |
12160+-----------+ | | | +-----------+<-- overlay 2
12161| | +-----------+ | | | load address
12162+-----------+ | | | .-| overlay 2 |
12163 | | | | | |
12164 mapped --->+-----------+ | | +-----------+
12165 address | | | | | |
12166 | overlay | <-' | | |
12167 | area | <---' +-----------+<-- overlay 3
12168 | | <---. | | load address
12169 +-----------+ `--| overlay 3 |
12170 | | | |
12171 +-----------+ | |
12172 +-----------+
12173 | |
12174 +-----------+
12175
12176 @anchor{A code overlay}A code overlay
df0cd8c5 12177@end group
474c8240 12178@end smallexample
df0cd8c5 12179
c928edc0
AC
12180The diagram (@pxref{A code overlay}) shows a system with separate data
12181and instruction address spaces. To map an overlay, the program copies
12182its code from the larger address space to the instruction address space.
12183Since the overlays shown here all use the same mapped address, only one
12184may be mapped at a time. For a system with a single address space for
12185data and instructions, the diagram would be similar, except that the
12186program variables and heap would share an address space with the main
12187program and the overlay area.
df0cd8c5
JB
12188
12189An overlay loaded into instruction memory and ready for use is called a
12190@dfn{mapped} overlay; its @dfn{mapped address} is its address in the
12191instruction memory. An overlay not present (or only partially present)
12192in instruction memory is called @dfn{unmapped}; its @dfn{load address}
12193is its address in the larger memory. The mapped address is also called
12194the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
12195called the @dfn{load memory address}, or @dfn{LMA}.
12196
12197Unfortunately, overlays are not a completely transparent way to adapt a
12198program to limited instruction memory. They introduce a new set of
12199global constraints you must keep in mind as you design your program:
12200
12201@itemize @bullet
12202
12203@item
12204Before calling or returning to a function in an overlay, your program
12205must make sure that overlay is actually mapped. Otherwise, the call or
12206return will transfer control to the right address, but in the wrong
12207overlay, and your program will probably crash.
12208
12209@item
12210If the process of mapping an overlay is expensive on your system, you
12211will need to choose your overlays carefully to minimize their effect on
12212your program's performance.
12213
12214@item
12215The executable file you load onto your system must contain each
12216overlay's instructions, appearing at the overlay's load address, not its
12217mapped address. However, each overlay's instructions must be relocated
12218and its symbols defined as if the overlay were at its mapped address.
12219You can use GNU linker scripts to specify different load and relocation
12220addresses for pieces of your program; see @ref{Overlay Description,,,
12221ld.info, Using ld: the GNU linker}.
12222
12223@item
12224The procedure for loading executable files onto your system must be able
12225to load their contents into the larger address space as well as the
12226instruction and data spaces.
12227
12228@end itemize
12229
12230The overlay system described above is rather simple, and could be
12231improved in many ways:
12232
12233@itemize @bullet
12234
12235@item
12236If your system has suitable bank switch registers or memory management
12237hardware, you could use those facilities to make an overlay's load area
12238contents simply appear at their mapped address in instruction space.
12239This would probably be faster than copying the overlay to its mapped
12240area in the usual way.
12241
12242@item
12243If your overlays are small enough, you could set aside more than one
12244overlay area, and have more than one overlay mapped at a time.
12245
12246@item
12247You can use overlays to manage data, as well as instructions. In
12248general, data overlays are even less transparent to your design than
12249code overlays: whereas code overlays only require care when you call or
12250return to functions, data overlays require care every time you access
12251the data. Also, if you change the contents of a data overlay, you
12252must copy its contents back out to its load address before you can copy a
12253different data overlay into the same mapped area.
12254
12255@end itemize
12256
12257
12258@node Overlay Commands
12259@section Overlay Commands
12260
12261To use @value{GDBN}'s overlay support, each overlay in your program must
12262correspond to a separate section of the executable file. The section's
12263virtual memory address and load memory address must be the overlay's
12264mapped and load addresses. Identifying overlays with sections allows
12265@value{GDBN} to determine the appropriate address of a function or
12266variable, depending on whether the overlay is mapped or not.
12267
12268@value{GDBN}'s overlay commands all start with the word @code{overlay};
12269you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
12270
12271@table @code
12272@item overlay off
4644b6e3 12273@kindex overlay
df0cd8c5
JB
12274Disable @value{GDBN}'s overlay support. When overlay support is
12275disabled, @value{GDBN} assumes that all functions and variables are
12276always present at their mapped addresses. By default, @value{GDBN}'s
12277overlay support is disabled.
12278
12279@item overlay manual
df0cd8c5
JB
12280@cindex manual overlay debugging
12281Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
12282relies on you to tell it which overlays are mapped, and which are not,
12283using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
12284commands described below.
12285
12286@item overlay map-overlay @var{overlay}
12287@itemx overlay map @var{overlay}
df0cd8c5
JB
12288@cindex map an overlay
12289Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
12290be the name of the object file section containing the overlay. When an
12291overlay is mapped, @value{GDBN} assumes it can find the overlay's
12292functions and variables at their mapped addresses. @value{GDBN} assumes
12293that any other overlays whose mapped ranges overlap that of
12294@var{overlay} are now unmapped.
12295
12296@item overlay unmap-overlay @var{overlay}
12297@itemx overlay unmap @var{overlay}
df0cd8c5
JB
12298@cindex unmap an overlay
12299Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
12300must be the name of the object file section containing the overlay.
12301When an overlay is unmapped, @value{GDBN} assumes it can find the
12302overlay's functions and variables at their load addresses.
12303
12304@item overlay auto
df0cd8c5
JB
12305Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
12306consults a data structure the overlay manager maintains in the inferior
12307to see which overlays are mapped. For details, see @ref{Automatic
12308Overlay Debugging}.
12309
12310@item overlay load-target
12311@itemx overlay load
df0cd8c5
JB
12312@cindex reloading the overlay table
12313Re-read the overlay table from the inferior. Normally, @value{GDBN}
12314re-reads the table @value{GDBN} automatically each time the inferior
12315stops, so this command should only be necessary if you have changed the
12316overlay mapping yourself using @value{GDBN}. This command is only
12317useful when using automatic overlay debugging.
12318
12319@item overlay list-overlays
12320@itemx overlay list
12321@cindex listing mapped overlays
12322Display a list of the overlays currently mapped, along with their mapped
12323addresses, load addresses, and sizes.
12324
12325@end table
12326
12327Normally, when @value{GDBN} prints a code address, it includes the name
12328of the function the address falls in:
12329
474c8240 12330@smallexample
f7dc1244 12331(@value{GDBP}) print main
df0cd8c5 12332$3 = @{int ()@} 0x11a0 <main>
474c8240 12333@end smallexample
df0cd8c5
JB
12334@noindent
12335When overlay debugging is enabled, @value{GDBN} recognizes code in
12336unmapped overlays, and prints the names of unmapped functions with
12337asterisks around them. For example, if @code{foo} is a function in an
12338unmapped overlay, @value{GDBN} prints it this way:
12339
474c8240 12340@smallexample
f7dc1244 12341(@value{GDBP}) overlay list
df0cd8c5 12342No sections are mapped.
f7dc1244 12343(@value{GDBP}) print foo
df0cd8c5 12344$5 = @{int (int)@} 0x100000 <*foo*>
474c8240 12345@end smallexample
df0cd8c5
JB
12346@noindent
12347When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
12348name normally:
12349
474c8240 12350@smallexample
f7dc1244 12351(@value{GDBP}) overlay list
b383017d 12352Section .ov.foo.text, loaded at 0x100000 - 0x100034,
df0cd8c5 12353 mapped at 0x1016 - 0x104a
f7dc1244 12354(@value{GDBP}) print foo
df0cd8c5 12355$6 = @{int (int)@} 0x1016 <foo>
474c8240 12356@end smallexample
df0cd8c5
JB
12357
12358When overlay debugging is enabled, @value{GDBN} can find the correct
12359address for functions and variables in an overlay, whether or not the
12360overlay is mapped. This allows most @value{GDBN} commands, like
12361@code{break} and @code{disassemble}, to work normally, even on unmapped
12362code. However, @value{GDBN}'s breakpoint support has some limitations:
12363
12364@itemize @bullet
12365@item
12366@cindex breakpoints in overlays
12367@cindex overlays, setting breakpoints in
12368You can set breakpoints in functions in unmapped overlays, as long as
12369@value{GDBN} can write to the overlay at its load address.
12370@item
12371@value{GDBN} can not set hardware or simulator-based breakpoints in
12372unmapped overlays. However, if you set a breakpoint at the end of your
12373overlay manager (and tell @value{GDBN} which overlays are now mapped, if
12374you are using manual overlay management), @value{GDBN} will re-set its
12375breakpoints properly.
12376@end itemize
12377
12378
12379@node Automatic Overlay Debugging
12380@section Automatic Overlay Debugging
12381@cindex automatic overlay debugging
12382
12383@value{GDBN} can automatically track which overlays are mapped and which
12384are not, given some simple co-operation from the overlay manager in the
12385inferior. If you enable automatic overlay debugging with the
12386@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
12387looks in the inferior's memory for certain variables describing the
12388current state of the overlays.
12389
12390Here are the variables your overlay manager must define to support
12391@value{GDBN}'s automatic overlay debugging:
12392
12393@table @asis
12394
12395@item @code{_ovly_table}:
12396This variable must be an array of the following structures:
12397
474c8240 12398@smallexample
df0cd8c5
JB
12399struct
12400@{
12401 /* The overlay's mapped address. */
12402 unsigned long vma;
12403
12404 /* The size of the overlay, in bytes. */
12405 unsigned long size;
12406
12407 /* The overlay's load address. */
12408 unsigned long lma;
12409
12410 /* Non-zero if the overlay is currently mapped;
12411 zero otherwise. */
12412 unsigned long mapped;
12413@}
474c8240 12414@end smallexample
df0cd8c5
JB
12415
12416@item @code{_novlys}:
12417This variable must be a four-byte signed integer, holding the total
12418number of elements in @code{_ovly_table}.
12419
12420@end table
12421
12422To decide whether a particular overlay is mapped or not, @value{GDBN}
12423looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
12424@code{lma} members equal the VMA and LMA of the overlay's section in the
12425executable file. When @value{GDBN} finds a matching entry, it consults
12426the entry's @code{mapped} member to determine whether the overlay is
12427currently mapped.
12428
81d46470 12429In addition, your overlay manager may define a function called
def71bfa 12430@code{_ovly_debug_event}. If this function is defined, @value{GDBN}
81d46470
MS
12431will silently set a breakpoint there. If the overlay manager then
12432calls this function whenever it has changed the overlay table, this
12433will enable @value{GDBN} to accurately keep track of which overlays
12434are in program memory, and update any breakpoints that may be set
b383017d 12435in overlays. This will allow breakpoints to work even if the
81d46470
MS
12436overlays are kept in ROM or other non-writable memory while they
12437are not being executed.
df0cd8c5
JB
12438
12439@node Overlay Sample Program
12440@section Overlay Sample Program
12441@cindex overlay example program
12442
12443When linking a program which uses overlays, you must place the overlays
12444at their load addresses, while relocating them to run at their mapped
12445addresses. To do this, you must write a linker script (@pxref{Overlay
12446Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
12447since linker scripts are specific to a particular host system, target
12448architecture, and target memory layout, this manual cannot provide
12449portable sample code demonstrating @value{GDBN}'s overlay support.
12450
12451However, the @value{GDBN} source distribution does contain an overlaid
12452program, with linker scripts for a few systems, as part of its test
12453suite. The program consists of the following files from
12454@file{gdb/testsuite/gdb.base}:
12455
12456@table @file
12457@item overlays.c
12458The main program file.
12459@item ovlymgr.c
12460A simple overlay manager, used by @file{overlays.c}.
12461@item foo.c
12462@itemx bar.c
12463@itemx baz.c
12464@itemx grbx.c
12465Overlay modules, loaded and used by @file{overlays.c}.
12466@item d10v.ld
12467@itemx m32r.ld
12468Linker scripts for linking the test program on the @code{d10v-elf}
12469and @code{m32r-elf} targets.
12470@end table
12471
12472You can build the test program using the @code{d10v-elf} GCC
12473cross-compiler like this:
12474
474c8240 12475@smallexample
df0cd8c5
JB
12476$ d10v-elf-gcc -g -c overlays.c
12477$ d10v-elf-gcc -g -c ovlymgr.c
12478$ d10v-elf-gcc -g -c foo.c
12479$ d10v-elf-gcc -g -c bar.c
12480$ d10v-elf-gcc -g -c baz.c
12481$ d10v-elf-gcc -g -c grbx.c
12482$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
12483 baz.o grbx.o -Wl,-Td10v.ld -o overlays
474c8240 12484@end smallexample
df0cd8c5
JB
12485
12486The build process is identical for any other architecture, except that
12487you must substitute the appropriate compiler and linker script for the
12488target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
12489
12490
6d2ebf8b 12491@node Languages
c906108c
SS
12492@chapter Using @value{GDBN} with Different Languages
12493@cindex languages
12494
c906108c
SS
12495Although programming languages generally have common aspects, they are
12496rarely expressed in the same manner. For instance, in ANSI C,
12497dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
12498Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 12499represented (and displayed) differently. Hex numbers in C appear as
c906108c 12500@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
12501
12502@cindex working language
12503Language-specific information is built into @value{GDBN} for some languages,
12504allowing you to express operations like the above in your program's
12505native language, and allowing @value{GDBN} to output values in a manner
12506consistent with the syntax of your program's native language. The
12507language you use to build expressions is called the @dfn{working
12508language}.
12509
12510@menu
12511* Setting:: Switching between source languages
12512* Show:: Displaying the language
c906108c 12513* Checks:: Type and range checks
79a6e687
BW
12514* Supported Languages:: Supported languages
12515* Unsupported Languages:: Unsupported languages
c906108c
SS
12516@end menu
12517
6d2ebf8b 12518@node Setting
79a6e687 12519@section Switching Between Source Languages
c906108c
SS
12520
12521There are two ways to control the working language---either have @value{GDBN}
12522set it automatically, or select it manually yourself. You can use the
12523@code{set language} command for either purpose. On startup, @value{GDBN}
12524defaults to setting the language automatically. The working language is
12525used to determine how expressions you type are interpreted, how values
12526are printed, etc.
12527
12528In addition to the working language, every source file that
12529@value{GDBN} knows about has its own working language. For some object
12530file formats, the compiler might indicate which language a particular
12531source file is in. However, most of the time @value{GDBN} infers the
12532language from the name of the file. The language of a source file
b37052ae 12533controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 12534show each frame appropriately for its own language. There is no way to
d4f3574e
SS
12535set the language of a source file from within @value{GDBN}, but you can
12536set the language associated with a filename extension. @xref{Show, ,
79a6e687 12537Displaying the Language}.
c906108c
SS
12538
12539This is most commonly a problem when you use a program, such
5d161b24 12540as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
12541another language. In that case, make the
12542program use @code{#line} directives in its C output; that way
12543@value{GDBN} will know the correct language of the source code of the original
12544program, and will display that source code, not the generated C code.
12545
12546@menu
12547* Filenames:: Filename extensions and languages.
12548* Manually:: Setting the working language manually
12549* Automatically:: Having @value{GDBN} infer the source language
12550@end menu
12551
6d2ebf8b 12552@node Filenames
79a6e687 12553@subsection List of Filename Extensions and Languages
c906108c
SS
12554
12555If a source file name ends in one of the following extensions, then
12556@value{GDBN} infers that its language is the one indicated.
12557
12558@table @file
e07c999f
PH
12559@item .ada
12560@itemx .ads
12561@itemx .adb
12562@itemx .a
12563Ada source file.
c906108c
SS
12564
12565@item .c
12566C source file
12567
12568@item .C
12569@itemx .cc
12570@itemx .cp
12571@itemx .cpp
12572@itemx .cxx
12573@itemx .c++
b37052ae 12574C@t{++} source file
c906108c 12575
6aecb9c2
JB
12576@item .d
12577D source file
12578
b37303ee
AF
12579@item .m
12580Objective-C source file
12581
c906108c
SS
12582@item .f
12583@itemx .F
12584Fortran source file
12585
c906108c
SS
12586@item .mod
12587Modula-2 source file
c906108c
SS
12588
12589@item .s
12590@itemx .S
12591Assembler source file. This actually behaves almost like C, but
12592@value{GDBN} does not skip over function prologues when stepping.
12593@end table
12594
12595In addition, you may set the language associated with a filename
79a6e687 12596extension. @xref{Show, , Displaying the Language}.
c906108c 12597
6d2ebf8b 12598@node Manually
79a6e687 12599@subsection Setting the Working Language
c906108c
SS
12600
12601If you allow @value{GDBN} to set the language automatically,
12602expressions are interpreted the same way in your debugging session and
12603your program.
12604
12605@kindex set language
12606If you wish, you may set the language manually. To do this, issue the
12607command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 12608a language, such as
c906108c 12609@code{c} or @code{modula-2}.
c906108c
SS
12610For a list of the supported languages, type @samp{set language}.
12611
c906108c
SS
12612Setting the language manually prevents @value{GDBN} from updating the working
12613language automatically. This can lead to confusion if you try
12614to debug a program when the working language is not the same as the
12615source language, when an expression is acceptable to both
12616languages---but means different things. For instance, if the current
12617source file were written in C, and @value{GDBN} was parsing Modula-2, a
12618command such as:
12619
474c8240 12620@smallexample
c906108c 12621print a = b + c
474c8240 12622@end smallexample
c906108c
SS
12623
12624@noindent
12625might not have the effect you intended. In C, this means to add
12626@code{b} and @code{c} and place the result in @code{a}. The result
12627printed would be the value of @code{a}. In Modula-2, this means to compare
12628@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 12629
6d2ebf8b 12630@node Automatically
79a6e687 12631@subsection Having @value{GDBN} Infer the Source Language
c906108c
SS
12632
12633To have @value{GDBN} set the working language automatically, use
12634@samp{set language local} or @samp{set language auto}. @value{GDBN}
12635then infers the working language. That is, when your program stops in a
12636frame (usually by encountering a breakpoint), @value{GDBN} sets the
12637working language to the language recorded for the function in that
12638frame. If the language for a frame is unknown (that is, if the function
12639or block corresponding to the frame was defined in a source file that
12640does not have a recognized extension), the current working language is
12641not changed, and @value{GDBN} issues a warning.
12642
12643This may not seem necessary for most programs, which are written
12644entirely in one source language. However, program modules and libraries
12645written in one source language can be used by a main program written in
12646a different source language. Using @samp{set language auto} in this
12647case frees you from having to set the working language manually.
12648
6d2ebf8b 12649@node Show
79a6e687 12650@section Displaying the Language
c906108c
SS
12651
12652The following commands help you find out which language is the
12653working language, and also what language source files were written in.
12654
c906108c
SS
12655@table @code
12656@item show language
9c16f35a 12657@kindex show language
c906108c
SS
12658Display the current working language. This is the
12659language you can use with commands such as @code{print} to
12660build and compute expressions that may involve variables in your program.
12661
12662@item info frame
4644b6e3 12663@kindex info frame@r{, show the source language}
5d161b24 12664Display the source language for this frame. This language becomes the
c906108c 12665working language if you use an identifier from this frame.
79a6e687 12666@xref{Frame Info, ,Information about a Frame}, to identify the other
c906108c
SS
12667information listed here.
12668
12669@item info source
4644b6e3 12670@kindex info source@r{, show the source language}
c906108c 12671Display the source language of this source file.
5d161b24 12672@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
12673information listed here.
12674@end table
12675
12676In unusual circumstances, you may have source files with extensions
12677not in the standard list. You can then set the extension associated
12678with a language explicitly:
12679
c906108c 12680@table @code
09d4efe1 12681@item set extension-language @var{ext} @var{language}
9c16f35a 12682@kindex set extension-language
09d4efe1
EZ
12683Tell @value{GDBN} that source files with extension @var{ext} are to be
12684assumed as written in the source language @var{language}.
c906108c
SS
12685
12686@item info extensions
9c16f35a 12687@kindex info extensions
c906108c
SS
12688List all the filename extensions and the associated languages.
12689@end table
12690
6d2ebf8b 12691@node Checks
79a6e687 12692@section Type and Range Checking
c906108c 12693
c906108c
SS
12694Some languages are designed to guard you against making seemingly common
12695errors through a series of compile- and run-time checks. These include
a451cb65 12696checking the type of arguments to functions and operators and making
c906108c
SS
12697sure mathematical overflows are caught at run time. Checks such as
12698these help to ensure a program's correctness once it has been compiled
a451cb65 12699by eliminating type mismatches and providing active checks for range
c906108c
SS
12700errors when your program is running.
12701
a451cb65
KS
12702By default @value{GDBN} checks for these errors according to the
12703rules of the current source language. Although @value{GDBN} does not check
12704the statements in your program, it can check expressions entered directly
12705into @value{GDBN} for evaluation via the @code{print} command, for example.
c906108c
SS
12706
12707@menu
12708* Type Checking:: An overview of type checking
12709* Range Checking:: An overview of range checking
12710@end menu
12711
12712@cindex type checking
12713@cindex checks, type
6d2ebf8b 12714@node Type Checking
79a6e687 12715@subsection An Overview of Type Checking
c906108c 12716
a451cb65 12717Some languages, such as C and C@t{++}, are strongly typed, meaning that the
c906108c
SS
12718arguments to operators and functions have to be of the correct type,
12719otherwise an error occurs. These checks prevent type mismatch
12720errors from ever causing any run-time problems. For example,
12721
12722@smallexample
a451cb65
KS
12723int klass::my_method(char *b) @{ return b ? 1 : 2; @}
12724
12725(@value{GDBP}) print obj.my_method (0)
12726$1 = 2
c906108c 12727@exdent but
a451cb65
KS
12728(@value{GDBP}) print obj.my_method (0x1234)
12729Cannot resolve method klass::my_method to any overloaded instance
c906108c
SS
12730@end smallexample
12731
a451cb65
KS
12732The second example fails because in C@t{++} the integer constant
12733@samp{0x1234} is not type-compatible with the pointer parameter type.
c906108c 12734
a451cb65
KS
12735For the expressions you use in @value{GDBN} commands, you can tell
12736@value{GDBN} to not enforce strict type checking or
5d161b24 12737to treat any mismatches as errors and abandon the expression;
a451cb65
KS
12738When type checking is disabled, @value{GDBN} successfully evaluates
12739expressions like the second example above.
c906108c 12740
a451cb65 12741Even if type checking is off, there may be other reasons
5d161b24
DB
12742related to type that prevent @value{GDBN} from evaluating an expression.
12743For instance, @value{GDBN} does not know how to add an @code{int} and
12744a @code{struct foo}. These particular type errors have nothing to do
a451cb65
KS
12745with the language in use and usually arise from expressions which make
12746little sense to evaluate anyway.
c906108c 12747
a451cb65 12748@value{GDBN} provides some additional commands for controlling type checking:
c906108c 12749
c906108c
SS
12750@kindex set check type
12751@kindex show check type
12752@table @code
c906108c
SS
12753@item set check type on
12754@itemx set check type off
a451cb65 12755Set strict type checking on or off. If any type mismatches occur in
d4f3574e 12756evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
12757message and aborts evaluation of the expression.
12758
a451cb65
KS
12759@item show check type
12760Show the current setting of type checking and whether @value{GDBN}
12761is enforcing strict type checking rules.
c906108c
SS
12762@end table
12763
12764@cindex range checking
12765@cindex checks, range
6d2ebf8b 12766@node Range Checking
79a6e687 12767@subsection An Overview of Range Checking
c906108c
SS
12768
12769In some languages (such as Modula-2), it is an error to exceed the
12770bounds of a type; this is enforced with run-time checks. Such range
12771checking is meant to ensure program correctness by making sure
12772computations do not overflow, or indices on an array element access do
12773not exceed the bounds of the array.
12774
12775For expressions you use in @value{GDBN} commands, you can tell
12776@value{GDBN} to treat range errors in one of three ways: ignore them,
12777always treat them as errors and abandon the expression, or issue
12778warnings but evaluate the expression anyway.
12779
12780A range error can result from numerical overflow, from exceeding an
12781array index bound, or when you type a constant that is not a member
12782of any type. Some languages, however, do not treat overflows as an
12783error. In many implementations of C, mathematical overflow causes the
12784result to ``wrap around'' to lower values---for example, if @var{m} is
12785the largest integer value, and @var{s} is the smallest, then
12786
474c8240 12787@smallexample
c906108c 12788@var{m} + 1 @result{} @var{s}
474c8240 12789@end smallexample
c906108c
SS
12790
12791This, too, is specific to individual languages, and in some cases
79a6e687
BW
12792specific to individual compilers or machines. @xref{Supported Languages, ,
12793Supported Languages}, for further details on specific languages.
c906108c
SS
12794
12795@value{GDBN} provides some additional commands for controlling the range checker:
12796
c906108c
SS
12797@kindex set check range
12798@kindex show check range
12799@table @code
12800@item set check range auto
12801Set range checking on or off based on the current working language.
79a6e687 12802@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
12803each language.
12804
12805@item set check range on
12806@itemx set check range off
12807Set range checking on or off, overriding the default setting for the
12808current working language. A warning is issued if the setting does not
c3f6f71d
JM
12809match the language default. If a range error occurs and range checking is on,
12810then a message is printed and evaluation of the expression is aborted.
c906108c
SS
12811
12812@item set check range warn
12813Output messages when the @value{GDBN} range checker detects a range error,
12814but attempt to evaluate the expression anyway. Evaluating the
12815expression may still be impossible for other reasons, such as accessing
12816memory that the process does not own (a typical example from many Unix
12817systems).
12818
12819@item show range
12820Show the current setting of the range checker, and whether or not it is
12821being set automatically by @value{GDBN}.
12822@end table
c906108c 12823
79a6e687
BW
12824@node Supported Languages
12825@section Supported Languages
c906108c 12826
a766d390
DE
12827@value{GDBN} supports C, C@t{++}, D, Go, Objective-C, Fortran, Java,
12828OpenCL C, Pascal, assembly, Modula-2, and Ada.
cce74817 12829@c This is false ...
c906108c
SS
12830Some @value{GDBN} features may be used in expressions regardless of the
12831language you use: the @value{GDBN} @code{@@} and @code{::} operators,
12832and the @samp{@{type@}addr} construct (@pxref{Expressions,
12833,Expressions}) can be used with the constructs of any supported
12834language.
12835
12836The following sections detail to what degree each source language is
12837supported by @value{GDBN}. These sections are not meant to be language
12838tutorials or references, but serve only as a reference guide to what the
12839@value{GDBN} expression parser accepts, and what input and output
12840formats should look like for different languages. There are many good
12841books written on each of these languages; please look to these for a
12842language reference or tutorial.
12843
c906108c 12844@menu
b37303ee 12845* C:: C and C@t{++}
6aecb9c2 12846* D:: D
a766d390 12847* Go:: Go
b383017d 12848* Objective-C:: Objective-C
f4b8a18d 12849* OpenCL C:: OpenCL C
09d4efe1 12850* Fortran:: Fortran
9c16f35a 12851* Pascal:: Pascal
b37303ee 12852* Modula-2:: Modula-2
e07c999f 12853* Ada:: Ada
c906108c
SS
12854@end menu
12855
6d2ebf8b 12856@node C
b37052ae 12857@subsection C and C@t{++}
7a292a7a 12858
b37052ae
EZ
12859@cindex C and C@t{++}
12860@cindex expressions in C or C@t{++}
c906108c 12861
b37052ae 12862Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
12863to both languages. Whenever this is the case, we discuss those languages
12864together.
12865
41afff9a
EZ
12866@cindex C@t{++}
12867@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
12868@cindex @sc{gnu} C@t{++}
12869The C@t{++} debugging facilities are jointly implemented by the C@t{++}
12870compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
12871effectively, you must compile your C@t{++} programs with a supported
12872C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
12873compiler (@code{aCC}).
12874
c906108c 12875@menu
b37052ae
EZ
12876* C Operators:: C and C@t{++} operators
12877* C Constants:: C and C@t{++} constants
79a6e687 12878* C Plus Plus Expressions:: C@t{++} expressions
b37052ae
EZ
12879* C Defaults:: Default settings for C and C@t{++}
12880* C Checks:: C and C@t{++} type and range checks
c906108c 12881* Debugging C:: @value{GDBN} and C
79a6e687 12882* Debugging C Plus Plus:: @value{GDBN} features for C@t{++}
febe4383 12883* Decimal Floating Point:: Numbers in Decimal Floating Point format
c906108c 12884@end menu
c906108c 12885
6d2ebf8b 12886@node C Operators
79a6e687 12887@subsubsection C and C@t{++} Operators
7a292a7a 12888
b37052ae 12889@cindex C and C@t{++} operators
c906108c
SS
12890
12891Operators must be defined on values of specific types. For instance,
12892@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 12893often defined on groups of types.
c906108c 12894
b37052ae 12895For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
12896
12897@itemize @bullet
53a5351d 12898
c906108c 12899@item
c906108c 12900@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 12901specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
12902
12903@item
d4f3574e
SS
12904@emph{Floating-point types} include @code{float}, @code{double}, and
12905@code{long double} (if supported by the target platform).
c906108c
SS
12906
12907@item
53a5351d 12908@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
12909
12910@item
12911@emph{Scalar types} include all of the above.
53a5351d 12912
c906108c
SS
12913@end itemize
12914
12915@noindent
12916The following operators are supported. They are listed here
12917in order of increasing precedence:
12918
12919@table @code
12920@item ,
12921The comma or sequencing operator. Expressions in a comma-separated list
12922are evaluated from left to right, with the result of the entire
12923expression being the last expression evaluated.
12924
12925@item =
12926Assignment. The value of an assignment expression is the value
12927assigned. Defined on scalar types.
12928
12929@item @var{op}=
12930Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
12931and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 12932@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
12933@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
12934@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
12935
12936@item ?:
12937The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
12938of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
12939integral type.
12940
12941@item ||
12942Logical @sc{or}. Defined on integral types.
12943
12944@item &&
12945Logical @sc{and}. Defined on integral types.
12946
12947@item |
12948Bitwise @sc{or}. Defined on integral types.
12949
12950@item ^
12951Bitwise exclusive-@sc{or}. Defined on integral types.
12952
12953@item &
12954Bitwise @sc{and}. Defined on integral types.
12955
12956@item ==@r{, }!=
12957Equality and inequality. Defined on scalar types. The value of these
12958expressions is 0 for false and non-zero for true.
12959
12960@item <@r{, }>@r{, }<=@r{, }>=
12961Less than, greater than, less than or equal, greater than or equal.
12962Defined on scalar types. The value of these expressions is 0 for false
12963and non-zero for true.
12964
12965@item <<@r{, }>>
12966left shift, and right shift. Defined on integral types.
12967
12968@item @@
12969The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
12970
12971@item +@r{, }-
12972Addition and subtraction. Defined on integral types, floating-point types and
12973pointer types.
12974
12975@item *@r{, }/@r{, }%
12976Multiplication, division, and modulus. Multiplication and division are
12977defined on integral and floating-point types. Modulus is defined on
12978integral types.
12979
12980@item ++@r{, }--
12981Increment and decrement. When appearing before a variable, the
12982operation is performed before the variable is used in an expression;
12983when appearing after it, the variable's value is used before the
12984operation takes place.
12985
12986@item *
12987Pointer dereferencing. Defined on pointer types. Same precedence as
12988@code{++}.
12989
12990@item &
12991Address operator. Defined on variables. Same precedence as @code{++}.
12992
b37052ae
EZ
12993For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
12994allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
b17828ca 12995to examine the address
b37052ae 12996where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 12997stored.
c906108c
SS
12998
12999@item -
13000Negative. Defined on integral and floating-point types. Same
13001precedence as @code{++}.
13002
13003@item !
13004Logical negation. Defined on integral types. Same precedence as
13005@code{++}.
13006
13007@item ~
13008Bitwise complement operator. Defined on integral types. Same precedence as
13009@code{++}.
13010
13011
13012@item .@r{, }->
13013Structure member, and pointer-to-structure member. For convenience,
13014@value{GDBN} regards the two as equivalent, choosing whether to dereference a
13015pointer based on the stored type information.
13016Defined on @code{struct} and @code{union} data.
13017
c906108c
SS
13018@item .*@r{, }->*
13019Dereferences of pointers to members.
c906108c
SS
13020
13021@item []
13022Array indexing. @code{@var{a}[@var{i}]} is defined as
13023@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
13024
13025@item ()
13026Function parameter list. Same precedence as @code{->}.
13027
c906108c 13028@item ::
b37052ae 13029C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 13030and @code{class} types.
c906108c
SS
13031
13032@item ::
7a292a7a
SS
13033Doubled colons also represent the @value{GDBN} scope operator
13034(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
13035above.
c906108c
SS
13036@end table
13037
c906108c
SS
13038If an operator is redefined in the user code, @value{GDBN} usually
13039attempts to invoke the redefined version instead of using the operator's
13040predefined meaning.
c906108c 13041
6d2ebf8b 13042@node C Constants
79a6e687 13043@subsubsection C and C@t{++} Constants
c906108c 13044
b37052ae 13045@cindex C and C@t{++} constants
c906108c 13046
b37052ae 13047@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 13048following ways:
c906108c
SS
13049
13050@itemize @bullet
13051@item
13052Integer constants are a sequence of digits. Octal constants are
6ca652b0
EZ
13053specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
13054by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
c906108c
SS
13055@samp{l}, specifying that the constant should be treated as a
13056@code{long} value.
13057
13058@item
13059Floating point constants are a sequence of digits, followed by a decimal
13060point, followed by a sequence of digits, and optionally followed by an
13061exponent. An exponent is of the form:
13062@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
13063sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
13064A floating-point constant may also end with a letter @samp{f} or
13065@samp{F}, specifying that the constant should be treated as being of
13066the @code{float} (as opposed to the default @code{double}) type; or with
13067a letter @samp{l} or @samp{L}, which specifies a @code{long double}
13068constant.
c906108c
SS
13069
13070@item
13071Enumerated constants consist of enumerated identifiers, or their
13072integral equivalents.
13073
13074@item
13075Character constants are a single character surrounded by single quotes
13076(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 13077(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
13078be represented by a letter or by @dfn{escape sequences}, which are of
13079the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
13080of the character's ordinal value; or of the form @samp{\@var{x}}, where
13081@samp{@var{x}} is a predefined special character---for example,
13082@samp{\n} for newline.
13083
e0f8f636
TT
13084Wide character constants can be written by prefixing a character
13085constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide
13086form of @samp{x}. The target wide character set is used when
13087computing the value of this constant (@pxref{Character Sets}).
13088
c906108c 13089@item
96a2c332
SS
13090String constants are a sequence of character constants surrounded by
13091double quotes (@code{"}). Any valid character constant (as described
13092above) may appear. Double quotes within the string must be preceded by
13093a backslash, so for instance @samp{"a\"b'c"} is a string of five
13094characters.
c906108c 13095
e0f8f636
TT
13096Wide string constants can be written by prefixing a string constant
13097with @samp{L}, as in C. The target wide character set is used when
13098computing the value of this constant (@pxref{Character Sets}).
13099
c906108c
SS
13100@item
13101Pointer constants are an integral value. You can also write pointers
13102to constants using the C operator @samp{&}.
13103
13104@item
13105Array constants are comma-separated lists surrounded by braces @samp{@{}
13106and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
13107integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
13108and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
13109@end itemize
13110
79a6e687
BW
13111@node C Plus Plus Expressions
13112@subsubsection C@t{++} Expressions
b37052ae
EZ
13113
13114@cindex expressions in C@t{++}
13115@value{GDBN} expression handling can interpret most C@t{++} expressions.
13116
0179ffac
DC
13117@cindex debugging C@t{++} programs
13118@cindex C@t{++} compilers
13119@cindex debug formats and C@t{++}
13120@cindex @value{NGCC} and C@t{++}
c906108c 13121@quotation
e0f8f636
TT
13122@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use
13123the proper compiler and the proper debug format. Currently,
13124@value{GDBN} works best when debugging C@t{++} code that is compiled
13125with the most recent version of @value{NGCC} possible. The DWARF
13126debugging format is preferred; @value{NGCC} defaults to this on most
13127popular platforms. Other compilers and/or debug formats are likely to
13128work badly or not at all when using @value{GDBN} to debug C@t{++}
13129code. @xref{Compilation}.
c906108c 13130@end quotation
c906108c
SS
13131
13132@enumerate
13133
13134@cindex member functions
13135@item
13136Member function calls are allowed; you can use expressions like
13137
474c8240 13138@smallexample
c906108c 13139count = aml->GetOriginal(x, y)
474c8240 13140@end smallexample
c906108c 13141
41afff9a 13142@vindex this@r{, inside C@t{++} member functions}
b37052ae 13143@cindex namespace in C@t{++}
c906108c
SS
13144@item
13145While a member function is active (in the selected stack frame), your
13146expressions have the same namespace available as the member function;
13147that is, @value{GDBN} allows implicit references to the class instance
e0f8f636
TT
13148pointer @code{this} following the same rules as C@t{++}. @code{using}
13149declarations in the current scope are also respected by @value{GDBN}.
c906108c 13150
c906108c 13151@cindex call overloaded functions
d4f3574e 13152@cindex overloaded functions, calling
b37052ae 13153@cindex type conversions in C@t{++}
c906108c
SS
13154@item
13155You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 13156call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
13157perform overload resolution involving user-defined type conversions,
13158calls to constructors, or instantiations of templates that do not exist
13159in the program. It also cannot handle ellipsis argument lists or
13160default arguments.
13161
13162It does perform integral conversions and promotions, floating-point
13163promotions, arithmetic conversions, pointer conversions, conversions of
13164class objects to base classes, and standard conversions such as those of
13165functions or arrays to pointers; it requires an exact match on the
13166number of function arguments.
13167
13168Overload resolution is always performed, unless you have specified
79a6e687
BW
13169@code{set overload-resolution off}. @xref{Debugging C Plus Plus,
13170,@value{GDBN} Features for C@t{++}}.
c906108c 13171
d4f3574e 13172You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
13173explicit function signature to call an overloaded function, as in
13174@smallexample
13175p 'foo(char,int)'('x', 13)
13176@end smallexample
d4f3574e 13177
c906108c 13178The @value{GDBN} command-completion facility can simplify this;
79a6e687 13179see @ref{Completion, ,Command Completion}.
c906108c 13180
c906108c
SS
13181@cindex reference declarations
13182@item
b37052ae
EZ
13183@value{GDBN} understands variables declared as C@t{++} references; you can use
13184them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
13185dereferenced.
13186
13187In the parameter list shown when @value{GDBN} displays a frame, the values of
13188reference variables are not displayed (unlike other variables); this
13189avoids clutter, since references are often used for large structures.
13190The @emph{address} of a reference variable is always shown, unless
13191you have specified @samp{set print address off}.
13192
13193@item
b37052ae 13194@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
13195expressions can use it just as expressions in your program do. Since
13196one scope may be defined in another, you can use @code{::} repeatedly if
13197necessary, for example in an expression like
13198@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 13199resolving name scope by reference to source files, in both C and C@t{++}
79a6e687 13200debugging (@pxref{Variables, ,Program Variables}).
c906108c 13201
e0f8f636
TT
13202@item
13203@value{GDBN} performs argument-dependent lookup, following the C@t{++}
13204specification.
13205@end enumerate
c906108c 13206
6d2ebf8b 13207@node C Defaults
79a6e687 13208@subsubsection C and C@t{++} Defaults
7a292a7a 13209
b37052ae 13210@cindex C and C@t{++} defaults
c906108c 13211
a451cb65
KS
13212If you allow @value{GDBN} to set range checking automatically, it
13213defaults to @code{off} whenever the working language changes to
b37052ae 13214C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 13215selects the working language.
c906108c
SS
13216
13217If you allow @value{GDBN} to set the language automatically, it
13218recognizes source files whose names end with @file{.c}, @file{.C}, or
13219@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
b37052ae 13220these files, it sets the working language to C or C@t{++}.
79a6e687 13221@xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
c906108c
SS
13222for further details.
13223
6d2ebf8b 13224@node C Checks
79a6e687 13225@subsubsection C and C@t{++} Type and Range Checks
7a292a7a 13226
b37052ae 13227@cindex C and C@t{++} checks
c906108c 13228
a451cb65
KS
13229By default, when @value{GDBN} parses C or C@t{++} expressions, strict type
13230checking is used. However, if you turn type checking off, @value{GDBN}
13231will allow certain non-standard conversions, such as promoting integer
13232constants to pointers.
c906108c
SS
13233
13234Range checking, if turned on, is done on mathematical operations. Array
13235indices are not checked, since they are often used to index a pointer
13236that is not itself an array.
c906108c 13237
6d2ebf8b 13238@node Debugging C
c906108c 13239@subsubsection @value{GDBN} and C
c906108c
SS
13240
13241The @code{set print union} and @code{show print union} commands apply to
13242the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
13243inside a @code{struct} or @code{class} is also printed. Otherwise, it
13244appears as @samp{@{...@}}.
c906108c
SS
13245
13246The @code{@@} operator aids in the debugging of dynamic arrays, formed
13247with pointers and a memory allocation function. @xref{Expressions,
13248,Expressions}.
13249
79a6e687
BW
13250@node Debugging C Plus Plus
13251@subsubsection @value{GDBN} Features for C@t{++}
c906108c 13252
b37052ae 13253@cindex commands for C@t{++}
7a292a7a 13254
b37052ae
EZ
13255Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
13256designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
13257
13258@table @code
13259@cindex break in overloaded functions
13260@item @r{breakpoint menus}
13261When you want a breakpoint in a function whose name is overloaded,
6ba66d6a
JB
13262@value{GDBN} has the capability to display a menu of possible breakpoint
13263locations to help you specify which function definition you want.
13264@xref{Ambiguous Expressions,,Ambiguous Expressions}.
c906108c 13265
b37052ae 13266@cindex overloading in C@t{++}
c906108c
SS
13267@item rbreak @var{regex}
13268Setting breakpoints using regular expressions is helpful for setting
13269breakpoints on overloaded functions that are not members of any special
13270classes.
79a6e687 13271@xref{Set Breaks, ,Setting Breakpoints}.
c906108c 13272
b37052ae 13273@cindex C@t{++} exception handling
c906108c
SS
13274@item catch throw
13275@itemx catch catch
b37052ae 13276Debug C@t{++} exception handling using these commands. @xref{Set
79a6e687 13277Catchpoints, , Setting Catchpoints}.
c906108c
SS
13278
13279@cindex inheritance
13280@item ptype @var{typename}
13281Print inheritance relationships as well as other information for type
13282@var{typename}.
13283@xref{Symbols, ,Examining the Symbol Table}.
13284
c4aeac85
TT
13285@item info vtbl @var{expression}.
13286The @code{info vtbl} command can be used to display the virtual
13287method tables of the object computed by @var{expression}. This shows
13288one entry per virtual table; there may be multiple virtual tables when
13289multiple inheritance is in use.
13290
b37052ae 13291@cindex C@t{++} symbol display
c906108c
SS
13292@item set print demangle
13293@itemx show print demangle
13294@itemx set print asm-demangle
13295@itemx show print asm-demangle
b37052ae
EZ
13296Control whether C@t{++} symbols display in their source form, both when
13297displaying code as C@t{++} source and when displaying disassemblies.
79a6e687 13298@xref{Print Settings, ,Print Settings}.
c906108c
SS
13299
13300@item set print object
13301@itemx show print object
13302Choose whether to print derived (actual) or declared types of objects.
79a6e687 13303@xref{Print Settings, ,Print Settings}.
c906108c
SS
13304
13305@item set print vtbl
13306@itemx show print vtbl
13307Control the format for printing virtual function tables.
79a6e687 13308@xref{Print Settings, ,Print Settings}.
c906108c 13309(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 13310ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
13311
13312@kindex set overload-resolution
d4f3574e 13313@cindex overloaded functions, overload resolution
c906108c 13314@item set overload-resolution on
b37052ae 13315Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
13316is on. For overloaded functions, @value{GDBN} evaluates the arguments
13317and searches for a function whose signature matches the argument types,
79a6e687
BW
13318using the standard C@t{++} conversion rules (see @ref{C Plus Plus
13319Expressions, ,C@t{++} Expressions}, for details).
13320If it cannot find a match, it emits a message.
c906108c
SS
13321
13322@item set overload-resolution off
b37052ae 13323Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
13324overloaded functions that are not class member functions, @value{GDBN}
13325chooses the first function of the specified name that it finds in the
13326symbol table, whether or not its arguments are of the correct type. For
13327overloaded functions that are class member functions, @value{GDBN}
13328searches for a function whose signature @emph{exactly} matches the
13329argument types.
c906108c 13330
9c16f35a
EZ
13331@kindex show overload-resolution
13332@item show overload-resolution
13333Show the current setting of overload resolution.
13334
c906108c
SS
13335@item @r{Overloaded symbol names}
13336You can specify a particular definition of an overloaded symbol, using
b37052ae 13337the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
13338@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
13339also use the @value{GDBN} command-line word completion facilities to list the
13340available choices, or to finish the type list for you.
79a6e687 13341@xref{Completion,, Command Completion}, for details on how to do this.
c906108c 13342@end table
c906108c 13343
febe4383
TJB
13344@node Decimal Floating Point
13345@subsubsection Decimal Floating Point format
13346@cindex decimal floating point format
13347
13348@value{GDBN} can examine, set and perform computations with numbers in
13349decimal floating point format, which in the C language correspond to the
13350@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as
13351specified by the extension to support decimal floating-point arithmetic.
13352
13353There are two encodings in use, depending on the architecture: BID (Binary
13354Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for
99e008fe 13355PowerPC. @value{GDBN} will use the appropriate encoding for the configured
febe4383
TJB
13356target.
13357
13358Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN}
13359to manipulate decimal floating point numbers, it is not possible to convert
13360(using a cast, for example) integers wider than 32-bit to decimal float.
13361
13362In addition, in order to imitate @value{GDBN}'s behaviour with binary floating
13363point computations, error checking in decimal float operations ignores
13364underflow, overflow and divide by zero exceptions.
13365
4acd40f3 13366In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers
99e008fe
EZ
13367to inspect @code{_Decimal128} values stored in floating point registers.
13368See @ref{PowerPC,,PowerPC} for more details.
4acd40f3 13369
6aecb9c2
JB
13370@node D
13371@subsection D
13372
13373@cindex D
13374@value{GDBN} can be used to debug programs written in D and compiled with
13375GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D
13376specific feature --- dynamic arrays.
13377
a766d390
DE
13378@node Go
13379@subsection Go
13380
13381@cindex Go (programming language)
13382@value{GDBN} can be used to debug programs written in Go and compiled with
13383@file{gccgo} or @file{6g} compilers.
13384
13385Here is a summary of the Go-specific features and restrictions:
13386
13387@table @code
13388@cindex current Go package
13389@item The current Go package
13390The name of the current package does not need to be specified when
13391specifying global variables and functions.
13392
13393For example, given the program:
13394
13395@example
13396package main
13397var myglob = "Shall we?"
13398func main () @{
13399 // ...
13400@}
13401@end example
13402
13403When stopped inside @code{main} either of these work:
13404
13405@example
13406(gdb) p myglob
13407(gdb) p main.myglob
13408@end example
13409
13410@cindex builtin Go types
13411@item Builtin Go types
13412The @code{string} type is recognized by @value{GDBN} and is printed
13413as a string.
13414
13415@cindex builtin Go functions
13416@item Builtin Go functions
13417The @value{GDBN} expression parser recognizes the @code{unsafe.Sizeof}
13418function and handles it internally.
a766d390
DE
13419
13420@cindex restrictions on Go expressions
13421@item Restrictions on Go expressions
13422All Go operators are supported except @code{&^}.
13423The Go @code{_} ``blank identifier'' is not supported.
13424Automatic dereferencing of pointers is not supported.
50f042b9 13425@end table
a766d390 13426
b37303ee
AF
13427@node Objective-C
13428@subsection Objective-C
13429
13430@cindex Objective-C
13431This section provides information about some commands and command
721c2651
EZ
13432options that are useful for debugging Objective-C code. See also
13433@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a
13434few more commands specific to Objective-C support.
b37303ee
AF
13435
13436@menu
b383017d
RM
13437* Method Names in Commands::
13438* The Print Command with Objective-C::
b37303ee
AF
13439@end menu
13440
c8f4133a 13441@node Method Names in Commands
b37303ee
AF
13442@subsubsection Method Names in Commands
13443
13444The following commands have been extended to accept Objective-C method
13445names as line specifications:
13446
13447@kindex clear@r{, and Objective-C}
13448@kindex break@r{, and Objective-C}
13449@kindex info line@r{, and Objective-C}
13450@kindex jump@r{, and Objective-C}
13451@kindex list@r{, and Objective-C}
13452@itemize
13453@item @code{clear}
13454@item @code{break}
13455@item @code{info line}
13456@item @code{jump}
13457@item @code{list}
13458@end itemize
13459
13460A fully qualified Objective-C method name is specified as
13461
13462@smallexample
13463-[@var{Class} @var{methodName}]
13464@end smallexample
13465
c552b3bb
JM
13466where the minus sign is used to indicate an instance method and a
13467plus sign (not shown) is used to indicate a class method. The class
13468name @var{Class} and method name @var{methodName} are enclosed in
13469brackets, similar to the way messages are specified in Objective-C
13470source code. For example, to set a breakpoint at the @code{create}
13471instance method of class @code{Fruit} in the program currently being
13472debugged, enter:
b37303ee
AF
13473
13474@smallexample
13475break -[Fruit create]
13476@end smallexample
13477
13478To list ten program lines around the @code{initialize} class method,
13479enter:
13480
13481@smallexample
13482list +[NSText initialize]
13483@end smallexample
13484
c552b3bb
JM
13485In the current version of @value{GDBN}, the plus or minus sign is
13486required. In future versions of @value{GDBN}, the plus or minus
13487sign will be optional, but you can use it to narrow the search. It
13488is also possible to specify just a method name:
b37303ee
AF
13489
13490@smallexample
13491break create
13492@end smallexample
13493
13494You must specify the complete method name, including any colons. If
13495your program's source files contain more than one @code{create} method,
13496you'll be presented with a numbered list of classes that implement that
13497method. Indicate your choice by number, or type @samp{0} to exit if
13498none apply.
13499
13500As another example, to clear a breakpoint established at the
13501@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
13502
13503@smallexample
13504clear -[NSWindow makeKeyAndOrderFront:]
13505@end smallexample
13506
13507@node The Print Command with Objective-C
13508@subsubsection The Print Command With Objective-C
721c2651 13509@cindex Objective-C, print objects
c552b3bb
JM
13510@kindex print-object
13511@kindex po @r{(@code{print-object})}
b37303ee 13512
c552b3bb 13513The print command has also been extended to accept methods. For example:
b37303ee
AF
13514
13515@smallexample
c552b3bb 13516print -[@var{object} hash]
b37303ee
AF
13517@end smallexample
13518
13519@cindex print an Objective-C object description
c552b3bb
JM
13520@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
13521@noindent
13522will tell @value{GDBN} to send the @code{hash} message to @var{object}
13523and print the result. Also, an additional command has been added,
13524@code{print-object} or @code{po} for short, which is meant to print
13525the description of an object. However, this command may only work
13526with certain Objective-C libraries that have a particular hook
13527function, @code{_NSPrintForDebugger}, defined.
b37303ee 13528
f4b8a18d
KW
13529@node OpenCL C
13530@subsection OpenCL C
13531
13532@cindex OpenCL C
13533This section provides information about @value{GDBN}s OpenCL C support.
13534
13535@menu
13536* OpenCL C Datatypes::
13537* OpenCL C Expressions::
13538* OpenCL C Operators::
13539@end menu
13540
13541@node OpenCL C Datatypes
13542@subsubsection OpenCL C Datatypes
13543
13544@cindex OpenCL C Datatypes
13545@value{GDBN} supports the builtin scalar and vector datatypes specified
13546by OpenCL 1.1. In addition the half- and double-precision floating point
13547data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL
13548extensions are also known to @value{GDBN}.
13549
13550@node OpenCL C Expressions
13551@subsubsection OpenCL C Expressions
13552
13553@cindex OpenCL C Expressions
13554@value{GDBN} supports accesses to vector components including the access as
13555lvalue where possible. Since OpenCL C is based on C99 most C expressions
13556supported by @value{GDBN} can be used as well.
13557
13558@node OpenCL C Operators
13559@subsubsection OpenCL C Operators
13560
13561@cindex OpenCL C Operators
13562@value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and
13563vector data types.
13564
09d4efe1
EZ
13565@node Fortran
13566@subsection Fortran
13567@cindex Fortran-specific support in @value{GDBN}
13568
814e32d7
WZ
13569@value{GDBN} can be used to debug programs written in Fortran, but it
13570currently supports only the features of Fortran 77 language.
13571
13572@cindex trailing underscore, in Fortran symbols
13573Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
13574among them) append an underscore to the names of variables and
13575functions. When you debug programs compiled by those compilers, you
13576will need to refer to variables and functions with a trailing
13577underscore.
13578
13579@menu
13580* Fortran Operators:: Fortran operators and expressions
13581* Fortran Defaults:: Default settings for Fortran
79a6e687 13582* Special Fortran Commands:: Special @value{GDBN} commands for Fortran
814e32d7
WZ
13583@end menu
13584
13585@node Fortran Operators
79a6e687 13586@subsubsection Fortran Operators and Expressions
814e32d7
WZ
13587
13588@cindex Fortran operators and expressions
13589
13590Operators must be defined on values of specific types. For instance,
13591@code{+} is defined on numbers, but not on characters or other non-
ff2587ec 13592arithmetic types. Operators are often defined on groups of types.
814e32d7
WZ
13593
13594@table @code
13595@item **
99e008fe 13596The exponentiation operator. It raises the first operand to the power
814e32d7
WZ
13597of the second one.
13598
13599@item :
13600The range operator. Normally used in the form of array(low:high) to
13601represent a section of array.
68837c9d
MD
13602
13603@item %
13604The access component operator. Normally used to access elements in derived
13605types. Also suitable for unions. As unions aren't part of regular Fortran,
13606this can only happen when accessing a register that uses a gdbarch-defined
13607union type.
814e32d7
WZ
13608@end table
13609
13610@node Fortran Defaults
13611@subsubsection Fortran Defaults
13612
13613@cindex Fortran Defaults
13614
13615Fortran symbols are usually case-insensitive, so @value{GDBN} by
13616default uses case-insensitive matches for Fortran symbols. You can
13617change that with the @samp{set case-insensitive} command, see
13618@ref{Symbols}, for the details.
13619
79a6e687
BW
13620@node Special Fortran Commands
13621@subsubsection Special Fortran Commands
814e32d7
WZ
13622
13623@cindex Special Fortran commands
13624
db2e3e2e
BW
13625@value{GDBN} has some commands to support Fortran-specific features,
13626such as displaying common blocks.
814e32d7 13627
09d4efe1
EZ
13628@table @code
13629@cindex @code{COMMON} blocks, Fortran
13630@kindex info common
13631@item info common @r{[}@var{common-name}@r{]}
13632This command prints the values contained in the Fortran @code{COMMON}
13633block whose name is @var{common-name}. With no argument, the names of
d52fb0e9 13634all @code{COMMON} blocks visible at the current program location are
09d4efe1
EZ
13635printed.
13636@end table
13637
9c16f35a
EZ
13638@node Pascal
13639@subsection Pascal
13640
13641@cindex Pascal support in @value{GDBN}, limitations
13642Debugging Pascal programs which use sets, subranges, file variables, or
13643nested functions does not currently work. @value{GDBN} does not support
13644entering expressions, printing values, or similar features using Pascal
13645syntax.
13646
13647The Pascal-specific command @code{set print pascal_static-members}
13648controls whether static members of Pascal objects are displayed.
13649@xref{Print Settings, pascal_static-members}.
13650
09d4efe1 13651@node Modula-2
c906108c 13652@subsection Modula-2
7a292a7a 13653
d4f3574e 13654@cindex Modula-2, @value{GDBN} support
c906108c
SS
13655
13656The extensions made to @value{GDBN} to support Modula-2 only support
13657output from the @sc{gnu} Modula-2 compiler (which is currently being
13658developed). Other Modula-2 compilers are not currently supported, and
13659attempting to debug executables produced by them is most likely
13660to give an error as @value{GDBN} reads in the executable's symbol
13661table.
13662
13663@cindex expressions in Modula-2
13664@menu
13665* M2 Operators:: Built-in operators
13666* Built-In Func/Proc:: Built-in functions and procedures
13667* M2 Constants:: Modula-2 constants
72019c9c 13668* M2 Types:: Modula-2 types
c906108c
SS
13669* M2 Defaults:: Default settings for Modula-2
13670* Deviations:: Deviations from standard Modula-2
13671* M2 Checks:: Modula-2 type and range checks
13672* M2 Scope:: The scope operators @code{::} and @code{.}
13673* GDB/M2:: @value{GDBN} and Modula-2
13674@end menu
13675
6d2ebf8b 13676@node M2 Operators
c906108c
SS
13677@subsubsection Operators
13678@cindex Modula-2 operators
13679
13680Operators must be defined on values of specific types. For instance,
13681@code{+} is defined on numbers, but not on structures. Operators are
13682often defined on groups of types. For the purposes of Modula-2, the
13683following definitions hold:
13684
13685@itemize @bullet
13686
13687@item
13688@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
13689their subranges.
13690
13691@item
13692@emph{Character types} consist of @code{CHAR} and its subranges.
13693
13694@item
13695@emph{Floating-point types} consist of @code{REAL}.
13696
13697@item
13698@emph{Pointer types} consist of anything declared as @code{POINTER TO
13699@var{type}}.
13700
13701@item
13702@emph{Scalar types} consist of all of the above.
13703
13704@item
13705@emph{Set types} consist of @code{SET} and @code{BITSET} types.
13706
13707@item
13708@emph{Boolean types} consist of @code{BOOLEAN}.
13709@end itemize
13710
13711@noindent
13712The following operators are supported, and appear in order of
13713increasing precedence:
13714
13715@table @code
13716@item ,
13717Function argument or array index separator.
13718
13719@item :=
13720Assignment. The value of @var{var} @code{:=} @var{value} is
13721@var{value}.
13722
13723@item <@r{, }>
13724Less than, greater than on integral, floating-point, or enumerated
13725types.
13726
13727@item <=@r{, }>=
96a2c332 13728Less than or equal to, greater than or equal to
c906108c
SS
13729on integral, floating-point and enumerated types, or set inclusion on
13730set types. Same precedence as @code{<}.
13731
13732@item =@r{, }<>@r{, }#
13733Equality and two ways of expressing inequality, valid on scalar types.
13734Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
13735available for inequality, since @code{#} conflicts with the script
13736comment character.
13737
13738@item IN
13739Set membership. Defined on set types and the types of their members.
13740Same precedence as @code{<}.
13741
13742@item OR
13743Boolean disjunction. Defined on boolean types.
13744
13745@item AND@r{, }&
d4f3574e 13746Boolean conjunction. Defined on boolean types.
c906108c
SS
13747
13748@item @@
13749The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
13750
13751@item +@r{, }-
13752Addition and subtraction on integral and floating-point types, or union
13753and difference on set types.
13754
13755@item *
13756Multiplication on integral and floating-point types, or set intersection
13757on set types.
13758
13759@item /
13760Division on floating-point types, or symmetric set difference on set
13761types. Same precedence as @code{*}.
13762
13763@item DIV@r{, }MOD
13764Integer division and remainder. Defined on integral types. Same
13765precedence as @code{*}.
13766
13767@item -
99e008fe 13768Negative. Defined on @code{INTEGER} and @code{REAL} data.
c906108c
SS
13769
13770@item ^
13771Pointer dereferencing. Defined on pointer types.
13772
13773@item NOT
13774Boolean negation. Defined on boolean types. Same precedence as
13775@code{^}.
13776
13777@item .
13778@code{RECORD} field selector. Defined on @code{RECORD} data. Same
13779precedence as @code{^}.
13780
13781@item []
13782Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
13783
13784@item ()
13785Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
13786as @code{^}.
13787
13788@item ::@r{, }.
13789@value{GDBN} and Modula-2 scope operators.
13790@end table
13791
13792@quotation
72019c9c 13793@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN}
c906108c
SS
13794treats the use of the operator @code{IN}, or the use of operators
13795@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
13796@code{<=}, and @code{>=} on sets as an error.
13797@end quotation
13798
cb51c4e0 13799
6d2ebf8b 13800@node Built-In Func/Proc
79a6e687 13801@subsubsection Built-in Functions and Procedures
cb51c4e0 13802@cindex Modula-2 built-ins
c906108c
SS
13803
13804Modula-2 also makes available several built-in procedures and functions.
13805In describing these, the following metavariables are used:
13806
13807@table @var
13808
13809@item a
13810represents an @code{ARRAY} variable.
13811
13812@item c
13813represents a @code{CHAR} constant or variable.
13814
13815@item i
13816represents a variable or constant of integral type.
13817
13818@item m
13819represents an identifier that belongs to a set. Generally used in the
13820same function with the metavariable @var{s}. The type of @var{s} should
13821be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
13822
13823@item n
13824represents a variable or constant of integral or floating-point type.
13825
13826@item r
13827represents a variable or constant of floating-point type.
13828
13829@item t
13830represents a type.
13831
13832@item v
13833represents a variable.
13834
13835@item x
13836represents a variable or constant of one of many types. See the
13837explanation of the function for details.
13838@end table
13839
13840All Modula-2 built-in procedures also return a result, described below.
13841
13842@table @code
13843@item ABS(@var{n})
13844Returns the absolute value of @var{n}.
13845
13846@item CAP(@var{c})
13847If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 13848equivalent, otherwise it returns its argument.
c906108c
SS
13849
13850@item CHR(@var{i})
13851Returns the character whose ordinal value is @var{i}.
13852
13853@item DEC(@var{v})
c3f6f71d 13854Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
13855
13856@item DEC(@var{v},@var{i})
13857Decrements the value in the variable @var{v} by @var{i}. Returns the
13858new value.
13859
13860@item EXCL(@var{m},@var{s})
13861Removes the element @var{m} from the set @var{s}. Returns the new
13862set.
13863
13864@item FLOAT(@var{i})
13865Returns the floating point equivalent of the integer @var{i}.
13866
13867@item HIGH(@var{a})
13868Returns the index of the last member of @var{a}.
13869
13870@item INC(@var{v})
c3f6f71d 13871Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
13872
13873@item INC(@var{v},@var{i})
13874Increments the value in the variable @var{v} by @var{i}. Returns the
13875new value.
13876
13877@item INCL(@var{m},@var{s})
13878Adds the element @var{m} to the set @var{s} if it is not already
13879there. Returns the new set.
13880
13881@item MAX(@var{t})
13882Returns the maximum value of the type @var{t}.
13883
13884@item MIN(@var{t})
13885Returns the minimum value of the type @var{t}.
13886
13887@item ODD(@var{i})
13888Returns boolean TRUE if @var{i} is an odd number.
13889
13890@item ORD(@var{x})
13891Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
13892value of a character is its @sc{ascii} value (on machines supporting the
13893@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
13894integral, character and enumerated types.
13895
13896@item SIZE(@var{x})
13897Returns the size of its argument. @var{x} can be a variable or a type.
13898
13899@item TRUNC(@var{r})
13900Returns the integral part of @var{r}.
13901
844781a1
GM
13902@item TSIZE(@var{x})
13903Returns the size of its argument. @var{x} can be a variable or a type.
13904
c906108c
SS
13905@item VAL(@var{t},@var{i})
13906Returns the member of the type @var{t} whose ordinal value is @var{i}.
13907@end table
13908
13909@quotation
13910@emph{Warning:} Sets and their operations are not yet supported, so
13911@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
13912an error.
13913@end quotation
13914
13915@cindex Modula-2 constants
6d2ebf8b 13916@node M2 Constants
c906108c
SS
13917@subsubsection Constants
13918
13919@value{GDBN} allows you to express the constants of Modula-2 in the following
13920ways:
13921
13922@itemize @bullet
13923
13924@item
13925Integer constants are simply a sequence of digits. When used in an
13926expression, a constant is interpreted to be type-compatible with the
13927rest of the expression. Hexadecimal integers are specified by a
13928trailing @samp{H}, and octal integers by a trailing @samp{B}.
13929
13930@item
13931Floating point constants appear as a sequence of digits, followed by a
13932decimal point and another sequence of digits. An optional exponent can
13933then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
13934@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
13935digits of the floating point constant must be valid decimal (base 10)
13936digits.
13937
13938@item
13939Character constants consist of a single character enclosed by a pair of
13940like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 13941also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
13942followed by a @samp{C}.
13943
13944@item
13945String constants consist of a sequence of characters enclosed by a
13946pair of like quotes, either single (@code{'}) or double (@code{"}).
13947Escape sequences in the style of C are also allowed. @xref{C
79a6e687 13948Constants, ,C and C@t{++} Constants}, for a brief explanation of escape
c906108c
SS
13949sequences.
13950
13951@item
13952Enumerated constants consist of an enumerated identifier.
13953
13954@item
13955Boolean constants consist of the identifiers @code{TRUE} and
13956@code{FALSE}.
13957
13958@item
13959Pointer constants consist of integral values only.
13960
13961@item
13962Set constants are not yet supported.
13963@end itemize
13964
72019c9c
GM
13965@node M2 Types
13966@subsubsection Modula-2 Types
13967@cindex Modula-2 types
13968
13969Currently @value{GDBN} can print the following data types in Modula-2
13970syntax: array types, record types, set types, pointer types, procedure
13971types, enumerated types, subrange types and base types. You can also
13972print the contents of variables declared using these type.
13973This section gives a number of simple source code examples together with
13974sample @value{GDBN} sessions.
13975
13976The first example contains the following section of code:
13977
13978@smallexample
13979VAR
13980 s: SET OF CHAR ;
13981 r: [20..40] ;
13982@end smallexample
13983
13984@noindent
13985and you can request @value{GDBN} to interrogate the type and value of
13986@code{r} and @code{s}.
13987
13988@smallexample
13989(@value{GDBP}) print s
13990@{'A'..'C', 'Z'@}
13991(@value{GDBP}) ptype s
13992SET OF CHAR
13993(@value{GDBP}) print r
1399421
13995(@value{GDBP}) ptype r
13996[20..40]
13997@end smallexample
13998
13999@noindent
14000Likewise if your source code declares @code{s} as:
14001
14002@smallexample
14003VAR
14004 s: SET ['A'..'Z'] ;
14005@end smallexample
14006
14007@noindent
14008then you may query the type of @code{s} by:
14009
14010@smallexample
14011(@value{GDBP}) ptype s
14012type = SET ['A'..'Z']
14013@end smallexample
14014
14015@noindent
14016Note that at present you cannot interactively manipulate set
14017expressions using the debugger.
14018
14019The following example shows how you might declare an array in Modula-2
14020and how you can interact with @value{GDBN} to print its type and contents:
14021
14022@smallexample
14023VAR
14024 s: ARRAY [-10..10] OF CHAR ;
14025@end smallexample
14026
14027@smallexample
14028(@value{GDBP}) ptype s
14029ARRAY [-10..10] OF CHAR
14030@end smallexample
14031
14032Note that the array handling is not yet complete and although the type
14033is printed correctly, expression handling still assumes that all
14034arrays have a lower bound of zero and not @code{-10} as in the example
844781a1 14035above.
72019c9c
GM
14036
14037Here are some more type related Modula-2 examples:
14038
14039@smallexample
14040TYPE
14041 colour = (blue, red, yellow, green) ;
14042 t = [blue..yellow] ;
14043VAR
14044 s: t ;
14045BEGIN
14046 s := blue ;
14047@end smallexample
14048
14049@noindent
14050The @value{GDBN} interaction shows how you can query the data type
14051and value of a variable.
14052
14053@smallexample
14054(@value{GDBP}) print s
14055$1 = blue
14056(@value{GDBP}) ptype t
14057type = [blue..yellow]
14058@end smallexample
14059
14060@noindent
14061In this example a Modula-2 array is declared and its contents
14062displayed. Observe that the contents are written in the same way as
14063their @code{C} counterparts.
14064
14065@smallexample
14066VAR
14067 s: ARRAY [1..5] OF CARDINAL ;
14068BEGIN
14069 s[1] := 1 ;
14070@end smallexample
14071
14072@smallexample
14073(@value{GDBP}) print s
14074$1 = @{1, 0, 0, 0, 0@}
14075(@value{GDBP}) ptype s
14076type = ARRAY [1..5] OF CARDINAL
14077@end smallexample
14078
14079The Modula-2 language interface to @value{GDBN} also understands
14080pointer types as shown in this example:
14081
14082@smallexample
14083VAR
14084 s: POINTER TO ARRAY [1..5] OF CARDINAL ;
14085BEGIN
14086 NEW(s) ;
14087 s^[1] := 1 ;
14088@end smallexample
14089
14090@noindent
14091and you can request that @value{GDBN} describes the type of @code{s}.
14092
14093@smallexample
14094(@value{GDBP}) ptype s
14095type = POINTER TO ARRAY [1..5] OF CARDINAL
14096@end smallexample
14097
14098@value{GDBN} handles compound types as we can see in this example.
14099Here we combine array types, record types, pointer types and subrange
14100types:
14101
14102@smallexample
14103TYPE
14104 foo = RECORD
14105 f1: CARDINAL ;
14106 f2: CHAR ;
14107 f3: myarray ;
14108 END ;
14109
14110 myarray = ARRAY myrange OF CARDINAL ;
14111 myrange = [-2..2] ;
14112VAR
14113 s: POINTER TO ARRAY myrange OF foo ;
14114@end smallexample
14115
14116@noindent
14117and you can ask @value{GDBN} to describe the type of @code{s} as shown
14118below.
14119
14120@smallexample
14121(@value{GDBP}) ptype s
14122type = POINTER TO ARRAY [-2..2] OF foo = RECORD
14123 f1 : CARDINAL;
14124 f2 : CHAR;
14125 f3 : ARRAY [-2..2] OF CARDINAL;
14126END
14127@end smallexample
14128
6d2ebf8b 14129@node M2 Defaults
79a6e687 14130@subsubsection Modula-2 Defaults
c906108c
SS
14131@cindex Modula-2 defaults
14132
14133If type and range checking are set automatically by @value{GDBN}, they
14134both default to @code{on} whenever the working language changes to
d4f3574e 14135Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
14136selected the working language.
14137
14138If you allow @value{GDBN} to set the language automatically, then entering
14139code compiled from a file whose name ends with @file{.mod} sets the
79a6e687
BW
14140working language to Modula-2. @xref{Automatically, ,Having @value{GDBN}
14141Infer the Source Language}, for further details.
c906108c 14142
6d2ebf8b 14143@node Deviations
79a6e687 14144@subsubsection Deviations from Standard Modula-2
c906108c
SS
14145@cindex Modula-2, deviations from
14146
14147A few changes have been made to make Modula-2 programs easier to debug.
14148This is done primarily via loosening its type strictness:
14149
14150@itemize @bullet
14151@item
14152Unlike in standard Modula-2, pointer constants can be formed by
14153integers. This allows you to modify pointer variables during
14154debugging. (In standard Modula-2, the actual address contained in a
14155pointer variable is hidden from you; it can only be modified
14156through direct assignment to another pointer variable or expression that
14157returned a pointer.)
14158
14159@item
14160C escape sequences can be used in strings and characters to represent
14161non-printable characters. @value{GDBN} prints out strings with these
14162escape sequences embedded. Single non-printable characters are
14163printed using the @samp{CHR(@var{nnn})} format.
14164
14165@item
14166The assignment operator (@code{:=}) returns the value of its right-hand
14167argument.
14168
14169@item
14170All built-in procedures both modify @emph{and} return their argument.
14171@end itemize
14172
6d2ebf8b 14173@node M2 Checks
79a6e687 14174@subsubsection Modula-2 Type and Range Checks
c906108c
SS
14175@cindex Modula-2 checks
14176
14177@quotation
14178@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
14179range checking.
14180@end quotation
14181@c FIXME remove warning when type/range checks added
14182
14183@value{GDBN} considers two Modula-2 variables type equivalent if:
14184
14185@itemize @bullet
14186@item
14187They are of types that have been declared equivalent via a @code{TYPE
14188@var{t1} = @var{t2}} statement
14189
14190@item
14191They have been declared on the same line. (Note: This is true of the
14192@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
14193@end itemize
14194
14195As long as type checking is enabled, any attempt to combine variables
14196whose types are not equivalent is an error.
14197
14198Range checking is done on all mathematical operations, assignment, array
14199index bounds, and all built-in functions and procedures.
14200
6d2ebf8b 14201@node M2 Scope
79a6e687 14202@subsubsection The Scope Operators @code{::} and @code{.}
c906108c 14203@cindex scope
41afff9a 14204@cindex @code{.}, Modula-2 scope operator
c906108c
SS
14205@cindex colon, doubled as scope operator
14206@ifinfo
41afff9a 14207@vindex colon-colon@r{, in Modula-2}
c906108c
SS
14208@c Info cannot handle :: but TeX can.
14209@end ifinfo
a67ec3f4 14210@ifnotinfo
41afff9a 14211@vindex ::@r{, in Modula-2}
a67ec3f4 14212@end ifnotinfo
c906108c
SS
14213
14214There are a few subtle differences between the Modula-2 scope operator
14215(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
14216similar syntax:
14217
474c8240 14218@smallexample
c906108c
SS
14219
14220@var{module} . @var{id}
14221@var{scope} :: @var{id}
474c8240 14222@end smallexample
c906108c
SS
14223
14224@noindent
14225where @var{scope} is the name of a module or a procedure,
14226@var{module} the name of a module, and @var{id} is any declared
14227identifier within your program, except another module.
14228
14229Using the @code{::} operator makes @value{GDBN} search the scope
14230specified by @var{scope} for the identifier @var{id}. If it is not
14231found in the specified scope, then @value{GDBN} searches all scopes
14232enclosing the one specified by @var{scope}.
14233
14234Using the @code{.} operator makes @value{GDBN} search the current scope for
14235the identifier specified by @var{id} that was imported from the
14236definition module specified by @var{module}. With this operator, it is
14237an error if the identifier @var{id} was not imported from definition
14238module @var{module}, or if @var{id} is not an identifier in
14239@var{module}.
14240
6d2ebf8b 14241@node GDB/M2
c906108c
SS
14242@subsubsection @value{GDBN} and Modula-2
14243
14244Some @value{GDBN} commands have little use when debugging Modula-2 programs.
14245Five subcommands of @code{set print} and @code{show print} apply
b37052ae 14246specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 14247@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 14248apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
14249analogue in Modula-2.
14250
14251The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 14252with any language, is not useful with Modula-2. Its
c906108c 14253intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 14254created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 14255address can be specified by an integral constant, the construct
d4f3574e 14256@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
14257
14258@cindex @code{#} in Modula-2
14259In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
14260interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 14261
e07c999f
PH
14262@node Ada
14263@subsection Ada
14264@cindex Ada
14265
14266The extensions made to @value{GDBN} for Ada only support
14267output from the @sc{gnu} Ada (GNAT) compiler.
14268Other Ada compilers are not currently supported, and
14269attempting to debug executables produced by them is most likely
14270to be difficult.
14271
14272
14273@cindex expressions in Ada
14274@menu
14275* Ada Mode Intro:: General remarks on the Ada syntax
14276 and semantics supported by Ada mode
14277 in @value{GDBN}.
14278* Omissions from Ada:: Restrictions on the Ada expression syntax.
14279* Additions to Ada:: Extensions of the Ada expression syntax.
14280* Stopping Before Main Program:: Debugging the program during elaboration.
20924a55
JB
14281* Ada Tasks:: Listing and setting breakpoints in tasks.
14282* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files
6e1bb179
JB
14283* Ravenscar Profile:: Tasking Support when using the Ravenscar
14284 Profile
e07c999f
PH
14285* Ada Glitches:: Known peculiarities of Ada mode.
14286@end menu
14287
14288@node Ada Mode Intro
14289@subsubsection Introduction
14290@cindex Ada mode, general
14291
14292The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression
14293syntax, with some extensions.
14294The philosophy behind the design of this subset is
14295
14296@itemize @bullet
14297@item
14298That @value{GDBN} should provide basic literals and access to operations for
14299arithmetic, dereferencing, field selection, indexing, and subprogram calls,
14300leaving more sophisticated computations to subprograms written into the
14301program (which therefore may be called from @value{GDBN}).
14302
14303@item
14304That type safety and strict adherence to Ada language restrictions
14305are not particularly important to the @value{GDBN} user.
14306
14307@item
14308That brevity is important to the @value{GDBN} user.
14309@end itemize
14310
f3a2dd1a
JB
14311Thus, for brevity, the debugger acts as if all names declared in
14312user-written packages are directly visible, even if they are not visible
14313according to Ada rules, thus making it unnecessary to fully qualify most
14314names with their packages, regardless of context. Where this causes
14315ambiguity, @value{GDBN} asks the user's intent.
e07c999f
PH
14316
14317The debugger will start in Ada mode if it detects an Ada main program.
14318As for other languages, it will enter Ada mode when stopped in a program that
14319was translated from an Ada source file.
14320
14321While in Ada mode, you may use `@t{--}' for comments. This is useful
14322mostly for documenting command files. The standard @value{GDBN} comment
14323(@samp{#}) still works at the beginning of a line in Ada mode, but not in the
14324middle (to allow based literals).
14325
14326The debugger supports limited overloading. Given a subprogram call in which
14327the function symbol has multiple definitions, it will use the number of
14328actual parameters and some information about their types to attempt to narrow
14329the set of definitions. It also makes very limited use of context, preferring
14330procedures to functions in the context of the @code{call} command, and
14331functions to procedures elsewhere.
14332
14333@node Omissions from Ada
14334@subsubsection Omissions from Ada
14335@cindex Ada, omissions from
14336
14337Here are the notable omissions from the subset:
14338
14339@itemize @bullet
14340@item
14341Only a subset of the attributes are supported:
14342
14343@itemize @minus
14344@item
14345@t{'First}, @t{'Last}, and @t{'Length}
14346 on array objects (not on types and subtypes).
14347
14348@item
14349@t{'Min} and @t{'Max}.
14350
14351@item
14352@t{'Pos} and @t{'Val}.
14353
14354@item
14355@t{'Tag}.
14356
14357@item
14358@t{'Range} on array objects (not subtypes), but only as the right
14359operand of the membership (@code{in}) operator.
14360
14361@item
14362@t{'Access}, @t{'Unchecked_Access}, and
14363@t{'Unrestricted_Access} (a GNAT extension).
14364
14365@item
14366@t{'Address}.
14367@end itemize
14368
14369@item
14370The names in
14371@code{Characters.Latin_1} are not available and
14372concatenation is not implemented. Thus, escape characters in strings are
14373not currently available.
14374
14375@item
14376Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise
14377equality of representations. They will generally work correctly
14378for strings and arrays whose elements have integer or enumeration types.
14379They may not work correctly for arrays whose element
14380types have user-defined equality, for arrays of real values
14381(in particular, IEEE-conformant floating point, because of negative
14382zeroes and NaNs), and for arrays whose elements contain unused bits with
14383indeterminate values.
14384
14385@item
14386The other component-by-component array operations (@code{and}, @code{or},
14387@code{xor}, @code{not}, and relational tests other than equality)
14388are not implemented.
14389
14390@item
860701dc
PH
14391@cindex array aggregates (Ada)
14392@cindex record aggregates (Ada)
14393@cindex aggregates (Ada)
14394There is limited support for array and record aggregates. They are
14395permitted only on the right sides of assignments, as in these examples:
14396
14397@smallexample
077e0a52
JB
14398(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6)
14399(@value{GDBP}) set An_Array := (1, others => 0)
14400(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
14401(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
14402(@value{GDBP}) set A_Record := (1, "Peter", True);
14403(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True)
860701dc
PH
14404@end smallexample
14405
14406Changing a
14407discriminant's value by assigning an aggregate has an
14408undefined effect if that discriminant is used within the record.
14409However, you can first modify discriminants by directly assigning to
14410them (which normally would not be allowed in Ada), and then performing an
14411aggregate assignment. For example, given a variable @code{A_Rec}
14412declared to have a type such as:
14413
14414@smallexample
14415type Rec (Len : Small_Integer := 0) is record
14416 Id : Integer;
14417 Vals : IntArray (1 .. Len);
14418end record;
14419@end smallexample
14420
14421you can assign a value with a different size of @code{Vals} with two
14422assignments:
14423
14424@smallexample
077e0a52
JB
14425(@value{GDBP}) set A_Rec.Len := 4
14426(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
860701dc
PH
14427@end smallexample
14428
14429As this example also illustrates, @value{GDBN} is very loose about the usual
14430rules concerning aggregates. You may leave out some of the
14431components of an array or record aggregate (such as the @code{Len}
14432component in the assignment to @code{A_Rec} above); they will retain their
14433original values upon assignment. You may freely use dynamic values as
14434indices in component associations. You may even use overlapping or
14435redundant component associations, although which component values are
14436assigned in such cases is not defined.
e07c999f
PH
14437
14438@item
14439Calls to dispatching subprograms are not implemented.
14440
14441@item
14442The overloading algorithm is much more limited (i.e., less selective)
ae21e955
BW
14443than that of real Ada. It makes only limited use of the context in
14444which a subexpression appears to resolve its meaning, and it is much
14445looser in its rules for allowing type matches. As a result, some
14446function calls will be ambiguous, and the user will be asked to choose
14447the proper resolution.
e07c999f
PH
14448
14449@item
14450The @code{new} operator is not implemented.
14451
14452@item
14453Entry calls are not implemented.
14454
14455@item
14456Aside from printing, arithmetic operations on the native VAX floating-point
14457formats are not supported.
14458
14459@item
14460It is not possible to slice a packed array.
158c7665
PH
14461
14462@item
14463The names @code{True} and @code{False}, when not part of a qualified name,
14464are interpreted as if implicitly prefixed by @code{Standard}, regardless of
14465context.
14466Should your program
14467redefine these names in a package or procedure (at best a dubious practice),
14468you will have to use fully qualified names to access their new definitions.
e07c999f
PH
14469@end itemize
14470
14471@node Additions to Ada
14472@subsubsection Additions to Ada
14473@cindex Ada, deviations from
14474
14475As it does for other languages, @value{GDBN} makes certain generic
14476extensions to Ada (@pxref{Expressions}):
14477
14478@itemize @bullet
14479@item
ae21e955
BW
14480If the expression @var{E} is a variable residing in memory (typically
14481a local variable or array element) and @var{N} is a positive integer,
14482then @code{@var{E}@@@var{N}} displays the values of @var{E} and the
14483@var{N}-1 adjacent variables following it in memory as an array. In
14484Ada, this operator is generally not necessary, since its prime use is
14485in displaying parts of an array, and slicing will usually do this in
14486Ada. However, there are occasional uses when debugging programs in
14487which certain debugging information has been optimized away.
e07c999f
PH
14488
14489@item
ae21e955
BW
14490@code{@var{B}::@var{var}} means ``the variable named @var{var} that
14491appears in function or file @var{B}.'' When @var{B} is a file name,
14492you must typically surround it in single quotes.
e07c999f
PH
14493
14494@item
14495The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type
14496@var{type} that appears at address @var{addr}.''
14497
14498@item
14499A name starting with @samp{$} is a convenience variable
14500(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}).
14501@end itemize
14502
ae21e955
BW
14503In addition, @value{GDBN} provides a few other shortcuts and outright
14504additions specific to Ada:
e07c999f
PH
14505
14506@itemize @bullet
14507@item
14508The assignment statement is allowed as an expression, returning
14509its right-hand operand as its value. Thus, you may enter
14510
14511@smallexample
077e0a52
JB
14512(@value{GDBP}) set x := y + 3
14513(@value{GDBP}) print A(tmp := y + 1)
e07c999f
PH
14514@end smallexample
14515
14516@item
14517The semicolon is allowed as an ``operator,'' returning as its value
14518the value of its right-hand operand.
14519This allows, for example,
14520complex conditional breaks:
14521
14522@smallexample
077e0a52
JB
14523(@value{GDBP}) break f
14524(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100)
e07c999f
PH
14525@end smallexample
14526
14527@item
14528Rather than use catenation and symbolic character names to introduce special
14529characters into strings, one may instead use a special bracket notation,
14530which is also used to print strings. A sequence of characters of the form
14531@samp{["@var{XX}"]} within a string or character literal denotes the
14532(single) character whose numeric encoding is @var{XX} in hexadecimal. The
14533sequence of characters @samp{["""]} also denotes a single quotation mark
14534in strings. For example,
14535@smallexample
14536 "One line.["0a"]Next line.["0a"]"
14537@end smallexample
14538@noindent
ae21e955
BW
14539contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF})
14540after each period.
e07c999f
PH
14541
14542@item
14543The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and
14544@t{'Max} is optional (and is ignored in any case). For example, it is valid
14545to write
14546
14547@smallexample
077e0a52 14548(@value{GDBP}) print 'max(x, y)
e07c999f
PH
14549@end smallexample
14550
14551@item
14552When printing arrays, @value{GDBN} uses positional notation when the
14553array has a lower bound of 1, and uses a modified named notation otherwise.
ae21e955
BW
14554For example, a one-dimensional array of three integers with a lower bound
14555of 3 might print as
e07c999f
PH
14556
14557@smallexample
14558(3 => 10, 17, 1)
14559@end smallexample
14560
14561@noindent
14562That is, in contrast to valid Ada, only the first component has a @code{=>}
14563clause.
14564
14565@item
14566You may abbreviate attributes in expressions with any unique,
14567multi-character subsequence of
14568their names (an exact match gets preference).
14569For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh}
14570in place of @t{a'length}.
14571
14572@item
14573@cindex quoting Ada internal identifiers
14574Since Ada is case-insensitive, the debugger normally maps identifiers you type
14575to lower case. The GNAT compiler uses upper-case characters for
14576some of its internal identifiers, which are normally of no interest to users.
14577For the rare occasions when you actually have to look at them,
14578enclose them in angle brackets to avoid the lower-case mapping.
14579For example,
14580@smallexample
077e0a52 14581(@value{GDBP}) print <JMPBUF_SAVE>[0]
e07c999f
PH
14582@end smallexample
14583
14584@item
14585Printing an object of class-wide type or dereferencing an
14586access-to-class-wide value will display all the components of the object's
14587specific type (as indicated by its run-time tag). Likewise, component
14588selection on such a value will operate on the specific type of the
14589object.
14590
14591@end itemize
14592
14593@node Stopping Before Main Program
14594@subsubsection Stopping at the Very Beginning
14595
14596@cindex breakpointing Ada elaboration code
14597It is sometimes necessary to debug the program during elaboration, and
14598before reaching the main procedure.
14599As defined in the Ada Reference
14600Manual, the elaboration code is invoked from a procedure called
14601@code{adainit}. To run your program up to the beginning of
14602elaboration, simply use the following two commands:
14603@code{tbreak adainit} and @code{run}.
14604
20924a55
JB
14605@node Ada Tasks
14606@subsubsection Extensions for Ada Tasks
14607@cindex Ada, tasking
14608
14609Support for Ada tasks is analogous to that for threads (@pxref{Threads}).
14610@value{GDBN} provides the following task-related commands:
14611
14612@table @code
14613@kindex info tasks
14614@item info tasks
14615This command shows a list of current Ada tasks, as in the following example:
14616
14617
14618@smallexample
14619@iftex
14620@leftskip=0.5cm
14621@end iftex
14622(@value{GDBP}) info tasks
14623 ID TID P-ID Pri State Name
14624 1 8088000 0 15 Child Activation Wait main_task
14625 2 80a4000 1 15 Accept Statement b
14626 3 809a800 1 15 Child Activation Wait a
32cd1edc 14627* 4 80ae800 3 15 Runnable c
20924a55
JB
14628
14629@end smallexample
14630
14631@noindent
14632In this listing, the asterisk before the last task indicates it to be the
14633task currently being inspected.
14634
14635@table @asis
14636@item ID
14637Represents @value{GDBN}'s internal task number.
14638
14639@item TID
14640The Ada task ID.
14641
14642@item P-ID
14643The parent's task ID (@value{GDBN}'s internal task number).
14644
14645@item Pri
14646The base priority of the task.
14647
14648@item State
14649Current state of the task.
14650
14651@table @code
14652@item Unactivated
14653The task has been created but has not been activated. It cannot be
14654executing.
14655
20924a55
JB
14656@item Runnable
14657The task is not blocked for any reason known to Ada. (It may be waiting
14658for a mutex, though.) It is conceptually "executing" in normal mode.
14659
14660@item Terminated
14661The task is terminated, in the sense of ARM 9.3 (5). Any dependents
14662that were waiting on terminate alternatives have been awakened and have
14663terminated themselves.
14664
14665@item Child Activation Wait
14666The task is waiting for created tasks to complete activation.
14667
14668@item Accept Statement
14669The task is waiting on an accept or selective wait statement.
14670
14671@item Waiting on entry call
14672The task is waiting on an entry call.
14673
14674@item Async Select Wait
14675The task is waiting to start the abortable part of an asynchronous
14676select statement.
14677
14678@item Delay Sleep
14679The task is waiting on a select statement with only a delay
14680alternative open.
14681
14682@item Child Termination Wait
14683The task is sleeping having completed a master within itself, and is
14684waiting for the tasks dependent on that master to become terminated or
14685waiting on a terminate Phase.
14686
14687@item Wait Child in Term Alt
14688The task is sleeping waiting for tasks on terminate alternatives to
14689finish terminating.
14690
14691@item Accepting RV with @var{taskno}
14692The task is accepting a rendez-vous with the task @var{taskno}.
14693@end table
14694
14695@item Name
14696Name of the task in the program.
14697
14698@end table
14699
14700@kindex info task @var{taskno}
14701@item info task @var{taskno}
14702This command shows detailled informations on the specified task, as in
14703the following example:
14704@smallexample
14705@iftex
14706@leftskip=0.5cm
14707@end iftex
14708(@value{GDBP}) info tasks
14709 ID TID P-ID Pri State Name
14710 1 8077880 0 15 Child Activation Wait main_task
32cd1edc 14711* 2 807c468 1 15 Runnable task_1
20924a55
JB
14712(@value{GDBP}) info task 2
14713Ada Task: 0x807c468
14714Name: task_1
14715Thread: 0x807f378
14716Parent: 1 (main_task)
14717Base Priority: 15
14718State: Runnable
14719@end smallexample
14720
14721@item task
14722@kindex task@r{ (Ada)}
14723@cindex current Ada task ID
14724This command prints the ID of the current task.
14725
14726@smallexample
14727@iftex
14728@leftskip=0.5cm
14729@end iftex
14730(@value{GDBP}) info tasks
14731 ID TID P-ID Pri State Name
14732 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 14733* 2 807c458 1 15 Runnable t
20924a55
JB
14734(@value{GDBP}) task
14735[Current task is 2]
14736@end smallexample
14737
14738@item task @var{taskno}
14739@cindex Ada task switching
14740This command is like the @code{thread @var{threadno}}
14741command (@pxref{Threads}). It switches the context of debugging
14742from the current task to the given task.
14743
14744@smallexample
14745@iftex
14746@leftskip=0.5cm
14747@end iftex
14748(@value{GDBP}) info tasks
14749 ID TID P-ID Pri State Name
14750 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 14751* 2 807c458 1 15 Runnable t
20924a55
JB
14752(@value{GDBP}) task 1
14753[Switching to task 1]
14754#0 0x8067726 in pthread_cond_wait ()
14755(@value{GDBP}) bt
14756#0 0x8067726 in pthread_cond_wait ()
14757#1 0x8056714 in system.os_interface.pthread_cond_wait ()
14758#2 0x805cb63 in system.task_primitives.operations.sleep ()
14759#3 0x806153e in system.tasking.stages.activate_tasks ()
14760#4 0x804aacc in un () at un.adb:5
14761@end smallexample
14762
45ac276d
JB
14763@item break @var{linespec} task @var{taskno}
14764@itemx break @var{linespec} task @var{taskno} if @dots{}
14765@cindex breakpoints and tasks, in Ada
14766@cindex task breakpoints, in Ada
14767@kindex break @dots{} task @var{taskno}@r{ (Ada)}
14768These commands are like the @code{break @dots{} thread @dots{}}
14769command (@pxref{Thread Stops}).
14770@var{linespec} specifies source lines, as described
14771in @ref{Specify Location}.
14772
14773Use the qualifier @samp{task @var{taskno}} with a breakpoint command
14774to specify that you only want @value{GDBN} to stop the program when a
14775particular Ada task reaches this breakpoint. @var{taskno} is one of the
14776numeric task identifiers assigned by @value{GDBN}, shown in the first
14777column of the @samp{info tasks} display.
14778
14779If you do not specify @samp{task @var{taskno}} when you set a
14780breakpoint, the breakpoint applies to @emph{all} tasks of your
14781program.
14782
14783You can use the @code{task} qualifier on conditional breakpoints as
14784well; in this case, place @samp{task @var{taskno}} before the
14785breakpoint condition (before the @code{if}).
14786
14787For example,
14788
14789@smallexample
14790@iftex
14791@leftskip=0.5cm
14792@end iftex
14793(@value{GDBP}) info tasks
14794 ID TID P-ID Pri State Name
14795 1 140022020 0 15 Child Activation Wait main_task
14796 2 140045060 1 15 Accept/Select Wait t2
14797 3 140044840 1 15 Runnable t1
14798* 4 140056040 1 15 Runnable t3
14799(@value{GDBP}) b 15 task 2
14800Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15.
14801(@value{GDBP}) cont
14802Continuing.
14803task # 1 running
14804task # 2 running
14805
14806Breakpoint 5, test_task_debug () at test_task_debug.adb:15
1480715 flush;
14808(@value{GDBP}) info tasks
14809 ID TID P-ID Pri State Name
14810 1 140022020 0 15 Child Activation Wait main_task
14811* 2 140045060 1 15 Runnable t2
14812 3 140044840 1 15 Runnable t1
14813 4 140056040 1 15 Delay Sleep t3
14814@end smallexample
20924a55
JB
14815@end table
14816
14817@node Ada Tasks and Core Files
14818@subsubsection Tasking Support when Debugging Core Files
14819@cindex Ada tasking and core file debugging
14820
14821When inspecting a core file, as opposed to debugging a live program,
14822tasking support may be limited or even unavailable, depending on
14823the platform being used.
14824For instance, on x86-linux, the list of tasks is available, but task
14825switching is not supported. On Tru64, however, task switching will work
14826as usual.
14827
14828On certain platforms, including Tru64, the debugger needs to perform some
14829memory writes in order to provide Ada tasking support. When inspecting
14830a core file, this means that the core file must be opened with read-write
14831privileges, using the command @samp{"set write on"} (@pxref{Patching}).
14832Under these circumstances, you should make a backup copy of the core
14833file before inspecting it with @value{GDBN}.
14834
6e1bb179
JB
14835@node Ravenscar Profile
14836@subsubsection Tasking Support when using the Ravenscar Profile
14837@cindex Ravenscar Profile
14838
14839The @dfn{Ravenscar Profile} is a subset of the Ada tasking features,
14840specifically designed for systems with safety-critical real-time
14841requirements.
14842
14843@table @code
14844@kindex set ravenscar task-switching on
14845@cindex task switching with program using Ravenscar Profile
14846@item set ravenscar task-switching on
14847Allows task switching when debugging a program that uses the Ravenscar
14848Profile. This is the default.
14849
14850@kindex set ravenscar task-switching off
14851@item set ravenscar task-switching off
14852Turn off task switching when debugging a program that uses the Ravenscar
14853Profile. This is mostly intended to disable the code that adds support
14854for the Ravenscar Profile, in case a bug in either @value{GDBN} or in
14855the Ravenscar runtime is preventing @value{GDBN} from working properly.
14856To be effective, this command should be run before the program is started.
14857
14858@kindex show ravenscar task-switching
14859@item show ravenscar task-switching
14860Show whether it is possible to switch from task to task in a program
14861using the Ravenscar Profile.
14862
14863@end table
14864
e07c999f
PH
14865@node Ada Glitches
14866@subsubsection Known Peculiarities of Ada Mode
14867@cindex Ada, problems
14868
14869Besides the omissions listed previously (@pxref{Omissions from Ada}),
14870we know of several problems with and limitations of Ada mode in
14871@value{GDBN},
14872some of which will be fixed with planned future releases of the debugger
14873and the GNU Ada compiler.
14874
14875@itemize @bullet
e07c999f
PH
14876@item
14877Static constants that the compiler chooses not to materialize as objects in
14878storage are invisible to the debugger.
14879
14880@item
14881Named parameter associations in function argument lists are ignored (the
14882argument lists are treated as positional).
14883
14884@item
14885Many useful library packages are currently invisible to the debugger.
14886
14887@item
14888Fixed-point arithmetic, conversions, input, and output is carried out using
14889floating-point arithmetic, and may give results that only approximate those on
14890the host machine.
14891
e07c999f
PH
14892@item
14893The GNAT compiler never generates the prefix @code{Standard} for any of
14894the standard symbols defined by the Ada language. @value{GDBN} knows about
14895this: it will strip the prefix from names when you use it, and will never
14896look for a name you have so qualified among local symbols, nor match against
14897symbols in other packages or subprograms. If you have
14898defined entities anywhere in your program other than parameters and
14899local variables whose simple names match names in @code{Standard},
14900GNAT's lack of qualification here can cause confusion. When this happens,
14901you can usually resolve the confusion
14902by qualifying the problematic names with package
14903@code{Standard} explicitly.
14904@end itemize
14905
95433b34
JB
14906Older versions of the compiler sometimes generate erroneous debugging
14907information, resulting in the debugger incorrectly printing the value
14908of affected entities. In some cases, the debugger is able to work
14909around an issue automatically. In other cases, the debugger is able
14910to work around the issue, but the work-around has to be specifically
14911enabled.
14912
14913@kindex set ada trust-PAD-over-XVS
14914@kindex show ada trust-PAD-over-XVS
14915@table @code
14916
14917@item set ada trust-PAD-over-XVS on
14918Configure GDB to strictly follow the GNAT encoding when computing the
14919value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS}
14920types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for
14921a complete description of the encoding used by the GNAT compiler).
14922This is the default.
14923
14924@item set ada trust-PAD-over-XVS off
14925This is related to the encoding using by the GNAT compiler. If @value{GDBN}
14926sometimes prints the wrong value for certain entities, changing @code{ada
14927trust-PAD-over-XVS} to @code{off} activates a work-around which may fix
14928the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to
14929@code{off}, but this incurs a slight performance penalty, so it is
14930recommended to leave this setting to @code{on} unless necessary.
14931
14932@end table
14933
79a6e687
BW
14934@node Unsupported Languages
14935@section Unsupported Languages
4e562065
JB
14936
14937@cindex unsupported languages
14938@cindex minimal language
14939In addition to the other fully-supported programming languages,
14940@value{GDBN} also provides a pseudo-language, called @code{minimal}.
14941It does not represent a real programming language, but provides a set
14942of capabilities close to what the C or assembly languages provide.
14943This should allow most simple operations to be performed while debugging
14944an application that uses a language currently not supported by @value{GDBN}.
14945
14946If the language is set to @code{auto}, @value{GDBN} will automatically
14947select this language if the current frame corresponds to an unsupported
14948language.
14949
6d2ebf8b 14950@node Symbols
c906108c
SS
14951@chapter Examining the Symbol Table
14952
d4f3574e 14953The commands described in this chapter allow you to inquire about the
c906108c
SS
14954symbols (names of variables, functions and types) defined in your
14955program. This information is inherent in the text of your program and
14956does not change as your program executes. @value{GDBN} finds it in your
14957program's symbol table, in the file indicated when you started @value{GDBN}
79a6e687
BW
14958(@pxref{File Options, ,Choosing Files}), or by one of the
14959file-management commands (@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
14960
14961@cindex symbol names
14962@cindex names of symbols
14963@cindex quoting names
14964Occasionally, you may need to refer to symbols that contain unusual
14965characters, which @value{GDBN} ordinarily treats as word delimiters. The
14966most frequent case is in referring to static variables in other
79a6e687 14967source files (@pxref{Variables,,Program Variables}). File names
c906108c
SS
14968are recorded in object files as debugging symbols, but @value{GDBN} would
14969ordinarily parse a typical file name, like @file{foo.c}, as the three words
14970@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
14971@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
14972
474c8240 14973@smallexample
c906108c 14974p 'foo.c'::x
474c8240 14975@end smallexample
c906108c
SS
14976
14977@noindent
14978looks up the value of @code{x} in the scope of the file @file{foo.c}.
14979
14980@table @code
a8f24a35
EZ
14981@cindex case-insensitive symbol names
14982@cindex case sensitivity in symbol names
14983@kindex set case-sensitive
14984@item set case-sensitive on
14985@itemx set case-sensitive off
14986@itemx set case-sensitive auto
14987Normally, when @value{GDBN} looks up symbols, it matches their names
14988with case sensitivity determined by the current source language.
14989Occasionally, you may wish to control that. The command @code{set
14990case-sensitive} lets you do that by specifying @code{on} for
14991case-sensitive matches or @code{off} for case-insensitive ones. If
14992you specify @code{auto}, case sensitivity is reset to the default
14993suitable for the source language. The default is case-sensitive
14994matches for all languages except for Fortran, for which the default is
14995case-insensitive matches.
14996
9c16f35a
EZ
14997@kindex show case-sensitive
14998@item show case-sensitive
a8f24a35
EZ
14999This command shows the current setting of case sensitivity for symbols
15000lookups.
15001
53342f27
TT
15002@kindex set print type methods
15003@item set print type methods
15004@itemx set print type methods on
15005@itemx set print type methods off
15006Normally, when @value{GDBN} prints a class, it displays any methods
15007declared in that class. You can control this behavior either by
15008passing the appropriate flag to @code{ptype}, or using @command{set
15009print type methods}. Specifying @code{on} will cause @value{GDBN} to
15010display the methods; this is the default. Specifying @code{off} will
15011cause @value{GDBN} to omit the methods.
15012
15013@kindex show print type methods
15014@item show print type methods
15015This command shows the current setting of method display when printing
15016classes.
15017
15018@kindex set print type typedefs
15019@item set print type typedefs
15020@itemx set print type typedefs on
15021@itemx set print type typedefs off
15022
15023Normally, when @value{GDBN} prints a class, it displays any typedefs
15024defined in that class. You can control this behavior either by
15025passing the appropriate flag to @code{ptype}, or using @command{set
15026print type typedefs}. Specifying @code{on} will cause @value{GDBN} to
15027display the typedef definitions; this is the default. Specifying
15028@code{off} will cause @value{GDBN} to omit the typedef definitions.
15029Note that this controls whether the typedef definition itself is
15030printed, not whether typedef names are substituted when printing other
15031types.
15032
15033@kindex show print type typedefs
15034@item show print type typedefs
15035This command shows the current setting of typedef display when
15036printing classes.
15037
c906108c 15038@kindex info address
b37052ae 15039@cindex address of a symbol
c906108c
SS
15040@item info address @var{symbol}
15041Describe where the data for @var{symbol} is stored. For a register
15042variable, this says which register it is kept in. For a non-register
15043local variable, this prints the stack-frame offset at which the variable
15044is always stored.
15045
15046Note the contrast with @samp{print &@var{symbol}}, which does not work
15047at all for a register variable, and for a stack local variable prints
15048the exact address of the current instantiation of the variable.
15049
3d67e040 15050@kindex info symbol
b37052ae 15051@cindex symbol from address
9c16f35a 15052@cindex closest symbol and offset for an address
3d67e040
EZ
15053@item info symbol @var{addr}
15054Print the name of a symbol which is stored at the address @var{addr}.
15055If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
15056nearest symbol and an offset from it:
15057
474c8240 15058@smallexample
3d67e040
EZ
15059(@value{GDBP}) info symbol 0x54320
15060_initialize_vx + 396 in section .text
474c8240 15061@end smallexample
3d67e040
EZ
15062
15063@noindent
15064This is the opposite of the @code{info address} command. You can use
15065it to find out the name of a variable or a function given its address.
15066
c14c28ba
PP
15067For dynamically linked executables, the name of executable or shared
15068library containing the symbol is also printed:
15069
15070@smallexample
15071(@value{GDBP}) info symbol 0x400225
15072_start + 5 in section .text of /tmp/a.out
15073(@value{GDBP}) info symbol 0x2aaaac2811cf
15074__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6
15075@end smallexample
15076
c906108c 15077@kindex whatis
53342f27 15078@item whatis[/@var{flags}] [@var{arg}]
177bc839
JK
15079Print the data type of @var{arg}, which can be either an expression
15080or a name of a data type. With no argument, print the data type of
15081@code{$}, the last value in the value history.
15082
15083If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it
15084is not actually evaluated, and any side-effecting operations (such as
15085assignments or function calls) inside it do not take place.
15086
15087If @var{arg} is a variable or an expression, @code{whatis} prints its
15088literal type as it is used in the source code. If the type was
15089defined using a @code{typedef}, @code{whatis} will @emph{not} print
15090the data type underlying the @code{typedef}. If the type of the
15091variable or the expression is a compound data type, such as
15092@code{struct} or @code{class}, @code{whatis} never prints their
15093fields or methods. It just prints the @code{struct}/@code{class}
15094name (a.k.a.@: its @dfn{tag}). If you want to see the members of
15095such a compound data type, use @code{ptype}.
15096
15097If @var{arg} is a type name that was defined using @code{typedef},
15098@code{whatis} @dfn{unrolls} only one level of that @code{typedef}.
15099Unrolling means that @code{whatis} will show the underlying type used
15100in the @code{typedef} declaration of @var{arg}. However, if that
15101underlying type is also a @code{typedef}, @code{whatis} will not
15102unroll it.
15103
15104For C code, the type names may also have the form @samp{class
15105@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
15106@var{union-tag}} or @samp{enum @var{enum-tag}}.
c906108c 15107
53342f27
TT
15108@var{flags} can be used to modify how the type is displayed.
15109Available flags are:
15110
15111@table @code
15112@item r
15113Display in ``raw'' form. Normally, @value{GDBN} substitutes template
15114parameters and typedefs defined in a class when printing the class'
15115members. The @code{/r} flag disables this.
15116
15117@item m
15118Do not print methods defined in the class.
15119
15120@item M
15121Print methods defined in the class. This is the default, but the flag
15122exists in case you change the default with @command{set print type methods}.
15123
15124@item t
15125Do not print typedefs defined in the class. Note that this controls
15126whether the typedef definition itself is printed, not whether typedef
15127names are substituted when printing other types.
15128
15129@item T
15130Print typedefs defined in the class. This is the default, but the flag
15131exists in case you change the default with @command{set print type typedefs}.
15132@end table
15133
c906108c 15134@kindex ptype
53342f27 15135@item ptype[/@var{flags}] [@var{arg}]
62f3a2ba
FF
15136@code{ptype} accepts the same arguments as @code{whatis}, but prints a
15137detailed description of the type, instead of just the name of the type.
15138@xref{Expressions, ,Expressions}.
c906108c 15139
177bc839
JK
15140Contrary to @code{whatis}, @code{ptype} always unrolls any
15141@code{typedef}s in its argument declaration, whether the argument is
15142a variable, expression, or a data type. This means that @code{ptype}
15143of a variable or an expression will not print literally its type as
15144present in the source code---use @code{whatis} for that. @code{typedef}s at
15145the pointer or reference targets are also unrolled. Only @code{typedef}s of
15146fields, methods and inner @code{class typedef}s of @code{struct}s,
15147@code{class}es and @code{union}s are not unrolled even with @code{ptype}.
15148
c906108c
SS
15149For example, for this variable declaration:
15150
474c8240 15151@smallexample
177bc839
JK
15152typedef double real_t;
15153struct complex @{ real_t real; double imag; @};
15154typedef struct complex complex_t;
15155complex_t var;
15156real_t *real_pointer_var;
474c8240 15157@end smallexample
c906108c
SS
15158
15159@noindent
15160the two commands give this output:
15161
474c8240 15162@smallexample
c906108c 15163@group
177bc839
JK
15164(@value{GDBP}) whatis var
15165type = complex_t
15166(@value{GDBP}) ptype var
15167type = struct complex @{
15168 real_t real;
15169 double imag;
15170@}
15171(@value{GDBP}) whatis complex_t
15172type = struct complex
15173(@value{GDBP}) whatis struct complex
c906108c 15174type = struct complex
177bc839 15175(@value{GDBP}) ptype struct complex
c906108c 15176type = struct complex @{
177bc839 15177 real_t real;
c906108c
SS
15178 double imag;
15179@}
177bc839
JK
15180(@value{GDBP}) whatis real_pointer_var
15181type = real_t *
15182(@value{GDBP}) ptype real_pointer_var
15183type = double *
c906108c 15184@end group
474c8240 15185@end smallexample
c906108c
SS
15186
15187@noindent
15188As with @code{whatis}, using @code{ptype} without an argument refers to
15189the type of @code{$}, the last value in the value history.
15190
ab1adacd
EZ
15191@cindex incomplete type
15192Sometimes, programs use opaque data types or incomplete specifications
15193of complex data structure. If the debug information included in the
15194program does not allow @value{GDBN} to display a full declaration of
15195the data type, it will say @samp{<incomplete type>}. For example,
15196given these declarations:
15197
15198@smallexample
15199 struct foo;
15200 struct foo *fooptr;
15201@end smallexample
15202
15203@noindent
15204but no definition for @code{struct foo} itself, @value{GDBN} will say:
15205
15206@smallexample
ddb50cd7 15207 (@value{GDBP}) ptype foo
ab1adacd
EZ
15208 $1 = <incomplete type>
15209@end smallexample
15210
15211@noindent
15212``Incomplete type'' is C terminology for data types that are not
15213completely specified.
15214
c906108c
SS
15215@kindex info types
15216@item info types @var{regexp}
15217@itemx info types
09d4efe1
EZ
15218Print a brief description of all types whose names match the regular
15219expression @var{regexp} (or all types in your program, if you supply
15220no argument). Each complete typename is matched as though it were a
15221complete line; thus, @samp{i type value} gives information on all
15222types in your program whose names include the string @code{value}, but
15223@samp{i type ^value$} gives information only on types whose complete
15224name is @code{value}.
c906108c
SS
15225
15226This command differs from @code{ptype} in two ways: first, like
15227@code{whatis}, it does not print a detailed description; second, it
15228lists all source files where a type is defined.
15229
18a9fc12
TT
15230@kindex info type-printers
15231@item info type-printers
15232Versions of @value{GDBN} that ship with Python scripting enabled may
15233have ``type printers'' available. When using @command{ptype} or
15234@command{whatis}, these printers are consulted when the name of a type
15235is needed. @xref{Type Printing API}, for more information on writing
15236type printers.
15237
15238@code{info type-printers} displays all the available type printers.
15239
15240@kindex enable type-printer
15241@kindex disable type-printer
15242@item enable type-printer @var{name}@dots{}
15243@item disable type-printer @var{name}@dots{}
15244These commands can be used to enable or disable type printers.
15245
b37052ae
EZ
15246@kindex info scope
15247@cindex local variables
09d4efe1 15248@item info scope @var{location}
b37052ae 15249List all the variables local to a particular scope. This command
09d4efe1
EZ
15250accepts a @var{location} argument---a function name, a source line, or
15251an address preceded by a @samp{*}, and prints all the variables local
2a25a5ba
EZ
15252to the scope defined by that location. (@xref{Specify Location}, for
15253details about supported forms of @var{location}.) For example:
b37052ae
EZ
15254
15255@smallexample
15256(@value{GDBP}) @b{info scope command_line_handler}
15257Scope for command_line_handler:
15258Symbol rl is an argument at stack/frame offset 8, length 4.
15259Symbol linebuffer is in static storage at address 0x150a18, length 4.
15260Symbol linelength is in static storage at address 0x150a1c, length 4.
15261Symbol p is a local variable in register $esi, length 4.
15262Symbol p1 is a local variable in register $ebx, length 4.
15263Symbol nline is a local variable in register $edx, length 4.
15264Symbol repeat is a local variable at frame offset -8, length 4.
15265@end smallexample
15266
f5c37c66
EZ
15267@noindent
15268This command is especially useful for determining what data to collect
15269during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
15270collect}.
15271
c906108c
SS
15272@kindex info source
15273@item info source
919d772c
JB
15274Show information about the current source file---that is, the source file for
15275the function containing the current point of execution:
15276@itemize @bullet
15277@item
15278the name of the source file, and the directory containing it,
15279@item
15280the directory it was compiled in,
15281@item
15282its length, in lines,
15283@item
15284which programming language it is written in,
15285@item
15286whether the executable includes debugging information for that file, and
15287if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
15288@item
15289whether the debugging information includes information about
15290preprocessor macros.
15291@end itemize
15292
c906108c
SS
15293
15294@kindex info sources
15295@item info sources
15296Print the names of all source files in your program for which there is
15297debugging information, organized into two lists: files whose symbols
15298have already been read, and files whose symbols will be read when needed.
15299
15300@kindex info functions
15301@item info functions
15302Print the names and data types of all defined functions.
15303
15304@item info functions @var{regexp}
15305Print the names and data types of all defined functions
15306whose names contain a match for regular expression @var{regexp}.
15307Thus, @samp{info fun step} finds all functions whose names
15308include @code{step}; @samp{info fun ^step} finds those whose names
b383017d 15309start with @code{step}. If a function name contains characters
c1468174 15310that conflict with the regular expression language (e.g.@:
1c5dfdad 15311@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
15312
15313@kindex info variables
15314@item info variables
0fe7935b 15315Print the names and data types of all variables that are defined
6ca652b0 15316outside of functions (i.e.@: excluding local variables).
c906108c
SS
15317
15318@item info variables @var{regexp}
15319Print the names and data types of all variables (except for local
15320variables) whose names contain a match for regular expression
15321@var{regexp}.
15322
b37303ee 15323@kindex info classes
721c2651 15324@cindex Objective-C, classes and selectors
b37303ee
AF
15325@item info classes
15326@itemx info classes @var{regexp}
15327Display all Objective-C classes in your program, or
15328(with the @var{regexp} argument) all those matching a particular regular
15329expression.
15330
15331@kindex info selectors
15332@item info selectors
15333@itemx info selectors @var{regexp}
15334Display all Objective-C selectors in your program, or
15335(with the @var{regexp} argument) all those matching a particular regular
15336expression.
15337
c906108c
SS
15338@ignore
15339This was never implemented.
15340@kindex info methods
15341@item info methods
15342@itemx info methods @var{regexp}
15343The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
15344methods within C@t{++} program, or (with the @var{regexp} argument) a
15345specific set of methods found in the various C@t{++} classes. Many
15346C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
15347from the @code{ptype} command can be overwhelming and hard to use. The
15348@code{info-methods} command filters the methods, printing only those
15349which match the regular-expression @var{regexp}.
15350@end ignore
15351
9c16f35a 15352@cindex opaque data types
c906108c
SS
15353@kindex set opaque-type-resolution
15354@item set opaque-type-resolution on
15355Tell @value{GDBN} to resolve opaque types. An opaque type is a type
15356declared as a pointer to a @code{struct}, @code{class}, or
15357@code{union}---for example, @code{struct MyType *}---that is used in one
15358source file although the full declaration of @code{struct MyType} is in
15359another source file. The default is on.
15360
15361A change in the setting of this subcommand will not take effect until
15362the next time symbols for a file are loaded.
15363
15364@item set opaque-type-resolution off
15365Tell @value{GDBN} not to resolve opaque types. In this case, the type
15366is printed as follows:
15367@smallexample
15368@{<no data fields>@}
15369@end smallexample
15370
15371@kindex show opaque-type-resolution
15372@item show opaque-type-resolution
15373Show whether opaque types are resolved or not.
c906108c
SS
15374
15375@kindex maint print symbols
15376@cindex symbol dump
15377@kindex maint print psymbols
15378@cindex partial symbol dump
15379@item maint print symbols @var{filename}
15380@itemx maint print psymbols @var{filename}
15381@itemx maint print msymbols @var{filename}
15382Write a dump of debugging symbol data into the file @var{filename}.
15383These commands are used to debug the @value{GDBN} symbol-reading code. Only
15384symbols with debugging data are included. If you use @samp{maint print
15385symbols}, @value{GDBN} includes all the symbols for which it has already
15386collected full details: that is, @var{filename} reflects symbols for
15387only those files whose symbols @value{GDBN} has read. You can use the
15388command @code{info sources} to find out which files these are. If you
15389use @samp{maint print psymbols} instead, the dump shows information about
15390symbols that @value{GDBN} only knows partially---that is, symbols defined in
15391files that @value{GDBN} has skimmed, but not yet read completely. Finally,
15392@samp{maint print msymbols} dumps just the minimal symbol information
15393required for each object file from which @value{GDBN} has read some symbols.
79a6e687 15394@xref{Files, ,Commands to Specify Files}, for a discussion of how
c906108c 15395@value{GDBN} reads symbols (in the description of @code{symbol-file}).
44ea7b70 15396
5e7b2f39
JB
15397@kindex maint info symtabs
15398@kindex maint info psymtabs
44ea7b70
JB
15399@cindex listing @value{GDBN}'s internal symbol tables
15400@cindex symbol tables, listing @value{GDBN}'s internal
15401@cindex full symbol tables, listing @value{GDBN}'s internal
15402@cindex partial symbol tables, listing @value{GDBN}'s internal
5e7b2f39
JB
15403@item maint info symtabs @r{[} @var{regexp} @r{]}
15404@itemx maint info psymtabs @r{[} @var{regexp} @r{]}
44ea7b70
JB
15405
15406List the @code{struct symtab} or @code{struct partial_symtab}
15407structures whose names match @var{regexp}. If @var{regexp} is not
15408given, list them all. The output includes expressions which you can
15409copy into a @value{GDBN} debugging this one to examine a particular
15410structure in more detail. For example:
15411
15412@smallexample
5e7b2f39 15413(@value{GDBP}) maint info psymtabs dwarf2read
44ea7b70
JB
15414@{ objfile /home/gnu/build/gdb/gdb
15415 ((struct objfile *) 0x82e69d0)
b383017d 15416 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
15417 ((struct partial_symtab *) 0x8474b10)
15418 readin no
15419 fullname (null)
15420 text addresses 0x814d3c8 -- 0x8158074
15421 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
15422 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
15423 dependencies (none)
15424 @}
15425@}
5e7b2f39 15426(@value{GDBP}) maint info symtabs
44ea7b70
JB
15427(@value{GDBP})
15428@end smallexample
15429@noindent
15430We see that there is one partial symbol table whose filename contains
15431the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
15432and we see that @value{GDBN} has not read in any symtabs yet at all.
15433If we set a breakpoint on a function, that will cause @value{GDBN} to
15434read the symtab for the compilation unit containing that function:
15435
15436@smallexample
15437(@value{GDBP}) break dwarf2_psymtab_to_symtab
15438Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
15439line 1574.
5e7b2f39 15440(@value{GDBP}) maint info symtabs
b383017d 15441@{ objfile /home/gnu/build/gdb/gdb
44ea7b70 15442 ((struct objfile *) 0x82e69d0)
b383017d 15443 @{ symtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
15444 ((struct symtab *) 0x86c1f38)
15445 dirname (null)
15446 fullname (null)
15447 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
1b39d5c0 15448 linetable ((struct linetable *) 0x8370fa0)
44ea7b70
JB
15449 debugformat DWARF 2
15450 @}
15451@}
b383017d 15452(@value{GDBP})
44ea7b70 15453@end smallexample
c906108c
SS
15454@end table
15455
44ea7b70 15456
6d2ebf8b 15457@node Altering
c906108c
SS
15458@chapter Altering Execution
15459
15460Once you think you have found an error in your program, you might want to
15461find out for certain whether correcting the apparent error would lead to
15462correct results in the rest of the run. You can find the answer by
15463experiment, using the @value{GDBN} features for altering execution of the
15464program.
15465
15466For example, you can store new values into variables or memory
7a292a7a
SS
15467locations, give your program a signal, restart it at a different
15468address, or even return prematurely from a function.
c906108c
SS
15469
15470@menu
15471* Assignment:: Assignment to variables
15472* Jumping:: Continuing at a different address
c906108c 15473* Signaling:: Giving your program a signal
c906108c
SS
15474* Returning:: Returning from a function
15475* Calling:: Calling your program's functions
15476* Patching:: Patching your program
15477@end menu
15478
6d2ebf8b 15479@node Assignment
79a6e687 15480@section Assignment to Variables
c906108c
SS
15481
15482@cindex assignment
15483@cindex setting variables
15484To alter the value of a variable, evaluate an assignment expression.
15485@xref{Expressions, ,Expressions}. For example,
15486
474c8240 15487@smallexample
c906108c 15488print x=4
474c8240 15489@end smallexample
c906108c
SS
15490
15491@noindent
15492stores the value 4 into the variable @code{x}, and then prints the
5d161b24 15493value of the assignment expression (which is 4).
c906108c
SS
15494@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
15495information on operators in supported languages.
c906108c
SS
15496
15497@kindex set variable
15498@cindex variables, setting
15499If you are not interested in seeing the value of the assignment, use the
15500@code{set} command instead of the @code{print} command. @code{set} is
15501really the same as @code{print} except that the expression's value is
15502not printed and is not put in the value history (@pxref{Value History,
79a6e687 15503,Value History}). The expression is evaluated only for its effects.
c906108c 15504
c906108c
SS
15505If the beginning of the argument string of the @code{set} command
15506appears identical to a @code{set} subcommand, use the @code{set
15507variable} command instead of just @code{set}. This command is identical
15508to @code{set} except for its lack of subcommands. For example, if your
15509program has a variable @code{width}, you get an error if you try to set
15510a new value with just @samp{set width=13}, because @value{GDBN} has the
15511command @code{set width}:
15512
474c8240 15513@smallexample
c906108c
SS
15514(@value{GDBP}) whatis width
15515type = double
15516(@value{GDBP}) p width
15517$4 = 13
15518(@value{GDBP}) set width=47
15519Invalid syntax in expression.
474c8240 15520@end smallexample
c906108c
SS
15521
15522@noindent
15523The invalid expression, of course, is @samp{=47}. In
15524order to actually set the program's variable @code{width}, use
15525
474c8240 15526@smallexample
c906108c 15527(@value{GDBP}) set var width=47
474c8240 15528@end smallexample
53a5351d 15529
c906108c
SS
15530Because the @code{set} command has many subcommands that can conflict
15531with the names of program variables, it is a good idea to use the
15532@code{set variable} command instead of just @code{set}. For example, if
15533your program has a variable @code{g}, you run into problems if you try
15534to set a new value with just @samp{set g=4}, because @value{GDBN} has
15535the command @code{set gnutarget}, abbreviated @code{set g}:
15536
474c8240 15537@smallexample
c906108c
SS
15538@group
15539(@value{GDBP}) whatis g
15540type = double
15541(@value{GDBP}) p g
15542$1 = 1
15543(@value{GDBP}) set g=4
2df3850c 15544(@value{GDBP}) p g
c906108c
SS
15545$2 = 1
15546(@value{GDBP}) r
15547The program being debugged has been started already.
15548Start it from the beginning? (y or n) y
15549Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
15550"/home/smith/cc_progs/a.out": can't open to read symbols:
15551 Invalid bfd target.
c906108c
SS
15552(@value{GDBP}) show g
15553The current BFD target is "=4".
15554@end group
474c8240 15555@end smallexample
c906108c
SS
15556
15557@noindent
15558The program variable @code{g} did not change, and you silently set the
15559@code{gnutarget} to an invalid value. In order to set the variable
15560@code{g}, use
15561
474c8240 15562@smallexample
c906108c 15563(@value{GDBP}) set var g=4
474c8240 15564@end smallexample
c906108c
SS
15565
15566@value{GDBN} allows more implicit conversions in assignments than C; you can
15567freely store an integer value into a pointer variable or vice versa,
15568and you can convert any structure to any other structure that is the
15569same length or shorter.
15570@comment FIXME: how do structs align/pad in these conversions?
15571@comment /doc@cygnus.com 18dec1990
15572
15573To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
15574construct to generate a value of specified type at a specified address
15575(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
15576to memory location @code{0x83040} as an integer (which implies a certain size
15577and representation in memory), and
15578
474c8240 15579@smallexample
c906108c 15580set @{int@}0x83040 = 4
474c8240 15581@end smallexample
c906108c
SS
15582
15583@noindent
15584stores the value 4 into that memory location.
15585
6d2ebf8b 15586@node Jumping
79a6e687 15587@section Continuing at a Different Address
c906108c
SS
15588
15589Ordinarily, when you continue your program, you do so at the place where
15590it stopped, with the @code{continue} command. You can instead continue at
15591an address of your own choosing, with the following commands:
15592
15593@table @code
15594@kindex jump
c1d780c2 15595@kindex j @r{(@code{jump})}
c906108c 15596@item jump @var{linespec}
c1d780c2 15597@itemx j @var{linespec}
2a25a5ba 15598@itemx jump @var{location}
c1d780c2 15599@itemx j @var{location}
2a25a5ba
EZ
15600Resume execution at line @var{linespec} or at address given by
15601@var{location}. Execution stops again immediately if there is a
15602breakpoint there. @xref{Specify Location}, for a description of the
15603different forms of @var{linespec} and @var{location}. It is common
15604practice to use the @code{tbreak} command in conjunction with
15605@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}.
c906108c
SS
15606
15607The @code{jump} command does not change the current stack frame, or
15608the stack pointer, or the contents of any memory location or any
15609register other than the program counter. If line @var{linespec} is in
15610a different function from the one currently executing, the results may
15611be bizarre if the two functions expect different patterns of arguments or
15612of local variables. For this reason, the @code{jump} command requests
15613confirmation if the specified line is not in the function currently
15614executing. However, even bizarre results are predictable if you are
15615well acquainted with the machine-language code of your program.
c906108c
SS
15616@end table
15617
c906108c 15618@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
15619On many systems, you can get much the same effect as the @code{jump}
15620command by storing a new value into the register @code{$pc}. The
15621difference is that this does not start your program running; it only
15622changes the address of where it @emph{will} run when you continue. For
15623example,
c906108c 15624
474c8240 15625@smallexample
c906108c 15626set $pc = 0x485
474c8240 15627@end smallexample
c906108c
SS
15628
15629@noindent
15630makes the next @code{continue} command or stepping command execute at
15631address @code{0x485}, rather than at the address where your program stopped.
79a6e687 15632@xref{Continuing and Stepping, ,Continuing and Stepping}.
c906108c
SS
15633
15634The most common occasion to use the @code{jump} command is to back
15635up---perhaps with more breakpoints set---over a portion of a program
15636that has already executed, in order to examine its execution in more
15637detail.
15638
c906108c 15639@c @group
6d2ebf8b 15640@node Signaling
79a6e687 15641@section Giving your Program a Signal
9c16f35a 15642@cindex deliver a signal to a program
c906108c
SS
15643
15644@table @code
15645@kindex signal
15646@item signal @var{signal}
15647Resume execution where your program stopped, but immediately give it the
15648signal @var{signal}. @var{signal} can be the name or the number of a
15649signal. For example, on many systems @code{signal 2} and @code{signal
15650SIGINT} are both ways of sending an interrupt signal.
15651
15652Alternatively, if @var{signal} is zero, continue execution without
15653giving a signal. This is useful when your program stopped on account of
ae606bee 15654a signal and would ordinarily see the signal when resumed with the
c906108c
SS
15655@code{continue} command; @samp{signal 0} causes it to resume without a
15656signal.
15657
15658@code{signal} does not repeat when you press @key{RET} a second time
15659after executing the command.
15660@end table
15661@c @end group
15662
15663Invoking the @code{signal} command is not the same as invoking the
15664@code{kill} utility from the shell. Sending a signal with @code{kill}
15665causes @value{GDBN} to decide what to do with the signal depending on
15666the signal handling tables (@pxref{Signals}). The @code{signal} command
15667passes the signal directly to your program.
15668
c906108c 15669
6d2ebf8b 15670@node Returning
79a6e687 15671@section Returning from a Function
c906108c
SS
15672
15673@table @code
15674@cindex returning from a function
15675@kindex return
15676@item return
15677@itemx return @var{expression}
15678You can cancel execution of a function call with the @code{return}
15679command. If you give an
15680@var{expression} argument, its value is used as the function's return
15681value.
15682@end table
15683
15684When you use @code{return}, @value{GDBN} discards the selected stack frame
15685(and all frames within it). You can think of this as making the
15686discarded frame return prematurely. If you wish to specify a value to
15687be returned, give that value as the argument to @code{return}.
15688
15689This pops the selected stack frame (@pxref{Selection, ,Selecting a
79a6e687 15690Frame}), and any other frames inside of it, leaving its caller as the
c906108c
SS
15691innermost remaining frame. That frame becomes selected. The
15692specified value is stored in the registers used for returning values
15693of functions.
15694
15695The @code{return} command does not resume execution; it leaves the
15696program stopped in the state that would exist if the function had just
15697returned. In contrast, the @code{finish} command (@pxref{Continuing
79a6e687 15698and Stepping, ,Continuing and Stepping}) resumes execution until the
c906108c
SS
15699selected stack frame returns naturally.
15700
61ff14c6
JK
15701@value{GDBN} needs to know how the @var{expression} argument should be set for
15702the inferior. The concrete registers assignment depends on the OS ABI and the
15703type being returned by the selected stack frame. For example it is common for
15704OS ABI to return floating point values in FPU registers while integer values in
15705CPU registers. Still some ABIs return even floating point values in CPU
15706registers. Larger integer widths (such as @code{long long int}) also have
15707specific placement rules. @value{GDBN} already knows the OS ABI from its
15708current target so it needs to find out also the type being returned to make the
15709assignment into the right register(s).
15710
15711Normally, the selected stack frame has debug info. @value{GDBN} will always
15712use the debug info instead of the implicit type of @var{expression} when the
15713debug info is available. For example, if you type @kbd{return -1}, and the
15714function in the current stack frame is declared to return a @code{long long
15715int}, @value{GDBN} transparently converts the implicit @code{int} value of -1
15716into a @code{long long int}:
15717
15718@smallexample
15719Breakpoint 1, func () at gdb.base/return-nodebug.c:29
1572029 return 31;
15721(@value{GDBP}) return -1
15722Make func return now? (y or n) y
15723#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43
1572443 printf ("result=%lld\n", func ());
15725(@value{GDBP})
15726@end smallexample
15727
15728However, if the selected stack frame does not have a debug info, e.g., if the
15729function was compiled without debug info, @value{GDBN} has to find out the type
15730to return from user. Specifying a different type by mistake may set the value
15731in different inferior registers than the caller code expects. For example,
15732typing @kbd{return -1} with its implicit type @code{int} would set only a part
15733of a @code{long long int} result for a debug info less function (on 32-bit
15734architectures). Therefore the user is required to specify the return type by
15735an appropriate cast explicitly:
15736
15737@smallexample
15738Breakpoint 2, 0x0040050b in func ()
15739(@value{GDBP}) return -1
15740Return value type not available for selected stack frame.
15741Please use an explicit cast of the value to return.
15742(@value{GDBP}) return (long long int) -1
15743Make selected stack frame return now? (y or n) y
15744#0 0x00400526 in main ()
15745(@value{GDBP})
15746@end smallexample
15747
6d2ebf8b 15748@node Calling
79a6e687 15749@section Calling Program Functions
c906108c 15750
f8568604 15751@table @code
c906108c 15752@cindex calling functions
f8568604
EZ
15753@cindex inferior functions, calling
15754@item print @var{expr}
d3e8051b 15755Evaluate the expression @var{expr} and display the resulting value.
f8568604
EZ
15756@var{expr} may include calls to functions in the program being
15757debugged.
15758
c906108c 15759@kindex call
c906108c
SS
15760@item call @var{expr}
15761Evaluate the expression @var{expr} without displaying @code{void}
15762returned values.
c906108c
SS
15763
15764You can use this variant of the @code{print} command if you want to
f8568604
EZ
15765execute a function from your program that does not return anything
15766(a.k.a.@: @dfn{a void function}), but without cluttering the output
15767with @code{void} returned values that @value{GDBN} will otherwise
15768print. If the result is not void, it is printed and saved in the
15769value history.
15770@end table
15771
9c16f35a
EZ
15772It is possible for the function you call via the @code{print} or
15773@code{call} command to generate a signal (e.g., if there's a bug in
15774the function, or if you passed it incorrect arguments). What happens
15775in that case is controlled by the @code{set unwindonsignal} command.
15776
7cd1089b
PM
15777Similarly, with a C@t{++} program it is possible for the function you
15778call via the @code{print} or @code{call} command to generate an
15779exception that is not handled due to the constraints of the dummy
15780frame. In this case, any exception that is raised in the frame, but has
15781an out-of-frame exception handler will not be found. GDB builds a
15782dummy-frame for the inferior function call, and the unwinder cannot
15783seek for exception handlers outside of this dummy-frame. What happens
15784in that case is controlled by the
15785@code{set unwind-on-terminating-exception} command.
15786
9c16f35a
EZ
15787@table @code
15788@item set unwindonsignal
15789@kindex set unwindonsignal
15790@cindex unwind stack in called functions
15791@cindex call dummy stack unwinding
15792Set unwinding of the stack if a signal is received while in a function
15793that @value{GDBN} called in the program being debugged. If set to on,
15794@value{GDBN} unwinds the stack it created for the call and restores
15795the context to what it was before the call. If set to off (the
15796default), @value{GDBN} stops in the frame where the signal was
15797received.
15798
15799@item show unwindonsignal
15800@kindex show unwindonsignal
15801Show the current setting of stack unwinding in the functions called by
15802@value{GDBN}.
7cd1089b
PM
15803
15804@item set unwind-on-terminating-exception
15805@kindex set unwind-on-terminating-exception
15806@cindex unwind stack in called functions with unhandled exceptions
15807@cindex call dummy stack unwinding on unhandled exception.
15808Set unwinding of the stack if a C@t{++} exception is raised, but left
15809unhandled while in a function that @value{GDBN} called in the program being
15810debugged. If set to on (the default), @value{GDBN} unwinds the stack
15811it created for the call and restores the context to what it was before
15812the call. If set to off, @value{GDBN} the exception is delivered to
15813the default C@t{++} exception handler and the inferior terminated.
15814
15815@item show unwind-on-terminating-exception
15816@kindex show unwind-on-terminating-exception
15817Show the current setting of stack unwinding in the functions called by
15818@value{GDBN}.
15819
9c16f35a
EZ
15820@end table
15821
f8568604
EZ
15822@cindex weak alias functions
15823Sometimes, a function you wish to call is actually a @dfn{weak alias}
15824for another function. In such case, @value{GDBN} might not pick up
15825the type information, including the types of the function arguments,
15826which causes @value{GDBN} to call the inferior function incorrectly.
15827As a result, the called function will function erroneously and may
15828even crash. A solution to that is to use the name of the aliased
15829function instead.
c906108c 15830
6d2ebf8b 15831@node Patching
79a6e687 15832@section Patching Programs
7a292a7a 15833
c906108c
SS
15834@cindex patching binaries
15835@cindex writing into executables
c906108c 15836@cindex writing into corefiles
c906108c 15837
7a292a7a
SS
15838By default, @value{GDBN} opens the file containing your program's
15839executable code (or the corefile) read-only. This prevents accidental
15840alterations to machine code; but it also prevents you from intentionally
15841patching your program's binary.
c906108c
SS
15842
15843If you'd like to be able to patch the binary, you can specify that
15844explicitly with the @code{set write} command. For example, you might
15845want to turn on internal debugging flags, or even to make emergency
15846repairs.
15847
15848@table @code
15849@kindex set write
15850@item set write on
15851@itemx set write off
7a292a7a 15852If you specify @samp{set write on}, @value{GDBN} opens executable and
20924a55 15853core files for both reading and writing; if you specify @kbd{set write
c906108c
SS
15854off} (the default), @value{GDBN} opens them read-only.
15855
15856If you have already loaded a file, you must load it again (using the
7a292a7a
SS
15857@code{exec-file} or @code{core-file} command) after changing @code{set
15858write}, for your new setting to take effect.
c906108c
SS
15859
15860@item show write
15861@kindex show write
7a292a7a
SS
15862Display whether executable files and core files are opened for writing
15863as well as reading.
c906108c
SS
15864@end table
15865
6d2ebf8b 15866@node GDB Files
c906108c
SS
15867@chapter @value{GDBN} Files
15868
7a292a7a
SS
15869@value{GDBN} needs to know the file name of the program to be debugged,
15870both in order to read its symbol table and in order to start your
15871program. To debug a core dump of a previous run, you must also tell
15872@value{GDBN} the name of the core dump file.
c906108c
SS
15873
15874@menu
15875* Files:: Commands to specify files
5b5d99cf 15876* Separate Debug Files:: Debugging information in separate files
608e2dbb 15877* MiniDebugInfo:: Debugging information in a special section
9291a0cd 15878* Index Files:: Index files speed up GDB
c906108c 15879* Symbol Errors:: Errors reading symbol files
b14b1491 15880* Data Files:: GDB data files
c906108c
SS
15881@end menu
15882
6d2ebf8b 15883@node Files
79a6e687 15884@section Commands to Specify Files
c906108c 15885
7a292a7a 15886@cindex symbol table
c906108c 15887@cindex core dump file
7a292a7a
SS
15888
15889You may want to specify executable and core dump file names. The usual
15890way to do this is at start-up time, using the arguments to
15891@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
15892Out of @value{GDBN}}).
c906108c
SS
15893
15894Occasionally it is necessary to change to a different file during a
397ca115
EZ
15895@value{GDBN} session. Or you may run @value{GDBN} and forget to
15896specify a file you want to use. Or you are debugging a remote target
79a6e687
BW
15897via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver}
15898Program}). In these situations the @value{GDBN} commands to specify
0869d01b 15899new files are useful.
c906108c
SS
15900
15901@table @code
15902@cindex executable file
15903@kindex file
15904@item file @var{filename}
15905Use @var{filename} as the program to be debugged. It is read for its
15906symbols and for the contents of pure memory. It is also the program
15907executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
15908directory and the file is not found in the @value{GDBN} working directory,
15909@value{GDBN} uses the environment variable @code{PATH} as a list of
15910directories to search, just as the shell does when looking for a program
15911to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
15912and your program, using the @code{path} command.
15913
fc8be69e
EZ
15914@cindex unlinked object files
15915@cindex patching object files
15916You can load unlinked object @file{.o} files into @value{GDBN} using
15917the @code{file} command. You will not be able to ``run'' an object
15918file, but you can disassemble functions and inspect variables. Also,
15919if the underlying BFD functionality supports it, you could use
15920@kbd{gdb -write} to patch object files using this technique. Note
15921that @value{GDBN} can neither interpret nor modify relocations in this
15922case, so branches and some initialized variables will appear to go to
15923the wrong place. But this feature is still handy from time to time.
15924
c906108c
SS
15925@item file
15926@code{file} with no argument makes @value{GDBN} discard any information it
15927has on both executable file and the symbol table.
15928
15929@kindex exec-file
15930@item exec-file @r{[} @var{filename} @r{]}
15931Specify that the program to be run (but not the symbol table) is found
15932in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
15933if necessary to locate your program. Omitting @var{filename} means to
15934discard information on the executable file.
15935
15936@kindex symbol-file
15937@item symbol-file @r{[} @var{filename} @r{]}
15938Read symbol table information from file @var{filename}. @code{PATH} is
15939searched when necessary. Use the @code{file} command to get both symbol
15940table and program to run from the same file.
15941
15942@code{symbol-file} with no argument clears out @value{GDBN} information on your
15943program's symbol table.
15944
ae5a43e0
DJ
15945The @code{symbol-file} command causes @value{GDBN} to forget the contents of
15946some breakpoints and auto-display expressions. This is because they may
15947contain pointers to the internal data recording symbols and data types,
15948which are part of the old symbol table data being discarded inside
15949@value{GDBN}.
c906108c
SS
15950
15951@code{symbol-file} does not repeat if you press @key{RET} again after
15952executing it once.
15953
15954When @value{GDBN} is configured for a particular environment, it
15955understands debugging information in whatever format is the standard
15956generated for that environment; you may use either a @sc{gnu} compiler, or
15957other compilers that adhere to the local conventions.
c906108c 15958Best results are usually obtained from @sc{gnu} compilers; for example,
e22ea452 15959using @code{@value{NGCC}} you can generate debugging information for
c906108c 15960optimized code.
c906108c
SS
15961
15962For most kinds of object files, with the exception of old SVR3 systems
15963using COFF, the @code{symbol-file} command does not normally read the
15964symbol table in full right away. Instead, it scans the symbol table
15965quickly to find which source files and which symbols are present. The
15966details are read later, one source file at a time, as they are needed.
15967
15968The purpose of this two-stage reading strategy is to make @value{GDBN}
15969start up faster. For the most part, it is invisible except for
15970occasional pauses while the symbol table details for a particular source
15971file are being read. (The @code{set verbose} command can turn these
15972pauses into messages if desired. @xref{Messages/Warnings, ,Optional
79a6e687 15973Warnings and Messages}.)
c906108c 15974
c906108c
SS
15975We have not implemented the two-stage strategy for COFF yet. When the
15976symbol table is stored in COFF format, @code{symbol-file} reads the
15977symbol table data in full right away. Note that ``stabs-in-COFF''
15978still does the two-stage strategy, since the debug info is actually
15979in stabs format.
15980
15981@kindex readnow
15982@cindex reading symbols immediately
15983@cindex symbols, reading immediately
6ac33a4e
TT
15984@item symbol-file @r{[} -readnow @r{]} @var{filename}
15985@itemx file @r{[} -readnow @r{]} @var{filename}
c906108c
SS
15986You can override the @value{GDBN} two-stage strategy for reading symbol
15987tables by using the @samp{-readnow} option with any of the commands that
15988load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 15989entire symbol table available.
c906108c 15990
c906108c
SS
15991@c FIXME: for now no mention of directories, since this seems to be in
15992@c flux. 13mar1992 status is that in theory GDB would look either in
15993@c current dir or in same dir as myprog; but issues like competing
15994@c GDB's, or clutter in system dirs, mean that in practice right now
15995@c only current dir is used. FFish says maybe a special GDB hierarchy
15996@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
15997@c files.
15998
c906108c 15999@kindex core-file
09d4efe1 16000@item core-file @r{[}@var{filename}@r{]}
4644b6e3 16001@itemx core
c906108c
SS
16002Specify the whereabouts of a core dump file to be used as the ``contents
16003of memory''. Traditionally, core files contain only some parts of the
16004address space of the process that generated them; @value{GDBN} can access the
16005executable file itself for other parts.
16006
16007@code{core-file} with no argument specifies that no core file is
16008to be used.
16009
16010Note that the core file is ignored when your program is actually running
7a292a7a
SS
16011under @value{GDBN}. So, if you have been running your program and you
16012wish to debug a core file instead, you must kill the subprocess in which
16013the program is running. To do this, use the @code{kill} command
79a6e687 16014(@pxref{Kill Process, ,Killing the Child Process}).
c906108c 16015
c906108c
SS
16016@kindex add-symbol-file
16017@cindex dynamic linking
16018@item add-symbol-file @var{filename} @var{address}
a94ab193 16019@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]}
24bdad53 16020@itemx add-symbol-file @var{filename} @var{address} -s @var{section} @var{address} @dots{}
96a2c332
SS
16021The @code{add-symbol-file} command reads additional symbol table
16022information from the file @var{filename}. You would use this command
16023when @var{filename} has been dynamically loaded (by some other means)
16024into the program that is running. @var{address} should be the memory
16025address at which the file has been loaded; @value{GDBN} cannot figure
d167840f 16026this out for itself. You can additionally specify an arbitrary number
24bdad53 16027of @samp{-s @var{section} @var{address}} pairs, to give an explicit
d167840f
EZ
16028section name and base address for that section. You can specify any
16029@var{address} as an expression.
c906108c
SS
16030
16031The symbol table of the file @var{filename} is added to the symbol table
16032originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
16033@code{add-symbol-file} command any number of times; the new symbol data
16034thus read keeps adding to the old. To discard all old symbol data
16035instead, use the @code{symbol-file} command without any arguments.
c906108c 16036
17d9d558
JB
16037@cindex relocatable object files, reading symbols from
16038@cindex object files, relocatable, reading symbols from
16039@cindex reading symbols from relocatable object files
16040@cindex symbols, reading from relocatable object files
16041@cindex @file{.o} files, reading symbols from
16042Although @var{filename} is typically a shared library file, an
16043executable file, or some other object file which has been fully
16044relocated for loading into a process, you can also load symbolic
16045information from relocatable @file{.o} files, as long as:
16046
16047@itemize @bullet
16048@item
16049the file's symbolic information refers only to linker symbols defined in
16050that file, not to symbols defined by other object files,
16051@item
16052every section the file's symbolic information refers to has actually
16053been loaded into the inferior, as it appears in the file, and
16054@item
16055you can determine the address at which every section was loaded, and
16056provide these to the @code{add-symbol-file} command.
16057@end itemize
16058
16059@noindent
16060Some embedded operating systems, like Sun Chorus and VxWorks, can load
16061relocatable files into an already running program; such systems
16062typically make the requirements above easy to meet. However, it's
16063important to recognize that many native systems use complex link
49efadf5 16064procedures (@code{.linkonce} section factoring and C@t{++} constructor table
17d9d558
JB
16065assembly, for example) that make the requirements difficult to meet. In
16066general, one cannot assume that using @code{add-symbol-file} to read a
16067relocatable object file's symbolic information will have the same effect
16068as linking the relocatable object file into the program in the normal
16069way.
16070
c906108c
SS
16071@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
16072
c45da7e6
EZ
16073@kindex add-symbol-file-from-memory
16074@cindex @code{syscall DSO}
16075@cindex load symbols from memory
16076@item add-symbol-file-from-memory @var{address}
16077Load symbols from the given @var{address} in a dynamically loaded
16078object file whose image is mapped directly into the inferior's memory.
16079For example, the Linux kernel maps a @code{syscall DSO} into each
16080process's address space; this DSO provides kernel-specific code for
16081some system calls. The argument can be any expression whose
16082evaluation yields the address of the file's shared object file header.
16083For this command to work, you must have used @code{symbol-file} or
16084@code{exec-file} commands in advance.
16085
09d4efe1
EZ
16086@kindex add-shared-symbol-files
16087@kindex assf
16088@item add-shared-symbol-files @var{library-file}
16089@itemx assf @var{library-file}
16090The @code{add-shared-symbol-files} command can currently be used only
16091in the Cygwin build of @value{GDBN} on MS-Windows OS, where it is an
16092alias for the @code{dll-symbols} command (@pxref{Cygwin Native}).
16093@value{GDBN} automatically looks for shared libraries, however if
16094@value{GDBN} does not find yours, you can invoke
16095@code{add-shared-symbol-files}. It takes one argument: the shared
16096library's file name. @code{assf} is a shorthand alias for
16097@code{add-shared-symbol-files}.
c906108c 16098
c906108c 16099@kindex section
09d4efe1
EZ
16100@item section @var{section} @var{addr}
16101The @code{section} command changes the base address of the named
16102@var{section} of the exec file to @var{addr}. This can be used if the
16103exec file does not contain section addresses, (such as in the
16104@code{a.out} format), or when the addresses specified in the file
16105itself are wrong. Each section must be changed separately. The
16106@code{info files} command, described below, lists all the sections and
16107their addresses.
c906108c
SS
16108
16109@kindex info files
16110@kindex info target
16111@item info files
16112@itemx info target
7a292a7a
SS
16113@code{info files} and @code{info target} are synonymous; both print the
16114current target (@pxref{Targets, ,Specifying a Debugging Target}),
16115including the names of the executable and core dump files currently in
16116use by @value{GDBN}, and the files from which symbols were loaded. The
16117command @code{help target} lists all possible targets rather than
16118current ones.
16119
fe95c787
MS
16120@kindex maint info sections
16121@item maint info sections
16122Another command that can give you extra information about program sections
16123is @code{maint info sections}. In addition to the section information
16124displayed by @code{info files}, this command displays the flags and file
16125offset of each section in the executable and core dump files. In addition,
16126@code{maint info sections} provides the following command options (which
16127may be arbitrarily combined):
16128
16129@table @code
16130@item ALLOBJ
16131Display sections for all loaded object files, including shared libraries.
16132@item @var{sections}
6600abed 16133Display info only for named @var{sections}.
fe95c787
MS
16134@item @var{section-flags}
16135Display info only for sections for which @var{section-flags} are true.
16136The section flags that @value{GDBN} currently knows about are:
16137@table @code
16138@item ALLOC
16139Section will have space allocated in the process when loaded.
16140Set for all sections except those containing debug information.
16141@item LOAD
16142Section will be loaded from the file into the child process memory.
16143Set for pre-initialized code and data, clear for @code{.bss} sections.
16144@item RELOC
16145Section needs to be relocated before loading.
16146@item READONLY
16147Section cannot be modified by the child process.
16148@item CODE
16149Section contains executable code only.
6600abed 16150@item DATA
fe95c787
MS
16151Section contains data only (no executable code).
16152@item ROM
16153Section will reside in ROM.
16154@item CONSTRUCTOR
16155Section contains data for constructor/destructor lists.
16156@item HAS_CONTENTS
16157Section is not empty.
16158@item NEVER_LOAD
16159An instruction to the linker to not output the section.
16160@item COFF_SHARED_LIBRARY
16161A notification to the linker that the section contains
16162COFF shared library information.
16163@item IS_COMMON
16164Section contains common symbols.
16165@end table
16166@end table
6763aef9 16167@kindex set trust-readonly-sections
9c16f35a 16168@cindex read-only sections
6763aef9
MS
16169@item set trust-readonly-sections on
16170Tell @value{GDBN} that readonly sections in your object file
6ca652b0 16171really are read-only (i.e.@: that their contents will not change).
6763aef9
MS
16172In that case, @value{GDBN} can fetch values from these sections
16173out of the object file, rather than from the target program.
16174For some targets (notably embedded ones), this can be a significant
16175enhancement to debugging performance.
16176
16177The default is off.
16178
16179@item set trust-readonly-sections off
15110bc3 16180Tell @value{GDBN} not to trust readonly sections. This means that
6763aef9
MS
16181the contents of the section might change while the program is running,
16182and must therefore be fetched from the target when needed.
9c16f35a
EZ
16183
16184@item show trust-readonly-sections
16185Show the current setting of trusting readonly sections.
c906108c
SS
16186@end table
16187
16188All file-specifying commands allow both absolute and relative file names
16189as arguments. @value{GDBN} always converts the file name to an absolute file
16190name and remembers it that way.
16191
c906108c 16192@cindex shared libraries
9cceb671
DJ
16193@anchor{Shared Libraries}
16194@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix,
9c16f35a 16195and IBM RS/6000 AIX shared libraries.
53a5351d 16196
9cceb671
DJ
16197On MS-Windows @value{GDBN} must be linked with the Expat library to support
16198shared libraries. @xref{Expat}.
16199
c906108c
SS
16200@value{GDBN} automatically loads symbol definitions from shared libraries
16201when you use the @code{run} command, or when you examine a core file.
16202(Before you issue the @code{run} command, @value{GDBN} does not understand
16203references to a function in a shared library, however---unless you are
16204debugging a core file).
53a5351d
JM
16205
16206On HP-UX, if the program loads a library explicitly, @value{GDBN}
16207automatically loads the symbols at the time of the @code{shl_load} call.
16208
c906108c
SS
16209@c FIXME: some @value{GDBN} release may permit some refs to undef
16210@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
16211@c FIXME...lib; check this from time to time when updating manual
16212
b7209cb4
FF
16213There are times, however, when you may wish to not automatically load
16214symbol definitions from shared libraries, such as when they are
16215particularly large or there are many of them.
16216
16217To control the automatic loading of shared library symbols, use the
16218commands:
16219
16220@table @code
16221@kindex set auto-solib-add
16222@item set auto-solib-add @var{mode}
16223If @var{mode} is @code{on}, symbols from all shared object libraries
16224will be loaded automatically when the inferior begins execution, you
16225attach to an independently started inferior, or when the dynamic linker
16226informs @value{GDBN} that a new library has been loaded. If @var{mode}
16227is @code{off}, symbols must be loaded manually, using the
16228@code{sharedlibrary} command. The default value is @code{on}.
16229
dcaf7c2c
EZ
16230@cindex memory used for symbol tables
16231If your program uses lots of shared libraries with debug info that
16232takes large amounts of memory, you can decrease the @value{GDBN}
16233memory footprint by preventing it from automatically loading the
16234symbols from shared libraries. To that end, type @kbd{set
16235auto-solib-add off} before running the inferior, then load each
16236library whose debug symbols you do need with @kbd{sharedlibrary
d3e8051b 16237@var{regexp}}, where @var{regexp} is a regular expression that matches
dcaf7c2c
EZ
16238the libraries whose symbols you want to be loaded.
16239
b7209cb4
FF
16240@kindex show auto-solib-add
16241@item show auto-solib-add
16242Display the current autoloading mode.
16243@end table
16244
c45da7e6 16245@cindex load shared library
b7209cb4
FF
16246To explicitly load shared library symbols, use the @code{sharedlibrary}
16247command:
16248
c906108c
SS
16249@table @code
16250@kindex info sharedlibrary
16251@kindex info share
55333a84
DE
16252@item info share @var{regex}
16253@itemx info sharedlibrary @var{regex}
16254Print the names of the shared libraries which are currently loaded
16255that match @var{regex}. If @var{regex} is omitted then print
16256all shared libraries that are loaded.
c906108c
SS
16257
16258@kindex sharedlibrary
16259@kindex share
16260@item sharedlibrary @var{regex}
16261@itemx share @var{regex}
c906108c
SS
16262Load shared object library symbols for files matching a
16263Unix regular expression.
16264As with files loaded automatically, it only loads shared libraries
16265required by your program for a core file or after typing @code{run}. If
16266@var{regex} is omitted all shared libraries required by your program are
16267loaded.
c45da7e6
EZ
16268
16269@item nosharedlibrary
16270@kindex nosharedlibrary
16271@cindex unload symbols from shared libraries
16272Unload all shared object library symbols. This discards all symbols
16273that have been loaded from all shared libraries. Symbols from shared
16274libraries that were loaded by explicit user requests are not
16275discarded.
c906108c
SS
16276@end table
16277
721c2651 16278Sometimes you may wish that @value{GDBN} stops and gives you control
edcc5120
TT
16279when any of shared library events happen. The best way to do this is
16280to use @code{catch load} and @code{catch unload} (@pxref{Set
16281Catchpoints}).
16282
16283@value{GDBN} also supports the the @code{set stop-on-solib-events}
16284command for this. This command exists for historical reasons. It is
16285less useful than setting a catchpoint, because it does not allow for
16286conditions or commands as a catchpoint does.
721c2651
EZ
16287
16288@table @code
16289@item set stop-on-solib-events
16290@kindex set stop-on-solib-events
16291This command controls whether @value{GDBN} should give you control
16292when the dynamic linker notifies it about some shared library event.
16293The most common event of interest is loading or unloading of a new
16294shared library.
16295
16296@item show stop-on-solib-events
16297@kindex show stop-on-solib-events
16298Show whether @value{GDBN} stops and gives you control when shared
16299library events happen.
16300@end table
16301
f5ebfba0 16302Shared libraries are also supported in many cross or remote debugging
f1838a98
UW
16303configurations. @value{GDBN} needs to have access to the target's libraries;
16304this can be accomplished either by providing copies of the libraries
16305on the host system, or by asking @value{GDBN} to automatically retrieve the
16306libraries from the target. If copies of the target libraries are
16307provided, they need to be the same as the target libraries, although the
f5ebfba0
DJ
16308copies on the target can be stripped as long as the copies on the host are
16309not.
16310
59b7b46f
EZ
16311@cindex where to look for shared libraries
16312For remote debugging, you need to tell @value{GDBN} where the target
16313libraries are, so that it can load the correct copies---otherwise, it
16314may try to load the host's libraries. @value{GDBN} has two variables
16315to specify the search directories for target libraries.
f5ebfba0
DJ
16316
16317@table @code
59b7b46f 16318@cindex prefix for shared library file names
f822c95b 16319@cindex system root, alternate
f5ebfba0 16320@kindex set solib-absolute-prefix
f822c95b
DJ
16321@kindex set sysroot
16322@item set sysroot @var{path}
16323Use @var{path} as the system root for the program being debugged. Any
16324absolute shared library paths will be prefixed with @var{path}; many
16325runtime loaders store the absolute paths to the shared library in the
16326target program's memory. If you use @code{set sysroot} to find shared
16327libraries, they need to be laid out in the same way that they are on
16328the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy
16329under @var{path}.
16330
f1838a98
UW
16331If @var{path} starts with the sequence @file{remote:}, @value{GDBN} will
16332retrieve the target libraries from the remote system. This is only
16333supported when using a remote target that supports the @code{remote get}
16334command (@pxref{File Transfer,,Sending files to a remote system}).
16335The part of @var{path} following the initial @file{remote:}
16336(if present) is used as system root prefix on the remote file system.
16337@footnote{If you want to specify a local system root using a directory
16338that happens to be named @file{remote:}, you need to use some equivalent
16339variant of the name like @file{./remote:}.}
16340
ab38a727
PA
16341For targets with an MS-DOS based filesystem, such as MS-Windows and
16342SymbianOS, @value{GDBN} tries prefixing a few variants of the target
16343absolute file name with @var{path}. But first, on Unix hosts,
16344@value{GDBN} converts all backslash directory separators into forward
16345slashes, because the backslash is not a directory separator on Unix:
16346
16347@smallexample
16348 c:\foo\bar.dll @result{} c:/foo/bar.dll
16349@end smallexample
16350
16351Then, @value{GDBN} attempts prefixing the target file name with
16352@var{path}, and looks for the resulting file name in the host file
16353system:
16354
16355@smallexample
16356 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll
16357@end smallexample
16358
16359If that does not find the shared library, @value{GDBN} tries removing
16360the @samp{:} character from the drive spec, both for convenience, and,
16361for the case of the host file system not supporting file names with
16362colons:
16363
16364@smallexample
16365 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll
16366@end smallexample
16367
16368This makes it possible to have a system root that mirrors a target
16369with more than one drive. E.g., you may want to setup your local
16370copies of the target system shared libraries like so (note @samp{c} vs
16371@samp{z}):
16372
16373@smallexample
16374 @file{/path/to/sysroot/c/sys/bin/foo.dll}
16375 @file{/path/to/sysroot/c/sys/bin/bar.dll}
16376 @file{/path/to/sysroot/z/sys/bin/bar.dll}
16377@end smallexample
16378
16379@noindent
16380and point the system root at @file{/path/to/sysroot}, so that
16381@value{GDBN} can find the correct copies of both
16382@file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}.
16383
16384If that still does not find the shared library, @value{GDBN} tries
16385removing the whole drive spec from the target file name:
16386
16387@smallexample
16388 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll
16389@end smallexample
16390
16391This last lookup makes it possible to not care about the drive name,
16392if you don't want or need to.
16393
f822c95b
DJ
16394The @code{set solib-absolute-prefix} command is an alias for @code{set
16395sysroot}.
16396
16397@cindex default system root
59b7b46f 16398@cindex @samp{--with-sysroot}
f822c95b
DJ
16399You can set the default system root by using the configure-time
16400@samp{--with-sysroot} option. If the system root is inside
16401@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
16402@samp{--exec-prefix}), then the default system root will be updated
16403automatically if the installed @value{GDBN} is moved to a new
16404location.
16405
16406@kindex show sysroot
16407@item show sysroot
f5ebfba0
DJ
16408Display the current shared library prefix.
16409
16410@kindex set solib-search-path
16411@item set solib-search-path @var{path}
f822c95b
DJ
16412If this variable is set, @var{path} is a colon-separated list of
16413directories to search for shared libraries. @samp{solib-search-path}
16414is used after @samp{sysroot} fails to locate the library, or if the
16415path to the library is relative instead of absolute. If you want to
16416use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set
d3e8051b 16417@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from
f822c95b 16418finding your host's libraries. @samp{sysroot} is preferred; setting
d3e8051b 16419it to a nonexistent directory may interfere with automatic loading
f822c95b 16420of shared library symbols.
f5ebfba0
DJ
16421
16422@kindex show solib-search-path
16423@item show solib-search-path
16424Display the current shared library search path.
ab38a727
PA
16425
16426@cindex DOS file-name semantics of file names.
16427@kindex set target-file-system-kind (unix|dos-based|auto)
16428@kindex show target-file-system-kind
16429@item set target-file-system-kind @var{kind}
16430Set assumed file system kind for target reported file names.
16431
16432Shared library file names as reported by the target system may not
16433make sense as is on the system @value{GDBN} is running on. For
16434example, when remote debugging a target that has MS-DOS based file
16435system semantics, from a Unix host, the target may be reporting to
16436@value{GDBN} a list of loaded shared libraries with file names such as
16437@file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of
16438drive letters, so the @samp{c:\} prefix is not normally understood as
16439indicating an absolute file name, and neither is the backslash
16440normally considered a directory separator character. In that case,
16441the native file system would interpret this whole absolute file name
16442as a relative file name with no directory components. This would make
16443it impossible to point @value{GDBN} at a copy of the remote target's
16444shared libraries on the host using @code{set sysroot}, and impractical
16445with @code{set solib-search-path}. Setting
16446@code{target-file-system-kind} to @code{dos-based} tells @value{GDBN}
16447to interpret such file names similarly to how the target would, and to
16448map them to file names valid on @value{GDBN}'s native file system
16449semantics. The value of @var{kind} can be @code{"auto"}, in addition
16450to one of the supported file system kinds. In that case, @value{GDBN}
16451tries to determine the appropriate file system variant based on the
16452current target's operating system (@pxref{ABI, ,Configuring the
16453Current ABI}). The supported file system settings are:
16454
16455@table @code
16456@item unix
16457Instruct @value{GDBN} to assume the target file system is of Unix
16458kind. Only file names starting the forward slash (@samp{/}) character
16459are considered absolute, and the directory separator character is also
16460the forward slash.
16461
16462@item dos-based
16463Instruct @value{GDBN} to assume the target file system is DOS based.
16464File names starting with either a forward slash, or a drive letter
16465followed by a colon (e.g., @samp{c:}), are considered absolute, and
16466both the slash (@samp{/}) and the backslash (@samp{\\}) characters are
16467considered directory separators.
16468
16469@item auto
16470Instruct @value{GDBN} to use the file system kind associated with the
16471target operating system (@pxref{ABI, ,Configuring the Current ABI}).
16472This is the default.
16473@end table
f5ebfba0
DJ
16474@end table
16475
c011a4f4
DE
16476@cindex file name canonicalization
16477@cindex base name differences
16478When processing file names provided by the user, @value{GDBN}
16479frequently needs to compare them to the file names recorded in the
16480program's debug info. Normally, @value{GDBN} compares just the
16481@dfn{base names} of the files as strings, which is reasonably fast
16482even for very large programs. (The base name of a file is the last
16483portion of its name, after stripping all the leading directories.)
16484This shortcut in comparison is based upon the assumption that files
16485cannot have more than one base name. This is usually true, but
16486references to files that use symlinks or similar filesystem
16487facilities violate that assumption. If your program records files
16488using such facilities, or if you provide file names to @value{GDBN}
16489using symlinks etc., you can set @code{basenames-may-differ} to
16490@code{true} to instruct @value{GDBN} to completely canonicalize each
16491pair of file names it needs to compare. This will make file-name
16492comparisons accurate, but at a price of a significant slowdown.
16493
16494@table @code
16495@item set basenames-may-differ
16496@kindex set basenames-may-differ
16497Set whether a source file may have multiple base names.
16498
16499@item show basenames-may-differ
16500@kindex show basenames-may-differ
16501Show whether a source file may have multiple base names.
16502@end table
5b5d99cf
JB
16503
16504@node Separate Debug Files
16505@section Debugging Information in Separate Files
16506@cindex separate debugging information files
16507@cindex debugging information in separate files
16508@cindex @file{.debug} subdirectories
16509@cindex debugging information directory, global
f307c045 16510@cindex global debugging information directories
c7e83d54
EZ
16511@cindex build ID, and separate debugging files
16512@cindex @file{.build-id} directory
5b5d99cf
JB
16513
16514@value{GDBN} allows you to put a program's debugging information in a
16515file separate from the executable itself, in a way that allows
16516@value{GDBN} to find and load the debugging information automatically.
c7e83d54
EZ
16517Since debugging information can be very large---sometimes larger
16518than the executable code itself---some systems distribute debugging
5b5d99cf
JB
16519information for their executables in separate files, which users can
16520install only when they need to debug a problem.
16521
c7e83d54
EZ
16522@value{GDBN} supports two ways of specifying the separate debug info
16523file:
5b5d99cf
JB
16524
16525@itemize @bullet
16526@item
c7e83d54
EZ
16527The executable contains a @dfn{debug link} that specifies the name of
16528the separate debug info file. The separate debug file's name is
16529usually @file{@var{executable}.debug}, where @var{executable} is the
16530name of the corresponding executable file without leading directories
16531(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the
99e008fe
EZ
16532debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC)
16533checksum for the debug file, which @value{GDBN} uses to validate that
16534the executable and the debug file came from the same build.
c7e83d54
EZ
16535
16536@item
7e27a47a 16537The executable contains a @dfn{build ID}, a unique bit string that is
c7e83d54 16538also present in the corresponding debug info file. (This is supported
7e27a47a
EZ
16539only on some operating systems, notably those which use the ELF format
16540for binary files and the @sc{gnu} Binutils.) For more details about
16541this feature, see the description of the @option{--build-id}
16542command-line option in @ref{Options, , Command Line Options, ld.info,
16543The GNU Linker}. The debug info file's name is not specified
16544explicitly by the build ID, but can be computed from the build ID, see
16545below.
d3750b24
JK
16546@end itemize
16547
c7e83d54
EZ
16548Depending on the way the debug info file is specified, @value{GDBN}
16549uses two different methods of looking for the debug file:
d3750b24
JK
16550
16551@itemize @bullet
16552@item
c7e83d54
EZ
16553For the ``debug link'' method, @value{GDBN} looks up the named file in
16554the directory of the executable file, then in a subdirectory of that
f307c045
JK
16555directory named @file{.debug}, and finally under each one of the global debug
16556directories, in a subdirectory whose name is identical to the leading
c7e83d54
EZ
16557directories of the executable's absolute file name.
16558
16559@item
83f83d7f 16560For the ``build ID'' method, @value{GDBN} looks in the
f307c045
JK
16561@file{.build-id} subdirectory of each one of the global debug directories for
16562a file named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the
7e27a47a
EZ
16563first 2 hex characters of the build ID bit string, and @var{nnnnnnnn}
16564are the rest of the bit string. (Real build ID strings are 32 or more
16565hex characters, not 10.)
c7e83d54
EZ
16566@end itemize
16567
16568So, for example, suppose you ask @value{GDBN} to debug
7e27a47a
EZ
16569@file{/usr/bin/ls}, which has a debug link that specifies the
16570file @file{ls.debug}, and a build ID whose value in hex is
f307c045 16571@code{abcdef1234}. If the list of the global debug directories includes
c7e83d54
EZ
16572@file{/usr/lib/debug}, then @value{GDBN} will look for the following
16573debug information files, in the indicated order:
16574
16575@itemize @minus
16576@item
16577@file{/usr/lib/debug/.build-id/ab/cdef1234.debug}
d3750b24 16578@item
c7e83d54 16579@file{/usr/bin/ls.debug}
5b5d99cf 16580@item
c7e83d54 16581@file{/usr/bin/.debug/ls.debug}
5b5d99cf 16582@item
c7e83d54 16583@file{/usr/lib/debug/usr/bin/ls.debug}.
5b5d99cf 16584@end itemize
5b5d99cf 16585
1564a261
JK
16586@anchor{debug-file-directory}
16587Global debugging info directories default to what is set by @value{GDBN}
16588configure option @option{--with-separate-debug-dir}. During @value{GDBN} run
16589you can also set the global debugging info directories, and view the list
16590@value{GDBN} is currently using.
5b5d99cf
JB
16591
16592@table @code
16593
16594@kindex set debug-file-directory
24ddea62
JK
16595@item set debug-file-directory @var{directories}
16596Set the directories which @value{GDBN} searches for separate debugging
d9242c17
JK
16597information files to @var{directory}. Multiple path components can be set
16598concatenating them by a path separator.
5b5d99cf
JB
16599
16600@kindex show debug-file-directory
16601@item show debug-file-directory
24ddea62 16602Show the directories @value{GDBN} searches for separate debugging
5b5d99cf
JB
16603information files.
16604
16605@end table
16606
16607@cindex @code{.gnu_debuglink} sections
c7e83d54 16608@cindex debug link sections
5b5d99cf
JB
16609A debug link is a special section of the executable file named
16610@code{.gnu_debuglink}. The section must contain:
16611
16612@itemize
16613@item
16614A filename, with any leading directory components removed, followed by
16615a zero byte,
16616@item
16617zero to three bytes of padding, as needed to reach the next four-byte
16618boundary within the section, and
16619@item
16620a four-byte CRC checksum, stored in the same endianness used for the
16621executable file itself. The checksum is computed on the debugging
16622information file's full contents by the function given below, passing
16623zero as the @var{crc} argument.
16624@end itemize
16625
16626Any executable file format can carry a debug link, as long as it can
16627contain a section named @code{.gnu_debuglink} with the contents
16628described above.
16629
d3750b24 16630@cindex @code{.note.gnu.build-id} sections
c7e83d54 16631@cindex build ID sections
7e27a47a
EZ
16632The build ID is a special section in the executable file (and in other
16633ELF binary files that @value{GDBN} may consider). This section is
16634often named @code{.note.gnu.build-id}, but that name is not mandatory.
16635It contains unique identification for the built files---the ID remains
16636the same across multiple builds of the same build tree. The default
16637algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
16638content for the build ID string. The same section with an identical
16639value is present in the original built binary with symbols, in its
16640stripped variant, and in the separate debugging information file.
d3750b24 16641
5b5d99cf
JB
16642The debugging information file itself should be an ordinary
16643executable, containing a full set of linker symbols, sections, and
16644debugging information. The sections of the debugging information file
c7e83d54
EZ
16645should have the same names, addresses, and sizes as the original file,
16646but they need not contain any data---much like a @code{.bss} section
5b5d99cf
JB
16647in an ordinary executable.
16648
7e27a47a 16649The @sc{gnu} binary utilities (Binutils) package includes the
c7e83d54
EZ
16650@samp{objcopy} utility that can produce
16651the separated executable / debugging information file pairs using the
16652following commands:
16653
16654@smallexample
16655@kbd{objcopy --only-keep-debug foo foo.debug}
16656@kbd{strip -g foo}
c7e83d54
EZ
16657@end smallexample
16658
16659@noindent
16660These commands remove the debugging
83f83d7f
JK
16661information from the executable file @file{foo} and place it in the file
16662@file{foo.debug}. You can use the first, second or both methods to link the
16663two files:
16664
16665@itemize @bullet
16666@item
16667The debug link method needs the following additional command to also leave
16668behind a debug link in @file{foo}:
16669
16670@smallexample
16671@kbd{objcopy --add-gnu-debuglink=foo.debug foo}
16672@end smallexample
16673
16674Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains
d3750b24 16675a version of the @code{strip} command such that the command @kbd{strip foo -f
83f83d7f
JK
16676foo.debug} has the same functionality as the two @code{objcopy} commands and
16677the @code{ln -s} command above, together.
16678
16679@item
16680Build ID gets embedded into the main executable using @code{ld --build-id} or
16681the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus
16682compatibility fixes for debug files separation are present in @sc{gnu} binary
7e27a47a 16683utilities (Binutils) package since version 2.18.
83f83d7f
JK
16684@end itemize
16685
16686@noindent
d3750b24 16687
99e008fe
EZ
16688@cindex CRC algorithm definition
16689The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in
16690IEEE 802.3 using the polynomial:
16691
16692@c TexInfo requires naked braces for multi-digit exponents for Tex
16693@c output, but this causes HTML output to barf. HTML has to be set using
16694@c raw commands. So we end up having to specify this equation in 2
16695@c different ways!
16696@ifhtml
16697@display
16698@html
16699 <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>
16700 + <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
16701@end html
16702@end display
16703@end ifhtml
16704@ifnothtml
16705@display
16706 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}}
16707 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1}
16708@end display
16709@end ifnothtml
16710
16711The function is computed byte at a time, taking the least
16712significant bit of each byte first. The initial pattern
16713@code{0xffffffff} is used, to ensure leading zeros affect the CRC and
16714the final result is inverted to ensure trailing zeros also affect the
16715CRC.
16716
16717@emph{Note:} This is the same CRC polynomial as used in handling the
16718@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{Remote Protocol,
16719, @value{GDBN} Remote Serial Protocol}). However in the
16720case of the Remote Serial Protocol, the CRC is computed @emph{most}
16721significant bit first, and the result is not inverted, so trailing
16722zeros have no effect on the CRC value.
16723
16724To complete the description, we show below the code of the function
16725which produces the CRC used in @code{.gnu_debuglink}. Inverting the
16726initially supplied @code{crc} argument means that an initial call to
16727this function passing in zero will start computing the CRC using
16728@code{0xffffffff}.
5b5d99cf 16729
4644b6e3 16730@kindex gnu_debuglink_crc32
5b5d99cf
JB
16731@smallexample
16732unsigned long
16733gnu_debuglink_crc32 (unsigned long crc,
16734 unsigned char *buf, size_t len)
16735@{
16736 static const unsigned long crc32_table[256] =
16737 @{
16738 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
16739 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
16740 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
16741 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
16742 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
16743 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
16744 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
16745 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
16746 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
16747 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
16748 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
16749 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
16750 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
16751 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
16752 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
16753 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
16754 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
16755 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
16756 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
16757 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
16758 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
16759 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
16760 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
16761 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
16762 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
16763 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
16764 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
16765 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
16766 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
16767 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
16768 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
16769 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
16770 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
16771 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
16772 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
16773 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
16774 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
16775 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
16776 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
16777 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
16778 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
16779 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
16780 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
16781 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
16782 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
16783 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
16784 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
16785 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
16786 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
16787 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
16788 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
16789 0x2d02ef8d
16790 @};
16791 unsigned char *end;
16792
16793 crc = ~crc & 0xffffffff;
16794 for (end = buf + len; buf < end; ++buf)
16795 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
e7a3abfc 16796 return ~crc & 0xffffffff;
5b5d99cf
JB
16797@}
16798@end smallexample
16799
c7e83d54
EZ
16800@noindent
16801This computation does not apply to the ``build ID'' method.
16802
608e2dbb
TT
16803@node MiniDebugInfo
16804@section Debugging information in a special section
16805@cindex separate debug sections
16806@cindex @samp{.gnu_debugdata} section
16807
16808Some systems ship pre-built executables and libraries that have a
16809special @samp{.gnu_debugdata} section. This feature is called
16810@dfn{MiniDebugInfo}. This section holds an LZMA-compressed object and
16811is used to supply extra symbols for backtraces.
16812
16813The intent of this section is to provide extra minimal debugging
16814information for use in simple backtraces. It is not intended to be a
16815replacement for full separate debugging information (@pxref{Separate
16816Debug Files}). The example below shows the intended use; however,
16817@value{GDBN} does not currently put restrictions on what sort of
16818debugging information might be included in the section.
16819
16820@value{GDBN} has support for this extension. If the section exists,
16821then it is used provided that no other source of debugging information
16822can be found, and that @value{GDBN} was configured with LZMA support.
16823
16824This section can be easily created using @command{objcopy} and other
16825standard utilities:
16826
16827@smallexample
16828# Extract the dynamic symbols from the main binary, there is no need
16829# to also have these in the normal symbol table
16830nm -D @var{binary} --format=posix --defined-only \
16831 | awk '@{ print $1 @}' | sort > dynsyms
16832
16833# Extract all the text (i.e. function) symbols from the debuginfo .
16834nm @var{binary} --format=posix --defined-only \
16835 | awk '@{ if ($2 == "T" || $2 == "t") print $1 @}' \
16836 | sort > funcsyms
16837
16838# Keep all the function symbols not already in the dynamic symbol
16839# table.
16840comm -13 dynsyms funcsyms > keep_symbols
16841
16842# Copy the full debuginfo, keeping only a minimal set of symbols and
16843# removing some unnecessary sections.
16844objcopy -S --remove-section .gdb_index --remove-section .comment \
16845 --keep-symbols=keep_symbols @var{binary} mini_debuginfo
16846
16847# Inject the compressed data into the .gnu_debugdata section of the
16848# original binary.
16849xz mini_debuginfo
16850objcopy --add-section .gnu_debugdata=mini_debuginfo.xz @var{binary}
16851@end smallexample
5b5d99cf 16852
9291a0cd
TT
16853@node Index Files
16854@section Index Files Speed Up @value{GDBN}
16855@cindex index files
16856@cindex @samp{.gdb_index} section
16857
16858When @value{GDBN} finds a symbol file, it scans the symbols in the
16859file in order to construct an internal symbol table. This lets most
16860@value{GDBN} operations work quickly---at the cost of a delay early
16861on. For large programs, this delay can be quite lengthy, so
16862@value{GDBN} provides a way to build an index, which speeds up
16863startup.
16864
16865The index is stored as a section in the symbol file. @value{GDBN} can
16866write the index to a file, then you can put it into the symbol file
16867using @command{objcopy}.
16868
16869To create an index file, use the @code{save gdb-index} command:
16870
16871@table @code
16872@item save gdb-index @var{directory}
16873@kindex save gdb-index
16874Create an index file for each symbol file currently known by
16875@value{GDBN}. Each file is named after its corresponding symbol file,
16876with @samp{.gdb-index} appended, and is written into the given
16877@var{directory}.
16878@end table
16879
16880Once you have created an index file you can merge it into your symbol
16881file, here named @file{symfile}, using @command{objcopy}:
16882
16883@smallexample
16884$ objcopy --add-section .gdb_index=symfile.gdb-index \
16885 --set-section-flags .gdb_index=readonly symfile symfile
16886@end smallexample
16887
e615022a
DE
16888@value{GDBN} will normally ignore older versions of @file{.gdb_index}
16889sections that have been deprecated. Usually they are deprecated because
16890they are missing a new feature or have performance issues.
16891To tell @value{GDBN} to use a deprecated index section anyway
16892specify @code{set use-deprecated-index-sections on}.
16893The default is @code{off}.
16894This can speed up startup, but may result in some functionality being lost.
16895@xref{Index Section Format}.
16896
16897@emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on}
16898must be done before gdb reads the file. The following will not work:
16899
16900@smallexample
16901$ gdb -ex "set use-deprecated-index-sections on" <program>
16902@end smallexample
16903
16904Instead you must do, for example,
16905
16906@smallexample
16907$ gdb -iex "set use-deprecated-index-sections on" <program>
16908@end smallexample
16909
9291a0cd
TT
16910There are currently some limitation on indices. They only work when
16911for DWARF debugging information, not stabs. And, they do not
16912currently work for programs using Ada.
16913
6d2ebf8b 16914@node Symbol Errors
79a6e687 16915@section Errors Reading Symbol Files
c906108c
SS
16916
16917While reading a symbol file, @value{GDBN} occasionally encounters problems,
16918such as symbol types it does not recognize, or known bugs in compiler
16919output. By default, @value{GDBN} does not notify you of such problems, since
16920they are relatively common and primarily of interest to people
16921debugging compilers. If you are interested in seeing information
16922about ill-constructed symbol tables, you can either ask @value{GDBN} to print
16923only one message about each such type of problem, no matter how many
16924times the problem occurs; or you can ask @value{GDBN} to print more messages,
16925to see how many times the problems occur, with the @code{set
79a6e687
BW
16926complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and
16927Messages}).
c906108c
SS
16928
16929The messages currently printed, and their meanings, include:
16930
16931@table @code
16932@item inner block not inside outer block in @var{symbol}
16933
16934The symbol information shows where symbol scopes begin and end
16935(such as at the start of a function or a block of statements). This
16936error indicates that an inner scope block is not fully contained
16937in its outer scope blocks.
16938
16939@value{GDBN} circumvents the problem by treating the inner block as if it had
16940the same scope as the outer block. In the error message, @var{symbol}
16941may be shown as ``@code{(don't know)}'' if the outer block is not a
16942function.
16943
16944@item block at @var{address} out of order
16945
16946The symbol information for symbol scope blocks should occur in
16947order of increasing addresses. This error indicates that it does not
16948do so.
16949
16950@value{GDBN} does not circumvent this problem, and has trouble
16951locating symbols in the source file whose symbols it is reading. (You
16952can often determine what source file is affected by specifying
79a6e687
BW
16953@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and
16954Messages}.)
c906108c
SS
16955
16956@item bad block start address patched
16957
16958The symbol information for a symbol scope block has a start address
16959smaller than the address of the preceding source line. This is known
16960to occur in the SunOS 4.1.1 (and earlier) C compiler.
16961
16962@value{GDBN} circumvents the problem by treating the symbol scope block as
16963starting on the previous source line.
16964
16965@item bad string table offset in symbol @var{n}
16966
16967@cindex foo
16968Symbol number @var{n} contains a pointer into the string table which is
16969larger than the size of the string table.
16970
16971@value{GDBN} circumvents the problem by considering the symbol to have the
16972name @code{foo}, which may cause other problems if many symbols end up
16973with this name.
16974
16975@item unknown symbol type @code{0x@var{nn}}
16976
7a292a7a
SS
16977The symbol information contains new data types that @value{GDBN} does
16978not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 16979uncomprehended information, in hexadecimal.
c906108c 16980
7a292a7a
SS
16981@value{GDBN} circumvents the error by ignoring this symbol information.
16982This usually allows you to debug your program, though certain symbols
c906108c 16983are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
16984debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
16985on @code{complain}, then go up to the function @code{read_dbx_symtab}
16986and examine @code{*bufp} to see the symbol.
c906108c
SS
16987
16988@item stub type has NULL name
c906108c 16989
7a292a7a 16990@value{GDBN} could not find the full definition for a struct or class.
c906108c 16991
7a292a7a 16992@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 16993The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
16994information that recent versions of the compiler should have output for
16995it.
c906108c
SS
16996
16997@item info mismatch between compiler and debugger
16998
16999@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 17000
c906108c
SS
17001@end table
17002
b14b1491
TT
17003@node Data Files
17004@section GDB Data Files
17005
17006@cindex prefix for data files
17007@value{GDBN} will sometimes read an auxiliary data file. These files
17008are kept in a directory known as the @dfn{data directory}.
17009
17010You can set the data directory's name, and view the name @value{GDBN}
17011is currently using.
17012
17013@table @code
17014@kindex set data-directory
17015@item set data-directory @var{directory}
17016Set the directory which @value{GDBN} searches for auxiliary data files
17017to @var{directory}.
17018
17019@kindex show data-directory
17020@item show data-directory
17021Show the directory @value{GDBN} searches for auxiliary data files.
17022@end table
17023
17024@cindex default data directory
17025@cindex @samp{--with-gdb-datadir}
17026You can set the default data directory by using the configure-time
17027@samp{--with-gdb-datadir} option. If the data directory is inside
17028@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
17029@samp{--exec-prefix}), then the default data directory will be updated
17030automatically if the installed @value{GDBN} is moved to a new
17031location.
17032
aae1c79a
DE
17033The data directory may also be specified with the
17034@code{--data-directory} command line option.
17035@xref{Mode Options}.
17036
6d2ebf8b 17037@node Targets
c906108c 17038@chapter Specifying a Debugging Target
7a292a7a 17039
c906108c 17040@cindex debugging target
c906108c 17041A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
17042
17043Often, @value{GDBN} runs in the same host environment as your program;
17044in that case, the debugging target is specified as a side effect when
17045you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
17046flexibility---for example, running @value{GDBN} on a physically separate
17047host, or controlling a standalone system over a serial port or a
53a5351d
JM
17048realtime system over a TCP/IP connection---you can use the @code{target}
17049command to specify one of the target types configured for @value{GDBN}
79a6e687 17050(@pxref{Target Commands, ,Commands for Managing Targets}).
c906108c 17051
a8f24a35
EZ
17052@cindex target architecture
17053It is possible to build @value{GDBN} for several different @dfn{target
17054architectures}. When @value{GDBN} is built like that, you can choose
17055one of the available architectures with the @kbd{set architecture}
17056command.
17057
17058@table @code
17059@kindex set architecture
17060@kindex show architecture
17061@item set architecture @var{arch}
17062This command sets the current target architecture to @var{arch}. The
17063value of @var{arch} can be @code{"auto"}, in addition to one of the
17064supported architectures.
17065
17066@item show architecture
17067Show the current target architecture.
9c16f35a
EZ
17068
17069@item set processor
17070@itemx processor
17071@kindex set processor
17072@kindex show processor
17073These are alias commands for, respectively, @code{set architecture}
17074and @code{show architecture}.
a8f24a35
EZ
17075@end table
17076
c906108c
SS
17077@menu
17078* Active Targets:: Active targets
17079* Target Commands:: Commands for managing targets
c906108c 17080* Byte Order:: Choosing target byte order
c906108c
SS
17081@end menu
17082
6d2ebf8b 17083@node Active Targets
79a6e687 17084@section Active Targets
7a292a7a 17085
c906108c
SS
17086@cindex stacking targets
17087@cindex active targets
17088@cindex multiple targets
17089
8ea5bce5 17090There are multiple classes of targets such as: processes, executable files or
c0edd9ed
JK
17091recording sessions. Core files belong to the process class, making core file
17092and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently
17093on multiple active targets, one in each class. This allows you to (for
17094example) start a process and inspect its activity, while still having access to
17095the executable file after the process finishes. Or if you start process
17096recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are
17097presented a virtual layer of the recording target, while the process target
17098remains stopped at the chronologically last point of the process execution.
17099
17100Use the @code{core-file} and @code{exec-file} commands to select a new core
17101file or executable target (@pxref{Files, ,Commands to Specify Files}). To
17102specify as a target a process that is already running, use the @code{attach}
17103command (@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 17104
6d2ebf8b 17105@node Target Commands
79a6e687 17106@section Commands for Managing Targets
c906108c
SS
17107
17108@table @code
17109@item target @var{type} @var{parameters}
7a292a7a
SS
17110Connects the @value{GDBN} host environment to a target machine or
17111process. A target is typically a protocol for talking to debugging
17112facilities. You use the argument @var{type} to specify the type or
17113protocol of the target machine.
c906108c
SS
17114
17115Further @var{parameters} are interpreted by the target protocol, but
17116typically include things like device names or host names to connect
17117with, process numbers, and baud rates.
c906108c
SS
17118
17119The @code{target} command does not repeat if you press @key{RET} again
17120after executing the command.
17121
17122@kindex help target
17123@item help target
17124Displays the names of all targets available. To display targets
17125currently selected, use either @code{info target} or @code{info files}
79a6e687 17126(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
17127
17128@item help target @var{name}
17129Describe a particular target, including any parameters necessary to
17130select it.
17131
17132@kindex set gnutarget
17133@item set gnutarget @var{args}
5d161b24 17134@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 17135knows whether it is reading an @dfn{executable},
5d161b24
DB
17136a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
17137with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
17138with @code{gnutarget} the @code{target} refers to a program, not a machine.
17139
d4f3574e 17140@quotation
c906108c
SS
17141@emph{Warning:} To specify a file format with @code{set gnutarget},
17142you must know the actual BFD name.
d4f3574e 17143@end quotation
c906108c 17144
d4f3574e 17145@noindent
79a6e687 17146@xref{Files, , Commands to Specify Files}.
c906108c 17147
5d161b24 17148@kindex show gnutarget
c906108c
SS
17149@item show gnutarget
17150Use the @code{show gnutarget} command to display what file format
17151@code{gnutarget} is set to read. If you have not set @code{gnutarget},
17152@value{GDBN} will determine the file format for each file automatically,
17153and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
17154@end table
17155
4644b6e3 17156@cindex common targets
c906108c
SS
17157Here are some common targets (available, or not, depending on the GDB
17158configuration):
c906108c
SS
17159
17160@table @code
4644b6e3 17161@kindex target
c906108c 17162@item target exec @var{program}
4644b6e3 17163@cindex executable file target
c906108c
SS
17164An executable file. @samp{target exec @var{program}} is the same as
17165@samp{exec-file @var{program}}.
17166
c906108c 17167@item target core @var{filename}
4644b6e3 17168@cindex core dump file target
c906108c
SS
17169A core dump file. @samp{target core @var{filename}} is the same as
17170@samp{core-file @var{filename}}.
c906108c 17171
1a10341b 17172@item target remote @var{medium}
4644b6e3 17173@cindex remote target
1a10341b
JB
17174A remote system connected to @value{GDBN} via a serial line or network
17175connection. This command tells @value{GDBN} to use its own remote
17176protocol over @var{medium} for debugging. @xref{Remote Debugging}.
17177
17178For example, if you have a board connected to @file{/dev/ttya} on the
17179machine running @value{GDBN}, you could say:
17180
17181@smallexample
17182target remote /dev/ttya
17183@end smallexample
17184
17185@code{target remote} supports the @code{load} command. This is only
17186useful if you have some other way of getting the stub to the target
17187system, and you can put it somewhere in memory where it won't get
17188clobbered by the download.
c906108c 17189
ee8e71d4 17190@item target sim @r{[}@var{simargs}@r{]} @dots{}
4644b6e3 17191@cindex built-in simulator target
2df3850c 17192Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213 17193In general,
474c8240 17194@smallexample
104c1213
JM
17195 target sim
17196 load
17197 run
474c8240 17198@end smallexample
d4f3574e 17199@noindent
104c1213 17200works; however, you cannot assume that a specific memory map, device
d4f3574e 17201drivers, or even basic I/O is available, although some simulators do
104c1213
JM
17202provide these. For info about any processor-specific simulator details,
17203see the appropriate section in @ref{Embedded Processors, ,Embedded
17204Processors}.
17205
c906108c
SS
17206@end table
17207
104c1213 17208Some configurations may include these targets as well:
c906108c
SS
17209
17210@table @code
17211
c906108c 17212@item target nrom @var{dev}
4644b6e3 17213@cindex NetROM ROM emulator target
c906108c
SS
17214NetROM ROM emulator. This target only supports downloading.
17215
c906108c
SS
17216@end table
17217
5d161b24 17218Different targets are available on different configurations of @value{GDBN};
c906108c 17219your configuration may have more or fewer targets.
c906108c 17220
721c2651
EZ
17221Many remote targets require you to download the executable's code once
17222you've successfully established a connection. You may wish to control
3d00d119
DJ
17223various aspects of this process.
17224
17225@table @code
721c2651
EZ
17226
17227@item set hash
17228@kindex set hash@r{, for remote monitors}
17229@cindex hash mark while downloading
17230This command controls whether a hash mark @samp{#} is displayed while
17231downloading a file to the remote monitor. If on, a hash mark is
17232displayed after each S-record is successfully downloaded to the
17233monitor.
17234
17235@item show hash
17236@kindex show hash@r{, for remote monitors}
17237Show the current status of displaying the hash mark.
17238
17239@item set debug monitor
17240@kindex set debug monitor
17241@cindex display remote monitor communications
17242Enable or disable display of communications messages between
17243@value{GDBN} and the remote monitor.
17244
17245@item show debug monitor
17246@kindex show debug monitor
17247Show the current status of displaying communications between
17248@value{GDBN} and the remote monitor.
a8f24a35 17249@end table
c906108c
SS
17250
17251@table @code
17252
17253@kindex load @var{filename}
17254@item load @var{filename}
8edfe269 17255@anchor{load}
c906108c
SS
17256Depending on what remote debugging facilities are configured into
17257@value{GDBN}, the @code{load} command may be available. Where it exists, it
17258is meant to make @var{filename} (an executable) available for debugging
17259on the remote system---by downloading, or dynamic linking, for example.
17260@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
17261the @code{add-symbol-file} command.
17262
17263If your @value{GDBN} does not have a @code{load} command, attempting to
17264execute it gets the error message ``@code{You can't do that when your
17265target is @dots{}}''
c906108c
SS
17266
17267The file is loaded at whatever address is specified in the executable.
17268For some object file formats, you can specify the load address when you
17269link the program; for other formats, like a.out, the object file format
17270specifies a fixed address.
17271@c FIXME! This would be a good place for an xref to the GNU linker doc.
17272
68437a39
DJ
17273Depending on the remote side capabilities, @value{GDBN} may be able to
17274load programs into flash memory.
17275
c906108c
SS
17276@code{load} does not repeat if you press @key{RET} again after using it.
17277@end table
17278
6d2ebf8b 17279@node Byte Order
79a6e687 17280@section Choosing Target Byte Order
7a292a7a 17281
c906108c
SS
17282@cindex choosing target byte order
17283@cindex target byte order
c906108c 17284
eb17f351 17285Some types of processors, such as the @acronym{MIPS}, PowerPC, and Renesas SH,
c906108c
SS
17286offer the ability to run either big-endian or little-endian byte
17287orders. Usually the executable or symbol will include a bit to
17288designate the endian-ness, and you will not need to worry about
17289which to use. However, you may still find it useful to adjust
d4f3574e 17290@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
17291
17292@table @code
4644b6e3 17293@kindex set endian
c906108c
SS
17294@item set endian big
17295Instruct @value{GDBN} to assume the target is big-endian.
17296
c906108c
SS
17297@item set endian little
17298Instruct @value{GDBN} to assume the target is little-endian.
17299
c906108c
SS
17300@item set endian auto
17301Instruct @value{GDBN} to use the byte order associated with the
17302executable.
17303
17304@item show endian
17305Display @value{GDBN}'s current idea of the target byte order.
17306
17307@end table
17308
17309Note that these commands merely adjust interpretation of symbolic
17310data on the host, and that they have absolutely no effect on the
17311target system.
17312
ea35711c
DJ
17313
17314@node Remote Debugging
17315@chapter Debugging Remote Programs
c906108c
SS
17316@cindex remote debugging
17317
17318If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
17319@value{GDBN} in the usual way, it is often useful to use remote debugging.
17320For example, you might use remote debugging on an operating system kernel,
c906108c
SS
17321or on a small system which does not have a general purpose operating system
17322powerful enough to run a full-featured debugger.
17323
17324Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
17325to make this work with particular debugging targets. In addition,
5d161b24 17326@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
17327but not specific to any particular target system) which you can use if you
17328write the remote stubs---the code that runs on the remote system to
17329communicate with @value{GDBN}.
17330
17331Other remote targets may be available in your
17332configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 17333
6b2f586d 17334@menu
07f31aa6 17335* Connecting:: Connecting to a remote target
a6b151f1 17336* File Transfer:: Sending files to a remote system
6b2f586d 17337* Server:: Using the gdbserver program
79a6e687
BW
17338* Remote Configuration:: Remote configuration
17339* Remote Stub:: Implementing a remote stub
6b2f586d
AC
17340@end menu
17341
07f31aa6 17342@node Connecting
79a6e687 17343@section Connecting to a Remote Target
07f31aa6
DJ
17344
17345On the @value{GDBN} host machine, you will need an unstripped copy of
d3e8051b 17346your program, since @value{GDBN} needs symbol and debugging information.
07f31aa6
DJ
17347Start up @value{GDBN} as usual, using the name of the local copy of your
17348program as the first argument.
17349
86941c27
JB
17350@cindex @code{target remote}
17351@value{GDBN} can communicate with the target over a serial line, or
17352over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In
17353each case, @value{GDBN} uses the same protocol for debugging your
17354program; only the medium carrying the debugging packets varies. The
17355@code{target remote} command establishes a connection to the target.
17356Its arguments indicate which medium to use:
17357
17358@table @code
17359
17360@item target remote @var{serial-device}
07f31aa6 17361@cindex serial line, @code{target remote}
86941c27
JB
17362Use @var{serial-device} to communicate with the target. For example,
17363to use a serial line connected to the device named @file{/dev/ttyb}:
17364
17365@smallexample
17366target remote /dev/ttyb
17367@end smallexample
17368
07f31aa6
DJ
17369If you're using a serial line, you may want to give @value{GDBN} the
17370@w{@samp{--baud}} option, or use the @code{set remotebaud} command
79a6e687 17371(@pxref{Remote Configuration, set remotebaud}) before the
9c16f35a 17372@code{target} command.
07f31aa6 17373
86941c27
JB
17374@item target remote @code{@var{host}:@var{port}}
17375@itemx target remote @code{tcp:@var{host}:@var{port}}
17376@cindex @acronym{TCP} port, @code{target remote}
17377Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
17378The @var{host} may be either a host name or a numeric @acronym{IP}
17379address; @var{port} must be a decimal number. The @var{host} could be
17380the target machine itself, if it is directly connected to the net, or
17381it might be a terminal server which in turn has a serial line to the
17382target.
07f31aa6 17383
86941c27
JB
17384For example, to connect to port 2828 on a terminal server named
17385@code{manyfarms}:
07f31aa6
DJ
17386
17387@smallexample
17388target remote manyfarms:2828
17389@end smallexample
17390
86941c27
JB
17391If your remote target is actually running on the same machine as your
17392debugger session (e.g.@: a simulator for your target running on the
17393same host), you can omit the hostname. For example, to connect to
17394port 1234 on your local machine:
07f31aa6
DJ
17395
17396@smallexample
17397target remote :1234
17398@end smallexample
17399@noindent
17400
17401Note that the colon is still required here.
17402
86941c27
JB
17403@item target remote @code{udp:@var{host}:@var{port}}
17404@cindex @acronym{UDP} port, @code{target remote}
17405Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to
17406connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
07f31aa6
DJ
17407
17408@smallexample
17409target remote udp:manyfarms:2828
17410@end smallexample
17411
86941c27
JB
17412When using a @acronym{UDP} connection for remote debugging, you should
17413keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP}
17414can silently drop packets on busy or unreliable networks, which will
17415cause havoc with your debugging session.
17416
66b8c7f6
JB
17417@item target remote | @var{command}
17418@cindex pipe, @code{target remote} to
17419Run @var{command} in the background and communicate with it using a
17420pipe. The @var{command} is a shell command, to be parsed and expanded
17421by the system's command shell, @code{/bin/sh}; it should expect remote
17422protocol packets on its standard input, and send replies on its
17423standard output. You could use this to run a stand-alone simulator
17424that speaks the remote debugging protocol, to make net connections
17425using programs like @code{ssh}, or for other similar tricks.
17426
17427If @var{command} closes its standard output (perhaps by exiting),
17428@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the
17429program has already exited, this will have no effect.)
17430
86941c27 17431@end table
07f31aa6 17432
86941c27 17433Once the connection has been established, you can use all the usual
8edfe269
DJ
17434commands to examine and change data. The remote program is already
17435running; you can use @kbd{step} and @kbd{continue}, and you do not
17436need to use @kbd{run}.
07f31aa6
DJ
17437
17438@cindex interrupting remote programs
17439@cindex remote programs, interrupting
17440Whenever @value{GDBN} is waiting for the remote program, if you type the
c8aa23ab 17441interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the
07f31aa6
DJ
17442program. This may or may not succeed, depending in part on the hardware
17443and the serial drivers the remote system uses. If you type the
17444interrupt character once again, @value{GDBN} displays this prompt:
17445
17446@smallexample
17447Interrupted while waiting for the program.
17448Give up (and stop debugging it)? (y or n)
17449@end smallexample
17450
17451If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
17452(If you decide you want to try again later, you can use @samp{target
17453remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
17454goes back to waiting.
17455
17456@table @code
17457@kindex detach (remote)
17458@item detach
17459When you have finished debugging the remote program, you can use the
17460@code{detach} command to release it from @value{GDBN} control.
17461Detaching from the target normally resumes its execution, but the results
17462will depend on your particular remote stub. After the @code{detach}
17463command, @value{GDBN} is free to connect to another target.
17464
17465@kindex disconnect
17466@item disconnect
17467The @code{disconnect} command behaves like @code{detach}, except that
17468the target is generally not resumed. It will wait for @value{GDBN}
17469(this instance or another one) to connect and continue debugging. After
17470the @code{disconnect} command, @value{GDBN} is again free to connect to
17471another target.
09d4efe1
EZ
17472
17473@cindex send command to remote monitor
fad38dfa
EZ
17474@cindex extend @value{GDBN} for remote targets
17475@cindex add new commands for external monitor
09d4efe1
EZ
17476@kindex monitor
17477@item monitor @var{cmd}
fad38dfa
EZ
17478This command allows you to send arbitrary commands directly to the
17479remote monitor. Since @value{GDBN} doesn't care about the commands it
17480sends like this, this command is the way to extend @value{GDBN}---you
17481can add new commands that only the external monitor will understand
17482and implement.
07f31aa6
DJ
17483@end table
17484
a6b151f1
DJ
17485@node File Transfer
17486@section Sending files to a remote system
17487@cindex remote target, file transfer
17488@cindex file transfer
17489@cindex sending files to remote systems
17490
17491Some remote targets offer the ability to transfer files over the same
17492connection used to communicate with @value{GDBN}. This is convenient
17493for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems
17494running @code{gdbserver} over a network interface. For other targets,
17495e.g.@: embedded devices with only a single serial port, this may be
17496the only way to upload or download files.
17497
17498Not all remote targets support these commands.
17499
17500@table @code
17501@kindex remote put
17502@item remote put @var{hostfile} @var{targetfile}
17503Copy file @var{hostfile} from the host system (the machine running
17504@value{GDBN}) to @var{targetfile} on the target system.
17505
17506@kindex remote get
17507@item remote get @var{targetfile} @var{hostfile}
17508Copy file @var{targetfile} from the target system to @var{hostfile}
17509on the host system.
17510
17511@kindex remote delete
17512@item remote delete @var{targetfile}
17513Delete @var{targetfile} from the target system.
17514
17515@end table
17516
6f05cf9f 17517@node Server
79a6e687 17518@section Using the @code{gdbserver} Program
6f05cf9f
AC
17519
17520@kindex gdbserver
17521@cindex remote connection without stubs
17522@code{gdbserver} is a control program for Unix-like systems, which
17523allows you to connect your program with a remote @value{GDBN} via
17524@code{target remote}---but without linking in the usual debugging stub.
17525
17526@code{gdbserver} is not a complete replacement for the debugging stubs,
17527because it requires essentially the same operating-system facilities
17528that @value{GDBN} itself does. In fact, a system that can run
17529@code{gdbserver} to connect to a remote @value{GDBN} could also run
17530@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
17531because it is a much smaller program than @value{GDBN} itself. It is
17532also easier to port than all of @value{GDBN}, so you may be able to get
17533started more quickly on a new system by using @code{gdbserver}.
17534Finally, if you develop code for real-time systems, you may find that
17535the tradeoffs involved in real-time operation make it more convenient to
17536do as much development work as possible on another system, for example
17537by cross-compiling. You can use @code{gdbserver} to make a similar
17538choice for debugging.
17539
17540@value{GDBN} and @code{gdbserver} communicate via either a serial line
17541or a TCP connection, using the standard @value{GDBN} remote serial
17542protocol.
17543
2d717e4f
DJ
17544@quotation
17545@emph{Warning:} @code{gdbserver} does not have any built-in security.
17546Do not run @code{gdbserver} connected to any public network; a
17547@value{GDBN} connection to @code{gdbserver} provides access to the
17548target system with the same privileges as the user running
17549@code{gdbserver}.
17550@end quotation
17551
17552@subsection Running @code{gdbserver}
17553@cindex arguments, to @code{gdbserver}
d9b1a651 17554@cindex @code{gdbserver}, command-line arguments
2d717e4f
DJ
17555
17556Run @code{gdbserver} on the target system. You need a copy of the
17557program you want to debug, including any libraries it requires.
6f05cf9f
AC
17558@code{gdbserver} does not need your program's symbol table, so you can
17559strip the program if necessary to save space. @value{GDBN} on the host
17560system does all the symbol handling.
17561
17562To use the server, you must tell it how to communicate with @value{GDBN};
56460a61 17563the name of your program; and the arguments for your program. The usual
6f05cf9f
AC
17564syntax is:
17565
17566@smallexample
17567target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
17568@end smallexample
17569
e0f9f062
DE
17570@var{comm} is either a device name (to use a serial line), or a TCP
17571hostname and portnumber, or @code{-} or @code{stdio} to use
17572stdin/stdout of @code{gdbserver}.
17573For example, to debug Emacs with the argument
6f05cf9f
AC
17574@samp{foo.txt} and communicate with @value{GDBN} over the serial port
17575@file{/dev/com1}:
17576
17577@smallexample
17578target> gdbserver /dev/com1 emacs foo.txt
17579@end smallexample
17580
17581@code{gdbserver} waits passively for the host @value{GDBN} to communicate
17582with it.
17583
17584To use a TCP connection instead of a serial line:
17585
17586@smallexample
17587target> gdbserver host:2345 emacs foo.txt
17588@end smallexample
17589
17590The only difference from the previous example is the first argument,
17591specifying that you are communicating with the host @value{GDBN} via
17592TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
17593expect a TCP connection from machine @samp{host} to local TCP port 2345.
17594(Currently, the @samp{host} part is ignored.) You can choose any number
17595you want for the port number as long as it does not conflict with any
17596TCP ports already in use on the target system (for example, @code{23} is
17597reserved for @code{telnet}).@footnote{If you choose a port number that
17598conflicts with another service, @code{gdbserver} prints an error message
17599and exits.} You must use the same port number with the host @value{GDBN}
17600@code{target remote} command.
17601
e0f9f062
DE
17602The @code{stdio} connection is useful when starting @code{gdbserver}
17603with ssh:
17604
17605@smallexample
17606(gdb) target remote | ssh -T hostname gdbserver - hello
17607@end smallexample
17608
17609The @samp{-T} option to ssh is provided because we don't need a remote pty,
17610and we don't want escape-character handling. Ssh does this by default when
17611a command is provided, the flag is provided to make it explicit.
17612You could elide it if you want to.
17613
17614Programs started with stdio-connected gdbserver have @file{/dev/null} for
17615@code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for
17616display through a pipe connected to gdbserver.
17617Both @code{stdout} and @code{stderr} use the same pipe.
17618
2d717e4f 17619@subsubsection Attaching to a Running Program
d9b1a651
EZ
17620@cindex attach to a program, @code{gdbserver}
17621@cindex @option{--attach}, @code{gdbserver} option
2d717e4f 17622
56460a61
DJ
17623On some targets, @code{gdbserver} can also attach to running programs.
17624This is accomplished via the @code{--attach} argument. The syntax is:
17625
17626@smallexample
2d717e4f 17627target> gdbserver --attach @var{comm} @var{pid}
56460a61
DJ
17628@end smallexample
17629
17630@var{pid} is the process ID of a currently running process. It isn't necessary
17631to point @code{gdbserver} at a binary for the running process.
17632
b1fe9455 17633@pindex pidof
b1fe9455
DJ
17634You can debug processes by name instead of process ID if your target has the
17635@code{pidof} utility:
17636
17637@smallexample
2d717e4f 17638target> gdbserver --attach @var{comm} `pidof @var{program}`
b1fe9455
DJ
17639@end smallexample
17640
f822c95b 17641In case more than one copy of @var{program} is running, or @var{program}
b1fe9455
DJ
17642has multiple threads, most versions of @code{pidof} support the
17643@code{-s} option to only return the first process ID.
17644
2d717e4f 17645@subsubsection Multi-Process Mode for @code{gdbserver}
d9b1a651
EZ
17646@cindex @code{gdbserver}, multiple processes
17647@cindex multiple processes with @code{gdbserver}
2d717e4f
DJ
17648
17649When you connect to @code{gdbserver} using @code{target remote},
17650@code{gdbserver} debugs the specified program only once. When the
17651program exits, or you detach from it, @value{GDBN} closes the connection
17652and @code{gdbserver} exits.
17653
6e6c6f50 17654If you connect using @kbd{target extended-remote}, @code{gdbserver}
2d717e4f
DJ
17655enters multi-process mode. When the debugged program exits, or you
17656detach from it, @value{GDBN} stays connected to @code{gdbserver} even
17657though no program is running. The @code{run} and @code{attach}
17658commands instruct @code{gdbserver} to run or attach to a new program.
17659The @code{run} command uses @code{set remote exec-file} (@pxref{set
17660remote exec-file}) to select the program to run. Command line
17661arguments are supported, except for wildcard expansion and I/O
17662redirection (@pxref{Arguments}).
17663
d9b1a651 17664@cindex @option{--multi}, @code{gdbserver} option
2d717e4f
DJ
17665To start @code{gdbserver} without supplying an initial command to run
17666or process ID to attach, use the @option{--multi} command line option.
6e6c6f50 17667Then you can connect using @kbd{target extended-remote} and start
2d717e4f
DJ
17668the program you want to debug.
17669
03f2bd59
JK
17670In multi-process mode @code{gdbserver} does not automatically exit unless you
17671use the option @option{--once}. You can terminate it by using
17672@code{monitor exit} (@pxref{Monitor Commands for gdbserver}). Note that the
17673conditions under which @code{gdbserver} terminates depend on how @value{GDBN}
17674connects to it (@kbd{target remote} or @kbd{target extended-remote}). The
17675@option{--multi} option to @code{gdbserver} has no influence on that.
17676
17677@subsubsection TCP port allocation lifecycle of @code{gdbserver}
17678
17679This section applies only when @code{gdbserver} is run to listen on a TCP port.
17680
17681@code{gdbserver} normally terminates after all of its debugged processes have
17682terminated in @kbd{target remote} mode. On the other hand, for @kbd{target
17683extended-remote}, @code{gdbserver} stays running even with no processes left.
17684@value{GDBN} normally terminates the spawned debugged process on its exit,
17685which normally also terminates @code{gdbserver} in the @kbd{target remote}
17686mode. Therefore, when the connection drops unexpectedly, and @value{GDBN}
17687cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver}
17688stays running even in the @kbd{target remote} mode.
17689
17690When @code{gdbserver} stays running, @value{GDBN} can connect to it again later.
17691Such reconnecting is useful for features like @ref{disconnected tracing}. For
17692completeness, at most one @value{GDBN} can be connected at a time.
17693
17694@cindex @option{--once}, @code{gdbserver} option
17695By default, @code{gdbserver} keeps the listening TCP port open, so that
17696additional connections are possible. However, if you start @code{gdbserver}
17697with the @option{--once} option, it will stop listening for any further
17698connection attempts after connecting to the first @value{GDBN} session. This
17699means no further connections to @code{gdbserver} will be possible after the
17700first one. It also means @code{gdbserver} will terminate after the first
17701connection with remote @value{GDBN} has closed, even for unexpectedly closed
17702connections and even in the @kbd{target extended-remote} mode. The
17703@option{--once} option allows reusing the same port number for connecting to
17704multiple instances of @code{gdbserver} running on the same host, since each
17705instance closes its port after the first connection.
2d717e4f
DJ
17706
17707@subsubsection Other Command-Line Arguments for @code{gdbserver}
17708
d9b1a651 17709@cindex @option{--debug}, @code{gdbserver} option
62709adf 17710The @option{--debug} option tells @code{gdbserver} to display extra
d9b1a651
EZ
17711status information about the debugging process.
17712@cindex @option{--remote-debug}, @code{gdbserver} option
17713The @option{--remote-debug} option tells @code{gdbserver} to display
62709adf
PA
17714remote protocol debug output. These options are intended for
17715@code{gdbserver} development and for bug reports to the developers.
2d717e4f 17716
d9b1a651 17717@cindex @option{--wrapper}, @code{gdbserver} option
ccd213ac
DJ
17718The @option{--wrapper} option specifies a wrapper to launch programs
17719for debugging. The option should be followed by the name of the
17720wrapper, then any command-line arguments to pass to the wrapper, then
17721@kbd{--} indicating the end of the wrapper arguments.
17722
17723@code{gdbserver} runs the specified wrapper program with a combined
17724command line including the wrapper arguments, then the name of the
17725program to debug, then any arguments to the program. The wrapper
17726runs until it executes your program, and then @value{GDBN} gains control.
17727
17728You can use any program that eventually calls @code{execve} with
17729its arguments as a wrapper. Several standard Unix utilities do
17730this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
17731with @code{exec "$@@"} will also work.
17732
17733For example, you can use @code{env} to pass an environment variable to
17734the debugged program, without setting the variable in @code{gdbserver}'s
17735environment:
17736
17737@smallexample
17738$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog
17739@end smallexample
17740
2d717e4f
DJ
17741@subsection Connecting to @code{gdbserver}
17742
17743Run @value{GDBN} on the host system.
17744
17745First make sure you have the necessary symbol files. Load symbols for
f822c95b
DJ
17746your application using the @code{file} command before you connect. Use
17747@code{set sysroot} to locate target libraries (unless your @value{GDBN}
2d717e4f 17748was compiled with the correct sysroot using @code{--with-sysroot}).
f822c95b
DJ
17749
17750The symbol file and target libraries must exactly match the executable
17751and libraries on the target, with one exception: the files on the host
17752system should not be stripped, even if the files on the target system
17753are. Mismatched or missing files will lead to confusing results
17754during debugging. On @sc{gnu}/Linux targets, mismatched or missing
17755files may also prevent @code{gdbserver} from debugging multi-threaded
17756programs.
17757
79a6e687 17758Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}).
6f05cf9f
AC
17759For TCP connections, you must start up @code{gdbserver} prior to using
17760the @code{target remote} command. Otherwise you may get an error whose
17761text depends on the host system, but which usually looks something like
2d717e4f 17762@samp{Connection refused}. Don't use the @code{load}
397ca115 17763command in @value{GDBN} when using @code{gdbserver}, since the program is
f822c95b 17764already on the target.
07f31aa6 17765
79a6e687 17766@subsection Monitor Commands for @code{gdbserver}
c74d0ad8 17767@cindex monitor commands, for @code{gdbserver}
2d717e4f 17768@anchor{Monitor Commands for gdbserver}
c74d0ad8
DJ
17769
17770During a @value{GDBN} session using @code{gdbserver}, you can use the
17771@code{monitor} command to send special requests to @code{gdbserver}.
2d717e4f 17772Here are the available commands.
c74d0ad8
DJ
17773
17774@table @code
17775@item monitor help
17776List the available monitor commands.
17777
17778@item monitor set debug 0
17779@itemx monitor set debug 1
17780Disable or enable general debugging messages.
17781
17782@item monitor set remote-debug 0
17783@itemx monitor set remote-debug 1
17784Disable or enable specific debugging messages associated with the remote
17785protocol (@pxref{Remote Protocol}).
17786
cdbfd419
PP
17787@item monitor set libthread-db-search-path [PATH]
17788@cindex gdbserver, search path for @code{libthread_db}
17789When this command is issued, @var{path} is a colon-separated list of
17790directories to search for @code{libthread_db} (@pxref{Threads,,set
17791libthread-db-search-path}). If you omit @var{path},
84e578fb 17792@samp{libthread-db-search-path} will be reset to its default value.
cdbfd419 17793
98a5dd13
DE
17794The special entry @samp{$pdir} for @samp{libthread-db-search-path} is
17795not supported in @code{gdbserver}.
17796
2d717e4f
DJ
17797@item monitor exit
17798Tell gdbserver to exit immediately. This command should be followed by
17799@code{disconnect} to close the debugging session. @code{gdbserver} will
17800detach from any attached processes and kill any processes it created.
17801Use @code{monitor exit} to terminate @code{gdbserver} at the end
17802of a multi-process mode debug session.
17803
c74d0ad8
DJ
17804@end table
17805
fa593d66
PA
17806@subsection Tracepoints support in @code{gdbserver}
17807@cindex tracepoints support in @code{gdbserver}
17808
0fb4aa4b
PA
17809On some targets, @code{gdbserver} supports tracepoints, fast
17810tracepoints and static tracepoints.
fa593d66 17811
0fb4aa4b 17812For fast or static tracepoints to work, a special library called the
fa593d66
PA
17813@dfn{in-process agent} (IPA), must be loaded in the inferior process.
17814This library is built and distributed as an integral part of
0fb4aa4b
PA
17815@code{gdbserver}. In addition, support for static tracepoints
17816requires building the in-process agent library with static tracepoints
17817support. At present, the UST (LTTng Userspace Tracer,
17818@url{http://lttng.org/ust}) tracing engine is supported. This support
17819is automatically available if UST development headers are found in the
17820standard include path when @code{gdbserver} is built, or if
17821@code{gdbserver} was explicitly configured using @option{--with-ust}
17822to point at such headers. You can explicitly disable the support
17823using @option{--with-ust=no}.
fa593d66
PA
17824
17825There are several ways to load the in-process agent in your program:
17826
17827@table @code
17828@item Specifying it as dependency at link time
17829
17830You can link your program dynamically with the in-process agent
17831library. On most systems, this is accomplished by adding
17832@code{-linproctrace} to the link command.
17833
17834@item Using the system's preloading mechanisms
17835
17836You can force loading the in-process agent at startup time by using
17837your system's support for preloading shared libraries. Many Unixes
17838support the concept of preloading user defined libraries. In most
17839cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so}
17840in the environment. See also the description of @code{gdbserver}'s
17841@option{--wrapper} command line option.
17842
17843@item Using @value{GDBN} to force loading the agent at run time
17844
17845On some systems, you can force the inferior to load a shared library,
17846by calling a dynamic loader function in the inferior that takes care
17847of dynamically looking up and loading a shared library. On most Unix
17848systems, the function is @code{dlopen}. You'll use the @code{call}
17849command for that. For example:
17850
17851@smallexample
17852(@value{GDBP}) call dlopen ("libinproctrace.so", ...)
17853@end smallexample
17854
17855Note that on most Unix systems, for the @code{dlopen} function to be
17856available, the program needs to be linked with @code{-ldl}.
17857@end table
17858
17859On systems that have a userspace dynamic loader, like most Unix
17860systems, when you connect to @code{gdbserver} using @code{target
17861remote}, you'll find that the program is stopped at the dynamic
17862loader's entry point, and no shared library has been loaded in the
17863program's address space yet, including the in-process agent. In that
0fb4aa4b
PA
17864case, before being able to use any of the fast or static tracepoints
17865features, you need to let the loader run and load the shared
17866libraries. The simplest way to do that is to run the program to the
17867main procedure. E.g., if debugging a C or C@t{++} program, start
fa593d66
PA
17868@code{gdbserver} like so:
17869
17870@smallexample
17871$ gdbserver :9999 myprogram
17872@end smallexample
17873
17874Start GDB and connect to @code{gdbserver} like so, and run to main:
17875
17876@smallexample
17877$ gdb myprogram
17878(@value{GDBP}) target remote myhost:9999
178790x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2
17880(@value{GDBP}) b main
17881(@value{GDBP}) continue
17882@end smallexample
17883
17884The in-process tracing agent library should now be loaded into the
17885process; you can confirm it with the @code{info sharedlibrary}
17886command, which will list @file{libinproctrace.so} as loaded in the
0fb4aa4b
PA
17887process. You are now ready to install fast tracepoints, list static
17888tracepoint markers, probe static tracepoints markers, and start
fa593d66
PA
17889tracing.
17890
79a6e687
BW
17891@node Remote Configuration
17892@section Remote Configuration
501eef12 17893
9c16f35a
EZ
17894@kindex set remote
17895@kindex show remote
17896This section documents the configuration options available when
17897debugging remote programs. For the options related to the File I/O
fc320d37 17898extensions of the remote protocol, see @ref{system,
9c16f35a 17899system-call-allowed}.
501eef12
AC
17900
17901@table @code
9c16f35a 17902@item set remoteaddresssize @var{bits}
d3e8051b 17903@cindex address size for remote targets
9c16f35a
EZ
17904@cindex bits in remote address
17905Set the maximum size of address in a memory packet to the specified
17906number of bits. @value{GDBN} will mask off the address bits above
17907that number, when it passes addresses to the remote target. The
17908default value is the number of bits in the target's address.
17909
17910@item show remoteaddresssize
17911Show the current value of remote address size in bits.
17912
17913@item set remotebaud @var{n}
17914@cindex baud rate for remote targets
17915Set the baud rate for the remote serial I/O to @var{n} baud. The
17916value is used to set the speed of the serial port used for debugging
17917remote targets.
17918
17919@item show remotebaud
17920Show the current speed of the remote connection.
17921
17922@item set remotebreak
17923@cindex interrupt remote programs
17924@cindex BREAK signal instead of Ctrl-C
9a6253be 17925@anchor{set remotebreak}
9c16f35a 17926If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote
c8aa23ab 17927when you type @kbd{Ctrl-c} to interrupt the program running
9a7a1b36 17928on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C}
9c16f35a
EZ
17929character instead. The default is off, since most remote systems
17930expect to see @samp{Ctrl-C} as the interrupt signal.
17931
17932@item show remotebreak
17933Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to
17934interrupt the remote program.
17935
23776285
MR
17936@item set remoteflow on
17937@itemx set remoteflow off
17938@kindex set remoteflow
17939Enable or disable hardware flow control (@code{RTS}/@code{CTS})
17940on the serial port used to communicate to the remote target.
17941
17942@item show remoteflow
17943@kindex show remoteflow
17944Show the current setting of hardware flow control.
17945
9c16f35a
EZ
17946@item set remotelogbase @var{base}
17947Set the base (a.k.a.@: radix) of logging serial protocol
17948communications to @var{base}. Supported values of @var{base} are:
17949@code{ascii}, @code{octal}, and @code{hex}. The default is
17950@code{ascii}.
17951
17952@item show remotelogbase
17953Show the current setting of the radix for logging remote serial
17954protocol.
17955
17956@item set remotelogfile @var{file}
17957@cindex record serial communications on file
17958Record remote serial communications on the named @var{file}. The
17959default is not to record at all.
17960
17961@item show remotelogfile.
17962Show the current setting of the file name on which to record the
17963serial communications.
17964
17965@item set remotetimeout @var{num}
17966@cindex timeout for serial communications
17967@cindex remote timeout
17968Set the timeout limit to wait for the remote target to respond to
17969@var{num} seconds. The default is 2 seconds.
17970
17971@item show remotetimeout
17972Show the current number of seconds to wait for the remote target
17973responses.
17974
17975@cindex limit hardware breakpoints and watchpoints
17976@cindex remote target, limit break- and watchpoints
501eef12
AC
17977@anchor{set remote hardware-watchpoint-limit}
17978@anchor{set remote hardware-breakpoint-limit}
17979@item set remote hardware-watchpoint-limit @var{limit}
17980@itemx set remote hardware-breakpoint-limit @var{limit}
17981Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
17982watchpoints. A limit of -1, the default, is treated as unlimited.
2d717e4f 17983
480a3f21
PW
17984@cindex limit hardware watchpoints length
17985@cindex remote target, limit watchpoints length
17986@anchor{set remote hardware-watchpoint-length-limit}
17987@item set remote hardware-watchpoint-length-limit @var{limit}
17988Restrict @value{GDBN} to using @var{limit} bytes for the maximum length of
17989a remote hardware watchpoint. A limit of -1, the default, is treated
17990as unlimited.
17991
17992@item show remote hardware-watchpoint-length-limit
17993Show the current limit (in bytes) of the maximum length of
17994a remote hardware watchpoint.
17995
2d717e4f
DJ
17996@item set remote exec-file @var{filename}
17997@itemx show remote exec-file
17998@anchor{set remote exec-file}
17999@cindex executable file, for remote target
18000Select the file used for @code{run} with @code{target
18001extended-remote}. This should be set to a filename valid on the
18002target system. If it is not set, the target will use a default
18003filename (e.g.@: the last program run).
84603566 18004
9a7071a8
JB
18005@item set remote interrupt-sequence
18006@cindex interrupt remote programs
18007@cindex select Ctrl-C, BREAK or BREAK-g
18008Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or
18009@samp{BREAK-g} as the
18010sequence to the remote target in order to interrupt the execution.
18011@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which
18012is high level of serial line for some certain time.
18013Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g.
18014It is @code{BREAK} signal followed by character @code{g}.
18015
18016@item show interrupt-sequence
18017Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g}
18018is sent by @value{GDBN} to interrupt the remote program.
18019@code{BREAK-g} is BREAK signal followed by @code{g} and
18020also known as Magic SysRq g.
18021
18022@item set remote interrupt-on-connect
18023@cindex send interrupt-sequence on start
18024Specify whether interrupt-sequence is sent to remote target when
18025@value{GDBN} connects to it. This is mostly needed when you debug
18026Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g}
18027which is known as Magic SysRq g in order to connect @value{GDBN}.
18028
18029@item show interrupt-on-connect
18030Show whether interrupt-sequence is sent
18031to remote target when @value{GDBN} connects to it.
18032
84603566
SL
18033@kindex set tcp
18034@kindex show tcp
18035@item set tcp auto-retry on
18036@cindex auto-retry, for remote TCP target
18037Enable auto-retry for remote TCP connections. This is useful if the remote
18038debugging agent is launched in parallel with @value{GDBN}; there is a race
18039condition because the agent may not become ready to accept the connection
18040before @value{GDBN} attempts to connect. When auto-retry is
18041enabled, if the initial attempt to connect fails, @value{GDBN} reattempts
18042to establish the connection using the timeout specified by
18043@code{set tcp connect-timeout}.
18044
18045@item set tcp auto-retry off
18046Do not auto-retry failed TCP connections.
18047
18048@item show tcp auto-retry
18049Show the current auto-retry setting.
18050
18051@item set tcp connect-timeout @var{seconds}
18052@cindex connection timeout, for remote TCP target
18053@cindex timeout, for remote target connection
18054Set the timeout for establishing a TCP connection to the remote target to
18055@var{seconds}. The timeout affects both polling to retry failed connections
18056(enabled by @code{set tcp auto-retry on}) and waiting for connections
18057that are merely slow to complete, and represents an approximate cumulative
18058value.
18059
18060@item show tcp connect-timeout
18061Show the current connection timeout setting.
501eef12
AC
18062@end table
18063
427c3a89
DJ
18064@cindex remote packets, enabling and disabling
18065The @value{GDBN} remote protocol autodetects the packets supported by
18066your debugging stub. If you need to override the autodetection, you
18067can use these commands to enable or disable individual packets. Each
18068packet can be set to @samp{on} (the remote target supports this
18069packet), @samp{off} (the remote target does not support this packet),
18070or @samp{auto} (detect remote target support for this packet). They
18071all default to @samp{auto}. For more information about each packet,
18072see @ref{Remote Protocol}.
18073
18074During normal use, you should not have to use any of these commands.
18075If you do, that may be a bug in your remote debugging stub, or a bug
18076in @value{GDBN}. You may want to report the problem to the
18077@value{GDBN} developers.
18078
cfa9d6d9
DJ
18079For each packet @var{name}, the command to enable or disable the
18080packet is @code{set remote @var{name}-packet}. The available settings
18081are:
427c3a89 18082
cfa9d6d9 18083@multitable @columnfractions 0.28 0.32 0.25
427c3a89
DJ
18084@item Command Name
18085@tab Remote Packet
18086@tab Related Features
18087
cfa9d6d9 18088@item @code{fetch-register}
427c3a89
DJ
18089@tab @code{p}
18090@tab @code{info registers}
18091
cfa9d6d9 18092@item @code{set-register}
427c3a89
DJ
18093@tab @code{P}
18094@tab @code{set}
18095
cfa9d6d9 18096@item @code{binary-download}
427c3a89
DJ
18097@tab @code{X}
18098@tab @code{load}, @code{set}
18099
cfa9d6d9 18100@item @code{read-aux-vector}
427c3a89
DJ
18101@tab @code{qXfer:auxv:read}
18102@tab @code{info auxv}
18103
cfa9d6d9 18104@item @code{symbol-lookup}
427c3a89
DJ
18105@tab @code{qSymbol}
18106@tab Detecting multiple threads
18107
2d717e4f
DJ
18108@item @code{attach}
18109@tab @code{vAttach}
18110@tab @code{attach}
18111
cfa9d6d9 18112@item @code{verbose-resume}
427c3a89
DJ
18113@tab @code{vCont}
18114@tab Stepping or resuming multiple threads
18115
2d717e4f
DJ
18116@item @code{run}
18117@tab @code{vRun}
18118@tab @code{run}
18119
cfa9d6d9 18120@item @code{software-breakpoint}
427c3a89
DJ
18121@tab @code{Z0}
18122@tab @code{break}
18123
cfa9d6d9 18124@item @code{hardware-breakpoint}
427c3a89
DJ
18125@tab @code{Z1}
18126@tab @code{hbreak}
18127
cfa9d6d9 18128@item @code{write-watchpoint}
427c3a89
DJ
18129@tab @code{Z2}
18130@tab @code{watch}
18131
cfa9d6d9 18132@item @code{read-watchpoint}
427c3a89
DJ
18133@tab @code{Z3}
18134@tab @code{rwatch}
18135
cfa9d6d9 18136@item @code{access-watchpoint}
427c3a89
DJ
18137@tab @code{Z4}
18138@tab @code{awatch}
18139
cfa9d6d9
DJ
18140@item @code{target-features}
18141@tab @code{qXfer:features:read}
18142@tab @code{set architecture}
18143
18144@item @code{library-info}
18145@tab @code{qXfer:libraries:read}
18146@tab @code{info sharedlibrary}
18147
18148@item @code{memory-map}
18149@tab @code{qXfer:memory-map:read}
18150@tab @code{info mem}
18151
0fb4aa4b
PA
18152@item @code{read-sdata-object}
18153@tab @code{qXfer:sdata:read}
18154@tab @code{print $_sdata}
18155
cfa9d6d9
DJ
18156@item @code{read-spu-object}
18157@tab @code{qXfer:spu:read}
18158@tab @code{info spu}
18159
18160@item @code{write-spu-object}
18161@tab @code{qXfer:spu:write}
18162@tab @code{info spu}
18163
4aa995e1
PA
18164@item @code{read-siginfo-object}
18165@tab @code{qXfer:siginfo:read}
18166@tab @code{print $_siginfo}
18167
18168@item @code{write-siginfo-object}
18169@tab @code{qXfer:siginfo:write}
18170@tab @code{set $_siginfo}
18171
dc146f7c
VP
18172@item @code{threads}
18173@tab @code{qXfer:threads:read}
18174@tab @code{info threads}
18175
cfa9d6d9 18176@item @code{get-thread-local-@*storage-address}
427c3a89
DJ
18177@tab @code{qGetTLSAddr}
18178@tab Displaying @code{__thread} variables
18179
711e434b
PM
18180@item @code{get-thread-information-block-address}
18181@tab @code{qGetTIBAddr}
18182@tab Display MS-Windows Thread Information Block.
18183
08388c79
DE
18184@item @code{search-memory}
18185@tab @code{qSearch:memory}
18186@tab @code{find}
18187
427c3a89
DJ
18188@item @code{supported-packets}
18189@tab @code{qSupported}
18190@tab Remote communications parameters
18191
cfa9d6d9 18192@item @code{pass-signals}
89be2091
DJ
18193@tab @code{QPassSignals}
18194@tab @code{handle @var{signal}}
18195
9b224c5e
PA
18196@item @code{program-signals}
18197@tab @code{QProgramSignals}
18198@tab @code{handle @var{signal}}
18199
a6b151f1
DJ
18200@item @code{hostio-close-packet}
18201@tab @code{vFile:close}
18202@tab @code{remote get}, @code{remote put}
18203
18204@item @code{hostio-open-packet}
18205@tab @code{vFile:open}
18206@tab @code{remote get}, @code{remote put}
18207
18208@item @code{hostio-pread-packet}
18209@tab @code{vFile:pread}
18210@tab @code{remote get}, @code{remote put}
18211
18212@item @code{hostio-pwrite-packet}
18213@tab @code{vFile:pwrite}
18214@tab @code{remote get}, @code{remote put}
18215
18216@item @code{hostio-unlink-packet}
18217@tab @code{vFile:unlink}
18218@tab @code{remote delete}
a6f3e723 18219
b9e7b9c3
UW
18220@item @code{hostio-readlink-packet}
18221@tab @code{vFile:readlink}
18222@tab Host I/O
18223
a6f3e723
SL
18224@item @code{noack-packet}
18225@tab @code{QStartNoAckMode}
18226@tab Packet acknowledgment
07e059b5
VP
18227
18228@item @code{osdata}
18229@tab @code{qXfer:osdata:read}
18230@tab @code{info os}
0b16c5cf
PA
18231
18232@item @code{query-attached}
18233@tab @code{qAttached}
18234@tab Querying remote process attach state.
b3b9301e
PA
18235
18236@item @code{traceframe-info}
18237@tab @code{qXfer:traceframe-info:read}
18238@tab Traceframe info
03583c20 18239
1e4d1764
YQ
18240@item @code{install-in-trace}
18241@tab @code{InstallInTrace}
18242@tab Install tracepoint in tracing
18243
03583c20
UW
18244@item @code{disable-randomization}
18245@tab @code{QDisableRandomization}
18246@tab @code{set disable-randomization}
83364271
LM
18247
18248@item @code{conditional-breakpoints-packet}
18249@tab @code{Z0 and Z1}
18250@tab @code{Support for target-side breakpoint condition evaluation}
427c3a89
DJ
18251@end multitable
18252
79a6e687
BW
18253@node Remote Stub
18254@section Implementing a Remote Stub
7a292a7a 18255
8e04817f
AC
18256@cindex debugging stub, example
18257@cindex remote stub, example
18258@cindex stub example, remote debugging
18259The stub files provided with @value{GDBN} implement the target side of the
18260communication protocol, and the @value{GDBN} side is implemented in the
18261@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
18262these subroutines to communicate, and ignore the details. (If you're
18263implementing your own stub file, you can still ignore the details: start
18264with one of the existing stub files. @file{sparc-stub.c} is the best
18265organized, and therefore the easiest to read.)
18266
104c1213
JM
18267@cindex remote serial debugging, overview
18268To debug a program running on another machine (the debugging
18269@dfn{target} machine), you must first arrange for all the usual
18270prerequisites for the program to run by itself. For example, for a C
18271program, you need:
c906108c 18272
104c1213
JM
18273@enumerate
18274@item
18275A startup routine to set up the C runtime environment; these usually
18276have a name like @file{crt0}. The startup routine may be supplied by
18277your hardware supplier, or you may have to write your own.
96baa820 18278
5d161b24 18279@item
d4f3574e 18280A C subroutine library to support your program's
104c1213 18281subroutine calls, notably managing input and output.
96baa820 18282
104c1213
JM
18283@item
18284A way of getting your program to the other machine---for example, a
18285download program. These are often supplied by the hardware
18286manufacturer, but you may have to write your own from hardware
18287documentation.
18288@end enumerate
96baa820 18289
104c1213
JM
18290The next step is to arrange for your program to use a serial port to
18291communicate with the machine where @value{GDBN} is running (the @dfn{host}
18292machine). In general terms, the scheme looks like this:
96baa820 18293
104c1213
JM
18294@table @emph
18295@item On the host,
18296@value{GDBN} already understands how to use this protocol; when everything
18297else is set up, you can simply use the @samp{target remote} command
18298(@pxref{Targets,,Specifying a Debugging Target}).
18299
18300@item On the target,
18301you must link with your program a few special-purpose subroutines that
18302implement the @value{GDBN} remote serial protocol. The file containing these
18303subroutines is called a @dfn{debugging stub}.
18304
18305On certain remote targets, you can use an auxiliary program
18306@code{gdbserver} instead of linking a stub into your program.
79a6e687 18307@xref{Server,,Using the @code{gdbserver} Program}, for details.
104c1213 18308@end table
96baa820 18309
104c1213
JM
18310The debugging stub is specific to the architecture of the remote
18311machine; for example, use @file{sparc-stub.c} to debug programs on
18312@sc{sparc} boards.
96baa820 18313
104c1213
JM
18314@cindex remote serial stub list
18315These working remote stubs are distributed with @value{GDBN}:
96baa820 18316
104c1213
JM
18317@table @code
18318
18319@item i386-stub.c
41afff9a 18320@cindex @file{i386-stub.c}
104c1213
JM
18321@cindex Intel
18322@cindex i386
18323For Intel 386 and compatible architectures.
18324
18325@item m68k-stub.c
41afff9a 18326@cindex @file{m68k-stub.c}
104c1213
JM
18327@cindex Motorola 680x0
18328@cindex m680x0
18329For Motorola 680x0 architectures.
18330
18331@item sh-stub.c
41afff9a 18332@cindex @file{sh-stub.c}
172c2a43 18333@cindex Renesas
104c1213 18334@cindex SH
172c2a43 18335For Renesas SH architectures.
104c1213
JM
18336
18337@item sparc-stub.c
41afff9a 18338@cindex @file{sparc-stub.c}
104c1213
JM
18339@cindex Sparc
18340For @sc{sparc} architectures.
18341
18342@item sparcl-stub.c
41afff9a 18343@cindex @file{sparcl-stub.c}
104c1213
JM
18344@cindex Fujitsu
18345@cindex SparcLite
18346For Fujitsu @sc{sparclite} architectures.
18347
18348@end table
18349
18350The @file{README} file in the @value{GDBN} distribution may list other
18351recently added stubs.
18352
18353@menu
18354* Stub Contents:: What the stub can do for you
18355* Bootstrapping:: What you must do for the stub
18356* Debug Session:: Putting it all together
104c1213
JM
18357@end menu
18358
6d2ebf8b 18359@node Stub Contents
79a6e687 18360@subsection What the Stub Can Do for You
104c1213
JM
18361
18362@cindex remote serial stub
18363The debugging stub for your architecture supplies these three
18364subroutines:
18365
18366@table @code
18367@item set_debug_traps
4644b6e3 18368@findex set_debug_traps
104c1213
JM
18369@cindex remote serial stub, initialization
18370This routine arranges for @code{handle_exception} to run when your
2fb860fc
PA
18371program stops. You must call this subroutine explicitly in your
18372program's startup code.
104c1213
JM
18373
18374@item handle_exception
4644b6e3 18375@findex handle_exception
104c1213
JM
18376@cindex remote serial stub, main routine
18377This is the central workhorse, but your program never calls it
18378explicitly---the setup code arranges for @code{handle_exception} to
18379run when a trap is triggered.
18380
18381@code{handle_exception} takes control when your program stops during
18382execution (for example, on a breakpoint), and mediates communications
18383with @value{GDBN} on the host machine. This is where the communications
18384protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 18385representative on the target machine. It begins by sending summary
104c1213
JM
18386information on the state of your program, then continues to execute,
18387retrieving and transmitting any information @value{GDBN} needs, until you
18388execute a @value{GDBN} command that makes your program resume; at that point,
18389@code{handle_exception} returns control to your own code on the target
5d161b24 18390machine.
104c1213
JM
18391
18392@item breakpoint
18393@cindex @code{breakpoint} subroutine, remote
18394Use this auxiliary subroutine to make your program contain a
18395breakpoint. Depending on the particular situation, this may be the only
18396way for @value{GDBN} to get control. For instance, if your target
18397machine has some sort of interrupt button, you won't need to call this;
18398pressing the interrupt button transfers control to
18399@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
18400simply receiving characters on the serial port may also trigger a trap;
18401again, in that situation, you don't need to call @code{breakpoint} from
18402your own program---simply running @samp{target remote} from the host
5d161b24 18403@value{GDBN} session gets control.
104c1213
JM
18404
18405Call @code{breakpoint} if none of these is true, or if you simply want
18406to make certain your program stops at a predetermined point for the
18407start of your debugging session.
18408@end table
18409
6d2ebf8b 18410@node Bootstrapping
79a6e687 18411@subsection What You Must Do for the Stub
104c1213
JM
18412
18413@cindex remote stub, support routines
18414The debugging stubs that come with @value{GDBN} are set up for a particular
18415chip architecture, but they have no information about the rest of your
18416debugging target machine.
18417
18418First of all you need to tell the stub how to communicate with the
18419serial port.
18420
18421@table @code
18422@item int getDebugChar()
4644b6e3 18423@findex getDebugChar
104c1213
JM
18424Write this subroutine to read a single character from the serial port.
18425It may be identical to @code{getchar} for your target system; a
18426different name is used to allow you to distinguish the two if you wish.
18427
18428@item void putDebugChar(int)
4644b6e3 18429@findex putDebugChar
104c1213 18430Write this subroutine to write a single character to the serial port.
5d161b24 18431It may be identical to @code{putchar} for your target system; a
104c1213
JM
18432different name is used to allow you to distinguish the two if you wish.
18433@end table
18434
18435@cindex control C, and remote debugging
18436@cindex interrupting remote targets
18437If you want @value{GDBN} to be able to stop your program while it is
18438running, you need to use an interrupt-driven serial driver, and arrange
18439for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
18440character). That is the character which @value{GDBN} uses to tell the
18441remote system to stop.
18442
18443Getting the debugging target to return the proper status to @value{GDBN}
18444probably requires changes to the standard stub; one quick and dirty way
18445is to just execute a breakpoint instruction (the ``dirty'' part is that
18446@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
18447
18448Other routines you need to supply are:
18449
18450@table @code
18451@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
4644b6e3 18452@findex exceptionHandler
104c1213
JM
18453Write this function to install @var{exception_address} in the exception
18454handling tables. You need to do this because the stub does not have any
18455way of knowing what the exception handling tables on your target system
18456are like (for example, the processor's table might be in @sc{rom},
18457containing entries which point to a table in @sc{ram}).
18458@var{exception_number} is the exception number which should be changed;
18459its meaning is architecture-dependent (for example, different numbers
18460might represent divide by zero, misaligned access, etc). When this
18461exception occurs, control should be transferred directly to
18462@var{exception_address}, and the processor state (stack, registers,
18463and so on) should be just as it is when a processor exception occurs. So if
18464you want to use a jump instruction to reach @var{exception_address}, it
18465should be a simple jump, not a jump to subroutine.
18466
18467For the 386, @var{exception_address} should be installed as an interrupt
18468gate so that interrupts are masked while the handler runs. The gate
18469should be at privilege level 0 (the most privileged level). The
18470@sc{sparc} and 68k stubs are able to mask interrupts themselves without
18471help from @code{exceptionHandler}.
18472
18473@item void flush_i_cache()
4644b6e3 18474@findex flush_i_cache
d4f3574e 18475On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
18476instruction cache, if any, on your target machine. If there is no
18477instruction cache, this subroutine may be a no-op.
18478
18479On target machines that have instruction caches, @value{GDBN} requires this
18480function to make certain that the state of your program is stable.
18481@end table
18482
18483@noindent
18484You must also make sure this library routine is available:
18485
18486@table @code
18487@item void *memset(void *, int, int)
4644b6e3 18488@findex memset
104c1213
JM
18489This is the standard library function @code{memset} that sets an area of
18490memory to a known value. If you have one of the free versions of
18491@code{libc.a}, @code{memset} can be found there; otherwise, you must
18492either obtain it from your hardware manufacturer, or write your own.
18493@end table
18494
18495If you do not use the GNU C compiler, you may need other standard
18496library subroutines as well; this varies from one stub to another,
18497but in general the stubs are likely to use any of the common library
e22ea452 18498subroutines which @code{@value{NGCC}} generates as inline code.
104c1213
JM
18499
18500
6d2ebf8b 18501@node Debug Session
79a6e687 18502@subsection Putting it All Together
104c1213
JM
18503
18504@cindex remote serial debugging summary
18505In summary, when your program is ready to debug, you must follow these
18506steps.
18507
18508@enumerate
18509@item
6d2ebf8b 18510Make sure you have defined the supporting low-level routines
79a6e687 18511(@pxref{Bootstrapping,,What You Must Do for the Stub}):
104c1213
JM
18512@display
18513@code{getDebugChar}, @code{putDebugChar},
18514@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
18515@end display
18516
18517@item
2fb860fc
PA
18518Insert these lines in your program's startup code, before the main
18519procedure is called:
104c1213 18520
474c8240 18521@smallexample
104c1213
JM
18522set_debug_traps();
18523breakpoint();
474c8240 18524@end smallexample
104c1213 18525
2fb860fc
PA
18526On some machines, when a breakpoint trap is raised, the hardware
18527automatically makes the PC point to the instruction after the
18528breakpoint. If your machine doesn't do that, you may need to adjust
18529@code{handle_exception} to arrange for it to return to the instruction
18530after the breakpoint on this first invocation, so that your program
18531doesn't keep hitting the initial breakpoint instead of making
18532progress.
18533
104c1213
JM
18534@item
18535For the 680x0 stub only, you need to provide a variable called
18536@code{exceptionHook}. Normally you just use:
18537
474c8240 18538@smallexample
104c1213 18539void (*exceptionHook)() = 0;
474c8240 18540@end smallexample
104c1213 18541
d4f3574e 18542@noindent
104c1213 18543but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 18544function in your program, that function is called when
104c1213
JM
18545@code{@value{GDBN}} continues after stopping on a trap (for example, bus
18546error). The function indicated by @code{exceptionHook} is called with
18547one parameter: an @code{int} which is the exception number.
18548
18549@item
18550Compile and link together: your program, the @value{GDBN} debugging stub for
18551your target architecture, and the supporting subroutines.
18552
18553@item
18554Make sure you have a serial connection between your target machine and
18555the @value{GDBN} host, and identify the serial port on the host.
18556
18557@item
18558@c The "remote" target now provides a `load' command, so we should
18559@c document that. FIXME.
18560Download your program to your target machine (or get it there by
18561whatever means the manufacturer provides), and start it.
18562
18563@item
07f31aa6 18564Start @value{GDBN} on the host, and connect to the target
79a6e687 18565(@pxref{Connecting,,Connecting to a Remote Target}).
9db8d71f 18566
104c1213
JM
18567@end enumerate
18568
8e04817f
AC
18569@node Configurations
18570@chapter Configuration-Specific Information
104c1213 18571
8e04817f
AC
18572While nearly all @value{GDBN} commands are available for all native and
18573cross versions of the debugger, there are some exceptions. This chapter
18574describes things that are only available in certain configurations.
104c1213 18575
8e04817f
AC
18576There are three major categories of configurations: native
18577configurations, where the host and target are the same, embedded
18578operating system configurations, which are usually the same for several
18579different processor architectures, and bare embedded processors, which
18580are quite different from each other.
104c1213 18581
8e04817f
AC
18582@menu
18583* Native::
18584* Embedded OS::
18585* Embedded Processors::
18586* Architectures::
18587@end menu
104c1213 18588
8e04817f
AC
18589@node Native
18590@section Native
104c1213 18591
8e04817f
AC
18592This section describes details specific to particular native
18593configurations.
6cf7e474 18594
8e04817f
AC
18595@menu
18596* HP-UX:: HP-UX
7561d450 18597* BSD libkvm Interface:: Debugging BSD kernel memory images
8e04817f
AC
18598* SVR4 Process Information:: SVR4 process information
18599* DJGPP Native:: Features specific to the DJGPP port
78c47bea 18600* Cygwin Native:: Features specific to the Cygwin port
14d6dd68 18601* Hurd Native:: Features specific to @sc{gnu} Hurd
a80b95ba 18602* Darwin:: Features specific to Darwin
8e04817f 18603@end menu
6cf7e474 18604
8e04817f
AC
18605@node HP-UX
18606@subsection HP-UX
104c1213 18607
8e04817f
AC
18608On HP-UX systems, if you refer to a function or variable name that
18609begins with a dollar sign, @value{GDBN} searches for a user or system
18610name first, before it searches for a convenience variable.
104c1213 18611
9c16f35a 18612
7561d450
MK
18613@node BSD libkvm Interface
18614@subsection BSD libkvm Interface
18615
18616@cindex libkvm
18617@cindex kernel memory image
18618@cindex kernel crash dump
18619
18620BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
18621interface that provides a uniform interface for accessing kernel virtual
18622memory images, including live systems and crash dumps. @value{GDBN}
18623uses this interface to allow you to debug live kernels and kernel crash
18624dumps on many native BSD configurations. This is implemented as a
18625special @code{kvm} debugging target. For debugging a live system, load
18626the currently running kernel into @value{GDBN} and connect to the
18627@code{kvm} target:
18628
18629@smallexample
18630(@value{GDBP}) @b{target kvm}
18631@end smallexample
18632
18633For debugging crash dumps, provide the file name of the crash dump as an
18634argument:
18635
18636@smallexample
18637(@value{GDBP}) @b{target kvm /var/crash/bsd.0}
18638@end smallexample
18639
18640Once connected to the @code{kvm} target, the following commands are
18641available:
18642
18643@table @code
18644@kindex kvm
18645@item kvm pcb
721c2651 18646Set current context from the @dfn{Process Control Block} (PCB) address.
7561d450
MK
18647
18648@item kvm proc
18649Set current context from proc address. This command isn't available on
18650modern FreeBSD systems.
18651@end table
18652
8e04817f 18653@node SVR4 Process Information
79a6e687 18654@subsection SVR4 Process Information
60bf7e09
EZ
18655@cindex /proc
18656@cindex examine process image
18657@cindex process info via @file{/proc}
104c1213 18658
60bf7e09
EZ
18659Many versions of SVR4 and compatible systems provide a facility called
18660@samp{/proc} that can be used to examine the image of a running
451b7c33
TT
18661process using file-system subroutines.
18662
18663If @value{GDBN} is configured for an operating system with this
18664facility, the command @code{info proc} is available to report
18665information about the process running your program, or about any
18666process running on your system. This includes, as of this writing,
18667@sc{gnu}/Linux, OSF/1 (Digital Unix), Solaris, and Irix, but
18668not HP-UX, for example.
18669
18670This command may also work on core files that were created on a system
18671that has the @samp{/proc} facility.
104c1213 18672
8e04817f
AC
18673@table @code
18674@kindex info proc
60bf7e09 18675@cindex process ID
8e04817f 18676@item info proc
60bf7e09
EZ
18677@itemx info proc @var{process-id}
18678Summarize available information about any running process. If a
18679process ID is specified by @var{process-id}, display information about
18680that process; otherwise display information about the program being
18681debugged. The summary includes the debugged process ID, the command
18682line used to invoke it, its current working directory, and its
18683executable file's absolute file name.
18684
18685On some systems, @var{process-id} can be of the form
18686@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID
18687within a process. If the optional @var{pid} part is missing, it means
18688a thread from the process being debugged (the leading @samp{/} still
18689needs to be present, or else @value{GDBN} will interpret the number as
18690a process ID rather than a thread ID).
6cf7e474 18691
0c631110
TT
18692@item info proc cmdline
18693@cindex info proc cmdline
18694Show the original command line of the process. This command is
18695specific to @sc{gnu}/Linux.
18696
18697@item info proc cwd
18698@cindex info proc cwd
18699Show the current working directory of the process. This command is
18700specific to @sc{gnu}/Linux.
18701
18702@item info proc exe
18703@cindex info proc exe
18704Show the name of executable of the process. This command is specific
18705to @sc{gnu}/Linux.
18706
8e04817f 18707@item info proc mappings
60bf7e09
EZ
18708@cindex memory address space mappings
18709Report the memory address space ranges accessible in the program, with
18710information on whether the process has read, write, or execute access
18711rights to each range. On @sc{gnu}/Linux systems, each memory range
18712includes the object file which is mapped to that range, instead of the
18713memory access rights to that range.
18714
18715@item info proc stat
18716@itemx info proc status
18717@cindex process detailed status information
18718These subcommands are specific to @sc{gnu}/Linux systems. They show
18719the process-related information, including the user ID and group ID;
18720how many threads are there in the process; its virtual memory usage;
18721the signals that are pending, blocked, and ignored; its TTY; its
18722consumption of system and user time; its stack size; its @samp{nice}
2eecc4ab 18723value; etc. For more information, see the @samp{proc} man page
60bf7e09
EZ
18724(type @kbd{man 5 proc} from your shell prompt).
18725
18726@item info proc all
18727Show all the information about the process described under all of the
18728above @code{info proc} subcommands.
18729
8e04817f
AC
18730@ignore
18731@comment These sub-options of 'info proc' were not included when
18732@comment procfs.c was re-written. Keep their descriptions around
18733@comment against the day when someone finds the time to put them back in.
18734@kindex info proc times
18735@item info proc times
18736Starting time, user CPU time, and system CPU time for your program and
18737its children.
6cf7e474 18738
8e04817f
AC
18739@kindex info proc id
18740@item info proc id
18741Report on the process IDs related to your program: its own process ID,
18742the ID of its parent, the process group ID, and the session ID.
8e04817f 18743@end ignore
721c2651
EZ
18744
18745@item set procfs-trace
18746@kindex set procfs-trace
18747@cindex @code{procfs} API calls
18748This command enables and disables tracing of @code{procfs} API calls.
18749
18750@item show procfs-trace
18751@kindex show procfs-trace
18752Show the current state of @code{procfs} API call tracing.
18753
18754@item set procfs-file @var{file}
18755@kindex set procfs-file
18756Tell @value{GDBN} to write @code{procfs} API trace to the named
18757@var{file}. @value{GDBN} appends the trace info to the previous
18758contents of the file. The default is to display the trace on the
18759standard output.
18760
18761@item show procfs-file
18762@kindex show procfs-file
18763Show the file to which @code{procfs} API trace is written.
18764
18765@item proc-trace-entry
18766@itemx proc-trace-exit
18767@itemx proc-untrace-entry
18768@itemx proc-untrace-exit
18769@kindex proc-trace-entry
18770@kindex proc-trace-exit
18771@kindex proc-untrace-entry
18772@kindex proc-untrace-exit
18773These commands enable and disable tracing of entries into and exits
18774from the @code{syscall} interface.
18775
18776@item info pidlist
18777@kindex info pidlist
18778@cindex process list, QNX Neutrino
18779For QNX Neutrino only, this command displays the list of all the
18780processes and all the threads within each process.
18781
18782@item info meminfo
18783@kindex info meminfo
18784@cindex mapinfo list, QNX Neutrino
18785For QNX Neutrino only, this command displays the list of all mapinfos.
8e04817f 18786@end table
104c1213 18787
8e04817f
AC
18788@node DJGPP Native
18789@subsection Features for Debugging @sc{djgpp} Programs
18790@cindex @sc{djgpp} debugging
18791@cindex native @sc{djgpp} debugging
18792@cindex MS-DOS-specific commands
104c1213 18793
514c4d71
EZ
18794@cindex DPMI
18795@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and
8e04817f
AC
18796MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
18797that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
18798top of real-mode DOS systems and their emulations.
104c1213 18799
8e04817f
AC
18800@value{GDBN} supports native debugging of @sc{djgpp} programs, and
18801defines a few commands specific to the @sc{djgpp} port. This
18802subsection describes those commands.
104c1213 18803
8e04817f
AC
18804@table @code
18805@kindex info dos
18806@item info dos
18807This is a prefix of @sc{djgpp}-specific commands which print
18808information about the target system and important OS structures.
f1251bdd 18809
8e04817f
AC
18810@kindex sysinfo
18811@cindex MS-DOS system info
18812@cindex free memory information (MS-DOS)
18813@item info dos sysinfo
18814This command displays assorted information about the underlying
18815platform: the CPU type and features, the OS version and flavor, the
18816DPMI version, and the available conventional and DPMI memory.
104c1213 18817
8e04817f
AC
18818@cindex GDT
18819@cindex LDT
18820@cindex IDT
18821@cindex segment descriptor tables
18822@cindex descriptor tables display
18823@item info dos gdt
18824@itemx info dos ldt
18825@itemx info dos idt
18826These 3 commands display entries from, respectively, Global, Local,
18827and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
18828tables are data structures which store a descriptor for each segment
18829that is currently in use. The segment's selector is an index into a
18830descriptor table; the table entry for that index holds the
18831descriptor's base address and limit, and its attributes and access
18832rights.
104c1213 18833
8e04817f
AC
18834A typical @sc{djgpp} program uses 3 segments: a code segment, a data
18835segment (used for both data and the stack), and a DOS segment (which
18836allows access to DOS/BIOS data structures and absolute addresses in
18837conventional memory). However, the DPMI host will usually define
18838additional segments in order to support the DPMI environment.
d4f3574e 18839
8e04817f
AC
18840@cindex garbled pointers
18841These commands allow to display entries from the descriptor tables.
18842Without an argument, all entries from the specified table are
18843displayed. An argument, which should be an integer expression, means
18844display a single entry whose index is given by the argument. For
18845example, here's a convenient way to display information about the
18846debugged program's data segment:
104c1213 18847
8e04817f
AC
18848@smallexample
18849@exdent @code{(@value{GDBP}) info dos ldt $ds}
18850@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
18851@end smallexample
104c1213 18852
8e04817f
AC
18853@noindent
18854This comes in handy when you want to see whether a pointer is outside
18855the data segment's limit (i.e.@: @dfn{garbled}).
104c1213 18856
8e04817f
AC
18857@cindex page tables display (MS-DOS)
18858@item info dos pde
18859@itemx info dos pte
18860These two commands display entries from, respectively, the Page
18861Directory and the Page Tables. Page Directories and Page Tables are
18862data structures which control how virtual memory addresses are mapped
18863into physical addresses. A Page Table includes an entry for every
18864page of memory that is mapped into the program's address space; there
18865may be several Page Tables, each one holding up to 4096 entries. A
18866Page Directory has up to 4096 entries, one each for every Page Table
18867that is currently in use.
104c1213 18868
8e04817f
AC
18869Without an argument, @kbd{info dos pde} displays the entire Page
18870Directory, and @kbd{info dos pte} displays all the entries in all of
18871the Page Tables. An argument, an integer expression, given to the
18872@kbd{info dos pde} command means display only that entry from the Page
18873Directory table. An argument given to the @kbd{info dos pte} command
18874means display entries from a single Page Table, the one pointed to by
18875the specified entry in the Page Directory.
104c1213 18876
8e04817f
AC
18877@cindex direct memory access (DMA) on MS-DOS
18878These commands are useful when your program uses @dfn{DMA} (Direct
18879Memory Access), which needs physical addresses to program the DMA
18880controller.
104c1213 18881
8e04817f 18882These commands are supported only with some DPMI servers.
104c1213 18883
8e04817f
AC
18884@cindex physical address from linear address
18885@item info dos address-pte @var{addr}
18886This command displays the Page Table entry for a specified linear
514c4d71
EZ
18887address. The argument @var{addr} is a linear address which should
18888already have the appropriate segment's base address added to it,
18889because this command accepts addresses which may belong to @emph{any}
18890segment. For example, here's how to display the Page Table entry for
18891the page where a variable @code{i} is stored:
104c1213 18892
b383017d 18893@smallexample
8e04817f
AC
18894@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
18895@exdent @code{Page Table entry for address 0x11a00d30:}
b383017d 18896@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
8e04817f 18897@end smallexample
104c1213 18898
8e04817f
AC
18899@noindent
18900This says that @code{i} is stored at offset @code{0xd30} from the page
514c4d71 18901whose physical base address is @code{0x02698000}, and shows all the
8e04817f 18902attributes of that page.
104c1213 18903
8e04817f
AC
18904Note that you must cast the addresses of variables to a @code{char *},
18905since otherwise the value of @code{__djgpp_base_address}, the base
18906address of all variables and functions in a @sc{djgpp} program, will
18907be added using the rules of C pointer arithmetics: if @code{i} is
18908declared an @code{int}, @value{GDBN} will add 4 times the value of
18909@code{__djgpp_base_address} to the address of @code{i}.
104c1213 18910
8e04817f
AC
18911Here's another example, it displays the Page Table entry for the
18912transfer buffer:
104c1213 18913
8e04817f
AC
18914@smallexample
18915@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
18916@exdent @code{Page Table entry for address 0x29110:}
18917@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
18918@end smallexample
104c1213 18919
8e04817f
AC
18920@noindent
18921(The @code{+ 3} offset is because the transfer buffer's address is the
514c4d71
EZ
189223rd member of the @code{_go32_info_block} structure.) The output
18923clearly shows that this DPMI server maps the addresses in conventional
18924memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and
18925linear (@code{0x29110}) addresses are identical.
104c1213 18926
8e04817f
AC
18927This command is supported only with some DPMI servers.
18928@end table
104c1213 18929
c45da7e6 18930@cindex DOS serial data link, remote debugging
a8f24a35
EZ
18931In addition to native debugging, the DJGPP port supports remote
18932debugging via a serial data link. The following commands are specific
18933to remote serial debugging in the DJGPP port of @value{GDBN}.
18934
18935@table @code
18936@kindex set com1base
18937@kindex set com1irq
18938@kindex set com2base
18939@kindex set com2irq
18940@kindex set com3base
18941@kindex set com3irq
18942@kindex set com4base
18943@kindex set com4irq
18944@item set com1base @var{addr}
18945This command sets the base I/O port address of the @file{COM1} serial
18946port.
18947
18948@item set com1irq @var{irq}
18949This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use
18950for the @file{COM1} serial port.
18951
18952There are similar commands @samp{set com2base}, @samp{set com3irq},
18953etc.@: for setting the port address and the @code{IRQ} lines for the
18954other 3 COM ports.
18955
18956@kindex show com1base
18957@kindex show com1irq
18958@kindex show com2base
18959@kindex show com2irq
18960@kindex show com3base
18961@kindex show com3irq
18962@kindex show com4base
18963@kindex show com4irq
18964The related commands @samp{show com1base}, @samp{show com1irq} etc.@:
18965display the current settings of the base address and the @code{IRQ}
18966lines used by the COM ports.
c45da7e6
EZ
18967
18968@item info serial
18969@kindex info serial
18970@cindex DOS serial port status
18971This command prints the status of the 4 DOS serial ports. For each
18972port, it prints whether it's active or not, its I/O base address and
18973IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the
18974counts of various errors encountered so far.
a8f24a35
EZ
18975@end table
18976
18977
78c47bea 18978@node Cygwin Native
79a6e687 18979@subsection Features for Debugging MS Windows PE Executables
78c47bea
PM
18980@cindex MS Windows debugging
18981@cindex native Cygwin debugging
18982@cindex Cygwin-specific commands
18983
be448670 18984@value{GDBN} supports native debugging of MS Windows programs, including
cbb8f428
EZ
18985DLLs with and without symbolic debugging information.
18986
18987@cindex Ctrl-BREAK, MS-Windows
18988@cindex interrupt debuggee on MS-Windows
18989MS-Windows programs that call @code{SetConsoleMode} to switch off the
18990special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted
18991by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows
18992supports @kbd{C-@key{BREAK}} as an alternative interrupt key
18993sequence, which can be used to interrupt the debuggee even if it
18994ignores @kbd{C-c}.
18995
18996There are various additional Cygwin-specific commands, described in
18997this section. Working with DLLs that have no debugging symbols is
18998described in @ref{Non-debug DLL Symbols}.
78c47bea
PM
18999
19000@table @code
19001@kindex info w32
19002@item info w32
db2e3e2e 19003This is a prefix of MS Windows-specific commands which print
78c47bea
PM
19004information about the target system and important OS structures.
19005
19006@item info w32 selector
19007This command displays information returned by
19008the Win32 API @code{GetThreadSelectorEntry} function.
19009It takes an optional argument that is evaluated to
19010a long value to give the information about this given selector.
19011Without argument, this command displays information
d3e8051b 19012about the six segment registers.
78c47bea 19013
711e434b
PM
19014@item info w32 thread-information-block
19015This command displays thread specific information stored in the
19016Thread Information Block (readable on the X86 CPU family using @code{$fs}
19017selector for 32-bit programs and @code{$gs} for 64-bit programs).
19018
78c47bea
PM
19019@kindex info dll
19020@item info dll
db2e3e2e 19021This is a Cygwin-specific alias of @code{info shared}.
78c47bea
PM
19022
19023@kindex dll-symbols
19024@item dll-symbols
19025This command loads symbols from a dll similarly to
19026add-sym command but without the need to specify a base address.
19027
be90c084 19028@kindex set cygwin-exceptions
e16b02ee
EZ
19029@cindex debugging the Cygwin DLL
19030@cindex Cygwin DLL, debugging
be90c084 19031@item set cygwin-exceptions @var{mode}
e16b02ee
EZ
19032If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that
19033happen inside the Cygwin DLL. If @var{mode} is @code{off},
19034@value{GDBN} will delay recognition of exceptions, and may ignore some
19035exceptions which seem to be caused by internal Cygwin DLL
19036``bookkeeping''. This option is meant primarily for debugging the
19037Cygwin DLL itself; the default value is @code{off} to avoid annoying
19038@value{GDBN} users with false @code{SIGSEGV} signals.
be90c084
CF
19039
19040@kindex show cygwin-exceptions
19041@item show cygwin-exceptions
e16b02ee
EZ
19042Displays whether @value{GDBN} will break on exceptions that happen
19043inside the Cygwin DLL itself.
be90c084 19044
b383017d 19045@kindex set new-console
78c47bea 19046@item set new-console @var{mode}
b383017d 19047If @var{mode} is @code{on} the debuggee will
78c47bea 19048be started in a new console on next start.
e03e5e7b 19049If @var{mode} is @code{off}, the debuggee will
78c47bea
PM
19050be started in the same console as the debugger.
19051
19052@kindex show new-console
19053@item show new-console
19054Displays whether a new console is used
19055when the debuggee is started.
19056
19057@kindex set new-group
19058@item set new-group @var{mode}
19059This boolean value controls whether the debuggee should
19060start a new group or stay in the same group as the debugger.
19061This affects the way the Windows OS handles
c8aa23ab 19062@samp{Ctrl-C}.
78c47bea
PM
19063
19064@kindex show new-group
19065@item show new-group
19066Displays current value of new-group boolean.
19067
19068@kindex set debugevents
19069@item set debugevents
219eec71
EZ
19070This boolean value adds debug output concerning kernel events related
19071to the debuggee seen by the debugger. This includes events that
19072signal thread and process creation and exit, DLL loading and
19073unloading, console interrupts, and debugging messages produced by the
19074Windows @code{OutputDebugString} API call.
78c47bea
PM
19075
19076@kindex set debugexec
19077@item set debugexec
b383017d 19078This boolean value adds debug output concerning execute events
219eec71 19079(such as resume thread) seen by the debugger.
78c47bea
PM
19080
19081@kindex set debugexceptions
19082@item set debugexceptions
219eec71
EZ
19083This boolean value adds debug output concerning exceptions in the
19084debuggee seen by the debugger.
78c47bea
PM
19085
19086@kindex set debugmemory
19087@item set debugmemory
219eec71
EZ
19088This boolean value adds debug output concerning debuggee memory reads
19089and writes by the debugger.
78c47bea
PM
19090
19091@kindex set shell
19092@item set shell
19093This boolean values specifies whether the debuggee is called
19094via a shell or directly (default value is on).
19095
19096@kindex show shell
19097@item show shell
19098Displays if the debuggee will be started with a shell.
19099
19100@end table
19101
be448670 19102@menu
79a6e687 19103* Non-debug DLL Symbols:: Support for DLLs without debugging symbols
be448670
CF
19104@end menu
19105
79a6e687
BW
19106@node Non-debug DLL Symbols
19107@subsubsection Support for DLLs without Debugging Symbols
be448670
CF
19108@cindex DLLs with no debugging symbols
19109@cindex Minimal symbols and DLLs
19110
19111Very often on windows, some of the DLLs that your program relies on do
19112not include symbolic debugging information (for example,
db2e3e2e 19113@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
be448670 19114symbols in a DLL, it relies on the minimal amount of symbolic
db2e3e2e 19115information contained in the DLL's export table. This section
be448670
CF
19116describes working with such symbols, known internally to @value{GDBN} as
19117``minimal symbols''.
19118
19119Note that before the debugged program has started execution, no DLLs
db2e3e2e 19120will have been loaded. The easiest way around this problem is simply to
be448670 19121start the program --- either by setting a breakpoint or letting the
db2e3e2e 19122program run once to completion. It is also possible to force
be448670 19123@value{GDBN} to load a particular DLL before starting the executable ---
12c27660 19124see the shared library information in @ref{Files}, or the
db2e3e2e 19125@code{dll-symbols} command in @ref{Cygwin Native}. Currently,
be448670
CF
19126explicitly loading symbols from a DLL with no debugging information will
19127cause the symbol names to be duplicated in @value{GDBN}'s lookup table,
19128which may adversely affect symbol lookup performance.
19129
79a6e687 19130@subsubsection DLL Name Prefixes
be448670
CF
19131
19132In keeping with the naming conventions used by the Microsoft debugging
19133tools, DLL export symbols are made available with a prefix based on the
19134DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
19135also entered into the symbol table, so @code{CreateFileA} is often
99e008fe 19136sufficient. In some cases there will be name clashes within a program
be448670
CF
19137(particularly if the executable itself includes full debugging symbols)
19138necessitating the use of the fully qualified name when referring to the
99e008fe 19139contents of the DLL. Use single-quotes around the name to avoid the
be448670
CF
19140exclamation mark (``!'') being interpreted as a language operator.
19141
19142Note that the internal name of the DLL may be all upper-case, even
99e008fe 19143though the file name of the DLL is lower-case, or vice-versa. Since
be448670
CF
19144symbols within @value{GDBN} are @emph{case-sensitive} this may cause
19145some confusion. If in doubt, try the @code{info functions} and
0869d01b
NR
19146@code{info variables} commands or even @code{maint print msymbols}
19147(@pxref{Symbols}). Here's an example:
be448670
CF
19148
19149@smallexample
f7dc1244 19150(@value{GDBP}) info function CreateFileA
be448670
CF
19151All functions matching regular expression "CreateFileA":
19152
19153Non-debugging symbols:
191540x77e885f4 CreateFileA
191550x77e885f4 KERNEL32!CreateFileA
19156@end smallexample
19157
19158@smallexample
f7dc1244 19159(@value{GDBP}) info function !
be448670
CF
19160All functions matching regular expression "!":
19161
19162Non-debugging symbols:
191630x6100114c cygwin1!__assert
191640x61004034 cygwin1!_dll_crt0@@0
191650x61004240 cygwin1!dll_crt0(per_process *)
19166[etc...]
19167@end smallexample
19168
79a6e687 19169@subsubsection Working with Minimal Symbols
be448670
CF
19170
19171Symbols extracted from a DLL's export table do not contain very much
19172type information. All that @value{GDBN} can do is guess whether a symbol
19173refers to a function or variable depending on the linker section that
19174contains the symbol. Also note that the actual contents of the memory
19175contained in a DLL are not available unless the program is running. This
19176means that you cannot examine the contents of a variable or disassemble
19177a function within a DLL without a running program.
19178
19179Variables are generally treated as pointers and dereferenced
19180automatically. For this reason, it is often necessary to prefix a
19181variable name with the address-of operator (``&'') and provide explicit
19182type information in the command. Here's an example of the type of
19183problem:
19184
19185@smallexample
f7dc1244 19186(@value{GDBP}) print 'cygwin1!__argv'
be448670
CF
19187$1 = 268572168
19188@end smallexample
19189
19190@smallexample
f7dc1244 19191(@value{GDBP}) x 'cygwin1!__argv'
be448670
CF
191920x10021610: "\230y\""
19193@end smallexample
19194
19195And two possible solutions:
19196
19197@smallexample
f7dc1244 19198(@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
be448670
CF
19199$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
19200@end smallexample
19201
19202@smallexample
f7dc1244 19203(@value{GDBP}) x/2x &'cygwin1!__argv'
be448670 192040x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
f7dc1244 19205(@value{GDBP}) x/x 0x10021608
be448670 192060x10021608: 0x0022fd98
f7dc1244 19207(@value{GDBP}) x/s 0x0022fd98
be448670
CF
192080x22fd98: "/cygdrive/c/mydirectory/myprogram"
19209@end smallexample
19210
19211Setting a break point within a DLL is possible even before the program
19212starts execution. However, under these circumstances, @value{GDBN} can't
19213examine the initial instructions of the function in order to skip the
19214function's frame set-up code. You can work around this by using ``*&''
19215to set the breakpoint at a raw memory address:
19216
19217@smallexample
f7dc1244 19218(@value{GDBP}) break *&'python22!PyOS_Readline'
be448670
CF
19219Breakpoint 1 at 0x1e04eff0
19220@end smallexample
19221
19222The author of these extensions is not entirely convinced that setting a
19223break point within a shared DLL like @file{kernel32.dll} is completely
19224safe.
19225
14d6dd68 19226@node Hurd Native
79a6e687 19227@subsection Commands Specific to @sc{gnu} Hurd Systems
14d6dd68
EZ
19228@cindex @sc{gnu} Hurd debugging
19229
19230This subsection describes @value{GDBN} commands specific to the
19231@sc{gnu} Hurd native debugging.
19232
19233@table @code
19234@item set signals
19235@itemx set sigs
19236@kindex set signals@r{, Hurd command}
19237@kindex set sigs@r{, Hurd command}
19238This command toggles the state of inferior signal interception by
19239@value{GDBN}. Mach exceptions, such as breakpoint traps, are not
19240affected by this command. @code{sigs} is a shorthand alias for
19241@code{signals}.
19242
19243@item show signals
19244@itemx show sigs
19245@kindex show signals@r{, Hurd command}
19246@kindex show sigs@r{, Hurd command}
19247Show the current state of intercepting inferior's signals.
19248
19249@item set signal-thread
19250@itemx set sigthread
19251@kindex set signal-thread
19252@kindex set sigthread
19253This command tells @value{GDBN} which thread is the @code{libc} signal
19254thread. That thread is run when a signal is delivered to a running
19255process. @code{set sigthread} is the shorthand alias of @code{set
19256signal-thread}.
19257
19258@item show signal-thread
19259@itemx show sigthread
19260@kindex show signal-thread
19261@kindex show sigthread
19262These two commands show which thread will run when the inferior is
19263delivered a signal.
19264
19265@item set stopped
19266@kindex set stopped@r{, Hurd command}
19267This commands tells @value{GDBN} that the inferior process is stopped,
19268as with the @code{SIGSTOP} signal. The stopped process can be
19269continued by delivering a signal to it.
19270
19271@item show stopped
19272@kindex show stopped@r{, Hurd command}
19273This command shows whether @value{GDBN} thinks the debuggee is
19274stopped.
19275
19276@item set exceptions
19277@kindex set exceptions@r{, Hurd command}
19278Use this command to turn off trapping of exceptions in the inferior.
19279When exception trapping is off, neither breakpoints nor
19280single-stepping will work. To restore the default, set exception
19281trapping on.
19282
19283@item show exceptions
19284@kindex show exceptions@r{, Hurd command}
19285Show the current state of trapping exceptions in the inferior.
19286
19287@item set task pause
19288@kindex set task@r{, Hurd commands}
19289@cindex task attributes (@sc{gnu} Hurd)
19290@cindex pause current task (@sc{gnu} Hurd)
19291This command toggles task suspension when @value{GDBN} has control.
19292Setting it to on takes effect immediately, and the task is suspended
19293whenever @value{GDBN} gets control. Setting it to off will take
19294effect the next time the inferior is continued. If this option is set
19295to off, you can use @code{set thread default pause on} or @code{set
19296thread pause on} (see below) to pause individual threads.
19297
19298@item show task pause
19299@kindex show task@r{, Hurd commands}
19300Show the current state of task suspension.
19301
19302@item set task detach-suspend-count
19303@cindex task suspend count
19304@cindex detach from task, @sc{gnu} Hurd
19305This command sets the suspend count the task will be left with when
19306@value{GDBN} detaches from it.
19307
19308@item show task detach-suspend-count
19309Show the suspend count the task will be left with when detaching.
19310
19311@item set task exception-port
19312@itemx set task excp
19313@cindex task exception port, @sc{gnu} Hurd
19314This command sets the task exception port to which @value{GDBN} will
19315forward exceptions. The argument should be the value of the @dfn{send
19316rights} of the task. @code{set task excp} is a shorthand alias.
19317
19318@item set noninvasive
19319@cindex noninvasive task options
19320This command switches @value{GDBN} to a mode that is the least
19321invasive as far as interfering with the inferior is concerned. This
19322is the same as using @code{set task pause}, @code{set exceptions}, and
19323@code{set signals} to values opposite to the defaults.
19324
19325@item info send-rights
19326@itemx info receive-rights
19327@itemx info port-rights
19328@itemx info port-sets
19329@itemx info dead-names
19330@itemx info ports
19331@itemx info psets
19332@cindex send rights, @sc{gnu} Hurd
19333@cindex receive rights, @sc{gnu} Hurd
19334@cindex port rights, @sc{gnu} Hurd
19335@cindex port sets, @sc{gnu} Hurd
19336@cindex dead names, @sc{gnu} Hurd
19337These commands display information about, respectively, send rights,
19338receive rights, port rights, port sets, and dead names of a task.
19339There are also shorthand aliases: @code{info ports} for @code{info
19340port-rights} and @code{info psets} for @code{info port-sets}.
19341
19342@item set thread pause
19343@kindex set thread@r{, Hurd command}
19344@cindex thread properties, @sc{gnu} Hurd
19345@cindex pause current thread (@sc{gnu} Hurd)
19346This command toggles current thread suspension when @value{GDBN} has
19347control. Setting it to on takes effect immediately, and the current
19348thread is suspended whenever @value{GDBN} gets control. Setting it to
19349off will take effect the next time the inferior is continued.
19350Normally, this command has no effect, since when @value{GDBN} has
19351control, the whole task is suspended. However, if you used @code{set
19352task pause off} (see above), this command comes in handy to suspend
19353only the current thread.
19354
19355@item show thread pause
19356@kindex show thread@r{, Hurd command}
19357This command shows the state of current thread suspension.
19358
19359@item set thread run
d3e8051b 19360This command sets whether the current thread is allowed to run.
14d6dd68
EZ
19361
19362@item show thread run
19363Show whether the current thread is allowed to run.
19364
19365@item set thread detach-suspend-count
19366@cindex thread suspend count, @sc{gnu} Hurd
19367@cindex detach from thread, @sc{gnu} Hurd
19368This command sets the suspend count @value{GDBN} will leave on a
19369thread when detaching. This number is relative to the suspend count
19370found by @value{GDBN} when it notices the thread; use @code{set thread
19371takeover-suspend-count} to force it to an absolute value.
19372
19373@item show thread detach-suspend-count
19374Show the suspend count @value{GDBN} will leave on the thread when
19375detaching.
19376
19377@item set thread exception-port
19378@itemx set thread excp
19379Set the thread exception port to which to forward exceptions. This
19380overrides the port set by @code{set task exception-port} (see above).
19381@code{set thread excp} is the shorthand alias.
19382
19383@item set thread takeover-suspend-count
19384Normally, @value{GDBN}'s thread suspend counts are relative to the
19385value @value{GDBN} finds when it notices each thread. This command
19386changes the suspend counts to be absolute instead.
19387
19388@item set thread default
19389@itemx show thread default
19390@cindex thread default settings, @sc{gnu} Hurd
19391Each of the above @code{set thread} commands has a @code{set thread
19392default} counterpart (e.g., @code{set thread default pause}, @code{set
19393thread default exception-port}, etc.). The @code{thread default}
19394variety of commands sets the default thread properties for all
19395threads; you can then change the properties of individual threads with
19396the non-default commands.
19397@end table
19398
a80b95ba
TG
19399@node Darwin
19400@subsection Darwin
19401@cindex Darwin
19402
19403@value{GDBN} provides the following commands specific to the Darwin target:
19404
19405@table @code
19406@item set debug darwin @var{num}
19407@kindex set debug darwin
19408When set to a non zero value, enables debugging messages specific to
19409the Darwin support. Higher values produce more verbose output.
19410
19411@item show debug darwin
19412@kindex show debug darwin
19413Show the current state of Darwin messages.
19414
19415@item set debug mach-o @var{num}
19416@kindex set debug mach-o
19417When set to a non zero value, enables debugging messages while
19418@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the
19419file format used on Darwin for object and executable files.) Higher
19420values produce more verbose output. This is a command to diagnose
19421problems internal to @value{GDBN} and should not be needed in normal
19422usage.
19423
19424@item show debug mach-o
19425@kindex show debug mach-o
19426Show the current state of Mach-O file messages.
19427
19428@item set mach-exceptions on
19429@itemx set mach-exceptions off
19430@kindex set mach-exceptions
19431On Darwin, faults are first reported as a Mach exception and are then
19432mapped to a Posix signal. Use this command to turn on trapping of
19433Mach exceptions in the inferior. This might be sometimes useful to
19434better understand the cause of a fault. The default is off.
19435
19436@item show mach-exceptions
19437@kindex show mach-exceptions
19438Show the current state of exceptions trapping.
19439@end table
19440
a64548ea 19441
8e04817f
AC
19442@node Embedded OS
19443@section Embedded Operating Systems
104c1213 19444
8e04817f
AC
19445This section describes configurations involving the debugging of
19446embedded operating systems that are available for several different
19447architectures.
d4f3574e 19448
8e04817f
AC
19449@menu
19450* VxWorks:: Using @value{GDBN} with VxWorks
19451@end menu
104c1213 19452
8e04817f
AC
19453@value{GDBN} includes the ability to debug programs running on
19454various real-time operating systems.
104c1213 19455
8e04817f
AC
19456@node VxWorks
19457@subsection Using @value{GDBN} with VxWorks
104c1213 19458
8e04817f 19459@cindex VxWorks
104c1213 19460
8e04817f 19461@table @code
104c1213 19462
8e04817f
AC
19463@kindex target vxworks
19464@item target vxworks @var{machinename}
19465A VxWorks system, attached via TCP/IP. The argument @var{machinename}
19466is the target system's machine name or IP address.
104c1213 19467
8e04817f 19468@end table
104c1213 19469
8e04817f
AC
19470On VxWorks, @code{load} links @var{filename} dynamically on the
19471current target system as well as adding its symbols in @value{GDBN}.
104c1213 19472
8e04817f
AC
19473@value{GDBN} enables developers to spawn and debug tasks running on networked
19474VxWorks targets from a Unix host. Already-running tasks spawned from
19475the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
19476both the Unix host and on the VxWorks target. The program
19477@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
19478installed with the name @code{vxgdb}, to distinguish it from a
19479@value{GDBN} for debugging programs on the host itself.)
104c1213 19480
8e04817f
AC
19481@table @code
19482@item VxWorks-timeout @var{args}
19483@kindex vxworks-timeout
19484All VxWorks-based targets now support the option @code{vxworks-timeout}.
19485This option is set by the user, and @var{args} represents the number of
19486seconds @value{GDBN} waits for responses to rpc's. You might use this if
19487your VxWorks target is a slow software simulator or is on the far side
19488of a thin network line.
19489@end table
104c1213 19490
8e04817f
AC
19491The following information on connecting to VxWorks was current when
19492this manual was produced; newer releases of VxWorks may use revised
19493procedures.
104c1213 19494
4644b6e3 19495@findex INCLUDE_RDB
8e04817f
AC
19496To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
19497to include the remote debugging interface routines in the VxWorks
19498library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
19499VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
19500kernel. The resulting kernel contains @file{rdb.a}, and spawns the
19501source debugging task @code{tRdbTask} when VxWorks is booted. For more
19502information on configuring and remaking VxWorks, see the manufacturer's
19503manual.
19504@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
104c1213 19505
8e04817f
AC
19506Once you have included @file{rdb.a} in your VxWorks system image and set
19507your Unix execution search path to find @value{GDBN}, you are ready to
19508run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
19509@code{vxgdb}, depending on your installation).
104c1213 19510
8e04817f 19511@value{GDBN} comes up showing the prompt:
104c1213 19512
474c8240 19513@smallexample
8e04817f 19514(vxgdb)
474c8240 19515@end smallexample
104c1213 19516
8e04817f
AC
19517@menu
19518* VxWorks Connection:: Connecting to VxWorks
19519* VxWorks Download:: VxWorks download
19520* VxWorks Attach:: Running tasks
19521@end menu
104c1213 19522
8e04817f
AC
19523@node VxWorks Connection
19524@subsubsection Connecting to VxWorks
104c1213 19525
8e04817f
AC
19526The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
19527network. To connect to a target whose host name is ``@code{tt}'', type:
104c1213 19528
474c8240 19529@smallexample
8e04817f 19530(vxgdb) target vxworks tt
474c8240 19531@end smallexample
104c1213 19532
8e04817f
AC
19533@need 750
19534@value{GDBN} displays messages like these:
104c1213 19535
8e04817f
AC
19536@smallexample
19537Attaching remote machine across net...
19538Connected to tt.
19539@end smallexample
104c1213 19540
8e04817f
AC
19541@need 1000
19542@value{GDBN} then attempts to read the symbol tables of any object modules
19543loaded into the VxWorks target since it was last booted. @value{GDBN} locates
19544these files by searching the directories listed in the command search
79a6e687 19545path (@pxref{Environment, ,Your Program's Environment}); if it fails
8e04817f 19546to find an object file, it displays a message such as:
5d161b24 19547
474c8240 19548@smallexample
8e04817f 19549prog.o: No such file or directory.
474c8240 19550@end smallexample
104c1213 19551
8e04817f
AC
19552When this happens, add the appropriate directory to the search path with
19553the @value{GDBN} command @code{path}, and execute the @code{target}
19554command again.
104c1213 19555
8e04817f 19556@node VxWorks Download
79a6e687 19557@subsubsection VxWorks Download
104c1213 19558
8e04817f
AC
19559@cindex download to VxWorks
19560If you have connected to the VxWorks target and you want to debug an
19561object that has not yet been loaded, you can use the @value{GDBN}
19562@code{load} command to download a file from Unix to VxWorks
19563incrementally. The object file given as an argument to the @code{load}
19564command is actually opened twice: first by the VxWorks target in order
19565to download the code, then by @value{GDBN} in order to read the symbol
19566table. This can lead to problems if the current working directories on
19567the two systems differ. If both systems have NFS mounted the same
19568filesystems, you can avoid these problems by using absolute paths.
19569Otherwise, it is simplest to set the working directory on both systems
19570to the directory in which the object file resides, and then to reference
19571the file by its name, without any path. For instance, a program
19572@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
19573and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
19574program, type this on VxWorks:
104c1213 19575
474c8240 19576@smallexample
8e04817f 19577-> cd "@var{vxpath}/vw/demo/rdb"
474c8240 19578@end smallexample
104c1213 19579
8e04817f
AC
19580@noindent
19581Then, in @value{GDBN}, type:
104c1213 19582
474c8240 19583@smallexample
8e04817f
AC
19584(vxgdb) cd @var{hostpath}/vw/demo/rdb
19585(vxgdb) load prog.o
474c8240 19586@end smallexample
104c1213 19587
8e04817f 19588@value{GDBN} displays a response similar to this:
104c1213 19589
8e04817f
AC
19590@smallexample
19591Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
19592@end smallexample
104c1213 19593
8e04817f
AC
19594You can also use the @code{load} command to reload an object module
19595after editing and recompiling the corresponding source file. Note that
19596this makes @value{GDBN} delete all currently-defined breakpoints,
19597auto-displays, and convenience variables, and to clear the value
19598history. (This is necessary in order to preserve the integrity of
19599debugger's data structures that reference the target system's symbol
19600table.)
104c1213 19601
8e04817f 19602@node VxWorks Attach
79a6e687 19603@subsubsection Running Tasks
104c1213
JM
19604
19605@cindex running VxWorks tasks
19606You can also attach to an existing task using the @code{attach} command as
19607follows:
19608
474c8240 19609@smallexample
104c1213 19610(vxgdb) attach @var{task}
474c8240 19611@end smallexample
104c1213
JM
19612
19613@noindent
19614where @var{task} is the VxWorks hexadecimal task ID. The task can be running
19615or suspended when you attach to it. Running tasks are suspended at
19616the time of attachment.
19617
6d2ebf8b 19618@node Embedded Processors
104c1213
JM
19619@section Embedded Processors
19620
19621This section goes into details specific to particular embedded
19622configurations.
19623
c45da7e6
EZ
19624@cindex send command to simulator
19625Whenever a specific embedded processor has a simulator, @value{GDBN}
19626allows to send an arbitrary command to the simulator.
19627
19628@table @code
19629@item sim @var{command}
19630@kindex sim@r{, a command}
19631Send an arbitrary @var{command} string to the simulator. Consult the
19632documentation for the specific simulator in use for information about
19633acceptable commands.
19634@end table
19635
7d86b5d5 19636
104c1213 19637@menu
c45da7e6 19638* ARM:: ARM RDI
172c2a43 19639* M32R/D:: Renesas M32R/D
104c1213 19640* M68K:: Motorola M68K
08be9d71 19641* MicroBlaze:: Xilinx MicroBlaze
104c1213 19642* MIPS Embedded:: MIPS Embedded
a37295f9 19643* OpenRISC 1000:: OpenRisc 1000
4acd40f3 19644* PowerPC Embedded:: PowerPC Embedded
984359d2 19645* PA:: HP PA Embedded
104c1213
JM
19646* Sparclet:: Tsqware Sparclet
19647* Sparclite:: Fujitsu Sparclite
104c1213 19648* Z8000:: Zilog Z8000
a64548ea
EZ
19649* AVR:: Atmel AVR
19650* CRIS:: CRIS
19651* Super-H:: Renesas Super-H
104c1213
JM
19652@end menu
19653
6d2ebf8b 19654@node ARM
104c1213 19655@subsection ARM
c45da7e6 19656@cindex ARM RDI
104c1213
JM
19657
19658@table @code
8e04817f
AC
19659@kindex target rdi
19660@item target rdi @var{dev}
19661ARM Angel monitor, via RDI library interface to ADP protocol. You may
19662use this target to communicate with both boards running the Angel
19663monitor, or with the EmbeddedICE JTAG debug device.
19664
19665@kindex target rdp
19666@item target rdp @var{dev}
19667ARM Demon monitor.
19668
19669@end table
19670
e2f4edfd
EZ
19671@value{GDBN} provides the following ARM-specific commands:
19672
19673@table @code
19674@item set arm disassembler
19675@kindex set arm
19676This commands selects from a list of disassembly styles. The
19677@code{"std"} style is the standard style.
19678
19679@item show arm disassembler
19680@kindex show arm
19681Show the current disassembly style.
19682
19683@item set arm apcs32
19684@cindex ARM 32-bit mode
19685This command toggles ARM operation mode between 32-bit and 26-bit.
19686
19687@item show arm apcs32
19688Display the current usage of the ARM 32-bit mode.
19689
19690@item set arm fpu @var{fputype}
19691This command sets the ARM floating-point unit (FPU) type. The
19692argument @var{fputype} can be one of these:
19693
19694@table @code
19695@item auto
19696Determine the FPU type by querying the OS ABI.
19697@item softfpa
19698Software FPU, with mixed-endian doubles on little-endian ARM
19699processors.
19700@item fpa
19701GCC-compiled FPA co-processor.
19702@item softvfp
19703Software FPU with pure-endian doubles.
19704@item vfp
19705VFP co-processor.
19706@end table
19707
19708@item show arm fpu
19709Show the current type of the FPU.
19710
19711@item set arm abi
19712This command forces @value{GDBN} to use the specified ABI.
19713
19714@item show arm abi
19715Show the currently used ABI.
19716
0428b8f5
DJ
19717@item set arm fallback-mode (arm|thumb|auto)
19718@value{GDBN} uses the symbol table, when available, to determine
19719whether instructions are ARM or Thumb. This command controls
19720@value{GDBN}'s default behavior when the symbol table is not
19721available. The default is @samp{auto}, which causes @value{GDBN} to
19722use the current execution mode (from the @code{T} bit in the @code{CPSR}
19723register).
19724
19725@item show arm fallback-mode
19726Show the current fallback instruction mode.
19727
19728@item set arm force-mode (arm|thumb|auto)
19729This command overrides use of the symbol table to determine whether
19730instructions are ARM or Thumb. The default is @samp{auto}, which
19731causes @value{GDBN} to use the symbol table and then the setting
19732of @samp{set arm fallback-mode}.
19733
19734@item show arm force-mode
19735Show the current forced instruction mode.
19736
e2f4edfd
EZ
19737@item set debug arm
19738Toggle whether to display ARM-specific debugging messages from the ARM
19739target support subsystem.
19740
19741@item show debug arm
19742Show whether ARM-specific debugging messages are enabled.
19743@end table
19744
c45da7e6
EZ
19745The following commands are available when an ARM target is debugged
19746using the RDI interface:
19747
19748@table @code
19749@item rdilogfile @r{[}@var{file}@r{]}
19750@kindex rdilogfile
19751@cindex ADP (Angel Debugger Protocol) logging
19752Set the filename for the ADP (Angel Debugger Protocol) packet log.
19753With an argument, sets the log file to the specified @var{file}. With
19754no argument, show the current log file name. The default log file is
19755@file{rdi.log}.
19756
19757@item rdilogenable @r{[}@var{arg}@r{]}
19758@kindex rdilogenable
19759Control logging of ADP packets. With an argument of 1 or @code{"yes"}
19760enables logging, with an argument 0 or @code{"no"} disables it. With
19761no arguments displays the current setting. When logging is enabled,
19762ADP packets exchanged between @value{GDBN} and the RDI target device
19763are logged to a file.
19764
19765@item set rdiromatzero
19766@kindex set rdiromatzero
19767@cindex ROM at zero address, RDI
19768Tell @value{GDBN} whether the target has ROM at address 0. If on,
19769vector catching is disabled, so that zero address can be used. If off
19770(the default), vector catching is enabled. For this command to take
19771effect, it needs to be invoked prior to the @code{target rdi} command.
19772
19773@item show rdiromatzero
19774@kindex show rdiromatzero
19775Show the current setting of ROM at zero address.
19776
19777@item set rdiheartbeat
19778@kindex set rdiheartbeat
19779@cindex RDI heartbeat
19780Enable or disable RDI heartbeat packets. It is not recommended to
19781turn on this option, since it confuses ARM and EPI JTAG interface, as
19782well as the Angel monitor.
19783
19784@item show rdiheartbeat
19785@kindex show rdiheartbeat
19786Show the setting of RDI heartbeat packets.
19787@end table
19788
ee8e71d4
EZ
19789@table @code
19790@item target sim @r{[}@var{simargs}@r{]} @dots{}
19791The @value{GDBN} ARM simulator accepts the following optional arguments.
19792
19793@table @code
19794@item --swi-support=@var{type}
19795Tell the simulator which SWI interfaces to support.
19796@var{type} may be a comma separated list of the following values.
19797The default value is @code{all}.
19798
19799@table @code
19800@item none
19801@item demon
19802@item angel
19803@item redboot
19804@item all
19805@end table
19806@end table
19807@end table
e2f4edfd 19808
8e04817f 19809@node M32R/D
ba04e063 19810@subsection Renesas M32R/D and M32R/SDI
8e04817f
AC
19811
19812@table @code
8e04817f
AC
19813@kindex target m32r
19814@item target m32r @var{dev}
172c2a43 19815Renesas M32R/D ROM monitor.
8e04817f 19816
fb3e19c0
KI
19817@kindex target m32rsdi
19818@item target m32rsdi @var{dev}
19819Renesas M32R SDI server, connected via parallel port to the board.
721c2651
EZ
19820@end table
19821
19822The following @value{GDBN} commands are specific to the M32R monitor:
19823
19824@table @code
19825@item set download-path @var{path}
19826@kindex set download-path
19827@cindex find downloadable @sc{srec} files (M32R)
d3e8051b 19828Set the default path for finding downloadable @sc{srec} files.
721c2651
EZ
19829
19830@item show download-path
19831@kindex show download-path
19832Show the default path for downloadable @sc{srec} files.
fb3e19c0 19833
721c2651
EZ
19834@item set board-address @var{addr}
19835@kindex set board-address
19836@cindex M32-EVA target board address
19837Set the IP address for the M32R-EVA target board.
19838
19839@item show board-address
19840@kindex show board-address
19841Show the current IP address of the target board.
19842
19843@item set server-address @var{addr}
19844@kindex set server-address
19845@cindex download server address (M32R)
19846Set the IP address for the download server, which is the @value{GDBN}'s
19847host machine.
19848
19849@item show server-address
19850@kindex show server-address
19851Display the IP address of the download server.
19852
19853@item upload @r{[}@var{file}@r{]}
19854@kindex upload@r{, M32R}
19855Upload the specified @sc{srec} @var{file} via the monitor's Ethernet
19856upload capability. If no @var{file} argument is given, the current
19857executable file is uploaded.
19858
19859@item tload @r{[}@var{file}@r{]}
19860@kindex tload@r{, M32R}
19861Test the @code{upload} command.
8e04817f
AC
19862@end table
19863
ba04e063
EZ
19864The following commands are available for M32R/SDI:
19865
19866@table @code
19867@item sdireset
19868@kindex sdireset
19869@cindex reset SDI connection, M32R
19870This command resets the SDI connection.
19871
19872@item sdistatus
19873@kindex sdistatus
19874This command shows the SDI connection status.
19875
19876@item debug_chaos
19877@kindex debug_chaos
19878@cindex M32R/Chaos debugging
19879Instructs the remote that M32R/Chaos debugging is to be used.
19880
19881@item use_debug_dma
19882@kindex use_debug_dma
19883Instructs the remote to use the DEBUG_DMA method of accessing memory.
19884
19885@item use_mon_code
19886@kindex use_mon_code
19887Instructs the remote to use the MON_CODE method of accessing memory.
19888
19889@item use_ib_break
19890@kindex use_ib_break
19891Instructs the remote to set breakpoints by IB break.
19892
19893@item use_dbt_break
19894@kindex use_dbt_break
19895Instructs the remote to set breakpoints by DBT.
19896@end table
19897
8e04817f
AC
19898@node M68K
19899@subsection M68k
19900
7ce59000
DJ
19901The Motorola m68k configuration includes ColdFire support, and a
19902target command for the following ROM monitor.
8e04817f
AC
19903
19904@table @code
19905
8e04817f
AC
19906@kindex target dbug
19907@item target dbug @var{dev}
19908dBUG ROM monitor for Motorola ColdFire.
19909
8e04817f
AC
19910@end table
19911
08be9d71
ME
19912@node MicroBlaze
19913@subsection MicroBlaze
19914@cindex Xilinx MicroBlaze
19915@cindex XMD, Xilinx Microprocessor Debugger
19916
19917The MicroBlaze is a soft-core processor supported on various Xilinx
19918FPGAs, such as Spartan or Virtex series. Boards with these processors
19919usually have JTAG ports which connect to a host system running the Xilinx
19920Embedded Development Kit (EDK) or Software Development Kit (SDK).
19921This host system is used to download the configuration bitstream to
19922the target FPGA. The Xilinx Microprocessor Debugger (XMD) program
19923communicates with the target board using the JTAG interface and
19924presents a @code{gdbserver} interface to the board. By default
19925@code{xmd} uses port @code{1234}. (While it is possible to change
19926this default port, it requires the use of undocumented @code{xmd}
19927commands. Contact Xilinx support if you need to do this.)
19928
19929Use these GDB commands to connect to the MicroBlaze target processor.
19930
19931@table @code
19932@item target remote :1234
19933Use this command to connect to the target if you are running @value{GDBN}
19934on the same system as @code{xmd}.
19935
19936@item target remote @var{xmd-host}:1234
19937Use this command to connect to the target if it is connected to @code{xmd}
19938running on a different system named @var{xmd-host}.
19939
19940@item load
19941Use this command to download a program to the MicroBlaze target.
19942
19943@item set debug microblaze @var{n}
19944Enable MicroBlaze-specific debugging messages if non-zero.
19945
19946@item show debug microblaze @var{n}
19947Show MicroBlaze-specific debugging level.
19948@end table
19949
8e04817f 19950@node MIPS Embedded
eb17f351 19951@subsection @acronym{MIPS} Embedded
8e04817f 19952
eb17f351
EZ
19953@cindex @acronym{MIPS} boards
19954@value{GDBN} can use the @acronym{MIPS} remote debugging protocol to talk to a
19955@acronym{MIPS} board attached to a serial line. This is available when
cc30c4bd 19956you configure @value{GDBN} with @samp{--target=mips-elf}.
104c1213 19957
8e04817f
AC
19958@need 1000
19959Use these @value{GDBN} commands to specify the connection to your target board:
104c1213 19960
8e04817f
AC
19961@table @code
19962@item target mips @var{port}
19963@kindex target mips @var{port}
19964To run a program on the board, start up @code{@value{GDBP}} with the
19965name of your program as the argument. To connect to the board, use the
19966command @samp{target mips @var{port}}, where @var{port} is the name of
19967the serial port connected to the board. If the program has not already
19968been downloaded to the board, you may use the @code{load} command to
19969download it. You can then use all the usual @value{GDBN} commands.
104c1213 19970
8e04817f
AC
19971For example, this sequence connects to the target board through a serial
19972port, and loads and runs a program called @var{prog} through the
19973debugger:
104c1213 19974
474c8240 19975@smallexample
8e04817f
AC
19976host$ @value{GDBP} @var{prog}
19977@value{GDBN} is free software and @dots{}
19978(@value{GDBP}) target mips /dev/ttyb
19979(@value{GDBP}) load @var{prog}
19980(@value{GDBP}) run
474c8240 19981@end smallexample
104c1213 19982
8e04817f
AC
19983@item target mips @var{hostname}:@var{portnumber}
19984On some @value{GDBN} host configurations, you can specify a TCP
19985connection (for instance, to a serial line managed by a terminal
19986concentrator) instead of a serial port, using the syntax
19987@samp{@var{hostname}:@var{portnumber}}.
104c1213 19988
8e04817f
AC
19989@item target pmon @var{port}
19990@kindex target pmon @var{port}
19991PMON ROM monitor.
104c1213 19992
8e04817f
AC
19993@item target ddb @var{port}
19994@kindex target ddb @var{port}
19995NEC's DDB variant of PMON for Vr4300.
104c1213 19996
8e04817f
AC
19997@item target lsi @var{port}
19998@kindex target lsi @var{port}
19999LSI variant of PMON.
104c1213 20000
8e04817f
AC
20001@kindex target r3900
20002@item target r3900 @var{dev}
20003Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
104c1213 20004
8e04817f
AC
20005@kindex target array
20006@item target array @var{dev}
20007Array Tech LSI33K RAID controller board.
104c1213 20008
8e04817f 20009@end table
104c1213 20010
104c1213 20011
8e04817f 20012@noindent
eb17f351 20013@value{GDBN} also supports these special commands for @acronym{MIPS} targets:
104c1213 20014
8e04817f 20015@table @code
8e04817f
AC
20016@item set mipsfpu double
20017@itemx set mipsfpu single
20018@itemx set mipsfpu none
a64548ea 20019@itemx set mipsfpu auto
8e04817f
AC
20020@itemx show mipsfpu
20021@kindex set mipsfpu
20022@kindex show mipsfpu
eb17f351
EZ
20023@cindex @acronym{MIPS} remote floating point
20024@cindex floating point, @acronym{MIPS} remote
20025If your target board does not support the @acronym{MIPS} floating point
8e04817f
AC
20026coprocessor, you should use the command @samp{set mipsfpu none} (if you
20027need this, you may wish to put the command in your @value{GDBN} init
20028file). This tells @value{GDBN} how to find the return value of
20029functions which return floating point values. It also allows
20030@value{GDBN} to avoid saving the floating point registers when calling
20031functions on the board. If you are using a floating point coprocessor
20032with only single precision floating point support, as on the @sc{r4650}
20033processor, use the command @samp{set mipsfpu single}. The default
20034double precision floating point coprocessor may be selected using
20035@samp{set mipsfpu double}.
104c1213 20036
8e04817f
AC
20037In previous versions the only choices were double precision or no
20038floating point, so @samp{set mipsfpu on} will select double precision
20039and @samp{set mipsfpu off} will select no floating point.
104c1213 20040
8e04817f
AC
20041As usual, you can inquire about the @code{mipsfpu} variable with
20042@samp{show mipsfpu}.
104c1213 20043
8e04817f
AC
20044@item set timeout @var{seconds}
20045@itemx set retransmit-timeout @var{seconds}
20046@itemx show timeout
20047@itemx show retransmit-timeout
eb17f351
EZ
20048@cindex @code{timeout}, @acronym{MIPS} protocol
20049@cindex @code{retransmit-timeout}, @acronym{MIPS} protocol
8e04817f
AC
20050@kindex set timeout
20051@kindex show timeout
20052@kindex set retransmit-timeout
20053@kindex show retransmit-timeout
eb17f351 20054You can control the timeout used while waiting for a packet, in the @acronym{MIPS}
8e04817f
AC
20055remote protocol, with the @code{set timeout @var{seconds}} command. The
20056default is 5 seconds. Similarly, you can control the timeout used while
a6f3e723 20057waiting for an acknowledgment of a packet with the @code{set
8e04817f
AC
20058retransmit-timeout @var{seconds}} command. The default is 3 seconds.
20059You can inspect both values with @code{show timeout} and @code{show
20060retransmit-timeout}. (These commands are @emph{only} available when
cc30c4bd 20061@value{GDBN} is configured for @samp{--target=mips-elf}.)
104c1213 20062
8e04817f
AC
20063The timeout set by @code{set timeout} does not apply when @value{GDBN}
20064is waiting for your program to stop. In that case, @value{GDBN} waits
20065forever because it has no way of knowing how long the program is going
20066to run before stopping.
ba04e063
EZ
20067
20068@item set syn-garbage-limit @var{num}
eb17f351
EZ
20069@kindex set syn-garbage-limit@r{, @acronym{MIPS} remote}
20070@cindex synchronize with remote @acronym{MIPS} target
ba04e063
EZ
20071Limit the maximum number of characters @value{GDBN} should ignore when
20072it tries to synchronize with the remote target. The default is 10
20073characters. Setting the limit to -1 means there's no limit.
20074
20075@item show syn-garbage-limit
eb17f351 20076@kindex show syn-garbage-limit@r{, @acronym{MIPS} remote}
ba04e063
EZ
20077Show the current limit on the number of characters to ignore when
20078trying to synchronize with the remote system.
20079
20080@item set monitor-prompt @var{prompt}
eb17f351 20081@kindex set monitor-prompt@r{, @acronym{MIPS} remote}
ba04e063
EZ
20082@cindex remote monitor prompt
20083Tell @value{GDBN} to expect the specified @var{prompt} string from the
20084remote monitor. The default depends on the target:
20085@table @asis
20086@item pmon target
20087@samp{PMON}
20088@item ddb target
20089@samp{NEC010}
20090@item lsi target
20091@samp{PMON>}
20092@end table
20093
20094@item show monitor-prompt
eb17f351 20095@kindex show monitor-prompt@r{, @acronym{MIPS} remote}
ba04e063
EZ
20096Show the current strings @value{GDBN} expects as the prompt from the
20097remote monitor.
20098
20099@item set monitor-warnings
eb17f351 20100@kindex set monitor-warnings@r{, @acronym{MIPS} remote}
ba04e063
EZ
20101Enable or disable monitor warnings about hardware breakpoints. This
20102has effect only for the @code{lsi} target. When on, @value{GDBN} will
20103display warning messages whose codes are returned by the @code{lsi}
20104PMON monitor for breakpoint commands.
20105
20106@item show monitor-warnings
eb17f351 20107@kindex show monitor-warnings@r{, @acronym{MIPS} remote}
ba04e063
EZ
20108Show the current setting of printing monitor warnings.
20109
20110@item pmon @var{command}
eb17f351 20111@kindex pmon@r{, @acronym{MIPS} remote}
ba04e063
EZ
20112@cindex send PMON command
20113This command allows sending an arbitrary @var{command} string to the
20114monitor. The monitor must be in debug mode for this to work.
8e04817f 20115@end table
104c1213 20116
a37295f9
MM
20117@node OpenRISC 1000
20118@subsection OpenRISC 1000
20119@cindex OpenRISC 1000
20120
20121@cindex or1k boards
20122See OR1k Architecture document (@uref{www.opencores.org}) for more information
20123about platform and commands.
20124
20125@table @code
20126
20127@kindex target jtag
20128@item target jtag jtag://@var{host}:@var{port}
20129
20130Connects to remote JTAG server.
20131JTAG remote server can be either an or1ksim or JTAG server,
20132connected via parallel port to the board.
20133
20134Example: @code{target jtag jtag://localhost:9999}
20135
20136@kindex or1ksim
20137@item or1ksim @var{command}
20138If connected to @code{or1ksim} OpenRISC 1000 Architectural
20139Simulator, proprietary commands can be executed.
20140
20141@kindex info or1k spr
20142@item info or1k spr
20143Displays spr groups.
20144
20145@item info or1k spr @var{group}
20146@itemx info or1k spr @var{groupno}
20147Displays register names in selected group.
20148
20149@item info or1k spr @var{group} @var{register}
20150@itemx info or1k spr @var{register}
20151@itemx info or1k spr @var{groupno} @var{registerno}
20152@itemx info or1k spr @var{registerno}
20153Shows information about specified spr register.
20154
20155@kindex spr
20156@item spr @var{group} @var{register} @var{value}
20157@itemx spr @var{register @var{value}}
20158@itemx spr @var{groupno} @var{registerno @var{value}}
20159@itemx spr @var{registerno @var{value}}
20160Writes @var{value} to specified spr register.
20161@end table
20162
20163Some implementations of OpenRISC 1000 Architecture also have hardware trace.
20164It is very similar to @value{GDBN} trace, except it does not interfere with normal
20165program execution and is thus much faster. Hardware breakpoints/watchpoint
20166triggers can be set using:
20167@table @code
20168@item $LEA/$LDATA
20169Load effective address/data
20170@item $SEA/$SDATA
20171Store effective address/data
20172@item $AEA/$ADATA
20173Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
20174@item $FETCH
20175Fetch data
20176@end table
20177
20178When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
20179@code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
20180
20181@code{htrace} commands:
20182@cindex OpenRISC 1000 htrace
20183@table @code
20184@kindex hwatch
20185@item hwatch @var{conditional}
d3e8051b 20186Set hardware watchpoint on combination of Load/Store Effective Address(es)
a37295f9
MM
20187or Data. For example:
20188
20189@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
20190
20191@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
20192
4644b6e3 20193@kindex htrace
a37295f9
MM
20194@item htrace info
20195Display information about current HW trace configuration.
20196
a37295f9
MM
20197@item htrace trigger @var{conditional}
20198Set starting criteria for HW trace.
20199
a37295f9
MM
20200@item htrace qualifier @var{conditional}
20201Set acquisition qualifier for HW trace.
20202
a37295f9
MM
20203@item htrace stop @var{conditional}
20204Set HW trace stopping criteria.
20205
f153cc92 20206@item htrace record [@var{data}]*
a37295f9
MM
20207Selects the data to be recorded, when qualifier is met and HW trace was
20208triggered.
20209
a37295f9 20210@item htrace enable
a37295f9
MM
20211@itemx htrace disable
20212Enables/disables the HW trace.
20213
f153cc92 20214@item htrace rewind [@var{filename}]
a37295f9
MM
20215Clears currently recorded trace data.
20216
20217If filename is specified, new trace file is made and any newly collected data
20218will be written there.
20219
f153cc92 20220@item htrace print [@var{start} [@var{len}]]
a37295f9
MM
20221Prints trace buffer, using current record configuration.
20222
a37295f9
MM
20223@item htrace mode continuous
20224Set continuous trace mode.
20225
a37295f9
MM
20226@item htrace mode suspend
20227Set suspend trace mode.
20228
20229@end table
20230
4acd40f3
TJB
20231@node PowerPC Embedded
20232@subsection PowerPC Embedded
104c1213 20233
66b73624
TJB
20234@cindex DVC register
20235@value{GDBN} supports using the DVC (Data Value Compare) register to
20236implement in hardware simple hardware watchpoint conditions of the form:
20237
20238@smallexample
20239(@value{GDBP}) watch @var{ADDRESS|VARIABLE} \
20240 if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION}
20241@end smallexample
20242
e09342b5
TJB
20243The DVC register will be automatically used when @value{GDBN} detects
20244such pattern in a condition expression, and the created watchpoint uses one
20245debug register (either the @code{exact-watchpoints} option is on and the
20246variable is scalar, or the variable has a length of one byte). This feature
20247is available in native @value{GDBN} running on a Linux kernel version 2.6.34
20248or newer.
20249
20250When running on PowerPC embedded processors, @value{GDBN} automatically uses
20251ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on,
20252in which case watchpoints using only one debug register are created when
20253watching variables of scalar types.
20254
20255You can create an artificial array to watch an arbitrary memory
20256region using one of the following commands (@pxref{Expressions}):
20257
20258@smallexample
20259(@value{GDBP}) watch *((char *) @var{address})@@@var{length}
20260(@value{GDBP}) watch @{char[@var{length}]@} @var{address}
20261@end smallexample
66b73624 20262
9c06b0b4
TJB
20263PowerPC embedded processors support masked watchpoints. See the discussion
20264about the @code{mask} argument in @ref{Set Watchpoints}.
20265
f1310107
TJB
20266@cindex ranged breakpoint
20267PowerPC embedded processors support hardware accelerated
20268@dfn{ranged breakpoints}. A ranged breakpoint stops execution of
20269the inferior whenever it executes an instruction at any address within
20270the range it specifies. To set a ranged breakpoint in @value{GDBN},
20271use the @code{break-range} command.
20272
55eddb0f
DJ
20273@value{GDBN} provides the following PowerPC-specific commands:
20274
104c1213 20275@table @code
f1310107
TJB
20276@kindex break-range
20277@item break-range @var{start-location}, @var{end-location}
20278Set a breakpoint for an address range.
20279@var{start-location} and @var{end-location} can specify a function name,
20280a line number, an offset of lines from the current line or from the start
20281location, or an address of an instruction (see @ref{Specify Location},
20282for a list of all the possible ways to specify a @var{location}.)
20283The breakpoint will stop execution of the inferior whenever it
20284executes an instruction at any address within the specified range,
20285(including @var{start-location} and @var{end-location}.)
20286
55eddb0f
DJ
20287@kindex set powerpc
20288@item set powerpc soft-float
20289@itemx show powerpc soft-float
20290Force @value{GDBN} to use (or not use) a software floating point calling
20291convention. By default, @value{GDBN} selects the calling convention based
20292on the selected architecture and the provided executable file.
20293
20294@item set powerpc vector-abi
20295@itemx show powerpc vector-abi
20296Force @value{GDBN} to use the specified calling convention for vector
20297arguments and return values. The valid options are @samp{auto};
20298@samp{generic}, to avoid vector registers even if they are present;
20299@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE
20300registers. By default, @value{GDBN} selects the calling convention
20301based on the selected architecture and the provided executable file.
20302
e09342b5
TJB
20303@item set powerpc exact-watchpoints
20304@itemx show powerpc exact-watchpoints
20305Allow @value{GDBN} to use only one debug register when watching a variable
20306of scalar type, thus assuming that the variable is accessed through the
20307address of its first byte.
20308
8e04817f
AC
20309@kindex target dink32
20310@item target dink32 @var{dev}
20311DINK32 ROM monitor.
104c1213 20312
8e04817f
AC
20313@kindex target ppcbug
20314@item target ppcbug @var{dev}
20315@kindex target ppcbug1
20316@item target ppcbug1 @var{dev}
20317PPCBUG ROM monitor for PowerPC.
104c1213 20318
8e04817f
AC
20319@kindex target sds
20320@item target sds @var{dev}
20321SDS monitor, running on a PowerPC board (such as Motorola's ADS).
c45da7e6 20322@end table
8e04817f 20323
c45da7e6 20324@cindex SDS protocol
d52fb0e9 20325The following commands specific to the SDS protocol are supported
55eddb0f 20326by @value{GDBN}:
c45da7e6
EZ
20327
20328@table @code
20329@item set sdstimeout @var{nsec}
20330@kindex set sdstimeout
20331Set the timeout for SDS protocol reads to be @var{nsec} seconds. The
20332default is 2 seconds.
20333
20334@item show sdstimeout
20335@kindex show sdstimeout
20336Show the current value of the SDS timeout.
20337
20338@item sds @var{command}
20339@kindex sds@r{, a command}
20340Send the specified @var{command} string to the SDS monitor.
8e04817f
AC
20341@end table
20342
c45da7e6 20343
8e04817f
AC
20344@node PA
20345@subsection HP PA Embedded
104c1213
JM
20346
20347@table @code
20348
8e04817f
AC
20349@kindex target op50n
20350@item target op50n @var{dev}
20351OP50N monitor, running on an OKI HPPA board.
20352
20353@kindex target w89k
20354@item target w89k @var{dev}
20355W89K monitor, running on a Winbond HPPA board.
104c1213
JM
20356
20357@end table
20358
8e04817f
AC
20359@node Sparclet
20360@subsection Tsqware Sparclet
104c1213 20361
8e04817f
AC
20362@cindex Sparclet
20363
20364@value{GDBN} enables developers to debug tasks running on
20365Sparclet targets from a Unix host.
20366@value{GDBN} uses code that runs on
20367both the Unix host and on the Sparclet target. The program
20368@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213 20369
8e04817f
AC
20370@table @code
20371@item remotetimeout @var{args}
20372@kindex remotetimeout
20373@value{GDBN} supports the option @code{remotetimeout}.
20374This option is set by the user, and @var{args} represents the number of
20375seconds @value{GDBN} waits for responses.
104c1213
JM
20376@end table
20377
8e04817f
AC
20378@cindex compiling, on Sparclet
20379When compiling for debugging, include the options @samp{-g} to get debug
20380information and @samp{-Ttext} to relocate the program to where you wish to
20381load it on the target. You may also want to add the options @samp{-n} or
20382@samp{-N} in order to reduce the size of the sections. Example:
104c1213 20383
474c8240 20384@smallexample
8e04817f 20385sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
474c8240 20386@end smallexample
104c1213 20387
8e04817f 20388You can use @code{objdump} to verify that the addresses are what you intended:
104c1213 20389
474c8240 20390@smallexample
8e04817f 20391sparclet-aout-objdump --headers --syms prog
474c8240 20392@end smallexample
104c1213 20393
8e04817f
AC
20394@cindex running, on Sparclet
20395Once you have set
20396your Unix execution search path to find @value{GDBN}, you are ready to
20397run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
20398(or @code{sparclet-aout-gdb}, depending on your installation).
104c1213 20399
8e04817f
AC
20400@value{GDBN} comes up showing the prompt:
20401
474c8240 20402@smallexample
8e04817f 20403(gdbslet)
474c8240 20404@end smallexample
104c1213
JM
20405
20406@menu
8e04817f
AC
20407* Sparclet File:: Setting the file to debug
20408* Sparclet Connection:: Connecting to Sparclet
20409* Sparclet Download:: Sparclet download
20410* Sparclet Execution:: Running and debugging
104c1213
JM
20411@end menu
20412
8e04817f 20413@node Sparclet File
79a6e687 20414@subsubsection Setting File to Debug
104c1213 20415
8e04817f 20416The @value{GDBN} command @code{file} lets you choose with program to debug.
104c1213 20417
474c8240 20418@smallexample
8e04817f 20419(gdbslet) file prog
474c8240 20420@end smallexample
104c1213 20421
8e04817f
AC
20422@need 1000
20423@value{GDBN} then attempts to read the symbol table of @file{prog}.
20424@value{GDBN} locates
20425the file by searching the directories listed in the command search
20426path.
12c27660 20427If the file was compiled with debug information (option @samp{-g}), source
8e04817f
AC
20428files will be searched as well.
20429@value{GDBN} locates
20430the source files by searching the directories listed in the directory search
79a6e687 20431path (@pxref{Environment, ,Your Program's Environment}).
8e04817f
AC
20432If it fails
20433to find a file, it displays a message such as:
104c1213 20434
474c8240 20435@smallexample
8e04817f 20436prog: No such file or directory.
474c8240 20437@end smallexample
104c1213 20438
8e04817f
AC
20439When this happens, add the appropriate directories to the search paths with
20440the @value{GDBN} commands @code{path} and @code{dir}, and execute the
20441@code{target} command again.
104c1213 20442
8e04817f
AC
20443@node Sparclet Connection
20444@subsubsection Connecting to Sparclet
104c1213 20445
8e04817f
AC
20446The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
20447To connect to a target on serial port ``@code{ttya}'', type:
104c1213 20448
474c8240 20449@smallexample
8e04817f
AC
20450(gdbslet) target sparclet /dev/ttya
20451Remote target sparclet connected to /dev/ttya
20452main () at ../prog.c:3
474c8240 20453@end smallexample
104c1213 20454
8e04817f
AC
20455@need 750
20456@value{GDBN} displays messages like these:
104c1213 20457
474c8240 20458@smallexample
8e04817f 20459Connected to ttya.
474c8240 20460@end smallexample
104c1213 20461
8e04817f 20462@node Sparclet Download
79a6e687 20463@subsubsection Sparclet Download
104c1213 20464
8e04817f
AC
20465@cindex download to Sparclet
20466Once connected to the Sparclet target,
20467you can use the @value{GDBN}
20468@code{load} command to download the file from the host to the target.
20469The file name and load offset should be given as arguments to the @code{load}
20470command.
20471Since the file format is aout, the program must be loaded to the starting
20472address. You can use @code{objdump} to find out what this value is. The load
20473offset is an offset which is added to the VMA (virtual memory address)
20474of each of the file's sections.
20475For instance, if the program
20476@file{prog} was linked to text address 0x1201000, with data at 0x12010160
20477and bss at 0x12010170, in @value{GDBN}, type:
104c1213 20478
474c8240 20479@smallexample
8e04817f
AC
20480(gdbslet) load prog 0x12010000
20481Loading section .text, size 0xdb0 vma 0x12010000
474c8240 20482@end smallexample
104c1213 20483
8e04817f
AC
20484If the code is loaded at a different address then what the program was linked
20485to, you may need to use the @code{section} and @code{add-symbol-file} commands
20486to tell @value{GDBN} where to map the symbol table.
20487
20488@node Sparclet Execution
79a6e687 20489@subsubsection Running and Debugging
8e04817f
AC
20490
20491@cindex running and debugging Sparclet programs
20492You can now begin debugging the task using @value{GDBN}'s execution control
20493commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
20494manual for the list of commands.
20495
474c8240 20496@smallexample
8e04817f
AC
20497(gdbslet) b main
20498Breakpoint 1 at 0x12010000: file prog.c, line 3.
20499(gdbslet) run
20500Starting program: prog
20501Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
205023 char *symarg = 0;
20503(gdbslet) step
205044 char *execarg = "hello!";
20505(gdbslet)
474c8240 20506@end smallexample
8e04817f
AC
20507
20508@node Sparclite
20509@subsection Fujitsu Sparclite
104c1213
JM
20510
20511@table @code
20512
8e04817f
AC
20513@kindex target sparclite
20514@item target sparclite @var{dev}
20515Fujitsu sparclite boards, used only for the purpose of loading.
20516You must use an additional command to debug the program.
20517For example: target remote @var{dev} using @value{GDBN} standard
20518remote protocol.
104c1213
JM
20519
20520@end table
20521
8e04817f
AC
20522@node Z8000
20523@subsection Zilog Z8000
104c1213 20524
8e04817f
AC
20525@cindex Z8000
20526@cindex simulator, Z8000
20527@cindex Zilog Z8000 simulator
104c1213 20528
8e04817f
AC
20529When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
20530a Z8000 simulator.
20531
20532For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
20533unsegmented variant of the Z8000 architecture) or the Z8001 (the
20534segmented variant). The simulator recognizes which architecture is
20535appropriate by inspecting the object code.
104c1213 20536
8e04817f
AC
20537@table @code
20538@item target sim @var{args}
20539@kindex sim
20540@kindex target sim@r{, with Z8000}
20541Debug programs on a simulated CPU. If the simulator supports setup
20542options, specify them via @var{args}.
104c1213
JM
20543@end table
20544
8e04817f
AC
20545@noindent
20546After specifying this target, you can debug programs for the simulated
20547CPU in the same style as programs for your host computer; use the
20548@code{file} command to load a new program image, the @code{run} command
20549to run your program, and so on.
20550
20551As well as making available all the usual machine registers
20552(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
20553additional items of information as specially named registers:
104c1213
JM
20554
20555@table @code
20556
8e04817f
AC
20557@item cycles
20558Counts clock-ticks in the simulator.
104c1213 20559
8e04817f
AC
20560@item insts
20561Counts instructions run in the simulator.
104c1213 20562
8e04817f
AC
20563@item time
20564Execution time in 60ths of a second.
104c1213 20565
8e04817f 20566@end table
104c1213 20567
8e04817f
AC
20568You can refer to these values in @value{GDBN} expressions with the usual
20569conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
20570conditional breakpoint that suspends only after at least 5000
20571simulated clock ticks.
104c1213 20572
a64548ea
EZ
20573@node AVR
20574@subsection Atmel AVR
20575@cindex AVR
20576
20577When configured for debugging the Atmel AVR, @value{GDBN} supports the
20578following AVR-specific commands:
20579
20580@table @code
20581@item info io_registers
20582@kindex info io_registers@r{, AVR}
20583@cindex I/O registers (Atmel AVR)
20584This command displays information about the AVR I/O registers. For
20585each register, @value{GDBN} prints its number and value.
20586@end table
20587
20588@node CRIS
20589@subsection CRIS
20590@cindex CRIS
20591
20592When configured for debugging CRIS, @value{GDBN} provides the
20593following CRIS-specific commands:
20594
20595@table @code
20596@item set cris-version @var{ver}
20597@cindex CRIS version
e22e55c9
OF
20598Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}.
20599The CRIS version affects register names and sizes. This command is useful in
20600case autodetection of the CRIS version fails.
a64548ea
EZ
20601
20602@item show cris-version
20603Show the current CRIS version.
20604
20605@item set cris-dwarf2-cfi
20606@cindex DWARF-2 CFI and CRIS
e22e55c9
OF
20607Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}.
20608Change to @samp{off} when using @code{gcc-cris} whose version is below
20609@code{R59}.
a64548ea
EZ
20610
20611@item show cris-dwarf2-cfi
20612Show the current state of using DWARF-2 CFI.
e22e55c9
OF
20613
20614@item set cris-mode @var{mode}
20615@cindex CRIS mode
20616Set the current CRIS mode to @var{mode}. It should only be changed when
20617debugging in guru mode, in which case it should be set to
20618@samp{guru} (the default is @samp{normal}).
20619
20620@item show cris-mode
20621Show the current CRIS mode.
a64548ea
EZ
20622@end table
20623
20624@node Super-H
20625@subsection Renesas Super-H
20626@cindex Super-H
20627
20628For the Renesas Super-H processor, @value{GDBN} provides these
20629commands:
20630
20631@table @code
c055b101
CV
20632@item set sh calling-convention @var{convention}
20633@kindex set sh calling-convention
20634Set the calling-convention used when calling functions from @value{GDBN}.
20635Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}.
20636With the @samp{gcc} setting, functions are called using the @value{NGCC} calling
20637convention. If the DWARF-2 information of the called function specifies
20638that the function follows the Renesas calling convention, the function
20639is called using the Renesas calling convention. If the calling convention
20640is set to @samp{renesas}, the Renesas calling convention is always used,
20641regardless of the DWARF-2 information. This can be used to override the
20642default of @samp{gcc} if debug information is missing, or the compiler
20643does not emit the DWARF-2 calling convention entry for a function.
20644
20645@item show sh calling-convention
20646@kindex show sh calling-convention
20647Show the current calling convention setting.
20648
a64548ea
EZ
20649@end table
20650
20651
8e04817f
AC
20652@node Architectures
20653@section Architectures
104c1213 20654
8e04817f
AC
20655This section describes characteristics of architectures that affect
20656all uses of @value{GDBN} with the architecture, both native and cross.
104c1213 20657
8e04817f 20658@menu
9c16f35a 20659* i386::
8e04817f
AC
20660* Alpha::
20661* MIPS::
a64548ea 20662* HPPA:: HP PA architecture
23d964e7 20663* SPU:: Cell Broadband Engine SPU architecture
4acd40f3 20664* PowerPC::
8e04817f 20665@end menu
104c1213 20666
9c16f35a 20667@node i386
db2e3e2e 20668@subsection x86 Architecture-specific Issues
9c16f35a
EZ
20669
20670@table @code
20671@item set struct-convention @var{mode}
20672@kindex set struct-convention
20673@cindex struct return convention
20674@cindex struct/union returned in registers
20675Set the convention used by the inferior to return @code{struct}s and
20676@code{union}s from functions to @var{mode}. Possible values of
20677@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the
20678default). @code{"default"} or @code{"pcc"} means that @code{struct}s
20679are returned on the stack, while @code{"reg"} means that a
20680@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will
20681be returned in a register.
20682
20683@item show struct-convention
20684@kindex show struct-convention
20685Show the current setting of the convention to return @code{struct}s
20686from functions.
20687@end table
20688
8e04817f
AC
20689@node Alpha
20690@subsection Alpha
104c1213 20691
8e04817f 20692See the following section.
104c1213 20693
8e04817f 20694@node MIPS
eb17f351 20695@subsection @acronym{MIPS}
104c1213 20696
8e04817f 20697@cindex stack on Alpha
eb17f351 20698@cindex stack on @acronym{MIPS}
8e04817f 20699@cindex Alpha stack
eb17f351
EZ
20700@cindex @acronym{MIPS} stack
20701Alpha- and @acronym{MIPS}-based computers use an unusual stack frame, which
8e04817f
AC
20702sometimes requires @value{GDBN} to search backward in the object code to
20703find the beginning of a function.
104c1213 20704
eb17f351 20705@cindex response time, @acronym{MIPS} debugging
8e04817f
AC
20706To improve response time (especially for embedded applications, where
20707@value{GDBN} may be restricted to a slow serial line for this search)
20708you may want to limit the size of this search, using one of these
20709commands:
104c1213 20710
8e04817f 20711@table @code
eb17f351 20712@cindex @code{heuristic-fence-post} (Alpha, @acronym{MIPS})
8e04817f
AC
20713@item set heuristic-fence-post @var{limit}
20714Restrict @value{GDBN} to examining at most @var{limit} bytes in its
20715search for the beginning of a function. A value of @var{0} (the
20716default) means there is no limit. However, except for @var{0}, the
20717larger the limit the more bytes @code{heuristic-fence-post} must search
e2f4edfd
EZ
20718and therefore the longer it takes to run. You should only need to use
20719this command when debugging a stripped executable.
104c1213 20720
8e04817f
AC
20721@item show heuristic-fence-post
20722Display the current limit.
20723@end table
104c1213
JM
20724
20725@noindent
8e04817f 20726These commands are available @emph{only} when @value{GDBN} is configured
eb17f351 20727for debugging programs on Alpha or @acronym{MIPS} processors.
104c1213 20728
eb17f351 20729Several @acronym{MIPS}-specific commands are available when debugging @acronym{MIPS}
a64548ea
EZ
20730programs:
20731
20732@table @code
a64548ea
EZ
20733@item set mips abi @var{arg}
20734@kindex set mips abi
eb17f351
EZ
20735@cindex set ABI for @acronym{MIPS}
20736Tell @value{GDBN} which @acronym{MIPS} ABI is used by the inferior. Possible
a64548ea
EZ
20737values of @var{arg} are:
20738
20739@table @samp
20740@item auto
20741The default ABI associated with the current binary (this is the
20742default).
20743@item o32
20744@item o64
20745@item n32
20746@item n64
20747@item eabi32
20748@item eabi64
a64548ea
EZ
20749@end table
20750
20751@item show mips abi
20752@kindex show mips abi
eb17f351 20753Show the @acronym{MIPS} ABI used by @value{GDBN} to debug the inferior.
a64548ea 20754
4cc0665f
MR
20755@item set mips compression @var{arg}
20756@kindex set mips compression
20757@cindex code compression, @acronym{MIPS}
20758Tell @value{GDBN} which @acronym{MIPS} compressed
20759@acronym{ISA, Instruction Set Architecture} encoding is used by the
20760inferior. @value{GDBN} uses this for code disassembly and other
20761internal interpretation purposes. This setting is only referred to
20762when no executable has been associated with the debugging session or
20763the executable does not provide information about the encoding it uses.
20764Otherwise this setting is automatically updated from information
20765provided by the executable.
20766
20767Possible values of @var{arg} are @samp{mips16} and @samp{micromips}.
20768The default compressed @acronym{ISA} encoding is @samp{mips16}, as
20769executables containing @acronym{MIPS16} code frequently are not
20770identified as such.
20771
20772This setting is ``sticky''; that is, it retains its value across
20773debugging sessions until reset either explicitly with this command or
20774implicitly from an executable.
20775
20776The compiler and/or assembler typically add symbol table annotations to
20777identify functions compiled for the @acronym{MIPS16} or
20778@acronym{microMIPS} @acronym{ISA}s. If these function-scope annotations
20779are present, @value{GDBN} uses them in preference to the global
20780compressed @acronym{ISA} encoding setting.
20781
20782@item show mips compression
20783@kindex show mips compression
20784Show the @acronym{MIPS} compressed @acronym{ISA} encoding used by
20785@value{GDBN} to debug the inferior.
20786
a64548ea
EZ
20787@item set mipsfpu
20788@itemx show mipsfpu
20789@xref{MIPS Embedded, set mipsfpu}.
20790
20791@item set mips mask-address @var{arg}
20792@kindex set mips mask-address
eb17f351 20793@cindex @acronym{MIPS} addresses, masking
a64548ea 20794This command determines whether the most-significant 32 bits of 64-bit
eb17f351 20795@acronym{MIPS} addresses are masked off. The argument @var{arg} can be
a64548ea
EZ
20796@samp{on}, @samp{off}, or @samp{auto}. The latter is the default
20797setting, which lets @value{GDBN} determine the correct value.
20798
20799@item show mips mask-address
20800@kindex show mips mask-address
eb17f351 20801Show whether the upper 32 bits of @acronym{MIPS} addresses are masked off or
a64548ea
EZ
20802not.
20803
20804@item set remote-mips64-transfers-32bit-regs
20805@kindex set remote-mips64-transfers-32bit-regs
eb17f351
EZ
20806This command controls compatibility with 64-bit @acronym{MIPS} targets that
20807transfer data in 32-bit quantities. If you have an old @acronym{MIPS} 64 target
a64548ea
EZ
20808that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr},
20809and 64 bits for other registers, set this option to @samp{on}.
20810
20811@item show remote-mips64-transfers-32bit-regs
20812@kindex show remote-mips64-transfers-32bit-regs
eb17f351 20813Show the current setting of compatibility with older @acronym{MIPS} 64 targets.
a64548ea
EZ
20814
20815@item set debug mips
20816@kindex set debug mips
eb17f351 20817This command turns on and off debugging messages for the @acronym{MIPS}-specific
a64548ea
EZ
20818target code in @value{GDBN}.
20819
20820@item show debug mips
20821@kindex show debug mips
eb17f351 20822Show the current setting of @acronym{MIPS} debugging messages.
a64548ea
EZ
20823@end table
20824
20825
20826@node HPPA
20827@subsection HPPA
20828@cindex HPPA support
20829
d3e8051b 20830When @value{GDBN} is debugging the HP PA architecture, it provides the
a64548ea
EZ
20831following special commands:
20832
20833@table @code
20834@item set debug hppa
20835@kindex set debug hppa
db2e3e2e 20836This command determines whether HPPA architecture-specific debugging
a64548ea
EZ
20837messages are to be displayed.
20838
20839@item show debug hppa
20840Show whether HPPA debugging messages are displayed.
20841
20842@item maint print unwind @var{address}
20843@kindex maint print unwind@r{, HPPA}
20844This command displays the contents of the unwind table entry at the
20845given @var{address}.
20846
20847@end table
20848
104c1213 20849
23d964e7
UW
20850@node SPU
20851@subsection Cell Broadband Engine SPU architecture
20852@cindex Cell Broadband Engine
20853@cindex SPU
20854
20855When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
20856it provides the following special commands:
20857
20858@table @code
20859@item info spu event
20860@kindex info spu
20861Display SPU event facility status. Shows current event mask
20862and pending event status.
20863
20864@item info spu signal
20865Display SPU signal notification facility status. Shows pending
20866signal-control word and signal notification mode of both signal
20867notification channels.
20868
20869@item info spu mailbox
20870Display SPU mailbox facility status. Shows all pending entries,
20871in order of processing, in each of the SPU Write Outbound,
20872SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
20873
20874@item info spu dma
20875Display MFC DMA status. Shows all pending commands in the MFC
20876DMA queue. For each entry, opcode, tag, class IDs, effective
20877and local store addresses and transfer size are shown.
20878
20879@item info spu proxydma
20880Display MFC Proxy-DMA status. Shows all pending commands in the MFC
20881Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
20882and local store addresses and transfer size are shown.
20883
20884@end table
20885
3285f3fe
UW
20886When @value{GDBN} is debugging a combined PowerPC/SPU application
20887on the Cell Broadband Engine, it provides in addition the following
20888special commands:
20889
20890@table @code
20891@item set spu stop-on-load @var{arg}
20892@kindex set spu
20893Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN}
20894will give control to the user when a new SPE thread enters its @code{main}
20895function. The default is @code{off}.
20896
20897@item show spu stop-on-load
20898@kindex show spu
20899Show whether to stop for new SPE threads.
20900
ff1a52c6
UW
20901@item set spu auto-flush-cache @var{arg}
20902Set whether to automatically flush the software-managed cache. When set to
20903@code{on}, @value{GDBN} will automatically cause the SPE software-managed
20904cache to be flushed whenever SPE execution stops. This provides a consistent
20905view of PowerPC memory that is accessed via the cache. If an application
20906does not use the software-managed cache, this option has no effect.
20907
20908@item show spu auto-flush-cache
20909Show whether to automatically flush the software-managed cache.
20910
3285f3fe
UW
20911@end table
20912
4acd40f3
TJB
20913@node PowerPC
20914@subsection PowerPC
20915@cindex PowerPC architecture
20916
20917When @value{GDBN} is debugging the PowerPC architecture, it provides a set of
20918pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
20919numbers stored in the floating point registers. These values must be stored
20920in two consecutive registers, always starting at an even register like
20921@code{f0} or @code{f2}.
20922
20923The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed
20924by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0},
20925@code{f2} and @code{f3} for @code{$dl1} and so on.
20926
aeac0ff9 20927For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit
677c5bb1
LM
20928wide Extended Floating Point Registers (@samp{f32} through @samp{f63}).
20929
23d964e7 20930
8e04817f
AC
20931@node Controlling GDB
20932@chapter Controlling @value{GDBN}
20933
20934You can alter the way @value{GDBN} interacts with you by using the
20935@code{set} command. For commands controlling how @value{GDBN} displays
79a6e687 20936data, see @ref{Print Settings, ,Print Settings}. Other settings are
8e04817f
AC
20937described here.
20938
20939@menu
20940* Prompt:: Prompt
20941* Editing:: Command editing
d620b259 20942* Command History:: Command history
8e04817f
AC
20943* Screen Size:: Screen size
20944* Numbers:: Numbers
1e698235 20945* ABI:: Configuring the current ABI
bf88dd68 20946* Auto-loading:: Automatically loading associated files
8e04817f
AC
20947* Messages/Warnings:: Optional warnings and messages
20948* Debugging Output:: Optional messages about internal happenings
14fb1bac 20949* Other Misc Settings:: Other Miscellaneous Settings
8e04817f
AC
20950@end menu
20951
20952@node Prompt
20953@section Prompt
104c1213 20954
8e04817f 20955@cindex prompt
104c1213 20956
8e04817f
AC
20957@value{GDBN} indicates its readiness to read a command by printing a string
20958called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
20959can change the prompt string with the @code{set prompt} command. For
20960instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
20961the prompt in one of the @value{GDBN} sessions so that you can always tell
20962which one you are talking to.
104c1213 20963
8e04817f
AC
20964@emph{Note:} @code{set prompt} does not add a space for you after the
20965prompt you set. This allows you to set a prompt which ends in a space
20966or a prompt that does not.
104c1213 20967
8e04817f
AC
20968@table @code
20969@kindex set prompt
20970@item set prompt @var{newprompt}
20971Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
104c1213 20972
8e04817f
AC
20973@kindex show prompt
20974@item show prompt
20975Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
104c1213
JM
20976@end table
20977
fa3a4f15
PM
20978Versions of @value{GDBN} that ship with Python scripting enabled have
20979prompt extensions. The commands for interacting with these extensions
20980are:
20981
20982@table @code
20983@kindex set extended-prompt
20984@item set extended-prompt @var{prompt}
20985Set an extended prompt that allows for substitutions.
20986@xref{gdb.prompt}, for a list of escape sequences that can be used for
20987substitution. Any escape sequences specified as part of the prompt
20988string are replaced with the corresponding strings each time the prompt
20989is displayed.
20990
20991For example:
20992
20993@smallexample
20994set extended-prompt Current working directory: \w (gdb)
20995@end smallexample
20996
20997Note that when an extended-prompt is set, it takes control of the
20998@var{prompt_hook} hook. @xref{prompt_hook}, for further information.
20999
21000@kindex show extended-prompt
21001@item show extended-prompt
21002Prints the extended prompt. Any escape sequences specified as part of
21003the prompt string with @code{set extended-prompt}, are replaced with the
21004corresponding strings each time the prompt is displayed.
21005@end table
21006
8e04817f 21007@node Editing
79a6e687 21008@section Command Editing
8e04817f
AC
21009@cindex readline
21010@cindex command line editing
104c1213 21011
703663ab 21012@value{GDBN} reads its input commands via the @dfn{Readline} interface. This
8e04817f
AC
21013@sc{gnu} library provides consistent behavior for programs which provide a
21014command line interface to the user. Advantages are @sc{gnu} Emacs-style
21015or @dfn{vi}-style inline editing of commands, @code{csh}-like history
21016substitution, and a storage and recall of command history across
21017debugging sessions.
104c1213 21018
8e04817f
AC
21019You may control the behavior of command line editing in @value{GDBN} with the
21020command @code{set}.
104c1213 21021
8e04817f
AC
21022@table @code
21023@kindex set editing
21024@cindex editing
21025@item set editing
21026@itemx set editing on
21027Enable command line editing (enabled by default).
104c1213 21028
8e04817f
AC
21029@item set editing off
21030Disable command line editing.
104c1213 21031
8e04817f
AC
21032@kindex show editing
21033@item show editing
21034Show whether command line editing is enabled.
104c1213
JM
21035@end table
21036
39037522
TT
21037@ifset SYSTEM_READLINE
21038@xref{Command Line Editing, , , rluserman, GNU Readline Library},
21039@end ifset
21040@ifclear SYSTEM_READLINE
21041@xref{Command Line Editing},
21042@end ifclear
21043for more details about the Readline
703663ab
EZ
21044interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
21045encouraged to read that chapter.
21046
d620b259 21047@node Command History
79a6e687 21048@section Command History
703663ab 21049@cindex command history
8e04817f
AC
21050
21051@value{GDBN} can keep track of the commands you type during your
21052debugging sessions, so that you can be certain of precisely what
21053happened. Use these commands to manage the @value{GDBN} command
21054history facility.
104c1213 21055
703663ab 21056@value{GDBN} uses the @sc{gnu} History library, a part of the Readline
39037522
TT
21057package, to provide the history facility.
21058@ifset SYSTEM_READLINE
21059@xref{Using History Interactively, , , history, GNU History Library},
21060@end ifset
21061@ifclear SYSTEM_READLINE
21062@xref{Using History Interactively},
21063@end ifclear
21064for the detailed description of the History library.
703663ab 21065
d620b259 21066To issue a command to @value{GDBN} without affecting certain aspects of
9e6c4bd5
NR
21067the state which is seen by users, prefix it with @samp{server }
21068(@pxref{Server Prefix}). This
d620b259
NR
21069means that this command will not affect the command history, nor will it
21070affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
21071pressed on a line by itself.
21072
21073@cindex @code{server}, command prefix
21074The server prefix does not affect the recording of values into the value
21075history; to print a value without recording it into the value history,
21076use the @code{output} command instead of the @code{print} command.
21077
703663ab
EZ
21078Here is the description of @value{GDBN} commands related to command
21079history.
21080
104c1213 21081@table @code
8e04817f
AC
21082@cindex history substitution
21083@cindex history file
21084@kindex set history filename
4644b6e3 21085@cindex @env{GDBHISTFILE}, environment variable
8e04817f
AC
21086@item set history filename @var{fname}
21087Set the name of the @value{GDBN} command history file to @var{fname}.
21088This is the file where @value{GDBN} reads an initial command history
21089list, and where it writes the command history from this session when it
21090exits. You can access this list through history expansion or through
21091the history command editing characters listed below. This file defaults
21092to the value of the environment variable @code{GDBHISTFILE}, or to
21093@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
21094is not set.
104c1213 21095
9c16f35a
EZ
21096@cindex save command history
21097@kindex set history save
8e04817f
AC
21098@item set history save
21099@itemx set history save on
21100Record command history in a file, whose name may be specified with the
21101@code{set history filename} command. By default, this option is disabled.
104c1213 21102
8e04817f
AC
21103@item set history save off
21104Stop recording command history in a file.
104c1213 21105
8e04817f 21106@cindex history size
9c16f35a 21107@kindex set history size
6fc08d32 21108@cindex @env{HISTSIZE}, environment variable
8e04817f
AC
21109@item set history size @var{size}
21110Set the number of commands which @value{GDBN} keeps in its history list.
21111This defaults to the value of the environment variable
21112@code{HISTSIZE}, or to 256 if this variable is not set.
104c1213
JM
21113@end table
21114
8e04817f 21115History expansion assigns special meaning to the character @kbd{!}.
39037522
TT
21116@ifset SYSTEM_READLINE
21117@xref{Event Designators, , , history, GNU History Library},
21118@end ifset
21119@ifclear SYSTEM_READLINE
21120@xref{Event Designators},
21121@end ifclear
21122for more details.
8e04817f 21123
703663ab 21124@cindex history expansion, turn on/off
8e04817f
AC
21125Since @kbd{!} is also the logical not operator in C, history expansion
21126is off by default. If you decide to enable history expansion with the
21127@code{set history expansion on} command, you may sometimes need to
21128follow @kbd{!} (when it is used as logical not, in an expression) with
21129a space or a tab to prevent it from being expanded. The readline
21130history facilities do not attempt substitution on the strings
21131@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
21132
21133The commands to control history expansion are:
104c1213
JM
21134
21135@table @code
8e04817f
AC
21136@item set history expansion on
21137@itemx set history expansion
703663ab 21138@kindex set history expansion
8e04817f 21139Enable history expansion. History expansion is off by default.
104c1213 21140
8e04817f
AC
21141@item set history expansion off
21142Disable history expansion.
104c1213 21143
8e04817f
AC
21144@c @group
21145@kindex show history
21146@item show history
21147@itemx show history filename
21148@itemx show history save
21149@itemx show history size
21150@itemx show history expansion
21151These commands display the state of the @value{GDBN} history parameters.
21152@code{show history} by itself displays all four states.
21153@c @end group
21154@end table
21155
21156@table @code
9c16f35a
EZ
21157@kindex show commands
21158@cindex show last commands
21159@cindex display command history
8e04817f
AC
21160@item show commands
21161Display the last ten commands in the command history.
104c1213 21162
8e04817f
AC
21163@item show commands @var{n}
21164Print ten commands centered on command number @var{n}.
21165
21166@item show commands +
21167Print ten commands just after the commands last printed.
104c1213
JM
21168@end table
21169
8e04817f 21170@node Screen Size
79a6e687 21171@section Screen Size
8e04817f
AC
21172@cindex size of screen
21173@cindex pauses in output
104c1213 21174
8e04817f
AC
21175Certain commands to @value{GDBN} may produce large amounts of
21176information output to the screen. To help you read all of it,
21177@value{GDBN} pauses and asks you for input at the end of each page of
21178output. Type @key{RET} when you want to continue the output, or @kbd{q}
21179to discard the remaining output. Also, the screen width setting
21180determines when to wrap lines of output. Depending on what is being
21181printed, @value{GDBN} tries to break the line at a readable place,
21182rather than simply letting it overflow onto the following line.
21183
21184Normally @value{GDBN} knows the size of the screen from the terminal
21185driver software. For example, on Unix @value{GDBN} uses the termcap data base
21186together with the value of the @code{TERM} environment variable and the
21187@code{stty rows} and @code{stty cols} settings. If this is not correct,
21188you can override it with the @code{set height} and @code{set
21189width} commands:
21190
21191@table @code
21192@kindex set height
21193@kindex set width
21194@kindex show width
21195@kindex show height
21196@item set height @var{lpp}
21197@itemx show height
21198@itemx set width @var{cpl}
21199@itemx show width
21200These @code{set} commands specify a screen height of @var{lpp} lines and
21201a screen width of @var{cpl} characters. The associated @code{show}
21202commands display the current settings.
104c1213 21203
8e04817f
AC
21204If you specify a height of zero lines, @value{GDBN} does not pause during
21205output no matter how long the output is. This is useful if output is to a
21206file or to an editor buffer.
104c1213 21207
8e04817f
AC
21208Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
21209from wrapping its output.
9c16f35a
EZ
21210
21211@item set pagination on
21212@itemx set pagination off
21213@kindex set pagination
21214Turn the output pagination on or off; the default is on. Turning
7c953934
TT
21215pagination off is the alternative to @code{set height 0}. Note that
21216running @value{GDBN} with the @option{--batch} option (@pxref{Mode
21217Options, -batch}) also automatically disables pagination.
9c16f35a
EZ
21218
21219@item show pagination
21220@kindex show pagination
21221Show the current pagination mode.
104c1213
JM
21222@end table
21223
8e04817f
AC
21224@node Numbers
21225@section Numbers
21226@cindex number representation
21227@cindex entering numbers
104c1213 21228
8e04817f
AC
21229You can always enter numbers in octal, decimal, or hexadecimal in
21230@value{GDBN} by the usual conventions: octal numbers begin with
21231@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
eb2dae08
EZ
21232begin with @samp{0x}. Numbers that neither begin with @samp{0} or
21233@samp{0x}, nor end with a @samp{.} are, by default, entered in base
2123410; likewise, the default display for numbers---when no particular
21235format is specified---is base 10. You can change the default base for
21236both input and output with the commands described below.
104c1213 21237
8e04817f
AC
21238@table @code
21239@kindex set input-radix
21240@item set input-radix @var{base}
21241Set the default base for numeric input. Supported choices
21242for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 21243specified either unambiguously or using the current input radix; for
8e04817f 21244example, any of
104c1213 21245
8e04817f 21246@smallexample
9c16f35a
EZ
21247set input-radix 012
21248set input-radix 10.
21249set input-radix 0xa
8e04817f 21250@end smallexample
104c1213 21251
8e04817f 21252@noindent
9c16f35a 21253sets the input base to decimal. On the other hand, @samp{set input-radix 10}
eb2dae08
EZ
21254leaves the input radix unchanged, no matter what it was, since
21255@samp{10}, being without any leading or trailing signs of its base, is
21256interpreted in the current radix. Thus, if the current radix is 16,
21257@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't
21258change the radix.
104c1213 21259
8e04817f
AC
21260@kindex set output-radix
21261@item set output-radix @var{base}
21262Set the default base for numeric display. Supported choices
21263for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 21264specified either unambiguously or using the current input radix.
104c1213 21265
8e04817f
AC
21266@kindex show input-radix
21267@item show input-radix
21268Display the current default base for numeric input.
104c1213 21269
8e04817f
AC
21270@kindex show output-radix
21271@item show output-radix
21272Display the current default base for numeric display.
9c16f35a
EZ
21273
21274@item set radix @r{[}@var{base}@r{]}
21275@itemx show radix
21276@kindex set radix
21277@kindex show radix
21278These commands set and show the default base for both input and output
21279of numbers. @code{set radix} sets the radix of input and output to
21280the same base; without an argument, it resets the radix back to its
21281default value of 10.
21282
8e04817f 21283@end table
104c1213 21284
1e698235 21285@node ABI
79a6e687 21286@section Configuring the Current ABI
1e698235
DJ
21287
21288@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
21289application automatically. However, sometimes you need to override its
21290conclusions. Use these commands to manage @value{GDBN}'s view of the
21291current ABI.
21292
98b45e30
DJ
21293@cindex OS ABI
21294@kindex set osabi
b4e9345d 21295@kindex show osabi
98b45e30
DJ
21296
21297One @value{GDBN} configuration can debug binaries for multiple operating
b383017d 21298system targets, either via remote debugging or native emulation.
98b45e30
DJ
21299@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
21300but you can override its conclusion using the @code{set osabi} command.
21301One example where this is useful is in debugging of binaries which use
21302an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
21303not have the same identifying marks that the standard C library for your
21304platform provides.
21305
21306@table @code
21307@item show osabi
21308Show the OS ABI currently in use.
21309
21310@item set osabi
21311With no argument, show the list of registered available OS ABI's.
21312
21313@item set osabi @var{abi}
21314Set the current OS ABI to @var{abi}.
21315@end table
21316
1e698235 21317@cindex float promotion
1e698235
DJ
21318
21319Generally, the way that an argument of type @code{float} is passed to a
21320function depends on whether the function is prototyped. For a prototyped
21321(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
21322according to the architecture's convention for @code{float}. For unprototyped
21323(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
21324@code{double} and then passed.
21325
21326Unfortunately, some forms of debug information do not reliably indicate whether
21327a function is prototyped. If @value{GDBN} calls a function that is not marked
21328as prototyped, it consults @kbd{set coerce-float-to-double}.
21329
21330@table @code
a8f24a35 21331@kindex set coerce-float-to-double
1e698235
DJ
21332@item set coerce-float-to-double
21333@itemx set coerce-float-to-double on
21334Arguments of type @code{float} will be promoted to @code{double} when passed
21335to an unprototyped function. This is the default setting.
21336
21337@item set coerce-float-to-double off
21338Arguments of type @code{float} will be passed directly to unprototyped
21339functions.
9c16f35a
EZ
21340
21341@kindex show coerce-float-to-double
21342@item show coerce-float-to-double
21343Show the current setting of promoting @code{float} to @code{double}.
1e698235
DJ
21344@end table
21345
f1212245
DJ
21346@kindex set cp-abi
21347@kindex show cp-abi
21348@value{GDBN} needs to know the ABI used for your program's C@t{++}
21349objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
21350used to build your application. @value{GDBN} only fully supports
21351programs with a single C@t{++} ABI; if your program contains code using
21352multiple C@t{++} ABI's or if @value{GDBN} can not identify your
21353program's ABI correctly, you can tell @value{GDBN} which ABI to use.
21354Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
21355before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
21356``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
21357use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
21358``auto''.
21359
21360@table @code
21361@item show cp-abi
21362Show the C@t{++} ABI currently in use.
21363
21364@item set cp-abi
21365With no argument, show the list of supported C@t{++} ABI's.
21366
21367@item set cp-abi @var{abi}
21368@itemx set cp-abi auto
21369Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
21370@end table
21371
bf88dd68
JK
21372@node Auto-loading
21373@section Automatically loading associated files
21374@cindex auto-loading
21375
21376@value{GDBN} sometimes reads files with commands and settings automatically,
21377without being explicitly told so by the user. We call this feature
21378@dfn{auto-loading}. While auto-loading is useful for automatically adapting
21379@value{GDBN} to the needs of your project, it can sometimes produce unexpected
21380results or introduce security risks (e.g., if the file comes from untrusted
21381sources).
21382
c1668e4e
JK
21383Note that loading of these associated files (including the local @file{.gdbinit}
21384file) requires accordingly configured @code{auto-load safe-path}
21385(@pxref{Auto-loading safe path}).
21386
bf88dd68
JK
21387For these reasons, @value{GDBN} includes commands and options to let you
21388control when to auto-load files and which files should be auto-loaded.
21389
21390@table @code
21391@anchor{set auto-load off}
21392@kindex set auto-load off
21393@item set auto-load off
21394Globally disable loading of all auto-loaded files.
21395You may want to use this command with the @samp{-iex} option
21396(@pxref{Option -init-eval-command}) such as:
21397@smallexample
21398$ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile}
21399@end smallexample
21400
21401Be aware that system init file (@pxref{System-wide configuration})
21402and init files from your home directory (@pxref{Home Directory Init File})
21403still get read (as they come from generally trusted directories).
21404To prevent @value{GDBN} from auto-loading even those init files, use the
21405@option{-nx} option (@pxref{Mode Options}), in addition to
21406@code{set auto-load no}.
21407
21408@anchor{show auto-load}
21409@kindex show auto-load
21410@item show auto-load
21411Show whether auto-loading of each specific @samp{auto-load} file(s) is enabled
21412or disabled.
21413
21414@smallexample
21415(gdb) show auto-load
21416gdb-scripts: Auto-loading of canned sequences of commands scripts is on.
21417libthread-db: Auto-loading of inferior specific libthread_db is on.
1ccacbcd
JK
21418local-gdbinit: Auto-loading of .gdbinit script from current directory
21419 is on.
bf88dd68 21420python-scripts: Auto-loading of Python scripts is on.
bccbefd2 21421safe-path: List of directories from which it is safe to auto-load files
1564a261 21422 is $debugdir:$datadir/auto-load.
7349ff92 21423scripts-directory: List of directories from which to load auto-loaded scripts
1564a261 21424 is $debugdir:$datadir/auto-load.
bf88dd68
JK
21425@end smallexample
21426
21427@anchor{info auto-load}
21428@kindex info auto-load
21429@item info auto-load
21430Print whether each specific @samp{auto-load} file(s) have been auto-loaded or
21431not.
21432
21433@smallexample
21434(gdb) info auto-load
21435gdb-scripts:
21436Loaded Script
21437Yes /home/user/gdb/gdb-gdb.gdb
21438libthread-db: No auto-loaded libthread-db.
1ccacbcd
JK
21439local-gdbinit: Local .gdbinit file "/home/user/gdb/.gdbinit" has been
21440 loaded.
bf88dd68
JK
21441python-scripts:
21442Loaded Script
21443Yes /home/user/gdb/gdb-gdb.py
21444@end smallexample
21445@end table
21446
21447These are various kinds of files @value{GDBN} can automatically load:
21448
21449@itemize @bullet
21450@item
21451@xref{objfile-gdb.py file}, controlled by @ref{set auto-load python-scripts}.
21452@item
21453@xref{objfile-gdb.gdb file}, controlled by @ref{set auto-load gdb-scripts}.
21454@item
21455@xref{dotdebug_gdb_scripts section},
21456controlled by @ref{set auto-load python-scripts}.
21457@item
21458@xref{Init File in the Current Directory},
21459controlled by @ref{set auto-load local-gdbinit}.
21460@item
21461@xref{libthread_db.so.1 file}, controlled by @ref{set auto-load libthread-db}.
21462@end itemize
21463
21464These are @value{GDBN} control commands for the auto-loading:
21465
21466@multitable @columnfractions .5 .5
21467@item @xref{set auto-load off}.
21468@tab Disable auto-loading globally.
21469@item @xref{show auto-load}.
21470@tab Show setting of all kinds of files.
21471@item @xref{info auto-load}.
21472@tab Show state of all kinds of files.
21473@item @xref{set auto-load gdb-scripts}.
21474@tab Control for @value{GDBN} command scripts.
21475@item @xref{show auto-load gdb-scripts}.
21476@tab Show setting of @value{GDBN} command scripts.
21477@item @xref{info auto-load gdb-scripts}.
21478@tab Show state of @value{GDBN} command scripts.
21479@item @xref{set auto-load python-scripts}.
21480@tab Control for @value{GDBN} Python scripts.
21481@item @xref{show auto-load python-scripts}.
21482@tab Show setting of @value{GDBN} Python scripts.
21483@item @xref{info auto-load python-scripts}.
21484@tab Show state of @value{GDBN} Python scripts.
7349ff92
JK
21485@item @xref{set auto-load scripts-directory}.
21486@tab Control for @value{GDBN} auto-loaded scripts location.
21487@item @xref{show auto-load scripts-directory}.
21488@tab Show @value{GDBN} auto-loaded scripts location.
bf88dd68
JK
21489@item @xref{set auto-load local-gdbinit}.
21490@tab Control for init file in the current directory.
21491@item @xref{show auto-load local-gdbinit}.
21492@tab Show setting of init file in the current directory.
21493@item @xref{info auto-load local-gdbinit}.
21494@tab Show state of init file in the current directory.
21495@item @xref{set auto-load libthread-db}.
21496@tab Control for thread debugging library.
21497@item @xref{show auto-load libthread-db}.
21498@tab Show setting of thread debugging library.
21499@item @xref{info auto-load libthread-db}.
21500@tab Show state of thread debugging library.
bccbefd2
JK
21501@item @xref{set auto-load safe-path}.
21502@tab Control directories trusted for automatic loading.
21503@item @xref{show auto-load safe-path}.
21504@tab Show directories trusted for automatic loading.
21505@item @xref{add-auto-load-safe-path}.
21506@tab Add directory trusted for automatic loading.
bf88dd68
JK
21507@end multitable
21508
21509@menu
21510* Init File in the Current Directory:: @samp{set/show/info auto-load local-gdbinit}
21511* libthread_db.so.1 file:: @samp{set/show/info auto-load libthread-db}
21512* objfile-gdb.gdb file:: @samp{set/show/info auto-load gdb-script}
bccbefd2 21513* Auto-loading safe path:: @samp{set/show/info auto-load safe-path}
4dc84fd1 21514* Auto-loading verbose mode:: @samp{set/show debug auto-load}
bf88dd68
JK
21515@xref{Python Auto-loading}.
21516@end menu
21517
21518@node Init File in the Current Directory
21519@subsection Automatically loading init file in the current directory
21520@cindex auto-loading init file in the current directory
21521
21522By default, @value{GDBN} reads and executes the canned sequences of commands
21523from init file (if any) in the current working directory,
21524see @ref{Init File in the Current Directory during Startup}.
21525
c1668e4e
JK
21526Note that loading of this local @file{.gdbinit} file also requires accordingly
21527configured @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21528
bf88dd68
JK
21529@table @code
21530@anchor{set auto-load local-gdbinit}
21531@kindex set auto-load local-gdbinit
21532@item set auto-load local-gdbinit [on|off]
21533Enable or disable the auto-loading of canned sequences of commands
21534(@pxref{Sequences}) found in init file in the current directory.
21535
21536@anchor{show auto-load local-gdbinit}
21537@kindex show auto-load local-gdbinit
21538@item show auto-load local-gdbinit
21539Show whether auto-loading of canned sequences of commands from init file in the
21540current directory is enabled or disabled.
21541
21542@anchor{info auto-load local-gdbinit}
21543@kindex info auto-load local-gdbinit
21544@item info auto-load local-gdbinit
21545Print whether canned sequences of commands from init file in the
21546current directory have been auto-loaded.
21547@end table
21548
21549@node libthread_db.so.1 file
21550@subsection Automatically loading thread debugging library
21551@cindex auto-loading libthread_db.so.1
21552
21553This feature is currently present only on @sc{gnu}/Linux native hosts.
21554
21555@value{GDBN} reads in some cases thread debugging library from places specific
21556to the inferior (@pxref{set libthread-db-search-path}).
21557
21558The special @samp{libthread-db-search-path} entry @samp{$sdir} is processed
21559without checking this @samp{set auto-load libthread-db} switch as system
21560libraries have to be trusted in general. In all other cases of
21561@samp{libthread-db-search-path} entries @value{GDBN} checks first if @samp{set
21562auto-load libthread-db} is enabled before trying to open such thread debugging
21563library.
21564
c1668e4e
JK
21565Note that loading of this debugging library also requires accordingly configured
21566@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21567
bf88dd68
JK
21568@table @code
21569@anchor{set auto-load libthread-db}
21570@kindex set auto-load libthread-db
21571@item set auto-load libthread-db [on|off]
21572Enable or disable the auto-loading of inferior specific thread debugging library.
21573
21574@anchor{show auto-load libthread-db}
21575@kindex show auto-load libthread-db
21576@item show auto-load libthread-db
21577Show whether auto-loading of inferior specific thread debugging library is
21578enabled or disabled.
21579
21580@anchor{info auto-load libthread-db}
21581@kindex info auto-load libthread-db
21582@item info auto-load libthread-db
21583Print the list of all loaded inferior specific thread debugging libraries and
21584for each such library print list of inferior @var{pid}s using it.
21585@end table
21586
21587@node objfile-gdb.gdb file
21588@subsection The @file{@var{objfile}-gdb.gdb} file
21589@cindex auto-loading @file{@var{objfile}-gdb.gdb}
21590
21591@value{GDBN} tries to load an @file{@var{objfile}-gdb.gdb} file containing
21592canned sequences of commands (@pxref{Sequences}), as long as @samp{set
21593auto-load gdb-scripts} is set to @samp{on}.
21594
c1668e4e
JK
21595Note that loading of this script file also requires accordingly configured
21596@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21597
bf88dd68
JK
21598For more background refer to the similar Python scripts auto-loading
21599description (@pxref{objfile-gdb.py file}).
21600
21601@table @code
21602@anchor{set auto-load gdb-scripts}
21603@kindex set auto-load gdb-scripts
21604@item set auto-load gdb-scripts [on|off]
21605Enable or disable the auto-loading of canned sequences of commands scripts.
21606
21607@anchor{show auto-load gdb-scripts}
21608@kindex show auto-load gdb-scripts
21609@item show auto-load gdb-scripts
21610Show whether auto-loading of canned sequences of commands scripts is enabled or
21611disabled.
21612
21613@anchor{info auto-load gdb-scripts}
21614@kindex info auto-load gdb-scripts
21615@cindex print list of auto-loaded canned sequences of commands scripts
21616@item info auto-load gdb-scripts [@var{regexp}]
21617Print the list of all canned sequences of commands scripts that @value{GDBN}
21618auto-loaded.
21619@end table
21620
21621If @var{regexp} is supplied only canned sequences of commands scripts with
21622matching names are printed.
21623
bccbefd2
JK
21624@node Auto-loading safe path
21625@subsection Security restriction for auto-loading
21626@cindex auto-loading safe-path
21627
21628As the files of inferior can come from untrusted source (such as submitted by
21629an application user) @value{GDBN} does not always load any files automatically.
21630@value{GDBN} provides the @samp{set auto-load safe-path} setting to list
21631directories trusted for loading files not explicitly requested by user.
202cbf1c 21632Each directory can also be a shell wildcard pattern.
bccbefd2
JK
21633
21634If the path is not set properly you will see a warning and the file will not
21635get loaded:
21636
21637@smallexample
21638$ ./gdb -q ./gdb
21639Reading symbols from /home/user/gdb/gdb...done.
21640warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been
1564a261
JK
21641 declined by your `auto-load safe-path' set
21642 to "$debugdir:$datadir/auto-load".
bccbefd2 21643warning: File "/home/user/gdb/gdb-gdb.py" auto-loading has been
1564a261
JK
21644 declined by your `auto-load safe-path' set
21645 to "$debugdir:$datadir/auto-load".
bccbefd2
JK
21646@end smallexample
21647
21648The list of trusted directories is controlled by the following commands:
21649
21650@table @code
21651@anchor{set auto-load safe-path}
21652@kindex set auto-load safe-path
af2c1515 21653@item set auto-load safe-path @r{[}@var{directories}@r{]}
bccbefd2
JK
21654Set the list of directories (and their subdirectories) trusted for automatic
21655loading and execution of scripts. You can also enter a specific trusted file.
202cbf1c
JK
21656Each directory can also be a shell wildcard pattern; wildcards do not match
21657directory separator - see @code{FNM_PATHNAME} for system function @code{fnmatch}
21658(@pxref{Wildcard Matching, fnmatch, , libc, GNU C Library Reference Manual}).
af2c1515
JK
21659If you omit @var{directories}, @samp{auto-load safe-path} will be reset to
21660its default value as specified during @value{GDBN} compilation.
21661
d9242c17 21662The list of directories uses path separator (@samp{:} on GNU and Unix
bccbefd2
JK
21663systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly
21664to the @env{PATH} environment variable.
21665
21666@anchor{show auto-load safe-path}
21667@kindex show auto-load safe-path
21668@item show auto-load safe-path
21669Show the list of directories trusted for automatic loading and execution of
21670scripts.
21671
21672@anchor{add-auto-load-safe-path}
21673@kindex add-auto-load-safe-path
21674@item add-auto-load-safe-path
21675Add an entry (or list of entries) the list of directories trusted for automatic
21676loading and execution of scripts. Multiple entries may be delimited by the
d9242c17 21677host platform path separator in use.
bccbefd2
JK
21678@end table
21679
7349ff92 21680This variable defaults to what @code{--with-auto-load-dir} has been configured
1564a261
JK
21681to (@pxref{with-auto-load-dir}). @file{$debugdir} and @file{$datadir}
21682substitution applies the same as for @ref{set auto-load scripts-directory}.
21683The default @code{set auto-load safe-path} value can be also overriden by
21684@value{GDBN} configuration option @option{--with-auto-load-safe-path}.
6dea1fbd 21685
6dea1fbd
JK
21686Setting this variable to @file{/} disables this security protection,
21687corresponding @value{GDBN} configuration option is
21688@option{--without-auto-load-safe-path}.
bccbefd2
JK
21689This variable is supposed to be set to the system directories writable by the
21690system superuser only. Users can add their source directories in init files in
21691their home directories (@pxref{Home Directory Init File}). See also deprecated
21692init file in the current directory
21693(@pxref{Init File in the Current Directory during Startup}).
21694
21695To force @value{GDBN} to load the files it declined to load in the previous
21696example, you could use one of the following ways:
21697
0511cc75
JK
21698@table @asis
21699@item @file{~/.gdbinit}: @samp{add-auto-load-safe-path ~/src/gdb}
bccbefd2
JK
21700Specify this trusted directory (or a file) as additional component of the list.
21701You have to specify also any existing directories displayed by
21702by @samp{show auto-load safe-path} (such as @samp{/usr:/bin} in this example).
21703
174bb630 21704@item @kbd{gdb -iex "set auto-load safe-path /usr:/bin:~/src/gdb" @dots{}}
bccbefd2
JK
21705Specify this directory as in the previous case but just for a single
21706@value{GDBN} session.
21707
af2c1515 21708@item @kbd{gdb -iex "set auto-load safe-path /" @dots{}}
bccbefd2
JK
21709Disable auto-loading safety for a single @value{GDBN} session.
21710This assumes all the files you debug during this @value{GDBN} session will come
21711from trusted sources.
21712
21713@item @kbd{./configure --without-auto-load-safe-path}
21714During compilation of @value{GDBN} you may disable any auto-loading safety.
21715This assumes all the files you will ever debug with this @value{GDBN} come from
21716trusted sources.
0511cc75 21717@end table
bccbefd2
JK
21718
21719On the other hand you can also explicitly forbid automatic files loading which
21720also suppresses any such warning messages:
21721
0511cc75 21722@table @asis
174bb630 21723@item @kbd{gdb -iex "set auto-load no" @dots{}}
bccbefd2
JK
21724You can use @value{GDBN} command-line option for a single @value{GDBN} session.
21725
0511cc75 21726@item @file{~/.gdbinit}: @samp{set auto-load no}
bccbefd2
JK
21727Disable auto-loading globally for the user
21728(@pxref{Home Directory Init File}). While it is improbable, you could also
21729use system init file instead (@pxref{System-wide configuration}).
0511cc75 21730@end table
bccbefd2
JK
21731
21732This setting applies to the file names as entered by user. If no entry matches
21733@value{GDBN} tries as a last resort to also resolve all the file names into
21734their canonical form (typically resolving symbolic links) and compare the
21735entries again. @value{GDBN} already canonicalizes most of the filenames on its
21736own before starting the comparison so a canonical form of directories is
21737recommended to be entered.
21738
4dc84fd1
JK
21739@node Auto-loading verbose mode
21740@subsection Displaying files tried for auto-load
21741@cindex auto-loading verbose mode
21742
21743For better visibility of all the file locations where you can place scripts to
21744be auto-loaded with inferior --- or to protect yourself against accidental
21745execution of untrusted scripts --- @value{GDBN} provides a feature for printing
21746all the files attempted to be loaded. Both existing and non-existing files may
21747be printed.
21748
21749For example the list of directories from which it is safe to auto-load files
21750(@pxref{Auto-loading safe path}) applies also to canonicalized filenames which
21751may not be too obvious while setting it up.
21752
21753@smallexample
0070f25a 21754(gdb) set debug auto-load on
4dc84fd1
JK
21755(gdb) file ~/src/t/true
21756auto-load: Loading canned sequences of commands script "/tmp/true-gdb.gdb"
21757 for objfile "/tmp/true".
21758auto-load: Updating directories of "/usr:/opt".
21759auto-load: Using directory "/usr".
21760auto-load: Using directory "/opt".
21761warning: File "/tmp/true-gdb.gdb" auto-loading has been declined
21762 by your `auto-load safe-path' set to "/usr:/opt".
21763@end smallexample
21764
21765@table @code
21766@anchor{set debug auto-load}
21767@kindex set debug auto-load
21768@item set debug auto-load [on|off]
21769Set whether to print the filenames attempted to be auto-loaded.
21770
21771@anchor{show debug auto-load}
21772@kindex show debug auto-load
21773@item show debug auto-load
21774Show whether printing of the filenames attempted to be auto-loaded is turned
21775on or off.
21776@end table
21777
8e04817f 21778@node Messages/Warnings
79a6e687 21779@section Optional Warnings and Messages
104c1213 21780
9c16f35a
EZ
21781@cindex verbose operation
21782@cindex optional warnings
8e04817f
AC
21783By default, @value{GDBN} is silent about its inner workings. If you are
21784running on a slow machine, you may want to use the @code{set verbose}
21785command. This makes @value{GDBN} tell you when it does a lengthy
21786internal operation, so you will not think it has crashed.
104c1213 21787
8e04817f
AC
21788Currently, the messages controlled by @code{set verbose} are those
21789which announce that the symbol table for a source file is being read;
79a6e687 21790see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}.
104c1213 21791
8e04817f
AC
21792@table @code
21793@kindex set verbose
21794@item set verbose on
21795Enables @value{GDBN} output of certain informational messages.
104c1213 21796
8e04817f
AC
21797@item set verbose off
21798Disables @value{GDBN} output of certain informational messages.
104c1213 21799
8e04817f
AC
21800@kindex show verbose
21801@item show verbose
21802Displays whether @code{set verbose} is on or off.
21803@end table
104c1213 21804
8e04817f
AC
21805By default, if @value{GDBN} encounters bugs in the symbol table of an
21806object file, it is silent; but if you are debugging a compiler, you may
79a6e687
BW
21807find this information useful (@pxref{Symbol Errors, ,Errors Reading
21808Symbol Files}).
104c1213 21809
8e04817f 21810@table @code
104c1213 21811
8e04817f
AC
21812@kindex set complaints
21813@item set complaints @var{limit}
21814Permits @value{GDBN} to output @var{limit} complaints about each type of
21815unusual symbols before becoming silent about the problem. Set
21816@var{limit} to zero to suppress all complaints; set it to a large number
21817to prevent complaints from being suppressed.
104c1213 21818
8e04817f
AC
21819@kindex show complaints
21820@item show complaints
21821Displays how many symbol complaints @value{GDBN} is permitted to produce.
104c1213 21822
8e04817f 21823@end table
104c1213 21824
d837706a 21825@anchor{confirmation requests}
8e04817f
AC
21826By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
21827lot of stupid questions to confirm certain commands. For example, if
21828you try to run a program which is already running:
104c1213 21829
474c8240 21830@smallexample
8e04817f
AC
21831(@value{GDBP}) run
21832The program being debugged has been started already.
21833Start it from the beginning? (y or n)
474c8240 21834@end smallexample
104c1213 21835
8e04817f
AC
21836If you are willing to unflinchingly face the consequences of your own
21837commands, you can disable this ``feature'':
104c1213 21838
8e04817f 21839@table @code
104c1213 21840
8e04817f
AC
21841@kindex set confirm
21842@cindex flinching
21843@cindex confirmation
21844@cindex stupid questions
21845@item set confirm off
7c953934
TT
21846Disables confirmation requests. Note that running @value{GDBN} with
21847the @option{--batch} option (@pxref{Mode Options, -batch}) also
21848automatically disables confirmation requests.
104c1213 21849
8e04817f
AC
21850@item set confirm on
21851Enables confirmation requests (the default).
104c1213 21852
8e04817f
AC
21853@kindex show confirm
21854@item show confirm
21855Displays state of confirmation requests.
21856
21857@end table
104c1213 21858
16026cd7
AS
21859@cindex command tracing
21860If you need to debug user-defined commands or sourced files you may find it
21861useful to enable @dfn{command tracing}. In this mode each command will be
21862printed as it is executed, prefixed with one or more @samp{+} symbols, the
21863quantity denoting the call depth of each command.
21864
21865@table @code
21866@kindex set trace-commands
21867@cindex command scripts, debugging
21868@item set trace-commands on
21869Enable command tracing.
21870@item set trace-commands off
21871Disable command tracing.
21872@item show trace-commands
21873Display the current state of command tracing.
21874@end table
21875
8e04817f 21876@node Debugging Output
79a6e687 21877@section Optional Messages about Internal Happenings
4644b6e3
EZ
21878@cindex optional debugging messages
21879
da316a69
EZ
21880@value{GDBN} has commands that enable optional debugging messages from
21881various @value{GDBN} subsystems; normally these commands are of
21882interest to @value{GDBN} maintainers, or when reporting a bug. This
21883section documents those commands.
21884
104c1213 21885@table @code
a8f24a35
EZ
21886@kindex set exec-done-display
21887@item set exec-done-display
21888Turns on or off the notification of asynchronous commands'
21889completion. When on, @value{GDBN} will print a message when an
21890asynchronous command finishes its execution. The default is off.
21891@kindex show exec-done-display
21892@item show exec-done-display
21893Displays the current setting of asynchronous command completion
21894notification.
4644b6e3
EZ
21895@kindex set debug
21896@cindex gdbarch debugging info
a8f24a35 21897@cindex architecture debugging info
8e04817f 21898@item set debug arch
a8f24a35 21899Turns on or off display of gdbarch debugging info. The default is off
4644b6e3 21900@kindex show debug
8e04817f
AC
21901@item show debug arch
21902Displays the current state of displaying gdbarch debugging info.
721c2651
EZ
21903@item set debug aix-thread
21904@cindex AIX threads
21905Display debugging messages about inner workings of the AIX thread
21906module.
21907@item show debug aix-thread
21908Show the current state of AIX thread debugging info display.
900e11f9
JK
21909@item set debug check-physname
21910@cindex physname
21911Check the results of the ``physname'' computation. When reading DWARF
21912debugging information for C@t{++}, @value{GDBN} attempts to compute
21913each entity's name. @value{GDBN} can do this computation in two
21914different ways, depending on exactly what information is present.
21915When enabled, this setting causes @value{GDBN} to compute the names
21916both ways and display any discrepancies.
21917@item show debug check-physname
21918Show the current state of ``physname'' checking.
d97bc12b
DE
21919@item set debug dwarf2-die
21920@cindex DWARF2 DIEs
21921Dump DWARF2 DIEs after they are read in.
21922The value is the number of nesting levels to print.
21923A value of zero turns off the display.
21924@item show debug dwarf2-die
21925Show the current state of DWARF2 DIE debugging.
45cfd468
DE
21926@item set debug dwarf2-read
21927@cindex DWARF2 Reading
21928Turns on or off display of debugging messages related to reading
21929DWARF debug info. The default is off.
21930@item show debug dwarf2-read
21931Show the current state of DWARF2 reader debugging.
237fc4c9
PA
21932@item set debug displaced
21933@cindex displaced stepping debugging info
21934Turns on or off display of @value{GDBN} debugging info for the
21935displaced stepping support. The default is off.
21936@item show debug displaced
21937Displays the current state of displaying @value{GDBN} debugging info
21938related to displaced stepping.
8e04817f 21939@item set debug event
4644b6e3 21940@cindex event debugging info
a8f24a35 21941Turns on or off display of @value{GDBN} event debugging info. The
8e04817f 21942default is off.
8e04817f
AC
21943@item show debug event
21944Displays the current state of displaying @value{GDBN} event debugging
21945info.
8e04817f 21946@item set debug expression
4644b6e3 21947@cindex expression debugging info
721c2651
EZ
21948Turns on or off display of debugging info about @value{GDBN}
21949expression parsing. The default is off.
8e04817f 21950@item show debug expression
721c2651
EZ
21951Displays the current state of displaying debugging info about
21952@value{GDBN} expression parsing.
7453dc06 21953@item set debug frame
4644b6e3 21954@cindex frame debugging info
7453dc06
AC
21955Turns on or off display of @value{GDBN} frame debugging info. The
21956default is off.
7453dc06
AC
21957@item show debug frame
21958Displays the current state of displaying @value{GDBN} frame debugging
21959info.
cbe54154
PA
21960@item set debug gnu-nat
21961@cindex @sc{gnu}/Hurd debug messages
21962Turns on or off debugging messages from the @sc{gnu}/Hurd debug support.
21963@item show debug gnu-nat
21964Show the current state of @sc{gnu}/Hurd debugging messages.
30e91e0b
RC
21965@item set debug infrun
21966@cindex inferior debugging info
21967Turns on or off display of @value{GDBN} debugging info for running the inferior.
21968The default is off. @file{infrun.c} contains GDB's runtime state machine used
21969for implementing operations such as single-stepping the inferior.
21970@item show debug infrun
21971Displays the current state of @value{GDBN} inferior debugging.
a255712f
PP
21972@item set debug jit
21973@cindex just-in-time compilation, debugging messages
21974Turns on or off debugging messages from JIT debug support.
21975@item show debug jit
21976Displays the current state of @value{GDBN} JIT debugging.
da316a69
EZ
21977@item set debug lin-lwp
21978@cindex @sc{gnu}/Linux LWP debug messages
21979@cindex Linux lightweight processes
721c2651 21980Turns on or off debugging messages from the Linux LWP debug support.
da316a69
EZ
21981@item show debug lin-lwp
21982Show the current state of Linux LWP debugging messages.
c9b6281a
YQ
21983@item set debug notification
21984@cindex remote async notification debugging info
21985Turns on or off debugging messages about remote async notification.
21986The default is off.
21987@item show debug notification
21988Displays the current state of remote async notification debugging messages.
2b4855ab 21989@item set debug observer
4644b6e3 21990@cindex observer debugging info
2b4855ab
AC
21991Turns on or off display of @value{GDBN} observer debugging. This
21992includes info such as the notification of observable events.
2b4855ab
AC
21993@item show debug observer
21994Displays the current state of observer debugging.
8e04817f 21995@item set debug overload
4644b6e3 21996@cindex C@t{++} overload debugging info
8e04817f 21997Turns on or off display of @value{GDBN} C@t{++} overload debugging
359df76b 21998info. This includes info such as ranking of functions, etc. The default
8e04817f 21999is off.
8e04817f
AC
22000@item show debug overload
22001Displays the current state of displaying @value{GDBN} C@t{++} overload
22002debugging info.
92981e24
TT
22003@cindex expression parser, debugging info
22004@cindex debug expression parser
22005@item set debug parser
22006Turns on or off the display of expression parser debugging output.
22007Internally, this sets the @code{yydebug} variable in the expression
22008parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for
22009details. The default is off.
22010@item show debug parser
22011Show the current state of expression parser debugging.
8e04817f
AC
22012@cindex packets, reporting on stdout
22013@cindex serial connections, debugging
605a56cb
DJ
22014@cindex debug remote protocol
22015@cindex remote protocol debugging
22016@cindex display remote packets
8e04817f
AC
22017@item set debug remote
22018Turns on or off display of reports on all packets sent back and forth across
22019the serial line to the remote machine. The info is printed on the
22020@value{GDBN} standard output stream. The default is off.
8e04817f
AC
22021@item show debug remote
22022Displays the state of display of remote packets.
8e04817f
AC
22023@item set debug serial
22024Turns on or off display of @value{GDBN} serial debugging info. The
22025default is off.
8e04817f
AC
22026@item show debug serial
22027Displays the current state of displaying @value{GDBN} serial debugging
22028info.
c45da7e6
EZ
22029@item set debug solib-frv
22030@cindex FR-V shared-library debugging
22031Turns on or off debugging messages for FR-V shared-library code.
22032@item show debug solib-frv
22033Display the current state of FR-V shared-library code debugging
22034messages.
45cfd468
DE
22035@item set debug symtab-create
22036@cindex symbol table creation
22037Turns on or off display of debugging messages related to symbol table creation.
22038The default is off.
22039@item show debug symtab-create
22040Show the current state of symbol table creation debugging.
8e04817f 22041@item set debug target
4644b6e3 22042@cindex target debugging info
8e04817f
AC
22043Turns on or off display of @value{GDBN} target debugging info. This info
22044includes what is going on at the target level of GDB, as it happens. The
701b08bb
DJ
22045default is 0. Set it to 1 to track events, and to 2 to also track the
22046value of large memory transfers. Changes to this flag do not take effect
22047until the next time you connect to a target or use the @code{run} command.
8e04817f
AC
22048@item show debug target
22049Displays the current state of displaying @value{GDBN} target debugging
22050info.
75feb17d
DJ
22051@item set debug timestamp
22052@cindex timestampping debugging info
22053Turns on or off display of timestamps with @value{GDBN} debugging info.
22054When enabled, seconds and microseconds are displayed before each debugging
22055message.
22056@item show debug timestamp
22057Displays the current state of displaying timestamps with @value{GDBN}
22058debugging info.
c45da7e6 22059@item set debugvarobj
4644b6e3 22060@cindex variable object debugging info
8e04817f
AC
22061Turns on or off display of @value{GDBN} variable object debugging
22062info. The default is off.
c45da7e6 22063@item show debugvarobj
8e04817f
AC
22064Displays the current state of displaying @value{GDBN} variable object
22065debugging info.
e776119f
DJ
22066@item set debug xml
22067@cindex XML parser debugging
22068Turns on or off debugging messages for built-in XML parsers.
22069@item show debug xml
22070Displays the current state of XML debugging messages.
8e04817f 22071@end table
104c1213 22072
14fb1bac
JB
22073@node Other Misc Settings
22074@section Other Miscellaneous Settings
22075@cindex miscellaneous settings
22076
22077@table @code
22078@kindex set interactive-mode
22079@item set interactive-mode
7bfc9434
JB
22080If @code{on}, forces @value{GDBN} to assume that GDB was started
22081in a terminal. In practice, this means that @value{GDBN} should wait
22082for the user to answer queries generated by commands entered at
22083the command prompt. If @code{off}, forces @value{GDBN} to operate
22084in the opposite mode, and it uses the default answers to all queries.
22085If @code{auto} (the default), @value{GDBN} tries to determine whether
22086its standard input is a terminal, and works in interactive-mode if it
22087is, non-interactively otherwise.
14fb1bac
JB
22088
22089In the vast majority of cases, the debugger should be able to guess
22090correctly which mode should be used. But this setting can be useful
22091in certain specific cases, such as running a MinGW @value{GDBN}
22092inside a cygwin window.
22093
22094@kindex show interactive-mode
22095@item show interactive-mode
22096Displays whether the debugger is operating in interactive mode or not.
22097@end table
22098
d57a3c85
TJB
22099@node Extending GDB
22100@chapter Extending @value{GDBN}
22101@cindex extending GDB
22102
5a56e9c5
DE
22103@value{GDBN} provides three mechanisms for extension. The first is based
22104on composition of @value{GDBN} commands, the second is based on the
22105Python scripting language, and the third is for defining new aliases of
22106existing commands.
d57a3c85 22107
5a56e9c5 22108To facilitate the use of the first two extensions, @value{GDBN} is capable
95433b34
JB
22109of evaluating the contents of a file. When doing so, @value{GDBN}
22110can recognize which scripting language is being used by looking at
22111the filename extension. Files with an unrecognized filename extension
22112are always treated as a @value{GDBN} Command Files.
22113@xref{Command Files,, Command files}.
22114
22115You can control how @value{GDBN} evaluates these files with the following
22116setting:
22117
22118@table @code
22119@kindex set script-extension
22120@kindex show script-extension
22121@item set script-extension off
22122All scripts are always evaluated as @value{GDBN} Command Files.
22123
22124@item set script-extension soft
22125The debugger determines the scripting language based on filename
22126extension. If this scripting language is supported, @value{GDBN}
22127evaluates the script using that language. Otherwise, it evaluates
22128the file as a @value{GDBN} Command File.
22129
22130@item set script-extension strict
22131The debugger determines the scripting language based on filename
22132extension, and evaluates the script using that language. If the
22133language is not supported, then the evaluation fails.
22134
22135@item show script-extension
22136Display the current value of the @code{script-extension} option.
22137
22138@end table
22139
d57a3c85
TJB
22140@menu
22141* Sequences:: Canned Sequences of Commands
22142* Python:: Scripting @value{GDBN} using Python
5a56e9c5 22143* Aliases:: Creating new spellings of existing commands
d57a3c85
TJB
22144@end menu
22145
8e04817f 22146@node Sequences
d57a3c85 22147@section Canned Sequences of Commands
104c1213 22148
8e04817f 22149Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
79a6e687 22150Command Lists}), @value{GDBN} provides two ways to store sequences of
8e04817f
AC
22151commands for execution as a unit: user-defined commands and command
22152files.
104c1213 22153
8e04817f 22154@menu
fcc73fe3
EZ
22155* Define:: How to define your own commands
22156* Hooks:: Hooks for user-defined commands
22157* Command Files:: How to write scripts of commands to be stored in a file
22158* Output:: Commands for controlled output
8e04817f 22159@end menu
104c1213 22160
8e04817f 22161@node Define
d57a3c85 22162@subsection User-defined Commands
104c1213 22163
8e04817f 22164@cindex user-defined command
fcc73fe3 22165@cindex arguments, to user-defined commands
8e04817f
AC
22166A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
22167which you assign a new name as a command. This is done with the
22168@code{define} command. User commands may accept up to 10 arguments
22169separated by whitespace. Arguments are accessed within the user command
c03c782f 22170via @code{$arg0@dots{}$arg9}. A trivial example:
104c1213 22171
8e04817f
AC
22172@smallexample
22173define adder
22174 print $arg0 + $arg1 + $arg2
c03c782f 22175end
8e04817f 22176@end smallexample
104c1213
JM
22177
22178@noindent
8e04817f 22179To execute the command use:
104c1213 22180
8e04817f
AC
22181@smallexample
22182adder 1 2 3
22183@end smallexample
104c1213 22184
8e04817f
AC
22185@noindent
22186This defines the command @code{adder}, which prints the sum of
22187its three arguments. Note the arguments are text substitutions, so they may
22188reference variables, use complex expressions, or even perform inferior
22189functions calls.
104c1213 22190
fcc73fe3
EZ
22191@cindex argument count in user-defined commands
22192@cindex how many arguments (user-defined commands)
c03c782f
AS
22193In addition, @code{$argc} may be used to find out how many arguments have
22194been passed. This expands to a number in the range 0@dots{}10.
22195
22196@smallexample
22197define adder
22198 if $argc == 2
22199 print $arg0 + $arg1
22200 end
22201 if $argc == 3
22202 print $arg0 + $arg1 + $arg2
22203 end
22204end
22205@end smallexample
22206
104c1213 22207@table @code
104c1213 22208
8e04817f
AC
22209@kindex define
22210@item define @var{commandname}
22211Define a command named @var{commandname}. If there is already a command
22212by that name, you are asked to confirm that you want to redefine it.
adb483fe
DJ
22213@var{commandname} may be a bare command name consisting of letters,
22214numbers, dashes, and underscores. It may also start with any predefined
22215prefix command. For example, @samp{define target my-target} creates
22216a user-defined @samp{target my-target} command.
104c1213 22217
8e04817f
AC
22218The definition of the command is made up of other @value{GDBN} command lines,
22219which are given following the @code{define} command. The end of these
22220commands is marked by a line containing @code{end}.
104c1213 22221
8e04817f 22222@kindex document
ca91424e 22223@kindex end@r{ (user-defined commands)}
8e04817f
AC
22224@item document @var{commandname}
22225Document the user-defined command @var{commandname}, so that it can be
22226accessed by @code{help}. The command @var{commandname} must already be
22227defined. This command reads lines of documentation just as @code{define}
22228reads the lines of the command definition, ending with @code{end}.
22229After the @code{document} command is finished, @code{help} on command
22230@var{commandname} displays the documentation you have written.
104c1213 22231
8e04817f
AC
22232You may use the @code{document} command again to change the
22233documentation of a command. Redefining the command with @code{define}
22234does not change the documentation.
104c1213 22235
c45da7e6
EZ
22236@kindex dont-repeat
22237@cindex don't repeat command
22238@item dont-repeat
22239Used inside a user-defined command, this tells @value{GDBN} that this
22240command should not be repeated when the user hits @key{RET}
22241(@pxref{Command Syntax, repeat last command}).
22242
8e04817f
AC
22243@kindex help user-defined
22244@item help user-defined
7d74f244
DE
22245List all user-defined commands and all python commands defined in class
22246COMAND_USER. The first line of the documentation or docstring is
22247included (if any).
104c1213 22248
8e04817f
AC
22249@kindex show user
22250@item show user
22251@itemx show user @var{commandname}
22252Display the @value{GDBN} commands used to define @var{commandname} (but
22253not its documentation). If no @var{commandname} is given, display the
22254definitions for all user-defined commands.
7d74f244 22255This does not work for user-defined python commands.
104c1213 22256
fcc73fe3 22257@cindex infinite recursion in user-defined commands
20f01a46
DH
22258@kindex show max-user-call-depth
22259@kindex set max-user-call-depth
22260@item show max-user-call-depth
5ca0cb28
DH
22261@itemx set max-user-call-depth
22262The value of @code{max-user-call-depth} controls how many recursion
3f94c067 22263levels are allowed in user-defined commands before @value{GDBN} suspects an
5ca0cb28 22264infinite recursion and aborts the command.
7d74f244 22265This does not apply to user-defined python commands.
104c1213
JM
22266@end table
22267
fcc73fe3
EZ
22268In addition to the above commands, user-defined commands frequently
22269use control flow commands, described in @ref{Command Files}.
22270
8e04817f
AC
22271When user-defined commands are executed, the
22272commands of the definition are not printed. An error in any command
22273stops execution of the user-defined command.
104c1213 22274
8e04817f
AC
22275If used interactively, commands that would ask for confirmation proceed
22276without asking when used inside a user-defined command. Many @value{GDBN}
22277commands that normally print messages to say what they are doing omit the
22278messages when used in a user-defined command.
104c1213 22279
8e04817f 22280@node Hooks
d57a3c85 22281@subsection User-defined Command Hooks
8e04817f
AC
22282@cindex command hooks
22283@cindex hooks, for commands
22284@cindex hooks, pre-command
104c1213 22285
8e04817f 22286@kindex hook
8e04817f
AC
22287You may define @dfn{hooks}, which are a special kind of user-defined
22288command. Whenever you run the command @samp{foo}, if the user-defined
22289command @samp{hook-foo} exists, it is executed (with no arguments)
22290before that command.
104c1213 22291
8e04817f
AC
22292@cindex hooks, post-command
22293@kindex hookpost
8e04817f
AC
22294A hook may also be defined which is run after the command you executed.
22295Whenever you run the command @samp{foo}, if the user-defined command
22296@samp{hookpost-foo} exists, it is executed (with no arguments) after
22297that command. Post-execution hooks may exist simultaneously with
22298pre-execution hooks, for the same command.
104c1213 22299
8e04817f 22300It is valid for a hook to call the command which it hooks. If this
9f1c6395 22301occurs, the hook is not re-executed, thereby avoiding infinite recursion.
104c1213 22302
8e04817f
AC
22303@c It would be nice if hookpost could be passed a parameter indicating
22304@c if the command it hooks executed properly or not. FIXME!
104c1213 22305
8e04817f
AC
22306@kindex stop@r{, a pseudo-command}
22307In addition, a pseudo-command, @samp{stop} exists. Defining
22308(@samp{hook-stop}) makes the associated commands execute every time
22309execution stops in your program: before breakpoint commands are run,
22310displays are printed, or the stack frame is printed.
104c1213 22311
8e04817f
AC
22312For example, to ignore @code{SIGALRM} signals while
22313single-stepping, but treat them normally during normal execution,
22314you could define:
104c1213 22315
474c8240 22316@smallexample
8e04817f
AC
22317define hook-stop
22318handle SIGALRM nopass
22319end
104c1213 22320
8e04817f
AC
22321define hook-run
22322handle SIGALRM pass
22323end
104c1213 22324
8e04817f 22325define hook-continue
d3e8051b 22326handle SIGALRM pass
8e04817f 22327end
474c8240 22328@end smallexample
104c1213 22329
d3e8051b 22330As a further example, to hook at the beginning and end of the @code{echo}
b383017d 22331command, and to add extra text to the beginning and end of the message,
8e04817f 22332you could define:
104c1213 22333
474c8240 22334@smallexample
8e04817f
AC
22335define hook-echo
22336echo <<<---
22337end
104c1213 22338
8e04817f
AC
22339define hookpost-echo
22340echo --->>>\n
22341end
104c1213 22342
8e04817f
AC
22343(@value{GDBP}) echo Hello World
22344<<<---Hello World--->>>
22345(@value{GDBP})
104c1213 22346
474c8240 22347@end smallexample
104c1213 22348
8e04817f
AC
22349You can define a hook for any single-word command in @value{GDBN}, but
22350not for command aliases; you should define a hook for the basic command
c1468174 22351name, e.g.@: @code{backtrace} rather than @code{bt}.
8e04817f
AC
22352@c FIXME! So how does Joe User discover whether a command is an alias
22353@c or not?
adb483fe
DJ
22354You can hook a multi-word command by adding @code{hook-} or
22355@code{hookpost-} to the last word of the command, e.g.@:
22356@samp{define target hook-remote} to add a hook to @samp{target remote}.
22357
8e04817f
AC
22358If an error occurs during the execution of your hook, execution of
22359@value{GDBN} commands stops and @value{GDBN} issues a prompt
22360(before the command that you actually typed had a chance to run).
104c1213 22361
8e04817f
AC
22362If you try to define a hook which does not match any known command, you
22363get a warning from the @code{define} command.
c906108c 22364
8e04817f 22365@node Command Files
d57a3c85 22366@subsection Command Files
c906108c 22367
8e04817f 22368@cindex command files
fcc73fe3 22369@cindex scripting commands
6fc08d32
EZ
22370A command file for @value{GDBN} is a text file made of lines that are
22371@value{GDBN} commands. Comments (lines starting with @kbd{#}) may
22372also be included. An empty line in a command file does nothing; it
22373does not mean to repeat the last command, as it would from the
22374terminal.
c906108c 22375
6fc08d32 22376You can request the execution of a command file with the @code{source}
95433b34
JB
22377command. Note that the @code{source} command is also used to evaluate
22378scripts that are not Command Files. The exact behavior can be configured
22379using the @code{script-extension} setting.
22380@xref{Extending GDB,, Extending GDB}.
c906108c 22381
8e04817f
AC
22382@table @code
22383@kindex source
ca91424e 22384@cindex execute commands from a file
3f7b2faa 22385@item source [-s] [-v] @var{filename}
8e04817f 22386Execute the command file @var{filename}.
c906108c
SS
22387@end table
22388
fcc73fe3
EZ
22389The lines in a command file are generally executed sequentially,
22390unless the order of execution is changed by one of the
22391@emph{flow-control commands} described below. The commands are not
a71ec265
DH
22392printed as they are executed. An error in any command terminates
22393execution of the command file and control is returned to the console.
c906108c 22394
08001717
DE
22395@value{GDBN} first searches for @var{filename} in the current directory.
22396If the file is not found there, and @var{filename} does not specify a
22397directory, then @value{GDBN} also looks for the file on the source search path
22398(specified with the @samp{directory} command);
22399except that @file{$cdir} is not searched because the compilation directory
22400is not relevant to scripts.
4b505b12 22401
3f7b2faa
DE
22402If @code{-s} is specified, then @value{GDBN} searches for @var{filename}
22403on the search path even if @var{filename} specifies a directory.
22404The search is done by appending @var{filename} to each element of the
22405search path. So, for example, if @var{filename} is @file{mylib/myscript}
22406and the search path contains @file{/home/user} then @value{GDBN} will
22407look for the script @file{/home/user/mylib/myscript}.
22408The search is also done if @var{filename} is an absolute path.
22409For example, if @var{filename} is @file{/tmp/myscript} and
22410the search path contains @file{/home/user} then @value{GDBN} will
22411look for the script @file{/home/user/tmp/myscript}.
22412For DOS-like systems, if @var{filename} contains a drive specification,
22413it is stripped before concatenation. For example, if @var{filename} is
22414@file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN}
22415will look for the script @file{c:/tmp/myscript}.
22416
16026cd7
AS
22417If @code{-v}, for verbose mode, is given then @value{GDBN} displays
22418each command as it is executed. The option must be given before
22419@var{filename}, and is interpreted as part of the filename anywhere else.
22420
8e04817f
AC
22421Commands that would ask for confirmation if used interactively proceed
22422without asking when used in a command file. Many @value{GDBN} commands that
22423normally print messages to say what they are doing omit the messages
22424when called from command files.
c906108c 22425
8e04817f
AC
22426@value{GDBN} also accepts command input from standard input. In this
22427mode, normal output goes to standard output and error output goes to
22428standard error. Errors in a command file supplied on standard input do
6fc08d32 22429not terminate execution of the command file---execution continues with
8e04817f 22430the next command.
c906108c 22431
474c8240 22432@smallexample
8e04817f 22433gdb < cmds > log 2>&1
474c8240 22434@end smallexample
c906108c 22435
8e04817f
AC
22436(The syntax above will vary depending on the shell used.) This example
22437will execute commands from the file @file{cmds}. All output and errors
22438would be directed to @file{log}.
c906108c 22439
fcc73fe3
EZ
22440Since commands stored on command files tend to be more general than
22441commands typed interactively, they frequently need to deal with
22442complicated situations, such as different or unexpected values of
22443variables and symbols, changes in how the program being debugged is
22444built, etc. @value{GDBN} provides a set of flow-control commands to
22445deal with these complexities. Using these commands, you can write
22446complex scripts that loop over data structures, execute commands
22447conditionally, etc.
22448
22449@table @code
22450@kindex if
22451@kindex else
22452@item if
22453@itemx else
22454This command allows to include in your script conditionally executed
22455commands. The @code{if} command takes a single argument, which is an
22456expression to evaluate. It is followed by a series of commands that
22457are executed only if the expression is true (its value is nonzero).
22458There can then optionally be an @code{else} line, followed by a series
22459of commands that are only executed if the expression was false. The
22460end of the list is marked by a line containing @code{end}.
22461
22462@kindex while
22463@item while
22464This command allows to write loops. Its syntax is similar to
22465@code{if}: the command takes a single argument, which is an expression
22466to evaluate, and must be followed by the commands to execute, one per
22467line, terminated by an @code{end}. These commands are called the
22468@dfn{body} of the loop. The commands in the body of @code{while} are
22469executed repeatedly as long as the expression evaluates to true.
22470
22471@kindex loop_break
22472@item loop_break
22473This command exits the @code{while} loop in whose body it is included.
22474Execution of the script continues after that @code{while}s @code{end}
22475line.
22476
22477@kindex loop_continue
22478@item loop_continue
22479This command skips the execution of the rest of the body of commands
22480in the @code{while} loop in whose body it is included. Execution
22481branches to the beginning of the @code{while} loop, where it evaluates
22482the controlling expression.
ca91424e
EZ
22483
22484@kindex end@r{ (if/else/while commands)}
22485@item end
22486Terminate the block of commands that are the body of @code{if},
22487@code{else}, or @code{while} flow-control commands.
fcc73fe3
EZ
22488@end table
22489
22490
8e04817f 22491@node Output
d57a3c85 22492@subsection Commands for Controlled Output
c906108c 22493
8e04817f
AC
22494During the execution of a command file or a user-defined command, normal
22495@value{GDBN} output is suppressed; the only output that appears is what is
22496explicitly printed by the commands in the definition. This section
22497describes three commands useful for generating exactly the output you
22498want.
c906108c
SS
22499
22500@table @code
8e04817f
AC
22501@kindex echo
22502@item echo @var{text}
22503@c I do not consider backslash-space a standard C escape sequence
22504@c because it is not in ANSI.
22505Print @var{text}. Nonprinting characters can be included in
22506@var{text} using C escape sequences, such as @samp{\n} to print a
22507newline. @strong{No newline is printed unless you specify one.}
22508In addition to the standard C escape sequences, a backslash followed
22509by a space stands for a space. This is useful for displaying a
22510string with spaces at the beginning or the end, since leading and
22511trailing spaces are otherwise trimmed from all arguments.
22512To print @samp{@w{ }and foo =@w{ }}, use the command
22513@samp{echo \@w{ }and foo = \@w{ }}.
c906108c 22514
8e04817f
AC
22515A backslash at the end of @var{text} can be used, as in C, to continue
22516the command onto subsequent lines. For example,
c906108c 22517
474c8240 22518@smallexample
8e04817f
AC
22519echo This is some text\n\
22520which is continued\n\
22521onto several lines.\n
474c8240 22522@end smallexample
c906108c 22523
8e04817f 22524produces the same output as
c906108c 22525
474c8240 22526@smallexample
8e04817f
AC
22527echo This is some text\n
22528echo which is continued\n
22529echo onto several lines.\n
474c8240 22530@end smallexample
c906108c 22531
8e04817f
AC
22532@kindex output
22533@item output @var{expression}
22534Print the value of @var{expression} and nothing but that value: no
22535newlines, no @samp{$@var{nn} = }. The value is not entered in the
22536value history either. @xref{Expressions, ,Expressions}, for more information
22537on expressions.
c906108c 22538
8e04817f
AC
22539@item output/@var{fmt} @var{expression}
22540Print the value of @var{expression} in format @var{fmt}. You can use
22541the same formats as for @code{print}. @xref{Output Formats,,Output
79a6e687 22542Formats}, for more information.
c906108c 22543
8e04817f 22544@kindex printf
82160952
EZ
22545@item printf @var{template}, @var{expressions}@dots{}
22546Print the values of one or more @var{expressions} under the control of
22547the string @var{template}. To print several values, make
22548@var{expressions} be a comma-separated list of individual expressions,
22549which may be either numbers or pointers. Their values are printed as
22550specified by @var{template}, exactly as a C program would do by
22551executing the code below:
c906108c 22552
474c8240 22553@smallexample
82160952 22554printf (@var{template}, @var{expressions}@dots{});
474c8240 22555@end smallexample
c906108c 22556
82160952
EZ
22557As in @code{C} @code{printf}, ordinary characters in @var{template}
22558are printed verbatim, while @dfn{conversion specification} introduced
22559by the @samp{%} character cause subsequent @var{expressions} to be
22560evaluated, their values converted and formatted according to type and
22561style information encoded in the conversion specifications, and then
22562printed.
22563
8e04817f 22564For example, you can print two values in hex like this:
c906108c 22565
8e04817f
AC
22566@smallexample
22567printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
22568@end smallexample
c906108c 22569
82160952
EZ
22570@code{printf} supports all the standard @code{C} conversion
22571specifications, including the flags and modifiers between the @samp{%}
22572character and the conversion letter, with the following exceptions:
22573
22574@itemize @bullet
22575@item
22576The argument-ordering modifiers, such as @samp{2$}, are not supported.
22577
22578@item
22579The modifier @samp{*} is not supported for specifying precision or
22580width.
22581
22582@item
22583The @samp{'} flag (for separation of digits into groups according to
22584@code{LC_NUMERIC'}) is not supported.
22585
22586@item
22587The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not
22588supported.
22589
22590@item
22591The conversion letter @samp{n} (as in @samp{%n}) is not supported.
22592
22593@item
22594The conversion letters @samp{a} and @samp{A} are not supported.
22595@end itemize
22596
22597@noindent
22598Note that the @samp{ll} type modifier is supported only if the
22599underlying @code{C} implementation used to build @value{GDBN} supports
22600the @code{long long int} type, and the @samp{L} type modifier is
22601supported only if @code{long double} type is available.
22602
22603As in @code{C}, @code{printf} supports simple backslash-escape
22604sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"},
22605@samp{\a}, and @samp{\f}, that consist of backslash followed by a
22606single character. Octal and hexadecimal escape sequences are not
22607supported.
1a619819
LM
22608
22609Additionally, @code{printf} supports conversion specifications for DFP
0aea4bf3
LM
22610(@dfn{Decimal Floating Point}) types using the following length modifiers
22611together with a floating point specifier.
1a619819
LM
22612letters:
22613
22614@itemize @bullet
22615@item
22616@samp{H} for printing @code{Decimal32} types.
22617
22618@item
22619@samp{D} for printing @code{Decimal64} types.
22620
22621@item
22622@samp{DD} for printing @code{Decimal128} types.
22623@end itemize
22624
22625If the underlying @code{C} implementation used to build @value{GDBN} has
0aea4bf3 22626support for the three length modifiers for DFP types, other modifiers
3b784c4f 22627such as width and precision will also be available for @value{GDBN} to use.
1a619819
LM
22628
22629In case there is no such @code{C} support, no additional modifiers will be
22630available and the value will be printed in the standard way.
22631
22632Here's an example of printing DFP types using the above conversion letters:
22633@smallexample
0aea4bf3 22634printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
1a619819
LM
22635@end smallexample
22636
f1421989
HZ
22637@kindex eval
22638@item eval @var{template}, @var{expressions}@dots{}
22639Convert the values of one or more @var{expressions} under the control of
22640the string @var{template} to a command line, and call it.
22641
c906108c
SS
22642@end table
22643
d57a3c85
TJB
22644@node Python
22645@section Scripting @value{GDBN} using Python
22646@cindex python scripting
22647@cindex scripting with python
22648
22649You can script @value{GDBN} using the @uref{http://www.python.org/,
22650Python programming language}. This feature is available only if
22651@value{GDBN} was configured using @option{--with-python}.
22652
9279c692
JB
22653@cindex python directory
22654Python scripts used by @value{GDBN} should be installed in
22655@file{@var{data-directory}/python}, where @var{data-directory} is
9eeee977
DE
22656the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
22657This directory, known as the @dfn{python directory},
9279c692
JB
22658is automatically added to the Python Search Path in order to allow
22659the Python interpreter to locate all scripts installed at this location.
22660
5e239b84
PM
22661Additionally, @value{GDBN} commands and convenience functions which
22662are written in Python and are located in the
22663@file{@var{data-directory}/python/gdb/command} or
22664@file{@var{data-directory}/python/gdb/function} directories are
22665automatically imported when @value{GDBN} starts.
22666
d57a3c85
TJB
22667@menu
22668* Python Commands:: Accessing Python from @value{GDBN}.
22669* Python API:: Accessing @value{GDBN} from Python.
bf88dd68 22670* Python Auto-loading:: Automatically loading Python code.
0e3509db 22671* Python modules:: Python modules provided by @value{GDBN}.
d57a3c85
TJB
22672@end menu
22673
22674@node Python Commands
22675@subsection Python Commands
22676@cindex python commands
22677@cindex commands to access python
22678
8315665e 22679@value{GDBN} provides two commands for accessing the Python interpreter,
d57a3c85
TJB
22680and one related setting:
22681
22682@table @code
8315665e
YPK
22683@kindex python-interactive
22684@kindex pi
22685@item python-interactive @r{[}@var{command}@r{]}
22686@itemx pi @r{[}@var{command}@r{]}
22687Without an argument, the @code{python-interactive} command can be used
e3480f4a
YPK
22688to start an interactive Python prompt. To return to @value{GDBN},
22689type the @code{EOF} character (e.g., @kbd{Ctrl-D} on an empty prompt).
8315665e
YPK
22690
22691Alternatively, a single-line Python command can be given as an
22692argument and evaluated. If the command is an expression, the result
22693will be printed; otherwise, nothing will be printed. For example:
22694
22695@smallexample
22696(@value{GDBP}) python-interactive 2 + 3
226975
22698@end smallexample
22699
d57a3c85 22700@kindex python
8315665e
YPK
22701@kindex py
22702@item python @r{[}@var{command}@r{]}
22703@itemx py @r{[}@var{command}@r{]}
d57a3c85
TJB
22704The @code{python} command can be used to evaluate Python code.
22705
22706If given an argument, the @code{python} command will evaluate the
22707argument as a Python command. For example:
22708
22709@smallexample
22710(@value{GDBP}) python print 23
2271123
22712@end smallexample
22713
22714If you do not provide an argument to @code{python}, it will act as a
22715multi-line command, like @code{define}. In this case, the Python
22716script is made up of subsequent command lines, given after the
22717@code{python} command. This command list is terminated using a line
22718containing @code{end}. For example:
22719
22720@smallexample
22721(@value{GDBP}) python
22722Type python script
22723End with a line saying just "end".
22724>print 23
22725>end
2272623
22727@end smallexample
22728
713389e0
PM
22729@kindex set python print-stack
22730@item set python print-stack
80b6e756
PM
22731By default, @value{GDBN} will print only the message component of a
22732Python exception when an error occurs in a Python script. This can be
22733controlled using @code{set python print-stack}: if @code{full}, then
22734full Python stack printing is enabled; if @code{none}, then Python stack
22735and message printing is disabled; if @code{message}, the default, only
22736the message component of the error is printed.
d57a3c85
TJB
22737@end table
22738
95433b34
JB
22739It is also possible to execute a Python script from the @value{GDBN}
22740interpreter:
22741
22742@table @code
22743@item source @file{script-name}
22744The script name must end with @samp{.py} and @value{GDBN} must be configured
22745to recognize the script language based on filename extension using
22746the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
22747
22748@item python execfile ("script-name")
22749This method is based on the @code{execfile} Python built-in function,
22750and thus is always available.
22751@end table
22752
d57a3c85
TJB
22753@node Python API
22754@subsection Python API
22755@cindex python api
22756@cindex programming in python
22757
22758@cindex python stdout
22759@cindex python pagination
22760At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
22761@code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
22762A Python program which outputs to one of these streams may have its
22763output interrupted by the user (@pxref{Screen Size}). In this
22764situation, a Python @code{KeyboardInterrupt} exception is thrown.
22765
22766@menu
22767* Basic Python:: Basic Python Functions.
06e65f44
TT
22768* Exception Handling:: How Python exceptions are translated.
22769* Values From Inferior:: Python representation of values.
4c374409
JK
22770* Types In Python:: Python representation of types.
22771* Pretty Printing API:: Pretty-printing values.
a6bac58e 22772* Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
7b51bc51 22773* Writing a Pretty-Printer:: Writing a Pretty-Printer.
18a9fc12 22774* Type Printing API:: Pretty-printing types.
595939de 22775* Inferiors In Python:: Python representation of inferiors (processes)
505500db 22776* Events In Python:: Listening for events from @value{GDBN}.
595939de 22777* Threads In Python:: Accessing inferior threads from Python.
d8906c6f 22778* Commands In Python:: Implementing new commands in Python.
d7b32ed3 22779* Parameters In Python:: Adding new @value{GDBN} parameters.
bc3b79fd 22780* Functions In Python:: Writing new convenience functions.
fa33c3cd 22781* Progspaces In Python:: Program spaces.
89c73ade 22782* Objfiles In Python:: Object files.
f3e9a817
PM
22783* Frames In Python:: Accessing inferior stack frames from Python.
22784* Blocks In Python:: Accessing frame blocks from Python.
22785* Symbols In Python:: Python representation of symbols.
22786* Symbol Tables In Python:: Python representation of symbol tables.
adc36818 22787* Breakpoints In Python:: Manipulating breakpoints using Python.
cc72b2a2
KP
22788* Finish Breakpoints in Python:: Setting Breakpoints on function return
22789 using Python.
984359d2 22790* Lazy Strings In Python:: Python representation of lazy strings.
d57a3c85
TJB
22791@end menu
22792
22793@node Basic Python
22794@subsubsection Basic Python
22795
22796@cindex python functions
22797@cindex python module
22798@cindex gdb module
22799@value{GDBN} introduces a new Python module, named @code{gdb}. All
22800methods and classes added by @value{GDBN} are placed in this module.
22801@value{GDBN} automatically @code{import}s the @code{gdb} module for
22802use in all scripts evaluated by the @code{python} command.
22803
9279c692 22804@findex gdb.PYTHONDIR
d812018b 22805@defvar gdb.PYTHONDIR
9279c692
JB
22806A string containing the python directory (@pxref{Python}).
22807@end defvar
22808
d57a3c85 22809@findex gdb.execute
d812018b 22810@defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]})
d57a3c85
TJB
22811Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
22812If a GDB exception happens while @var{command} runs, it is
22813translated as described in @ref{Exception Handling,,Exception Handling}.
12453b93
TJB
22814
22815@var{from_tty} specifies whether @value{GDBN} ought to consider this
22816command as having originated from the user invoking it interactively.
22817It must be a boolean value. If omitted, it defaults to @code{False}.
bc9f0842
TT
22818
22819By default, any output produced by @var{command} is sent to
22820@value{GDBN}'s standard output. If the @var{to_string} parameter is
22821@code{True}, then output will be collected by @code{gdb.execute} and
22822returned as a string. The default is @code{False}, in which case the
5da1313b
JK
22823return value is @code{None}. If @var{to_string} is @code{True}, the
22824@value{GDBN} virtual terminal will be temporarily set to unlimited width
22825and height, and its pagination will be disabled; @pxref{Screen Size}.
d57a3c85
TJB
22826@end defun
22827
adc36818 22828@findex gdb.breakpoints
d812018b 22829@defun gdb.breakpoints ()
adc36818
PM
22830Return a sequence holding all of @value{GDBN}'s breakpoints.
22831@xref{Breakpoints In Python}, for more information.
22832@end defun
22833
8f500870 22834@findex gdb.parameter
d812018b 22835@defun gdb.parameter (parameter)
d57a3c85
TJB
22836Return the value of a @value{GDBN} parameter. @var{parameter} is a
22837string naming the parameter to look up; @var{parameter} may contain
22838spaces if the parameter has a multi-part name. For example,
22839@samp{print object} is a valid parameter name.
22840
22841If the named parameter does not exist, this function throws a
621c8364
TT
22842@code{gdb.error} (@pxref{Exception Handling}). Otherwise, the
22843parameter's value is converted to a Python value of the appropriate
22844type, and returned.
d57a3c85
TJB
22845@end defun
22846
08c637de 22847@findex gdb.history
d812018b 22848@defun gdb.history (number)
08c637de
TJB
22849Return a value from @value{GDBN}'s value history (@pxref{Value
22850History}). @var{number} indicates which history element to return.
22851If @var{number} is negative, then @value{GDBN} will take its absolute value
22852and count backward from the last element (i.e., the most recent element) to
22853find the value to return. If @var{number} is zero, then @value{GDBN} will
a0c36267 22854return the most recent element. If the element specified by @var{number}
621c8364 22855doesn't exist in the value history, a @code{gdb.error} exception will be
08c637de
TJB
22856raised.
22857
22858If no exception is raised, the return value is always an instance of
22859@code{gdb.Value} (@pxref{Values From Inferior}).
22860@end defun
22861
57a1d736 22862@findex gdb.parse_and_eval
d812018b 22863@defun gdb.parse_and_eval (expression)
57a1d736
TT
22864Parse @var{expression} as an expression in the current language,
22865evaluate it, and return the result as a @code{gdb.Value}.
22866@var{expression} must be a string.
22867
22868This function can be useful when implementing a new command
22869(@pxref{Commands In Python}), as it provides a way to parse the
22870command's argument as an expression. It is also useful simply to
22871compute values, for example, it is the only way to get the value of a
22872convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}.
22873@end defun
22874
7efc75aa
SCR
22875@findex gdb.find_pc_line
22876@defun gdb.find_pc_line (pc)
22877Return the @code{gdb.Symtab_and_line} object corresponding to the
22878@var{pc} value. @xref{Symbol Tables In Python}. If an invalid
22879value of @var{pc} is passed as an argument, then the @code{symtab} and
22880@code{line} attributes of the returned @code{gdb.Symtab_and_line} object
22881will be @code{None} and 0 respectively.
22882@end defun
22883
ca5c20b6 22884@findex gdb.post_event
d812018b 22885@defun gdb.post_event (event)
ca5c20b6
PM
22886Put @var{event}, a callable object taking no arguments, into
22887@value{GDBN}'s internal event queue. This callable will be invoked at
22888some later point, during @value{GDBN}'s event processing. Events
22889posted using @code{post_event} will be run in the order in which they
22890were posted; however, there is no way to know when they will be
22891processed relative to other events inside @value{GDBN}.
22892
22893@value{GDBN} is not thread-safe. If your Python program uses multiple
22894threads, you must be careful to only call @value{GDBN}-specific
22895functions in the main @value{GDBN} thread. @code{post_event} ensures
22896this. For example:
22897
22898@smallexample
22899(@value{GDBP}) python
22900>import threading
22901>
22902>class Writer():
22903> def __init__(self, message):
22904> self.message = message;
22905> def __call__(self):
22906> gdb.write(self.message)
22907>
22908>class MyThread1 (threading.Thread):
22909> def run (self):
22910> gdb.post_event(Writer("Hello "))
22911>
22912>class MyThread2 (threading.Thread):
22913> def run (self):
22914> gdb.post_event(Writer("World\n"))
22915>
22916>MyThread1().start()
22917>MyThread2().start()
22918>end
22919(@value{GDBP}) Hello World
22920@end smallexample
22921@end defun
22922
99c3dc11 22923@findex gdb.write
d812018b 22924@defun gdb.write (string @r{[}, stream{]})
99c3dc11
PM
22925Print a string to @value{GDBN}'s paginated output stream. The
22926optional @var{stream} determines the stream to print to. The default
22927stream is @value{GDBN}'s standard output stream. Possible stream
22928values are:
22929
22930@table @code
22931@findex STDOUT
22932@findex gdb.STDOUT
d812018b 22933@item gdb.STDOUT
99c3dc11
PM
22934@value{GDBN}'s standard output stream.
22935
22936@findex STDERR
22937@findex gdb.STDERR
d812018b 22938@item gdb.STDERR
99c3dc11
PM
22939@value{GDBN}'s standard error stream.
22940
22941@findex STDLOG
22942@findex gdb.STDLOG
d812018b 22943@item gdb.STDLOG
99c3dc11
PM
22944@value{GDBN}'s log stream (@pxref{Logging Output}).
22945@end table
22946
d57a3c85 22947Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
99c3dc11
PM
22948call this function and will automatically direct the output to the
22949relevant stream.
d57a3c85
TJB
22950@end defun
22951
22952@findex gdb.flush
d812018b 22953@defun gdb.flush ()
99c3dc11
PM
22954Flush the buffer of a @value{GDBN} paginated stream so that the
22955contents are displayed immediately. @value{GDBN} will flush the
22956contents of a stream automatically when it encounters a newline in the
22957buffer. The optional @var{stream} determines the stream to flush. The
22958default stream is @value{GDBN}'s standard output stream. Possible
22959stream values are:
22960
22961@table @code
22962@findex STDOUT
22963@findex gdb.STDOUT
d812018b 22964@item gdb.STDOUT
99c3dc11
PM
22965@value{GDBN}'s standard output stream.
22966
22967@findex STDERR
22968@findex gdb.STDERR
d812018b 22969@item gdb.STDERR
99c3dc11
PM
22970@value{GDBN}'s standard error stream.
22971
22972@findex STDLOG
22973@findex gdb.STDLOG
d812018b 22974@item gdb.STDLOG
99c3dc11
PM
22975@value{GDBN}'s log stream (@pxref{Logging Output}).
22976
22977@end table
22978
22979Flushing @code{sys.stdout} or @code{sys.stderr} will automatically
22980call this function for the relevant stream.
d57a3c85
TJB
22981@end defun
22982
f870a310 22983@findex gdb.target_charset
d812018b 22984@defun gdb.target_charset ()
f870a310
TT
22985Return the name of the current target character set (@pxref{Character
22986Sets}). This differs from @code{gdb.parameter('target-charset')} in
22987that @samp{auto} is never returned.
22988@end defun
22989
22990@findex gdb.target_wide_charset
d812018b 22991@defun gdb.target_wide_charset ()
f870a310
TT
22992Return the name of the current target wide character set
22993(@pxref{Character Sets}). This differs from
22994@code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
22995never returned.
22996@end defun
22997
cb2e07a6 22998@findex gdb.solib_name
d812018b 22999@defun gdb.solib_name (address)
cb2e07a6
PM
23000Return the name of the shared library holding the given @var{address}
23001as a string, or @code{None}.
23002@end defun
23003
23004@findex gdb.decode_line
d812018b 23005@defun gdb.decode_line @r{[}expression@r{]}
cb2e07a6
PM
23006Return locations of the line specified by @var{expression}, or of the
23007current line if no argument was given. This function returns a Python
23008tuple containing two elements. The first element contains a string
23009holding any unparsed section of @var{expression} (or @code{None} if
23010the expression has been fully parsed). The second element contains
23011either @code{None} or another tuple that contains all the locations
23012that match the expression represented as @code{gdb.Symtab_and_line}
23013objects (@pxref{Symbol Tables In Python}). If @var{expression} is
23014provided, it is decoded the way that @value{GDBN}'s inbuilt
23015@code{break} or @code{edit} commands do (@pxref{Specify Location}).
23016@end defun
23017
d812018b 23018@defun gdb.prompt_hook (current_prompt)
fa3a4f15
PM
23019@anchor{prompt_hook}
23020
d17b6f81
PM
23021If @var{prompt_hook} is callable, @value{GDBN} will call the method
23022assigned to this operation before a prompt is displayed by
23023@value{GDBN}.
23024
23025The parameter @code{current_prompt} contains the current @value{GDBN}
23026prompt. This method must return a Python string, or @code{None}. If
23027a string is returned, the @value{GDBN} prompt will be set to that
23028string. If @code{None} is returned, @value{GDBN} will continue to use
23029the current prompt.
23030
23031Some prompts cannot be substituted in @value{GDBN}. Secondary prompts
23032such as those used by readline for command input, and annotation
23033related prompts are prohibited from being changed.
d812018b 23034@end defun
d17b6f81 23035
d57a3c85
TJB
23036@node Exception Handling
23037@subsubsection Exception Handling
23038@cindex python exceptions
23039@cindex exceptions, python
23040
23041When executing the @code{python} command, Python exceptions
23042uncaught within the Python code are translated to calls to
23043@value{GDBN} error-reporting mechanism. If the command that called
23044@code{python} does not handle the error, @value{GDBN} will
23045terminate it and print an error message containing the Python
23046exception name, the associated value, and the Python call stack
23047backtrace at the point where the exception was raised. Example:
23048
23049@smallexample
23050(@value{GDBP}) python print foo
23051Traceback (most recent call last):
23052 File "<string>", line 1, in <module>
23053NameError: name 'foo' is not defined
23054@end smallexample
23055
621c8364
TT
23056@value{GDBN} errors that happen in @value{GDBN} commands invoked by
23057Python code are converted to Python exceptions. The type of the
23058Python exception depends on the error.
23059
23060@ftable @code
23061@item gdb.error
23062This is the base class for most exceptions generated by @value{GDBN}.
23063It is derived from @code{RuntimeError}, for compatibility with earlier
23064versions of @value{GDBN}.
23065
23066If an error occurring in @value{GDBN} does not fit into some more
23067specific category, then the generated exception will have this type.
23068
23069@item gdb.MemoryError
23070This is a subclass of @code{gdb.error} which is thrown when an
23071operation tried to access invalid memory in the inferior.
23072
23073@item KeyboardInterrupt
23074User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
23075prompt) is translated to a Python @code{KeyboardInterrupt} exception.
23076@end ftable
23077
23078In all cases, your exception handler will see the @value{GDBN} error
23079message as its value and the Python call stack backtrace at the Python
23080statement closest to where the @value{GDBN} error occured as the
d57a3c85
TJB
23081traceback.
23082
07ca107c
DE
23083@findex gdb.GdbError
23084When implementing @value{GDBN} commands in Python via @code{gdb.Command},
23085it is useful to be able to throw an exception that doesn't cause a
23086traceback to be printed. For example, the user may have invoked the
23087command incorrectly. Use the @code{gdb.GdbError} exception
23088to handle this case. Example:
23089
23090@smallexample
23091(gdb) python
23092>class HelloWorld (gdb.Command):
23093> """Greet the whole world."""
23094> def __init__ (self):
7d74f244 23095> super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
07ca107c
DE
23096> def invoke (self, args, from_tty):
23097> argv = gdb.string_to_argv (args)
23098> if len (argv) != 0:
23099> raise gdb.GdbError ("hello-world takes no arguments")
23100> print "Hello, World!"
23101>HelloWorld ()
23102>end
23103(gdb) hello-world 42
23104hello-world takes no arguments
23105@end smallexample
23106
a08702d6
TJB
23107@node Values From Inferior
23108@subsubsection Values From Inferior
23109@cindex values from inferior, with Python
23110@cindex python, working with values from inferior
23111
23112@cindex @code{gdb.Value}
23113@value{GDBN} provides values it obtains from the inferior program in
23114an object of type @code{gdb.Value}. @value{GDBN} uses this object
23115for its internal bookkeeping of the inferior's values, and for
23116fetching values when necessary.
23117
23118Inferior values that are simple scalars can be used directly in
23119Python expressions that are valid for the value's data type. Here's
23120an example for an integer or floating-point value @code{some_val}:
23121
23122@smallexample
23123bar = some_val + 2
23124@end smallexample
23125
23126@noindent
23127As result of this, @code{bar} will also be a @code{gdb.Value} object
23128whose values are of the same type as those of @code{some_val}.
23129
23130Inferior values that are structures or instances of some class can
23131be accessed using the Python @dfn{dictionary syntax}. For example, if
23132@code{some_val} is a @code{gdb.Value} instance holding a structure, you
23133can access its @code{foo} element with:
23134
23135@smallexample
23136bar = some_val['foo']
23137@end smallexample
23138
23139Again, @code{bar} will also be a @code{gdb.Value} object.
23140
5374244e
PM
23141A @code{gdb.Value} that represents a function can be executed via
23142inferior function call. Any arguments provided to the call must match
23143the function's prototype, and must be provided in the order specified
23144by that prototype.
23145
23146For example, @code{some_val} is a @code{gdb.Value} instance
23147representing a function that takes two integers as arguments. To
23148execute this function, call it like so:
23149
23150@smallexample
23151result = some_val (10,20)
23152@end smallexample
23153
23154Any values returned from a function call will be stored as a
23155@code{gdb.Value}.
23156
c0c6f777 23157The following attributes are provided:
a08702d6 23158
def2b000 23159@table @code
d812018b 23160@defvar Value.address
c0c6f777
TJB
23161If this object is addressable, this read-only attribute holds a
23162@code{gdb.Value} object representing the address. Otherwise,
23163this attribute holds @code{None}.
d812018b 23164@end defvar
c0c6f777 23165
def2b000 23166@cindex optimized out value in Python
d812018b 23167@defvar Value.is_optimized_out
def2b000
TJB
23168This read-only boolean attribute is true if the compiler optimized out
23169this value, thus it is not available for fetching from the inferior.
d812018b 23170@end defvar
2c74e833 23171
d812018b 23172@defvar Value.type
2c74e833 23173The type of this @code{gdb.Value}. The value of this attribute is a
44592cc4 23174@code{gdb.Type} object (@pxref{Types In Python}).
d812018b 23175@end defvar
03f17ccf 23176
d812018b 23177@defvar Value.dynamic_type
03f17ccf 23178The dynamic type of this @code{gdb.Value}. This uses C@t{++} run-time
fccd1d1e
EZ
23179type information (@acronym{RTTI}) to determine the dynamic type of the
23180value. If this value is of class type, it will return the class in
23181which the value is embedded, if any. If this value is of pointer or
23182reference to a class type, it will compute the dynamic type of the
23183referenced object, and return a pointer or reference to that type,
23184respectively. In all other cases, it will return the value's static
23185type.
23186
23187Note that this feature will only work when debugging a C@t{++} program
23188that includes @acronym{RTTI} for the object in question. Otherwise,
23189it will just return the static type of the value as in @kbd{ptype foo}
23190(@pxref{Symbols, ptype}).
d812018b 23191@end defvar
22dbab46
PK
23192
23193@defvar Value.is_lazy
23194The value of this read-only boolean attribute is @code{True} if this
23195@code{gdb.Value} has not yet been fetched from the inferior.
23196@value{GDBN} does not fetch values until necessary, for efficiency.
23197For example:
23198
23199@smallexample
23200myval = gdb.parse_and_eval ('somevar')
23201@end smallexample
23202
23203The value of @code{somevar} is not fetched at this time. It will be
23204fetched when the value is needed, or when the @code{fetch_lazy}
23205method is invoked.
23206@end defvar
def2b000
TJB
23207@end table
23208
23209The following methods are provided:
23210
23211@table @code
d812018b 23212@defun Value.__init__ (@var{val})
e8467610
TT
23213Many Python values can be converted directly to a @code{gdb.Value} via
23214this object initializer. Specifically:
23215
23216@table @asis
23217@item Python boolean
23218A Python boolean is converted to the boolean type from the current
23219language.
23220
23221@item Python integer
23222A Python integer is converted to the C @code{long} type for the
23223current architecture.
23224
23225@item Python long
23226A Python long is converted to the C @code{long long} type for the
23227current architecture.
23228
23229@item Python float
23230A Python float is converted to the C @code{double} type for the
23231current architecture.
23232
23233@item Python string
23234A Python string is converted to a target string, using the current
23235target encoding.
23236
23237@item @code{gdb.Value}
23238If @code{val} is a @code{gdb.Value}, then a copy of the value is made.
23239
23240@item @code{gdb.LazyString}
23241If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In
23242Python}), then the lazy string's @code{value} method is called, and
23243its result is used.
23244@end table
d812018b 23245@end defun
e8467610 23246
d812018b 23247@defun Value.cast (type)
14ff2235
PM
23248Return a new instance of @code{gdb.Value} that is the result of
23249casting this instance to the type described by @var{type}, which must
23250be a @code{gdb.Type} object. If the cast cannot be performed for some
23251reason, this method throws an exception.
d812018b 23252@end defun
14ff2235 23253
d812018b 23254@defun Value.dereference ()
def2b000
TJB
23255For pointer data types, this method returns a new @code{gdb.Value} object
23256whose contents is the object pointed to by the pointer. For example, if
23257@code{foo} is a C pointer to an @code{int}, declared in your C program as
a08702d6
TJB
23258
23259@smallexample
23260int *foo;
23261@end smallexample
23262
23263@noindent
23264then you can use the corresponding @code{gdb.Value} to access what
23265@code{foo} points to like this:
23266
23267@smallexample
23268bar = foo.dereference ()
23269@end smallexample
23270
23271The result @code{bar} will be a @code{gdb.Value} object holding the
23272value pointed to by @code{foo}.
7b282c5a
SCR
23273
23274A similar function @code{Value.referenced_value} exists which also
23275returns @code{gdb.Value} objects corresonding to the values pointed to
23276by pointer values (and additionally, values referenced by reference
23277values). However, the behavior of @code{Value.dereference}
23278differs from @code{Value.referenced_value} by the fact that the
23279behavior of @code{Value.dereference} is identical to applying the C
23280unary operator @code{*} on a given value. For example, consider a
23281reference to a pointer @code{ptrref}, declared in your C@t{++} program
23282as
23283
23284@smallexample
23285typedef int *intptr;
23286...
23287int val = 10;
23288intptr ptr = &val;
23289intptr &ptrref = ptr;
23290@end smallexample
23291
23292Though @code{ptrref} is a reference value, one can apply the method
23293@code{Value.dereference} to the @code{gdb.Value} object corresponding
23294to it and obtain a @code{gdb.Value} which is identical to that
23295corresponding to @code{val}. However, if you apply the method
23296@code{Value.referenced_value}, the result would be a @code{gdb.Value}
23297object identical to that corresponding to @code{ptr}.
23298
23299@smallexample
23300py_ptrref = gdb.parse_and_eval ("ptrref")
23301py_val = py_ptrref.dereference ()
23302py_ptr = py_ptrref.referenced_value ()
23303@end smallexample
23304
23305The @code{gdb.Value} object @code{py_val} is identical to that
23306corresponding to @code{val}, and @code{py_ptr} is identical to that
23307corresponding to @code{ptr}. In general, @code{Value.dereference} can
23308be applied whenever the C unary operator @code{*} can be applied
23309to the corresponding C value. For those cases where applying both
23310@code{Value.dereference} and @code{Value.referenced_value} is allowed,
23311the results obtained need not be identical (as we have seen in the above
23312example). The results are however identical when applied on
23313@code{gdb.Value} objects corresponding to pointers (@code{gdb.Value}
23314objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
23315@end defun
23316
23317@defun Value.referenced_value ()
23318For pointer or reference data types, this method returns a new
23319@code{gdb.Value} object corresponding to the value referenced by the
23320pointer/reference value. For pointer data types,
23321@code{Value.dereference} and @code{Value.referenced_value} produce
23322identical results. The difference between these methods is that
23323@code{Value.dereference} cannot get the values referenced by reference
23324values. For example, consider a reference to an @code{int}, declared
23325in your C@t{++} program as
23326
23327@smallexample
23328int val = 10;
23329int &ref = val;
23330@end smallexample
23331
23332@noindent
23333then applying @code{Value.dereference} to the @code{gdb.Value} object
23334corresponding to @code{ref} will result in an error, while applying
23335@code{Value.referenced_value} will result in a @code{gdb.Value} object
23336identical to that corresponding to @code{val}.
23337
23338@smallexample
23339py_ref = gdb.parse_and_eval ("ref")
23340er_ref = py_ref.dereference () # Results in error
23341py_val = py_ref.referenced_value () # Returns the referenced value
23342@end smallexample
23343
23344The @code{gdb.Value} object @code{py_val} is identical to that
23345corresponding to @code{val}.
d812018b 23346@end defun
a08702d6 23347
d812018b 23348@defun Value.dynamic_cast (type)
f9ffd4bb
TT
23349Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast}
23350operator were used. Consult a C@t{++} reference for details.
d812018b 23351@end defun
f9ffd4bb 23352
d812018b 23353@defun Value.reinterpret_cast (type)
f9ffd4bb
TT
23354Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast}
23355operator were used. Consult a C@t{++} reference for details.
d812018b 23356@end defun
f9ffd4bb 23357
d812018b 23358@defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]})
b6cb8e7d
TJB
23359If this @code{gdb.Value} represents a string, then this method
23360converts the contents to a Python string. Otherwise, this method will
23361throw an exception.
23362
23363Strings are recognized in a language-specific way; whether a given
23364@code{gdb.Value} represents a string is determined by the current
23365language.
23366
23367For C-like languages, a value is a string if it is a pointer to or an
23368array of characters or ints. The string is assumed to be terminated
fbb8f299
PM
23369by a zero of the appropriate width. However if the optional length
23370argument is given, the string will be converted to that given length,
23371ignoring any embedded zeros that the string may contain.
b6cb8e7d
TJB
23372
23373If the optional @var{encoding} argument is given, it must be a string
23374naming the encoding of the string in the @code{gdb.Value}, such as
23375@code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
23376the same encodings as the corresponding argument to Python's
23377@code{string.decode} method, and the Python codec machinery will be used
23378to convert the string. If @var{encoding} is not given, or if
23379@var{encoding} is the empty string, then either the @code{target-charset}
23380(@pxref{Character Sets}) will be used, or a language-specific encoding
23381will be used, if the current language is able to supply one.
23382
23383The optional @var{errors} argument is the same as the corresponding
23384argument to Python's @code{string.decode} method.
fbb8f299
PM
23385
23386If the optional @var{length} argument is given, the string will be
23387fetched and converted to the given length.
d812018b 23388@end defun
be759fcf 23389
d812018b 23390@defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]})
be759fcf
PM
23391If this @code{gdb.Value} represents a string, then this method
23392converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings
23393In Python}). Otherwise, this method will throw an exception.
23394
23395If the optional @var{encoding} argument is given, it must be a string
23396naming the encoding of the @code{gdb.LazyString}. Some examples are:
23397@samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the
23398@var{encoding} argument is an encoding that @value{GDBN} does
23399recognize, @value{GDBN} will raise an error.
23400
23401When a lazy string is printed, the @value{GDBN} encoding machinery is
23402used to convert the string during printing. If the optional
23403@var{encoding} argument is not provided, or is an empty string,
23404@value{GDBN} will automatically select the encoding most suitable for
23405the string type. For further information on encoding in @value{GDBN}
23406please see @ref{Character Sets}.
23407
23408If the optional @var{length} argument is given, the string will be
23409fetched and encoded to the length of characters specified. If
23410the @var{length} argument is not provided, the string will be fetched
23411and encoded until a null of appropriate width is found.
d812018b 23412@end defun
22dbab46
PK
23413
23414@defun Value.fetch_lazy ()
23415If the @code{gdb.Value} object is currently a lazy value
23416(@code{gdb.Value.is_lazy} is @code{True}), then the value is
23417fetched from the inferior. Any errors that occur in the process
23418will produce a Python exception.
23419
23420If the @code{gdb.Value} object is not a lazy value, this method
23421has no effect.
23422
23423This method does not return a value.
23424@end defun
23425
def2b000 23426@end table
b6cb8e7d 23427
2c74e833
TT
23428@node Types In Python
23429@subsubsection Types In Python
23430@cindex types in Python
23431@cindex Python, working with types
23432
23433@tindex gdb.Type
23434@value{GDBN} represents types from the inferior using the class
23435@code{gdb.Type}.
23436
23437The following type-related functions are available in the @code{gdb}
23438module:
23439
23440@findex gdb.lookup_type
d812018b 23441@defun gdb.lookup_type (name @r{[}, block@r{]})
2c74e833
TT
23442This function looks up a type by name. @var{name} is the name of the
23443type to look up. It must be a string.
23444
5107b149
PM
23445If @var{block} is given, then @var{name} is looked up in that scope.
23446Otherwise, it is searched for globally.
23447
2c74e833
TT
23448Ordinarily, this function will return an instance of @code{gdb.Type}.
23449If the named type cannot be found, it will throw an exception.
23450@end defun
23451
a73bb892
PK
23452If the type is a structure or class type, or an enum type, the fields
23453of that type can be accessed using the Python @dfn{dictionary syntax}.
23454For example, if @code{some_type} is a @code{gdb.Type} instance holding
23455a structure type, you can access its @code{foo} field with:
23456
23457@smallexample
23458bar = some_type['foo']
23459@end smallexample
23460
23461@code{bar} will be a @code{gdb.Field} object; see below under the
23462description of the @code{Type.fields} method for a description of the
23463@code{gdb.Field} class.
23464
2c74e833
TT
23465An instance of @code{Type} has the following attributes:
23466
23467@table @code
d812018b 23468@defvar Type.code
2c74e833
TT
23469The type code for this type. The type code will be one of the
23470@code{TYPE_CODE_} constants defined below.
d812018b 23471@end defvar
2c74e833 23472
d812018b 23473@defvar Type.sizeof
2c74e833
TT
23474The size of this type, in target @code{char} units. Usually, a
23475target's @code{char} type will be an 8-bit byte. However, on some
23476unusual platforms, this type may have a different size.
d812018b 23477@end defvar
2c74e833 23478
d812018b 23479@defvar Type.tag
2c74e833
TT
23480The tag name for this type. The tag name is the name after
23481@code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
23482languages have this concept. If this type has no tag name, then
23483@code{None} is returned.
d812018b 23484@end defvar
2c74e833
TT
23485@end table
23486
23487The following methods are provided:
23488
23489@table @code
d812018b 23490@defun Type.fields ()
2c74e833
TT
23491For structure and union types, this method returns the fields. Range
23492types have two fields, the minimum and maximum values. Enum types
23493have one field per enum constant. Function and method types have one
23494field per parameter. The base types of C@t{++} classes are also
23495represented as fields. If the type has no fields, or does not fit
23496into one of these categories, an empty sequence will be returned.
23497
a73bb892 23498Each field is a @code{gdb.Field} object, with some pre-defined attributes:
2c74e833
TT
23499@table @code
23500@item bitpos
23501This attribute is not available for @code{static} fields (as in
23502C@t{++} or Java). For non-@code{static} fields, the value is the bit
a9f54f60
TT
23503position of the field. For @code{enum} fields, the value is the
23504enumeration member's integer representation.
2c74e833
TT
23505
23506@item name
23507The name of the field, or @code{None} for anonymous fields.
23508
23509@item artificial
23510This is @code{True} if the field is artificial, usually meaning that
23511it was provided by the compiler and not the user. This attribute is
23512always provided, and is @code{False} if the field is not artificial.
23513
bfd31e71
PM
23514@item is_base_class
23515This is @code{True} if the field represents a base class of a C@t{++}
23516structure. This attribute is always provided, and is @code{False}
23517if the field is not a base class of the type that is the argument of
23518@code{fields}, or if that type was not a C@t{++} class.
23519
2c74e833
TT
23520@item bitsize
23521If the field is packed, or is a bitfield, then this will have a
23522non-zero value, which is the size of the field in bits. Otherwise,
23523this will be zero; in this case the field's size is given by its type.
23524
23525@item type
23526The type of the field. This is usually an instance of @code{Type},
23527but it can be @code{None} in some situations.
23528@end table
d812018b 23529@end defun
2c74e833 23530
d812018b 23531@defun Type.array (@var{n1} @r{[}, @var{n2}@r{]})
702c2711
TT
23532Return a new @code{gdb.Type} object which represents an array of this
23533type. If one argument is given, it is the inclusive upper bound of
23534the array; in this case the lower bound is zero. If two arguments are
23535given, the first argument is the lower bound of the array, and the
23536second argument is the upper bound of the array. An array's length
23537must not be negative, but the bounds can be.
d812018b 23538@end defun
702c2711 23539
a72c3253
DE
23540@defun Type.vector (@var{n1} @r{[}, @var{n2}@r{]})
23541Return a new @code{gdb.Type} object which represents a vector of this
23542type. If one argument is given, it is the inclusive upper bound of
23543the vector; in this case the lower bound is zero. If two arguments are
23544given, the first argument is the lower bound of the vector, and the
23545second argument is the upper bound of the vector. A vector's length
23546must not be negative, but the bounds can be.
23547
23548The difference between an @code{array} and a @code{vector} is that
23549arrays behave like in C: when used in expressions they decay to a pointer
23550to the first element whereas vectors are treated as first class values.
23551@end defun
23552
d812018b 23553@defun Type.const ()
2c74e833
TT
23554Return a new @code{gdb.Type} object which represents a
23555@code{const}-qualified variant of this type.
d812018b 23556@end defun
2c74e833 23557
d812018b 23558@defun Type.volatile ()
2c74e833
TT
23559Return a new @code{gdb.Type} object which represents a
23560@code{volatile}-qualified variant of this type.
d812018b 23561@end defun
2c74e833 23562
d812018b 23563@defun Type.unqualified ()
2c74e833
TT
23564Return a new @code{gdb.Type} object which represents an unqualified
23565variant of this type. That is, the result is neither @code{const} nor
23566@code{volatile}.
d812018b 23567@end defun
2c74e833 23568
d812018b 23569@defun Type.range ()
361ae042
PM
23570Return a Python @code{Tuple} object that contains two elements: the
23571low bound of the argument type and the high bound of that type. If
23572the type does not have a range, @value{GDBN} will raise a
621c8364 23573@code{gdb.error} exception (@pxref{Exception Handling}).
d812018b 23574@end defun
361ae042 23575
d812018b 23576@defun Type.reference ()
2c74e833
TT
23577Return a new @code{gdb.Type} object which represents a reference to this
23578type.
d812018b 23579@end defun
2c74e833 23580
d812018b 23581@defun Type.pointer ()
7a6973ad
TT
23582Return a new @code{gdb.Type} object which represents a pointer to this
23583type.
d812018b 23584@end defun
7a6973ad 23585
d812018b 23586@defun Type.strip_typedefs ()
2c74e833
TT
23587Return a new @code{gdb.Type} that represents the real type,
23588after removing all layers of typedefs.
d812018b 23589@end defun
2c74e833 23590
d812018b 23591@defun Type.target ()
2c74e833
TT
23592Return a new @code{gdb.Type} object which represents the target type
23593of this type.
23594
23595For a pointer type, the target type is the type of the pointed-to
23596object. For an array type (meaning C-like arrays), the target type is
23597the type of the elements of the array. For a function or method type,
23598the target type is the type of the return value. For a complex type,
23599the target type is the type of the elements. For a typedef, the
23600target type is the aliased type.
23601
23602If the type does not have a target, this method will throw an
23603exception.
d812018b 23604@end defun
2c74e833 23605
d812018b 23606@defun Type.template_argument (n @r{[}, block@r{]})
2c74e833
TT
23607If this @code{gdb.Type} is an instantiation of a template, this will
23608return a new @code{gdb.Type} which represents the type of the
23609@var{n}th template argument.
23610
23611If this @code{gdb.Type} is not a template type, this will throw an
23612exception. Ordinarily, only C@t{++} code will have template types.
23613
5107b149
PM
23614If @var{block} is given, then @var{name} is looked up in that scope.
23615Otherwise, it is searched for globally.
d812018b 23616@end defun
2c74e833
TT
23617@end table
23618
23619
23620Each type has a code, which indicates what category this type falls
23621into. The available type categories are represented by constants
23622defined in the @code{gdb} module:
23623
23624@table @code
23625@findex TYPE_CODE_PTR
23626@findex gdb.TYPE_CODE_PTR
d812018b 23627@item gdb.TYPE_CODE_PTR
2c74e833
TT
23628The type is a pointer.
23629
23630@findex TYPE_CODE_ARRAY
23631@findex gdb.TYPE_CODE_ARRAY
d812018b 23632@item gdb.TYPE_CODE_ARRAY
2c74e833
TT
23633The type is an array.
23634
23635@findex TYPE_CODE_STRUCT
23636@findex gdb.TYPE_CODE_STRUCT
d812018b 23637@item gdb.TYPE_CODE_STRUCT
2c74e833
TT
23638The type is a structure.
23639
23640@findex TYPE_CODE_UNION
23641@findex gdb.TYPE_CODE_UNION
d812018b 23642@item gdb.TYPE_CODE_UNION
2c74e833
TT
23643The type is a union.
23644
23645@findex TYPE_CODE_ENUM
23646@findex gdb.TYPE_CODE_ENUM
d812018b 23647@item gdb.TYPE_CODE_ENUM
2c74e833
TT
23648The type is an enum.
23649
23650@findex TYPE_CODE_FLAGS
23651@findex gdb.TYPE_CODE_FLAGS
d812018b 23652@item gdb.TYPE_CODE_FLAGS
2c74e833
TT
23653A bit flags type, used for things such as status registers.
23654
23655@findex TYPE_CODE_FUNC
23656@findex gdb.TYPE_CODE_FUNC
d812018b 23657@item gdb.TYPE_CODE_FUNC
2c74e833
TT
23658The type is a function.
23659
23660@findex TYPE_CODE_INT
23661@findex gdb.TYPE_CODE_INT
d812018b 23662@item gdb.TYPE_CODE_INT
2c74e833
TT
23663The type is an integer type.
23664
23665@findex TYPE_CODE_FLT
23666@findex gdb.TYPE_CODE_FLT
d812018b 23667@item gdb.TYPE_CODE_FLT
2c74e833
TT
23668A floating point type.
23669
23670@findex TYPE_CODE_VOID
23671@findex gdb.TYPE_CODE_VOID
d812018b 23672@item gdb.TYPE_CODE_VOID
2c74e833
TT
23673The special type @code{void}.
23674
23675@findex TYPE_CODE_SET
23676@findex gdb.TYPE_CODE_SET
d812018b 23677@item gdb.TYPE_CODE_SET
2c74e833
TT
23678A Pascal set type.
23679
23680@findex TYPE_CODE_RANGE
23681@findex gdb.TYPE_CODE_RANGE
d812018b 23682@item gdb.TYPE_CODE_RANGE
2c74e833
TT
23683A range type, that is, an integer type with bounds.
23684
23685@findex TYPE_CODE_STRING
23686@findex gdb.TYPE_CODE_STRING
d812018b 23687@item gdb.TYPE_CODE_STRING
2c74e833
TT
23688A string type. Note that this is only used for certain languages with
23689language-defined string types; C strings are not represented this way.
23690
23691@findex TYPE_CODE_BITSTRING
23692@findex gdb.TYPE_CODE_BITSTRING
d812018b 23693@item gdb.TYPE_CODE_BITSTRING
6b1755ce 23694A string of bits. It is deprecated.
2c74e833
TT
23695
23696@findex TYPE_CODE_ERROR
23697@findex gdb.TYPE_CODE_ERROR
d812018b 23698@item gdb.TYPE_CODE_ERROR
2c74e833
TT
23699An unknown or erroneous type.
23700
23701@findex TYPE_CODE_METHOD
23702@findex gdb.TYPE_CODE_METHOD
d812018b 23703@item gdb.TYPE_CODE_METHOD
2c74e833
TT
23704A method type, as found in C@t{++} or Java.
23705
23706@findex TYPE_CODE_METHODPTR
23707@findex gdb.TYPE_CODE_METHODPTR
d812018b 23708@item gdb.TYPE_CODE_METHODPTR
2c74e833
TT
23709A pointer-to-member-function.
23710
23711@findex TYPE_CODE_MEMBERPTR
23712@findex gdb.TYPE_CODE_MEMBERPTR
d812018b 23713@item gdb.TYPE_CODE_MEMBERPTR
2c74e833
TT
23714A pointer-to-member.
23715
23716@findex TYPE_CODE_REF
23717@findex gdb.TYPE_CODE_REF
d812018b 23718@item gdb.TYPE_CODE_REF
2c74e833
TT
23719A reference type.
23720
23721@findex TYPE_CODE_CHAR
23722@findex gdb.TYPE_CODE_CHAR
d812018b 23723@item gdb.TYPE_CODE_CHAR
2c74e833
TT
23724A character type.
23725
23726@findex TYPE_CODE_BOOL
23727@findex gdb.TYPE_CODE_BOOL
d812018b 23728@item gdb.TYPE_CODE_BOOL
2c74e833
TT
23729A boolean type.
23730
23731@findex TYPE_CODE_COMPLEX
23732@findex gdb.TYPE_CODE_COMPLEX
d812018b 23733@item gdb.TYPE_CODE_COMPLEX
2c74e833
TT
23734A complex float type.
23735
23736@findex TYPE_CODE_TYPEDEF
23737@findex gdb.TYPE_CODE_TYPEDEF
d812018b 23738@item gdb.TYPE_CODE_TYPEDEF
2c74e833
TT
23739A typedef to some other type.
23740
23741@findex TYPE_CODE_NAMESPACE
23742@findex gdb.TYPE_CODE_NAMESPACE
d812018b 23743@item gdb.TYPE_CODE_NAMESPACE
2c74e833
TT
23744A C@t{++} namespace.
23745
23746@findex TYPE_CODE_DECFLOAT
23747@findex gdb.TYPE_CODE_DECFLOAT
d812018b 23748@item gdb.TYPE_CODE_DECFLOAT
2c74e833
TT
23749A decimal floating point type.
23750
23751@findex TYPE_CODE_INTERNAL_FUNCTION
23752@findex gdb.TYPE_CODE_INTERNAL_FUNCTION
d812018b 23753@item gdb.TYPE_CODE_INTERNAL_FUNCTION
2c74e833
TT
23754A function internal to @value{GDBN}. This is the type used to represent
23755convenience functions.
23756@end table
23757
0e3509db
DE
23758Further support for types is provided in the @code{gdb.types}
23759Python module (@pxref{gdb.types}).
23760
4c374409
JK
23761@node Pretty Printing API
23762@subsubsection Pretty Printing API
a6bac58e 23763
4c374409 23764An example output is provided (@pxref{Pretty Printing}).
a6bac58e
TT
23765
23766A pretty-printer is just an object that holds a value and implements a
23767specific interface, defined here.
23768
d812018b 23769@defun pretty_printer.children (self)
a6bac58e
TT
23770@value{GDBN} will call this method on a pretty-printer to compute the
23771children of the pretty-printer's value.
23772
23773This method must return an object conforming to the Python iterator
23774protocol. Each item returned by the iterator must be a tuple holding
23775two elements. The first element is the ``name'' of the child; the
23776second element is the child's value. The value can be any Python
23777object which is convertible to a @value{GDBN} value.
23778
23779This method is optional. If it does not exist, @value{GDBN} will act
23780as though the value has no children.
d812018b 23781@end defun
a6bac58e 23782
d812018b 23783@defun pretty_printer.display_hint (self)
a6bac58e
TT
23784The CLI may call this method and use its result to change the
23785formatting of a value. The result will also be supplied to an MI
23786consumer as a @samp{displayhint} attribute of the variable being
23787printed.
23788
23789This method is optional. If it does exist, this method must return a
23790string.
23791
23792Some display hints are predefined by @value{GDBN}:
23793
23794@table @samp
23795@item array
23796Indicate that the object being printed is ``array-like''. The CLI
23797uses this to respect parameters such as @code{set print elements} and
23798@code{set print array}.
23799
23800@item map
23801Indicate that the object being printed is ``map-like'', and that the
23802children of this value can be assumed to alternate between keys and
23803values.
23804
23805@item string
23806Indicate that the object being printed is ``string-like''. If the
23807printer's @code{to_string} method returns a Python string of some
23808kind, then @value{GDBN} will call its internal language-specific
23809string-printing function to format the string. For the CLI this means
23810adding quotation marks, possibly escaping some characters, respecting
23811@code{set print elements}, and the like.
23812@end table
d812018b 23813@end defun
a6bac58e 23814
d812018b 23815@defun pretty_printer.to_string (self)
a6bac58e
TT
23816@value{GDBN} will call this method to display the string
23817representation of the value passed to the object's constructor.
23818
23819When printing from the CLI, if the @code{to_string} method exists,
23820then @value{GDBN} will prepend its result to the values returned by
23821@code{children}. Exactly how this formatting is done is dependent on
23822the display hint, and may change as more hints are added. Also,
23823depending on the print settings (@pxref{Print Settings}), the CLI may
23824print just the result of @code{to_string} in a stack trace, omitting
23825the result of @code{children}.
23826
23827If this method returns a string, it is printed verbatim.
23828
23829Otherwise, if this method returns an instance of @code{gdb.Value},
23830then @value{GDBN} prints this value. This may result in a call to
23831another pretty-printer.
23832
23833If instead the method returns a Python value which is convertible to a
23834@code{gdb.Value}, then @value{GDBN} performs the conversion and prints
23835the resulting value. Again, this may result in a call to another
23836pretty-printer. Python scalars (integers, floats, and booleans) and
23837strings are convertible to @code{gdb.Value}; other types are not.
23838
79f283fe
PM
23839Finally, if this method returns @code{None} then no further operations
23840are peformed in this method and nothing is printed.
23841
a6bac58e 23842If the result is not one of these types, an exception is raised.
d812018b 23843@end defun
a6bac58e 23844
464b3efb
TT
23845@value{GDBN} provides a function which can be used to look up the
23846default pretty-printer for a @code{gdb.Value}:
23847
23848@findex gdb.default_visualizer
d812018b 23849@defun gdb.default_visualizer (value)
464b3efb
TT
23850This function takes a @code{gdb.Value} object as an argument. If a
23851pretty-printer for this value exists, then it is returned. If no such
23852printer exists, then this returns @code{None}.
23853@end defun
23854
a6bac58e
TT
23855@node Selecting Pretty-Printers
23856@subsubsection Selecting Pretty-Printers
23857
23858The Python list @code{gdb.pretty_printers} contains an array of
967cf477 23859functions or callable objects that have been registered via addition
7b51bc51
DE
23860as a pretty-printer. Printers in this list are called @code{global}
23861printers, they're available when debugging all inferiors.
fa33c3cd 23862Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute.
a6bac58e
TT
23863Each @code{gdb.Objfile} also contains a @code{pretty_printers}
23864attribute.
23865
7b51bc51 23866Each function on these lists is passed a single @code{gdb.Value}
a6bac58e 23867argument and should return a pretty-printer object conforming to the
4c374409 23868interface definition above (@pxref{Pretty Printing API}). If a function
a6bac58e
TT
23869cannot create a pretty-printer for the value, it should return
23870@code{None}.
23871
23872@value{GDBN} first checks the @code{pretty_printers} attribute of each
fa33c3cd 23873@code{gdb.Objfile} in the current program space and iteratively calls
7b51bc51
DE
23874each enabled lookup routine in the list for that @code{gdb.Objfile}
23875until it receives a pretty-printer object.
fa33c3cd
DE
23876If no pretty-printer is found in the objfile lists, @value{GDBN} then
23877searches the pretty-printer list of the current program space,
967cf477 23878calling each enabled function until an object is returned.
a6bac58e 23879After these lists have been exhausted, it tries the global
967cf477 23880@code{gdb.pretty_printers} list, again calling each enabled function until an
a6bac58e
TT
23881object is returned.
23882
23883The order in which the objfiles are searched is not specified. For a
23884given list, functions are always invoked from the head of the list,
23885and iterated over sequentially until the end of the list, or a printer
23886object is returned.
23887
7b51bc51
DE
23888For various reasons a pretty-printer may not work.
23889For example, the underlying data structure may have changed and
23890the pretty-printer is out of date.
23891
23892The consequences of a broken pretty-printer are severe enough that
23893@value{GDBN} provides support for enabling and disabling individual
23894printers. For example, if @code{print frame-arguments} is on,
23895a backtrace can become highly illegible if any argument is printed
23896with a broken printer.
23897
23898Pretty-printers are enabled and disabled by attaching an @code{enabled}
23899attribute to the registered function or callable object. If this attribute
23900is present and its value is @code{False}, the printer is disabled, otherwise
23901the printer is enabled.
23902
23903@node Writing a Pretty-Printer
23904@subsubsection Writing a Pretty-Printer
23905@cindex writing a pretty-printer
23906
23907A pretty-printer consists of two parts: a lookup function to detect
23908if the type is supported, and the printer itself.
23909
a6bac58e 23910Here is an example showing how a @code{std::string} printer might be
7b51bc51
DE
23911written. @xref{Pretty Printing API}, for details on the API this class
23912must provide.
a6bac58e
TT
23913
23914@smallexample
7b51bc51 23915class StdStringPrinter(object):
a6bac58e
TT
23916 "Print a std::string"
23917
7b51bc51 23918 def __init__(self, val):
a6bac58e
TT
23919 self.val = val
23920
7b51bc51 23921 def to_string(self):
a6bac58e
TT
23922 return self.val['_M_dataplus']['_M_p']
23923
7b51bc51 23924 def display_hint(self):
a6bac58e
TT
23925 return 'string'
23926@end smallexample
23927
23928And here is an example showing how a lookup function for the printer
23929example above might be written.
23930
23931@smallexample
7b51bc51 23932def str_lookup_function(val):
a6bac58e 23933 lookup_tag = val.type.tag
a6bac58e
TT
23934 if lookup_tag == None:
23935 return None
7b51bc51
DE
23936 regex = re.compile("^std::basic_string<char,.*>$")
23937 if regex.match(lookup_tag):
23938 return StdStringPrinter(val)
a6bac58e
TT
23939 return None
23940@end smallexample
23941
23942The example lookup function extracts the value's type, and attempts to
23943match it to a type that it can pretty-print. If it is a type the
23944printer can pretty-print, it will return a printer object. If not, it
23945returns @code{None}.
23946
23947We recommend that you put your core pretty-printers into a Python
23948package. If your pretty-printers are for use with a library, we
23949further recommend embedding a version number into the package name.
23950This practice will enable @value{GDBN} to load multiple versions of
23951your pretty-printers at the same time, because they will have
23952different names.
23953
bf88dd68 23954You should write auto-loaded code (@pxref{Python Auto-loading}) such that it
a6bac58e
TT
23955can be evaluated multiple times without changing its meaning. An
23956ideal auto-load file will consist solely of @code{import}s of your
23957printer modules, followed by a call to a register pretty-printers with
23958the current objfile.
23959
23960Taken as a whole, this approach will scale nicely to multiple
23961inferiors, each potentially using a different library version.
23962Embedding a version number in the Python package name will ensure that
23963@value{GDBN} is able to load both sets of printers simultaneously.
23964Then, because the search for pretty-printers is done by objfile, and
23965because your auto-loaded code took care to register your library's
23966printers with a specific objfile, @value{GDBN} will find the correct
23967printers for the specific version of the library used by each
23968inferior.
23969
4c374409 23970To continue the @code{std::string} example (@pxref{Pretty Printing API}),
a6bac58e
TT
23971this code might appear in @code{gdb.libstdcxx.v6}:
23972
23973@smallexample
7b51bc51 23974def register_printers(objfile):
ae6f0d5b 23975 objfile.pretty_printers.append(str_lookup_function)
a6bac58e
TT
23976@end smallexample
23977
23978@noindent
23979And then the corresponding contents of the auto-load file would be:
23980
23981@smallexample
23982import gdb.libstdcxx.v6
7b51bc51 23983gdb.libstdcxx.v6.register_printers(gdb.current_objfile())
a6bac58e
TT
23984@end smallexample
23985
7b51bc51
DE
23986The previous example illustrates a basic pretty-printer.
23987There are a few things that can be improved on.
23988The printer doesn't have a name, making it hard to identify in a
23989list of installed printers. The lookup function has a name, but
23990lookup functions can have arbitrary, even identical, names.
967cf477 23991
7b51bc51
DE
23992Second, the printer only handles one type, whereas a library typically has
23993several types. One could install a lookup function for each desired type
23994in the library, but one could also have a single lookup function recognize
23995several types. The latter is the conventional way this is handled.
23996If a pretty-printer can handle multiple data types, then its
23997@dfn{subprinters} are the printers for the individual data types.
967cf477 23998
7b51bc51
DE
23999The @code{gdb.printing} module provides a formal way of solving these
24000problems (@pxref{gdb.printing}).
24001Here is another example that handles multiple types.
967cf477 24002
7b51bc51
DE
24003These are the types we are going to pretty-print:
24004
24005@smallexample
24006struct foo @{ int a, b; @};
24007struct bar @{ struct foo x, y; @};
24008@end smallexample
24009
24010Here are the printers:
24011
24012@smallexample
24013class fooPrinter:
24014 """Print a foo object."""
24015
24016 def __init__(self, val):
24017 self.val = val
24018
24019 def to_string(self):
24020 return ("a=<" + str(self.val["a"]) +
24021 "> b=<" + str(self.val["b"]) + ">")
24022
24023class barPrinter:
24024 """Print a bar object."""
24025
24026 def __init__(self, val):
24027 self.val = val
24028
24029 def to_string(self):
24030 return ("x=<" + str(self.val["x"]) +
24031 "> y=<" + str(self.val["y"]) + ">")
24032@end smallexample
24033
24034This example doesn't need a lookup function, that is handled by the
24035@code{gdb.printing} module. Instead a function is provided to build up
24036the object that handles the lookup.
24037
24038@smallexample
24039import gdb.printing
24040
24041def build_pretty_printer():
24042 pp = gdb.printing.RegexpCollectionPrettyPrinter(
24043 "my_library")
24044 pp.add_printer('foo', '^foo$', fooPrinter)
24045 pp.add_printer('bar', '^bar$', barPrinter)
24046 return pp
24047@end smallexample
24048
24049And here is the autoload support:
24050
24051@smallexample
24052import gdb.printing
24053import my_library
24054gdb.printing.register_pretty_printer(
24055 gdb.current_objfile(),
24056 my_library.build_pretty_printer())
24057@end smallexample
24058
24059Finally, when this printer is loaded into @value{GDBN}, here is the
24060corresponding output of @samp{info pretty-printer}:
24061
24062@smallexample
24063(gdb) info pretty-printer
24064my_library.so:
24065 my_library
24066 foo
24067 bar
24068@end smallexample
967cf477 24069
18a9fc12
TT
24070@node Type Printing API
24071@subsubsection Type Printing API
24072@cindex type printing API for Python
24073
24074@value{GDBN} provides a way for Python code to customize type display.
24075This is mainly useful for substituting canonical typedef names for
24076types.
24077
24078@cindex type printer
24079A @dfn{type printer} is just a Python object conforming to a certain
24080protocol. A simple base class implementing the protocol is provided;
24081see @ref{gdb.types}. A type printer must supply at least:
24082
24083@defivar type_printer enabled
24084A boolean which is True if the printer is enabled, and False
24085otherwise. This is manipulated by the @code{enable type-printer}
24086and @code{disable type-printer} commands.
24087@end defivar
24088
24089@defivar type_printer name
24090The name of the type printer. This must be a string. This is used by
24091the @code{enable type-printer} and @code{disable type-printer}
24092commands.
24093@end defivar
24094
24095@defmethod type_printer instantiate (self)
24096This is called by @value{GDBN} at the start of type-printing. It is
24097only called if the type printer is enabled. This method must return a
24098new object that supplies a @code{recognize} method, as described below.
24099@end defmethod
24100
24101
24102When displaying a type, say via the @code{ptype} command, @value{GDBN}
24103will compute a list of type recognizers. This is done by iterating
24104first over the per-objfile type printers (@pxref{Objfiles In Python}),
24105followed by the per-progspace type printers (@pxref{Progspaces In
24106Python}), and finally the global type printers.
24107
24108@value{GDBN} will call the @code{instantiate} method of each enabled
24109type printer. If this method returns @code{None}, then the result is
24110ignored; otherwise, it is appended to the list of recognizers.
24111
24112Then, when @value{GDBN} is going to display a type name, it iterates
24113over the list of recognizers. For each one, it calls the recognition
24114function, stopping if the function returns a non-@code{None} value.
24115The recognition function is defined as:
24116
24117@defmethod type_recognizer recognize (self, type)
24118If @var{type} is not recognized, return @code{None}. Otherwise,
24119return a string which is to be printed as the name of @var{type}.
24120@var{type} will be an instance of @code{gdb.Type} (@pxref{Types In
24121Python}).
24122@end defmethod
24123
24124@value{GDBN} uses this two-pass approach so that type printers can
24125efficiently cache information without holding on to it too long. For
24126example, it can be convenient to look up type information in a type
24127printer and hold it for a recognizer's lifetime; if a single pass were
24128done then type printers would have to make use of the event system in
24129order to avoid holding information that could become stale as the
24130inferior changed.
24131
595939de
PM
24132@node Inferiors In Python
24133@subsubsection Inferiors In Python
505500db 24134@cindex inferiors in Python
595939de
PM
24135
24136@findex gdb.Inferior
24137Programs which are being run under @value{GDBN} are called inferiors
24138(@pxref{Inferiors and Programs}). Python scripts can access
24139information about and manipulate inferiors controlled by @value{GDBN}
24140via objects of the @code{gdb.Inferior} class.
24141
24142The following inferior-related functions are available in the @code{gdb}
24143module:
24144
d812018b 24145@defun gdb.inferiors ()
595939de
PM
24146Return a tuple containing all inferior objects.
24147@end defun
24148
d812018b 24149@defun gdb.selected_inferior ()
2aa48337
KP
24150Return an object representing the current inferior.
24151@end defun
24152
595939de
PM
24153A @code{gdb.Inferior} object has the following attributes:
24154
24155@table @code
d812018b 24156@defvar Inferior.num
595939de 24157ID of inferior, as assigned by GDB.
d812018b 24158@end defvar
595939de 24159
d812018b 24160@defvar Inferior.pid
595939de
PM
24161Process ID of the inferior, as assigned by the underlying operating
24162system.
d812018b 24163@end defvar
595939de 24164
d812018b 24165@defvar Inferior.was_attached
595939de
PM
24166Boolean signaling whether the inferior was created using `attach', or
24167started by @value{GDBN} itself.
d812018b 24168@end defvar
595939de
PM
24169@end table
24170
24171A @code{gdb.Inferior} object has the following methods:
24172
24173@table @code
d812018b 24174@defun Inferior.is_valid ()
29703da4
PM
24175Returns @code{True} if the @code{gdb.Inferior} object is valid,
24176@code{False} if not. A @code{gdb.Inferior} object will become invalid
24177if the inferior no longer exists within @value{GDBN}. All other
24178@code{gdb.Inferior} methods will throw an exception if it is invalid
24179at the time the method is called.
d812018b 24180@end defun
29703da4 24181
d812018b 24182@defun Inferior.threads ()
595939de
PM
24183This method returns a tuple holding all the threads which are valid
24184when it is called. If there are no valid threads, the method will
24185return an empty tuple.
d812018b 24186@end defun
595939de 24187
2678e2af 24188@findex Inferior.read_memory
d812018b 24189@defun Inferior.read_memory (address, length)
595939de
PM
24190Read @var{length} bytes of memory from the inferior, starting at
24191@var{address}. Returns a buffer object, which behaves much like an array
2678e2af 24192or a string. It can be modified and given to the
9a27f2c6
PK
24193@code{Inferior.write_memory} function. In @code{Python} 3, the return
24194value is a @code{memoryview} object.
d812018b 24195@end defun
595939de 24196
2678e2af 24197@findex Inferior.write_memory
d812018b 24198@defun Inferior.write_memory (address, buffer @r{[}, length@r{]})
595939de
PM
24199Write the contents of @var{buffer} to the inferior, starting at
24200@var{address}. The @var{buffer} parameter must be a Python object
24201which supports the buffer protocol, i.e., a string, an array or the
2678e2af 24202object returned from @code{Inferior.read_memory}. If given, @var{length}
595939de 24203determines the number of bytes from @var{buffer} to be written.
d812018b 24204@end defun
595939de
PM
24205
24206@findex gdb.search_memory
d812018b 24207@defun Inferior.search_memory (address, length, pattern)
595939de
PM
24208Search a region of the inferior memory starting at @var{address} with
24209the given @var{length} using the search pattern supplied in
24210@var{pattern}. The @var{pattern} parameter must be a Python object
24211which supports the buffer protocol, i.e., a string, an array or the
24212object returned from @code{gdb.read_memory}. Returns a Python @code{Long}
24213containing the address where the pattern was found, or @code{None} if
24214the pattern could not be found.
d812018b 24215@end defun
595939de
PM
24216@end table
24217
505500db
SW
24218@node Events In Python
24219@subsubsection Events In Python
24220@cindex inferior events in Python
24221
24222@value{GDBN} provides a general event facility so that Python code can be
24223notified of various state changes, particularly changes that occur in
24224the inferior.
24225
24226An @dfn{event} is just an object that describes some state change. The
24227type of the object and its attributes will vary depending on the details
24228of the change. All the existing events are described below.
24229
24230In order to be notified of an event, you must register an event handler
24231with an @dfn{event registry}. An event registry is an object in the
24232@code{gdb.events} module which dispatches particular events. A registry
24233provides methods to register and unregister event handlers:
24234
24235@table @code
d812018b 24236@defun EventRegistry.connect (object)
505500db
SW
24237Add the given callable @var{object} to the registry. This object will be
24238called when an event corresponding to this registry occurs.
d812018b 24239@end defun
505500db 24240
d812018b 24241@defun EventRegistry.disconnect (object)
505500db
SW
24242Remove the given @var{object} from the registry. Once removed, the object
24243will no longer receive notifications of events.
d812018b 24244@end defun
505500db
SW
24245@end table
24246
24247Here is an example:
24248
24249@smallexample
24250def exit_handler (event):
24251 print "event type: exit"
24252 print "exit code: %d" % (event.exit_code)
24253
24254gdb.events.exited.connect (exit_handler)
24255@end smallexample
24256
24257In the above example we connect our handler @code{exit_handler} to the
24258registry @code{events.exited}. Once connected, @code{exit_handler} gets
24259called when the inferior exits. The argument @dfn{event} in this example is
24260of type @code{gdb.ExitedEvent}. As you can see in the example the
24261@code{ExitedEvent} object has an attribute which indicates the exit code of
24262the inferior.
24263
24264The following is a listing of the event registries that are available and
24265details of the events they emit:
24266
24267@table @code
24268
24269@item events.cont
24270Emits @code{gdb.ThreadEvent}.
24271
24272Some events can be thread specific when @value{GDBN} is running in non-stop
24273mode. When represented in Python, these events all extend
24274@code{gdb.ThreadEvent}. Note, this event is not emitted directly; instead,
24275events which are emitted by this or other modules might extend this event.
24276Examples of these events are @code{gdb.BreakpointEvent} and
24277@code{gdb.ContinueEvent}.
24278
24279@table @code
d812018b 24280@defvar ThreadEvent.inferior_thread
505500db
SW
24281In non-stop mode this attribute will be set to the specific thread which was
24282involved in the emitted event. Otherwise, it will be set to @code{None}.
d812018b 24283@end defvar
505500db
SW
24284@end table
24285
24286Emits @code{gdb.ContinueEvent} which extends @code{gdb.ThreadEvent}.
24287
24288This event indicates that the inferior has been continued after a stop. For
24289inherited attribute refer to @code{gdb.ThreadEvent} above.
24290
24291@item events.exited
24292Emits @code{events.ExitedEvent} which indicates that the inferior has exited.
cb6be26b 24293@code{events.ExitedEvent} has two attributes:
505500db 24294@table @code
d812018b 24295@defvar ExitedEvent.exit_code
cb6be26b
KP
24296An integer representing the exit code, if available, which the inferior
24297has returned. (The exit code could be unavailable if, for example,
24298@value{GDBN} detaches from the inferior.) If the exit code is unavailable,
24299the attribute does not exist.
24300@end defvar
24301@defvar ExitedEvent inferior
24302A reference to the inferior which triggered the @code{exited} event.
d812018b 24303@end defvar
505500db
SW
24304@end table
24305
24306@item events.stop
24307Emits @code{gdb.StopEvent} which extends @code{gdb.ThreadEvent}.
24308
24309Indicates that the inferior has stopped. All events emitted by this registry
24310extend StopEvent. As a child of @code{gdb.ThreadEvent}, @code{gdb.StopEvent}
24311will indicate the stopped thread when @value{GDBN} is running in non-stop
24312mode. Refer to @code{gdb.ThreadEvent} above for more details.
24313
24314Emits @code{gdb.SignalEvent} which extends @code{gdb.StopEvent}.
24315
24316This event indicates that the inferior or one of its threads has received as
24317signal. @code{gdb.SignalEvent} has the following attributes:
24318
24319@table @code
d812018b 24320@defvar SignalEvent.stop_signal
505500db
SW
24321A string representing the signal received by the inferior. A list of possible
24322signal values can be obtained by running the command @code{info signals} in
24323the @value{GDBN} command prompt.
d812018b 24324@end defvar
505500db
SW
24325@end table
24326
24327Also emits @code{gdb.BreakpointEvent} which extends @code{gdb.StopEvent}.
24328
6839b47f
KP
24329@code{gdb.BreakpointEvent} event indicates that one or more breakpoints have
24330been hit, and has the following attributes:
505500db
SW
24331
24332@table @code
d812018b 24333@defvar BreakpointEvent.breakpoints
6839b47f
KP
24334A sequence containing references to all the breakpoints (type
24335@code{gdb.Breakpoint}) that were hit.
505500db 24336@xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object.
d812018b
PK
24337@end defvar
24338@defvar BreakpointEvent.breakpoint
6839b47f
KP
24339A reference to the first breakpoint that was hit.
24340This function is maintained for backward compatibility and is now deprecated
d812018b
PK
24341in favor of the @code{gdb.BreakpointEvent.breakpoints} attribute.
24342@end defvar
505500db
SW
24343@end table
24344
20c168b5
KP
24345@item events.new_objfile
24346Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has
24347been loaded by @value{GDBN}. @code{gdb.NewObjFileEvent} has one attribute:
24348
24349@table @code
24350@defvar NewObjFileEvent.new_objfile
24351A reference to the object file (@code{gdb.Objfile}) which has been loaded.
24352@xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
24353@end defvar
24354@end table
24355
505500db
SW
24356@end table
24357
595939de
PM
24358@node Threads In Python
24359@subsubsection Threads In Python
24360@cindex threads in python
24361
24362@findex gdb.InferiorThread
24363Python scripts can access information about, and manipulate inferior threads
24364controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class.
24365
24366The following thread-related functions are available in the @code{gdb}
24367module:
24368
24369@findex gdb.selected_thread
d812018b 24370@defun gdb.selected_thread ()
595939de
PM
24371This function returns the thread object for the selected thread. If there
24372is no selected thread, this will return @code{None}.
24373@end defun
24374
24375A @code{gdb.InferiorThread} object has the following attributes:
24376
24377@table @code
d812018b 24378@defvar InferiorThread.name
4694da01
TT
24379The name of the thread. If the user specified a name using
24380@code{thread name}, then this returns that name. Otherwise, if an
24381OS-supplied name is available, then it is returned. Otherwise, this
24382returns @code{None}.
24383
24384This attribute can be assigned to. The new value must be a string
24385object, which sets the new name, or @code{None}, which removes any
24386user-specified thread name.
d812018b 24387@end defvar
4694da01 24388
d812018b 24389@defvar InferiorThread.num
595939de 24390ID of the thread, as assigned by GDB.
d812018b 24391@end defvar
595939de 24392
d812018b 24393@defvar InferiorThread.ptid
595939de
PM
24394ID of the thread, as assigned by the operating system. This attribute is a
24395tuple containing three integers. The first is the Process ID (PID); the second
24396is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
24397Either the LWPID or TID may be 0, which indicates that the operating system
24398does not use that identifier.
d812018b 24399@end defvar
595939de
PM
24400@end table
24401
24402A @code{gdb.InferiorThread} object has the following methods:
24403
dc3b15be 24404@table @code
d812018b 24405@defun InferiorThread.is_valid ()
29703da4
PM
24406Returns @code{True} if the @code{gdb.InferiorThread} object is valid,
24407@code{False} if not. A @code{gdb.InferiorThread} object will become
24408invalid if the thread exits, or the inferior that the thread belongs
24409is deleted. All other @code{gdb.InferiorThread} methods will throw an
24410exception if it is invalid at the time the method is called.
d812018b 24411@end defun
29703da4 24412
d812018b 24413@defun InferiorThread.switch ()
595939de
PM
24414This changes @value{GDBN}'s currently selected thread to the one represented
24415by this object.
d812018b 24416@end defun
595939de 24417
d812018b 24418@defun InferiorThread.is_stopped ()
595939de 24419Return a Boolean indicating whether the thread is stopped.
d812018b 24420@end defun
595939de 24421
d812018b 24422@defun InferiorThread.is_running ()
595939de 24423Return a Boolean indicating whether the thread is running.
d812018b 24424@end defun
595939de 24425
d812018b 24426@defun InferiorThread.is_exited ()
595939de 24427Return a Boolean indicating whether the thread is exited.
d812018b 24428@end defun
595939de
PM
24429@end table
24430
d8906c6f
TJB
24431@node Commands In Python
24432@subsubsection Commands In Python
24433
24434@cindex commands in python
24435@cindex python commands
d8906c6f
TJB
24436You can implement new @value{GDBN} CLI commands in Python. A CLI
24437command is implemented using an instance of the @code{gdb.Command}
24438class, most commonly using a subclass.
24439
f05e2e1d 24440@defun Command.__init__ (name, @var{command_class} @r{[}, @var{completer_class} @r{[}, @var{prefix}@r{]]})
d8906c6f
TJB
24441The object initializer for @code{Command} registers the new command
24442with @value{GDBN}. This initializer is normally invoked from the
24443subclass' own @code{__init__} method.
24444
24445@var{name} is the name of the command. If @var{name} consists of
24446multiple words, then the initial words are looked for as prefix
24447commands. In this case, if one of the prefix commands does not exist,
24448an exception is raised.
24449
24450There is no support for multi-line commands.
24451
cc924cad 24452@var{command_class} should be one of the @samp{COMMAND_} constants
d8906c6f
TJB
24453defined below. This argument tells @value{GDBN} how to categorize the
24454new command in the help system.
24455
cc924cad 24456@var{completer_class} is an optional argument. If given, it should be
d8906c6f
TJB
24457one of the @samp{COMPLETE_} constants defined below. This argument
24458tells @value{GDBN} how to perform completion for this command. If not
24459given, @value{GDBN} will attempt to complete using the object's
24460@code{complete} method (see below); if no such method is found, an
24461error will occur when completion is attempted.
24462
24463@var{prefix} is an optional argument. If @code{True}, then the new
24464command is a prefix command; sub-commands of this command may be
24465registered.
24466
24467The help text for the new command is taken from the Python
24468documentation string for the command's class, if there is one. If no
24469documentation string is provided, the default value ``This command is
24470not documented.'' is used.
d812018b 24471@end defun
d8906c6f 24472
a0c36267 24473@cindex don't repeat Python command
d812018b 24474@defun Command.dont_repeat ()
d8906c6f
TJB
24475By default, a @value{GDBN} command is repeated when the user enters a
24476blank line at the command prompt. A command can suppress this
24477behavior by invoking the @code{dont_repeat} method. This is similar
24478to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
d812018b 24479@end defun
d8906c6f 24480
d812018b 24481@defun Command.invoke (argument, from_tty)
d8906c6f
TJB
24482This method is called by @value{GDBN} when this command is invoked.
24483
24484@var{argument} is a string. It is the argument to the command, after
24485leading and trailing whitespace has been stripped.
24486
24487@var{from_tty} is a boolean argument. When true, this means that the
24488command was entered by the user at the terminal; when false it means
24489that the command came from elsewhere.
24490
24491If this method throws an exception, it is turned into a @value{GDBN}
24492@code{error} call. Otherwise, the return value is ignored.
07ca107c
DE
24493
24494@findex gdb.string_to_argv
24495To break @var{argument} up into an argv-like string use
24496@code{gdb.string_to_argv}. This function behaves identically to
24497@value{GDBN}'s internal argument lexer @code{buildargv}.
24498It is recommended to use this for consistency.
24499Arguments are separated by spaces and may be quoted.
24500Example:
24501
24502@smallexample
24503print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"")
24504['1', '2 "3', '4 "5', "6 '7"]
24505@end smallexample
24506
d812018b 24507@end defun
d8906c6f 24508
a0c36267 24509@cindex completion of Python commands
d812018b 24510@defun Command.complete (text, word)
d8906c6f
TJB
24511This method is called by @value{GDBN} when the user attempts
24512completion on this command. All forms of completion are handled by
a0c36267
EZ
24513this method, that is, the @key{TAB} and @key{M-?} key bindings
24514(@pxref{Completion}), and the @code{complete} command (@pxref{Help,
24515complete}).
d8906c6f
TJB
24516
24517The arguments @var{text} and @var{word} are both strings. @var{text}
24518holds the complete command line up to the cursor's location.
24519@var{word} holds the last word of the command line; this is computed
24520using a word-breaking heuristic.
24521
24522The @code{complete} method can return several values:
24523@itemize @bullet
24524@item
24525If the return value is a sequence, the contents of the sequence are
24526used as the completions. It is up to @code{complete} to ensure that the
24527contents actually do complete the word. A zero-length sequence is
24528allowed, it means that there were no completions available. Only
24529string elements of the sequence are used; other elements in the
24530sequence are ignored.
24531
24532@item
24533If the return value is one of the @samp{COMPLETE_} constants defined
24534below, then the corresponding @value{GDBN}-internal completion
24535function is invoked, and its result is used.
24536
24537@item
24538All other results are treated as though there were no available
24539completions.
24540@end itemize
d812018b 24541@end defun
d8906c6f 24542
d8906c6f
TJB
24543When a new command is registered, it must be declared as a member of
24544some general class of commands. This is used to classify top-level
24545commands in the on-line help system; note that prefix commands are not
24546listed under their own category but rather that of their top-level
24547command. The available classifications are represented by constants
24548defined in the @code{gdb} module:
24549
24550@table @code
24551@findex COMMAND_NONE
24552@findex gdb.COMMAND_NONE
d812018b 24553@item gdb.COMMAND_NONE
d8906c6f
TJB
24554The command does not belong to any particular class. A command in
24555this category will not be displayed in any of the help categories.
24556
24557@findex COMMAND_RUNNING
24558@findex gdb.COMMAND_RUNNING
d812018b 24559@item gdb.COMMAND_RUNNING
d8906c6f
TJB
24560The command is related to running the inferior. For example,
24561@code{start}, @code{step}, and @code{continue} are in this category.
a0c36267 24562Type @kbd{help running} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24563commands in this category.
24564
24565@findex COMMAND_DATA
24566@findex gdb.COMMAND_DATA
d812018b 24567@item gdb.COMMAND_DATA
d8906c6f
TJB
24568The command is related to data or variables. For example,
24569@code{call}, @code{find}, and @code{print} are in this category. Type
a0c36267 24570@kbd{help data} at the @value{GDBN} prompt to see a list of commands
d8906c6f
TJB
24571in this category.
24572
24573@findex COMMAND_STACK
24574@findex gdb.COMMAND_STACK
d812018b 24575@item gdb.COMMAND_STACK
d8906c6f
TJB
24576The command has to do with manipulation of the stack. For example,
24577@code{backtrace}, @code{frame}, and @code{return} are in this
a0c36267 24578category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
d8906c6f
TJB
24579list of commands in this category.
24580
24581@findex COMMAND_FILES
24582@findex gdb.COMMAND_FILES
d812018b 24583@item gdb.COMMAND_FILES
d8906c6f
TJB
24584This class is used for file-related commands. For example,
24585@code{file}, @code{list} and @code{section} are in this category.
a0c36267 24586Type @kbd{help files} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24587commands in this category.
24588
24589@findex COMMAND_SUPPORT
24590@findex gdb.COMMAND_SUPPORT
d812018b 24591@item gdb.COMMAND_SUPPORT
d8906c6f
TJB
24592This should be used for ``support facilities'', generally meaning
24593things that are useful to the user when interacting with @value{GDBN},
24594but not related to the state of the inferior. For example,
24595@code{help}, @code{make}, and @code{shell} are in this category. Type
a0c36267 24596@kbd{help support} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24597commands in this category.
24598
24599@findex COMMAND_STATUS
24600@findex gdb.COMMAND_STATUS
d812018b 24601@item gdb.COMMAND_STATUS
d8906c6f
TJB
24602The command is an @samp{info}-related command, that is, related to the
24603state of @value{GDBN} itself. For example, @code{info}, @code{macro},
a0c36267 24604and @code{show} are in this category. Type @kbd{help status} at the
d8906c6f
TJB
24605@value{GDBN} prompt to see a list of commands in this category.
24606
24607@findex COMMAND_BREAKPOINTS
24608@findex gdb.COMMAND_BREAKPOINTS
d812018b 24609@item gdb.COMMAND_BREAKPOINTS
d8906c6f 24610The command has to do with breakpoints. For example, @code{break},
a0c36267 24611@code{clear}, and @code{delete} are in this category. Type @kbd{help
d8906c6f
TJB
24612breakpoints} at the @value{GDBN} prompt to see a list of commands in
24613this category.
24614
24615@findex COMMAND_TRACEPOINTS
24616@findex gdb.COMMAND_TRACEPOINTS
d812018b 24617@item gdb.COMMAND_TRACEPOINTS
d8906c6f
TJB
24618The command has to do with tracepoints. For example, @code{trace},
24619@code{actions}, and @code{tfind} are in this category. Type
a0c36267 24620@kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24621commands in this category.
24622
7d74f244
DE
24623@findex COMMAND_USER
24624@findex gdb.COMMAND_USER
24625@item gdb.COMMAND_USER
24626The command is a general purpose command for the user, and typically
24627does not fit in one of the other categories.
24628Type @kbd{help user-defined} at the @value{GDBN} prompt to see
24629a list of commands in this category, as well as the list of gdb macros
24630(@pxref{Sequences}).
24631
d8906c6f
TJB
24632@findex COMMAND_OBSCURE
24633@findex gdb.COMMAND_OBSCURE
d812018b 24634@item gdb.COMMAND_OBSCURE
d8906c6f
TJB
24635The command is only used in unusual circumstances, or is not of
24636general interest to users. For example, @code{checkpoint},
a0c36267 24637@code{fork}, and @code{stop} are in this category. Type @kbd{help
d8906c6f
TJB
24638obscure} at the @value{GDBN} prompt to see a list of commands in this
24639category.
24640
24641@findex COMMAND_MAINTENANCE
24642@findex gdb.COMMAND_MAINTENANCE
d812018b 24643@item gdb.COMMAND_MAINTENANCE
d8906c6f
TJB
24644The command is only useful to @value{GDBN} maintainers. The
24645@code{maintenance} and @code{flushregs} commands are in this category.
a0c36267 24646Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24647commands in this category.
24648@end table
24649
d8906c6f
TJB
24650A new command can use a predefined completion function, either by
24651specifying it via an argument at initialization, or by returning it
24652from the @code{complete} method. These predefined completion
24653constants are all defined in the @code{gdb} module:
24654
24655@table @code
24656@findex COMPLETE_NONE
24657@findex gdb.COMPLETE_NONE
d812018b 24658@item gdb.COMPLETE_NONE
d8906c6f
TJB
24659This constant means that no completion should be done.
24660
24661@findex COMPLETE_FILENAME
24662@findex gdb.COMPLETE_FILENAME
d812018b 24663@item gdb.COMPLETE_FILENAME
d8906c6f
TJB
24664This constant means that filename completion should be performed.
24665
24666@findex COMPLETE_LOCATION
24667@findex gdb.COMPLETE_LOCATION
d812018b 24668@item gdb.COMPLETE_LOCATION
d8906c6f
TJB
24669This constant means that location completion should be done.
24670@xref{Specify Location}.
24671
24672@findex COMPLETE_COMMAND
24673@findex gdb.COMPLETE_COMMAND
d812018b 24674@item gdb.COMPLETE_COMMAND
d8906c6f
TJB
24675This constant means that completion should examine @value{GDBN}
24676command names.
24677
24678@findex COMPLETE_SYMBOL
24679@findex gdb.COMPLETE_SYMBOL
d812018b 24680@item gdb.COMPLETE_SYMBOL
d8906c6f
TJB
24681This constant means that completion should be done using symbol names
24682as the source.
24683@end table
24684
24685The following code snippet shows how a trivial CLI command can be
24686implemented in Python:
24687
24688@smallexample
24689class HelloWorld (gdb.Command):
24690 """Greet the whole world."""
24691
24692 def __init__ (self):
7d74f244 24693 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
d8906c6f
TJB
24694
24695 def invoke (self, arg, from_tty):
24696 print "Hello, World!"
24697
24698HelloWorld ()
24699@end smallexample
24700
24701The last line instantiates the class, and is necessary to trigger the
24702registration of the command with @value{GDBN}. Depending on how the
24703Python code is read into @value{GDBN}, you may need to import the
24704@code{gdb} module explicitly.
24705
d7b32ed3
PM
24706@node Parameters In Python
24707@subsubsection Parameters In Python
24708
24709@cindex parameters in python
24710@cindex python parameters
24711@tindex gdb.Parameter
24712@tindex Parameter
24713You can implement new @value{GDBN} parameters using Python. A new
24714parameter is implemented as an instance of the @code{gdb.Parameter}
24715class.
24716
24717Parameters are exposed to the user via the @code{set} and
24718@code{show} commands. @xref{Help}.
24719
24720There are many parameters that already exist and can be set in
24721@value{GDBN}. Two examples are: @code{set follow fork} and
24722@code{set charset}. Setting these parameters influences certain
24723behavior in @value{GDBN}. Similarly, you can define parameters that
24724can be used to influence behavior in custom Python scripts and commands.
24725
d812018b 24726@defun Parameter.__init__ (name, @var{command-class}, @var{parameter-class} @r{[}, @var{enum-sequence}@r{]})
d7b32ed3
PM
24727The object initializer for @code{Parameter} registers the new
24728parameter with @value{GDBN}. This initializer is normally invoked
24729from the subclass' own @code{__init__} method.
24730
24731@var{name} is the name of the new parameter. If @var{name} consists
24732of multiple words, then the initial words are looked for as prefix
24733parameters. An example of this can be illustrated with the
24734@code{set print} set of parameters. If @var{name} is
24735@code{print foo}, then @code{print} will be searched as the prefix
24736parameter. In this case the parameter can subsequently be accessed in
24737@value{GDBN} as @code{set print foo}.
24738
24739If @var{name} consists of multiple words, and no prefix parameter group
24740can be found, an exception is raised.
24741
24742@var{command-class} should be one of the @samp{COMMAND_} constants
24743(@pxref{Commands In Python}). This argument tells @value{GDBN} how to
24744categorize the new parameter in the help system.
24745
24746@var{parameter-class} should be one of the @samp{PARAM_} constants
24747defined below. This argument tells @value{GDBN} the type of the new
24748parameter; this information is used for input validation and
24749completion.
24750
24751If @var{parameter-class} is @code{PARAM_ENUM}, then
24752@var{enum-sequence} must be a sequence of strings. These strings
24753represent the possible values for the parameter.
24754
24755If @var{parameter-class} is not @code{PARAM_ENUM}, then the presence
24756of a fourth argument will cause an exception to be thrown.
24757
24758The help text for the new parameter is taken from the Python
24759documentation string for the parameter's class, if there is one. If
24760there is no documentation string, a default value is used.
d812018b 24761@end defun
d7b32ed3 24762
d812018b 24763@defvar Parameter.set_doc
d7b32ed3
PM
24764If this attribute exists, and is a string, then its value is used as
24765the help text for this parameter's @code{set} command. The value is
24766examined when @code{Parameter.__init__} is invoked; subsequent changes
24767have no effect.
d812018b 24768@end defvar
d7b32ed3 24769
d812018b 24770@defvar Parameter.show_doc
d7b32ed3
PM
24771If this attribute exists, and is a string, then its value is used as
24772the help text for this parameter's @code{show} command. The value is
24773examined when @code{Parameter.__init__} is invoked; subsequent changes
24774have no effect.
d812018b 24775@end defvar
d7b32ed3 24776
d812018b 24777@defvar Parameter.value
d7b32ed3
PM
24778The @code{value} attribute holds the underlying value of the
24779parameter. It can be read and assigned to just as any other
24780attribute. @value{GDBN} does validation when assignments are made.
d812018b 24781@end defvar
d7b32ed3 24782
ecec24e6
PM
24783There are two methods that should be implemented in any
24784@code{Parameter} class. These are:
24785
d812018b 24786@defun Parameter.get_set_string (self)
ecec24e6
PM
24787@value{GDBN} will call this method when a @var{parameter}'s value has
24788been changed via the @code{set} API (for example, @kbd{set foo off}).
24789The @code{value} attribute has already been populated with the new
24790value and may be used in output. This method must return a string.
d812018b 24791@end defun
ecec24e6 24792
d812018b 24793@defun Parameter.get_show_string (self, svalue)
ecec24e6
PM
24794@value{GDBN} will call this method when a @var{parameter}'s
24795@code{show} API has been invoked (for example, @kbd{show foo}). The
24796argument @code{svalue} receives the string representation of the
24797current value. This method must return a string.
d812018b 24798@end defun
d7b32ed3
PM
24799
24800When a new parameter is defined, its type must be specified. The
24801available types are represented by constants defined in the @code{gdb}
24802module:
24803
24804@table @code
24805@findex PARAM_BOOLEAN
24806@findex gdb.PARAM_BOOLEAN
d812018b 24807@item gdb.PARAM_BOOLEAN
d7b32ed3
PM
24808The value is a plain boolean. The Python boolean values, @code{True}
24809and @code{False} are the only valid values.
24810
24811@findex PARAM_AUTO_BOOLEAN
24812@findex gdb.PARAM_AUTO_BOOLEAN
d812018b 24813@item gdb.PARAM_AUTO_BOOLEAN
d7b32ed3
PM
24814The value has three possible states: true, false, and @samp{auto}. In
24815Python, true and false are represented using boolean constants, and
24816@samp{auto} is represented using @code{None}.
24817
24818@findex PARAM_UINTEGER
24819@findex gdb.PARAM_UINTEGER
d812018b 24820@item gdb.PARAM_UINTEGER
d7b32ed3
PM
24821The value is an unsigned integer. The value of 0 should be
24822interpreted to mean ``unlimited''.
24823
24824@findex PARAM_INTEGER
24825@findex gdb.PARAM_INTEGER
d812018b 24826@item gdb.PARAM_INTEGER
d7b32ed3
PM
24827The value is a signed integer. The value of 0 should be interpreted
24828to mean ``unlimited''.
24829
24830@findex PARAM_STRING
24831@findex gdb.PARAM_STRING
d812018b 24832@item gdb.PARAM_STRING
d7b32ed3
PM
24833The value is a string. When the user modifies the string, any escape
24834sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
24835translated into corresponding characters and encoded into the current
24836host charset.
24837
24838@findex PARAM_STRING_NOESCAPE
24839@findex gdb.PARAM_STRING_NOESCAPE
d812018b 24840@item gdb.PARAM_STRING_NOESCAPE
d7b32ed3
PM
24841The value is a string. When the user modifies the string, escapes are
24842passed through untranslated.
24843
24844@findex PARAM_OPTIONAL_FILENAME
24845@findex gdb.PARAM_OPTIONAL_FILENAME
d812018b 24846@item gdb.PARAM_OPTIONAL_FILENAME
d7b32ed3
PM
24847The value is a either a filename (a string), or @code{None}.
24848
24849@findex PARAM_FILENAME
24850@findex gdb.PARAM_FILENAME
d812018b 24851@item gdb.PARAM_FILENAME
d7b32ed3
PM
24852The value is a filename. This is just like
24853@code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
24854
24855@findex PARAM_ZINTEGER
24856@findex gdb.PARAM_ZINTEGER
d812018b 24857@item gdb.PARAM_ZINTEGER
d7b32ed3
PM
24858The value is an integer. This is like @code{PARAM_INTEGER}, except 0
24859is interpreted as itself.
24860
24861@findex PARAM_ENUM
24862@findex gdb.PARAM_ENUM
d812018b 24863@item gdb.PARAM_ENUM
d7b32ed3
PM
24864The value is a string, which must be one of a collection string
24865constants provided when the parameter is created.
24866@end table
24867
bc3b79fd
TJB
24868@node Functions In Python
24869@subsubsection Writing new convenience functions
24870
24871@cindex writing convenience functions
24872@cindex convenience functions in python
24873@cindex python convenience functions
24874@tindex gdb.Function
24875@tindex Function
24876You can implement new convenience functions (@pxref{Convenience Vars})
24877in Python. A convenience function is an instance of a subclass of the
24878class @code{gdb.Function}.
24879
d812018b 24880@defun Function.__init__ (name)
bc3b79fd
TJB
24881The initializer for @code{Function} registers the new function with
24882@value{GDBN}. The argument @var{name} is the name of the function,
24883a string. The function will be visible to the user as a convenience
24884variable of type @code{internal function}, whose name is the same as
24885the given @var{name}.
24886
24887The documentation for the new function is taken from the documentation
24888string for the new class.
d812018b 24889@end defun
bc3b79fd 24890
d812018b 24891@defun Function.invoke (@var{*args})
bc3b79fd
TJB
24892When a convenience function is evaluated, its arguments are converted
24893to instances of @code{gdb.Value}, and then the function's
24894@code{invoke} method is called. Note that @value{GDBN} does not
24895predetermine the arity of convenience functions. Instead, all
24896available arguments are passed to @code{invoke}, following the
24897standard Python calling convention. In particular, a convenience
24898function can have default values for parameters without ill effect.
24899
24900The return value of this method is used as its value in the enclosing
24901expression. If an ordinary Python value is returned, it is converted
24902to a @code{gdb.Value} following the usual rules.
d812018b 24903@end defun
bc3b79fd
TJB
24904
24905The following code snippet shows how a trivial convenience function can
24906be implemented in Python:
24907
24908@smallexample
24909class Greet (gdb.Function):
24910 """Return string to greet someone.
24911Takes a name as argument."""
24912
24913 def __init__ (self):
24914 super (Greet, self).__init__ ("greet")
24915
24916 def invoke (self, name):
24917 return "Hello, %s!" % name.string ()
24918
24919Greet ()
24920@end smallexample
24921
24922The last line instantiates the class, and is necessary to trigger the
24923registration of the function with @value{GDBN}. Depending on how the
24924Python code is read into @value{GDBN}, you may need to import the
24925@code{gdb} module explicitly.
24926
dc939229
TT
24927Now you can use the function in an expression:
24928
24929@smallexample
24930(gdb) print $greet("Bob")
24931$1 = "Hello, Bob!"
24932@end smallexample
24933
fa33c3cd
DE
24934@node Progspaces In Python
24935@subsubsection Program Spaces In Python
24936
24937@cindex progspaces in python
24938@tindex gdb.Progspace
24939@tindex Progspace
24940A program space, or @dfn{progspace}, represents a symbolic view
24941of an address space.
24942It consists of all of the objfiles of the program.
24943@xref{Objfiles In Python}.
24944@xref{Inferiors and Programs, program spaces}, for more details
24945about program spaces.
24946
24947The following progspace-related functions are available in the
24948@code{gdb} module:
24949
24950@findex gdb.current_progspace
d812018b 24951@defun gdb.current_progspace ()
fa33c3cd
DE
24952This function returns the program space of the currently selected inferior.
24953@xref{Inferiors and Programs}.
24954@end defun
24955
24956@findex gdb.progspaces
d812018b 24957@defun gdb.progspaces ()
fa33c3cd
DE
24958Return a sequence of all the progspaces currently known to @value{GDBN}.
24959@end defun
24960
24961Each progspace is represented by an instance of the @code{gdb.Progspace}
24962class.
24963
d812018b 24964@defvar Progspace.filename
fa33c3cd 24965The file name of the progspace as a string.
d812018b 24966@end defvar
fa33c3cd 24967
d812018b 24968@defvar Progspace.pretty_printers
fa33c3cd
DE
24969The @code{pretty_printers} attribute is a list of functions. It is
24970used to look up pretty-printers. A @code{Value} is passed to each
24971function in order; if the function returns @code{None}, then the
24972search continues. Otherwise, the return value should be an object
4c374409 24973which is used to format the value. @xref{Pretty Printing API}, for more
fa33c3cd 24974information.
d812018b 24975@end defvar
fa33c3cd 24976
18a9fc12
TT
24977@defvar Progspace.type_printers
24978The @code{type_printers} attribute is a list of type printer objects.
24979@xref{Type Printing API}, for more information.
24980@end defvar
24981
89c73ade
TT
24982@node Objfiles In Python
24983@subsubsection Objfiles In Python
24984
24985@cindex objfiles in python
24986@tindex gdb.Objfile
24987@tindex Objfile
24988@value{GDBN} loads symbols for an inferior from various
24989symbol-containing files (@pxref{Files}). These include the primary
24990executable file, any shared libraries used by the inferior, and any
24991separate debug info files (@pxref{Separate Debug Files}).
24992@value{GDBN} calls these symbol-containing files @dfn{objfiles}.
24993
24994The following objfile-related functions are available in the
24995@code{gdb} module:
24996
24997@findex gdb.current_objfile
d812018b 24998@defun gdb.current_objfile ()
bf88dd68 24999When auto-loading a Python script (@pxref{Python Auto-loading}), @value{GDBN}
89c73ade
TT
25000sets the ``current objfile'' to the corresponding objfile. This
25001function returns the current objfile. If there is no current objfile,
25002this function returns @code{None}.
25003@end defun
25004
25005@findex gdb.objfiles
d812018b 25006@defun gdb.objfiles ()
89c73ade
TT
25007Return a sequence of all the objfiles current known to @value{GDBN}.
25008@xref{Objfiles In Python}.
25009@end defun
25010
25011Each objfile is represented by an instance of the @code{gdb.Objfile}
25012class.
25013
d812018b 25014@defvar Objfile.filename
89c73ade 25015The file name of the objfile as a string.
d812018b 25016@end defvar
89c73ade 25017
d812018b 25018@defvar Objfile.pretty_printers
89c73ade
TT
25019The @code{pretty_printers} attribute is a list of functions. It is
25020used to look up pretty-printers. A @code{Value} is passed to each
25021function in order; if the function returns @code{None}, then the
25022search continues. Otherwise, the return value should be an object
4c374409 25023which is used to format the value. @xref{Pretty Printing API}, for more
a6bac58e 25024information.
d812018b 25025@end defvar
89c73ade 25026
18a9fc12
TT
25027@defvar Objfile.type_printers
25028The @code{type_printers} attribute is a list of type printer objects.
25029@xref{Type Printing API}, for more information.
25030@end defvar
25031
29703da4
PM
25032A @code{gdb.Objfile} object has the following methods:
25033
d812018b 25034@defun Objfile.is_valid ()
29703da4
PM
25035Returns @code{True} if the @code{gdb.Objfile} object is valid,
25036@code{False} if not. A @code{gdb.Objfile} object can become invalid
25037if the object file it refers to is not loaded in @value{GDBN} any
25038longer. All other @code{gdb.Objfile} methods will throw an exception
25039if it is invalid at the time the method is called.
d812018b 25040@end defun
29703da4 25041
f8f6f20b 25042@node Frames In Python
f3e9a817 25043@subsubsection Accessing inferior stack frames from Python.
f8f6f20b
TJB
25044
25045@cindex frames in python
25046When the debugged program stops, @value{GDBN} is able to analyze its call
25047stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
25048represents a frame in the stack. A @code{gdb.Frame} object is only valid
25049while its corresponding frame exists in the inferior's stack. If you try
621c8364
TT
25050to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error}
25051exception (@pxref{Exception Handling}).
f8f6f20b
TJB
25052
25053Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
25054operator, like:
25055
25056@smallexample
25057(@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
25058True
25059@end smallexample
25060
25061The following frame-related functions are available in the @code{gdb} module:
25062
25063@findex gdb.selected_frame
d812018b 25064@defun gdb.selected_frame ()
f8f6f20b
TJB
25065Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
25066@end defun
25067
d8e22779 25068@findex gdb.newest_frame
d812018b 25069@defun gdb.newest_frame ()
d8e22779
TT
25070Return the newest frame object for the selected thread.
25071@end defun
25072
d812018b 25073@defun gdb.frame_stop_reason_string (reason)
f8f6f20b
TJB
25074Return a string explaining the reason why @value{GDBN} stopped unwinding
25075frames, as expressed by the given @var{reason} code (an integer, see the
25076@code{unwind_stop_reason} method further down in this section).
25077@end defun
25078
25079A @code{gdb.Frame} object has the following methods:
25080
25081@table @code
d812018b 25082@defun Frame.is_valid ()
f8f6f20b
TJB
25083Returns true if the @code{gdb.Frame} object is valid, false if not.
25084A frame object can become invalid if the frame it refers to doesn't
25085exist anymore in the inferior. All @code{gdb.Frame} methods will throw
25086an exception if it is invalid at the time the method is called.
d812018b 25087@end defun
f8f6f20b 25088
d812018b 25089@defun Frame.name ()
f8f6f20b
TJB
25090Returns the function name of the frame, or @code{None} if it can't be
25091obtained.
d812018b 25092@end defun
f8f6f20b 25093
d812018b 25094@defun Frame.type ()
ccfc3d6e
TT
25095Returns the type of the frame. The value can be one of:
25096@table @code
25097@item gdb.NORMAL_FRAME
25098An ordinary stack frame.
25099
25100@item gdb.DUMMY_FRAME
25101A fake stack frame that was created by @value{GDBN} when performing an
25102inferior function call.
25103
25104@item gdb.INLINE_FRAME
25105A frame representing an inlined function. The function was inlined
25106into a @code{gdb.NORMAL_FRAME} that is older than this one.
25107
111c6489
JK
25108@item gdb.TAILCALL_FRAME
25109A frame representing a tail call. @xref{Tail Call Frames}.
25110
ccfc3d6e
TT
25111@item gdb.SIGTRAMP_FRAME
25112A signal trampoline frame. This is the frame created by the OS when
25113it calls into a signal handler.
25114
25115@item gdb.ARCH_FRAME
25116A fake stack frame representing a cross-architecture call.
25117
25118@item gdb.SENTINEL_FRAME
25119This is like @code{gdb.NORMAL_FRAME}, but it is only used for the
25120newest frame.
25121@end table
d812018b 25122@end defun
f8f6f20b 25123
d812018b 25124@defun Frame.unwind_stop_reason ()
f8f6f20b
TJB
25125Return an integer representing the reason why it's not possible to find
25126more frames toward the outermost frame. Use
25127@code{gdb.frame_stop_reason_string} to convert the value returned by this
a7fc3f37
KP
25128function to a string. The value can be one of:
25129
25130@table @code
25131@item gdb.FRAME_UNWIND_NO_REASON
25132No particular reason (older frames should be available).
25133
25134@item gdb.FRAME_UNWIND_NULL_ID
25135The previous frame's analyzer returns an invalid result.
25136
25137@item gdb.FRAME_UNWIND_OUTERMOST
25138This frame is the outermost.
25139
25140@item gdb.FRAME_UNWIND_UNAVAILABLE
25141Cannot unwind further, because that would require knowing the
25142values of registers or memory that have not been collected.
25143
25144@item gdb.FRAME_UNWIND_INNER_ID
25145This frame ID looks like it ought to belong to a NEXT frame,
25146but we got it for a PREV frame. Normally, this is a sign of
25147unwinder failure. It could also indicate stack corruption.
25148
25149@item gdb.FRAME_UNWIND_SAME_ID
25150This frame has the same ID as the previous one. That means
25151that unwinding further would almost certainly give us another
25152frame with exactly the same ID, so break the chain. Normally,
25153this is a sign of unwinder failure. It could also indicate
25154stack corruption.
25155
25156@item gdb.FRAME_UNWIND_NO_SAVED_PC
25157The frame unwinder did not find any saved PC, but we needed
25158one to unwind further.
2231f1fb
KP
25159
25160@item gdb.FRAME_UNWIND_FIRST_ERROR
25161Any stop reason greater or equal to this value indicates some kind
25162of error. This special value facilitates writing code that tests
25163for errors in unwinding in a way that will work correctly even if
25164the list of the other values is modified in future @value{GDBN}
25165versions. Using it, you could write:
25166@smallexample
25167reason = gdb.selected_frame().unwind_stop_reason ()
25168reason_str = gdb.frame_stop_reason_string (reason)
25169if reason >= gdb.FRAME_UNWIND_FIRST_ERROR:
25170 print "An error occured: %s" % reason_str
25171@end smallexample
a7fc3f37
KP
25172@end table
25173
d812018b 25174@end defun
f8f6f20b 25175
d812018b 25176@defun Frame.pc ()
f8f6f20b 25177Returns the frame's resume address.
d812018b 25178@end defun
f8f6f20b 25179
d812018b 25180@defun Frame.block ()
f3e9a817 25181Return the frame's code block. @xref{Blocks In Python}.
d812018b 25182@end defun
f3e9a817 25183
d812018b 25184@defun Frame.function ()
f3e9a817
PM
25185Return the symbol for the function corresponding to this frame.
25186@xref{Symbols In Python}.
d812018b 25187@end defun
f3e9a817 25188
d812018b 25189@defun Frame.older ()
f8f6f20b 25190Return the frame that called this frame.
d812018b 25191@end defun
f8f6f20b 25192
d812018b 25193@defun Frame.newer ()
f8f6f20b 25194Return the frame called by this frame.
d812018b 25195@end defun
f8f6f20b 25196
d812018b 25197@defun Frame.find_sal ()
f3e9a817
PM
25198Return the frame's symtab and line object.
25199@xref{Symbol Tables In Python}.
d812018b 25200@end defun
f3e9a817 25201
d812018b 25202@defun Frame.read_var (variable @r{[}, block@r{]})
dc00d89f
PM
25203Return the value of @var{variable} in this frame. If the optional
25204argument @var{block} is provided, search for the variable from that
25205block; otherwise start at the frame's current block (which is
25206determined by the frame's current program counter). @var{variable}
25207must be a string or a @code{gdb.Symbol} object. @var{block} must be a
25208@code{gdb.Block} object.
d812018b 25209@end defun
f3e9a817 25210
d812018b 25211@defun Frame.select ()
f3e9a817
PM
25212Set this frame to be the selected frame. @xref{Stack, ,Examining the
25213Stack}.
d812018b 25214@end defun
f3e9a817
PM
25215@end table
25216
25217@node Blocks In Python
25218@subsubsection Accessing frame blocks from Python.
25219
25220@cindex blocks in python
25221@tindex gdb.Block
25222
25223Within each frame, @value{GDBN} maintains information on each block
25224stored in that frame. These blocks are organized hierarchically, and
25225are represented individually in Python as a @code{gdb.Block}.
25226Please see @ref{Frames In Python}, for a more in-depth discussion on
25227frames. Furthermore, see @ref{Stack, ,Examining the Stack}, for more
25228detailed technical information on @value{GDBN}'s book-keeping of the
25229stack.
25230
bdb1994d 25231A @code{gdb.Block} is iterable. The iterator returns the symbols
56af09aa
SCR
25232(@pxref{Symbols In Python}) local to the block. Python programs
25233should not assume that a specific block object will always contain a
25234given symbol, since changes in @value{GDBN} features and
25235infrastructure may cause symbols move across blocks in a symbol
25236table.
bdb1994d 25237
f3e9a817
PM
25238The following block-related functions are available in the @code{gdb}
25239module:
25240
25241@findex gdb.block_for_pc
d812018b 25242@defun gdb.block_for_pc (pc)
f3e9a817
PM
25243Return the @code{gdb.Block} containing the given @var{pc} value. If the
25244block cannot be found for the @var{pc} value specified, the function
25245will return @code{None}.
25246@end defun
25247
29703da4
PM
25248A @code{gdb.Block} object has the following methods:
25249
25250@table @code
d812018b 25251@defun Block.is_valid ()
29703da4
PM
25252Returns @code{True} if the @code{gdb.Block} object is valid,
25253@code{False} if not. A block object can become invalid if the block it
25254refers to doesn't exist anymore in the inferior. All other
25255@code{gdb.Block} methods will throw an exception if it is invalid at
bdb1994d
TT
25256the time the method is called. The block's validity is also checked
25257during iteration over symbols of the block.
d812018b 25258@end defun
29703da4
PM
25259@end table
25260
f3e9a817
PM
25261A @code{gdb.Block} object has the following attributes:
25262
25263@table @code
d812018b 25264@defvar Block.start
f3e9a817 25265The start address of the block. This attribute is not writable.
d812018b 25266@end defvar
f3e9a817 25267
d812018b 25268@defvar Block.end
f3e9a817 25269The end address of the block. This attribute is not writable.
d812018b 25270@end defvar
f3e9a817 25271
d812018b 25272@defvar Block.function
f3e9a817
PM
25273The name of the block represented as a @code{gdb.Symbol}. If the
25274block is not named, then this attribute holds @code{None}. This
25275attribute is not writable.
d812018b 25276@end defvar
f3e9a817 25277
d812018b 25278@defvar Block.superblock
f3e9a817
PM
25279The block containing this block. If this parent block does not exist,
25280this attribute holds @code{None}. This attribute is not writable.
d812018b 25281@end defvar
9df2fbc4
PM
25282
25283@defvar Block.global_block
25284The global block associated with this block. This attribute is not
25285writable.
25286@end defvar
25287
25288@defvar Block.static_block
25289The static block associated with this block. This attribute is not
25290writable.
25291@end defvar
25292
25293@defvar Block.is_global
25294@code{True} if the @code{gdb.Block} object is a global block,
25295@code{False} if not. This attribute is not
25296writable.
25297@end defvar
25298
25299@defvar Block.is_static
25300@code{True} if the @code{gdb.Block} object is a static block,
25301@code{False} if not. This attribute is not writable.
25302@end defvar
f3e9a817
PM
25303@end table
25304
25305@node Symbols In Python
25306@subsubsection Python representation of Symbols.
25307
25308@cindex symbols in python
25309@tindex gdb.Symbol
25310
25311@value{GDBN} represents every variable, function and type as an
25312entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
25313Similarly, Python represents these symbols in @value{GDBN} with the
25314@code{gdb.Symbol} object.
25315
25316The following symbol-related functions are available in the @code{gdb}
25317module:
25318
25319@findex gdb.lookup_symbol
d812018b 25320@defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]})
f3e9a817
PM
25321This function searches for a symbol by name. The search scope can be
25322restricted to the parameters defined in the optional domain and block
25323arguments.
25324
25325@var{name} is the name of the symbol. It must be a string. The
25326optional @var{block} argument restricts the search to symbols visible
25327in that @var{block}. The @var{block} argument must be a
6e6fbe60
DE
25328@code{gdb.Block} object. If omitted, the block for the current frame
25329is used. The optional @var{domain} argument restricts
f3e9a817
PM
25330the search to the domain type. The @var{domain} argument must be a
25331domain constant defined in the @code{gdb} module and described later
25332in this chapter.
6e6fbe60
DE
25333
25334The result is a tuple of two elements.
25335The first element is a @code{gdb.Symbol} object or @code{None} if the symbol
25336is not found.
25337If the symbol is found, the second element is @code{True} if the symbol
82809774 25338is a field of a method's object (e.g., @code{this} in C@t{++}),
6e6fbe60
DE
25339otherwise it is @code{False}.
25340If the symbol is not found, the second element is @code{False}.
25341@end defun
25342
25343@findex gdb.lookup_global_symbol
d812018b 25344@defun gdb.lookup_global_symbol (name @r{[}, domain@r{]})
6e6fbe60
DE
25345This function searches for a global symbol by name.
25346The search scope can be restricted to by the domain argument.
25347
25348@var{name} is the name of the symbol. It must be a string.
25349The optional @var{domain} argument restricts the search to the domain type.
25350The @var{domain} argument must be a domain constant defined in the @code{gdb}
25351module and described later in this chapter.
25352
25353The result is a @code{gdb.Symbol} object or @code{None} if the symbol
25354is not found.
f3e9a817
PM
25355@end defun
25356
25357A @code{gdb.Symbol} object has the following attributes:
25358
25359@table @code
d812018b 25360@defvar Symbol.type
457e09f0
DE
25361The type of the symbol or @code{None} if no type is recorded.
25362This attribute is represented as a @code{gdb.Type} object.
25363@xref{Types In Python}. This attribute is not writable.
d812018b 25364@end defvar
457e09f0 25365
d812018b 25366@defvar Symbol.symtab
f3e9a817
PM
25367The symbol table in which the symbol appears. This attribute is
25368represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
25369Python}. This attribute is not writable.
d812018b 25370@end defvar
f3e9a817 25371
64e7d9dd
TT
25372@defvar Symbol.line
25373The line number in the source code at which the symbol was defined.
25374This is an integer.
25375@end defvar
25376
d812018b 25377@defvar Symbol.name
f3e9a817 25378The name of the symbol as a string. This attribute is not writable.
d812018b 25379@end defvar
f3e9a817 25380
d812018b 25381@defvar Symbol.linkage_name
f3e9a817
PM
25382The name of the symbol, as used by the linker (i.e., may be mangled).
25383This attribute is not writable.
d812018b 25384@end defvar
f3e9a817 25385
d812018b 25386@defvar Symbol.print_name
f3e9a817
PM
25387The name of the symbol in a form suitable for output. This is either
25388@code{name} or @code{linkage_name}, depending on whether the user
25389asked @value{GDBN} to display demangled or mangled names.
d812018b 25390@end defvar
f3e9a817 25391
d812018b 25392@defvar Symbol.addr_class
f3e9a817
PM
25393The address class of the symbol. This classifies how to find the value
25394of a symbol. Each address class is a constant defined in the
25395@code{gdb} module and described later in this chapter.
d812018b 25396@end defvar
f3e9a817 25397
f0823d2c
TT
25398@defvar Symbol.needs_frame
25399This is @code{True} if evaluating this symbol's value requires a frame
25400(@pxref{Frames In Python}) and @code{False} otherwise. Typically,
25401local variables will require a frame, but other symbols will not.
035d1e5b 25402@end defvar
f0823d2c 25403
d812018b 25404@defvar Symbol.is_argument
f3e9a817 25405@code{True} if the symbol is an argument of a function.
d812018b 25406@end defvar
f3e9a817 25407
d812018b 25408@defvar Symbol.is_constant
f3e9a817 25409@code{True} if the symbol is a constant.
d812018b 25410@end defvar
f3e9a817 25411
d812018b 25412@defvar Symbol.is_function
f3e9a817 25413@code{True} if the symbol is a function or a method.
d812018b 25414@end defvar
f3e9a817 25415
d812018b 25416@defvar Symbol.is_variable
f3e9a817 25417@code{True} if the symbol is a variable.
d812018b 25418@end defvar
f3e9a817
PM
25419@end table
25420
29703da4
PM
25421A @code{gdb.Symbol} object has the following methods:
25422
25423@table @code
d812018b 25424@defun Symbol.is_valid ()
29703da4
PM
25425Returns @code{True} if the @code{gdb.Symbol} object is valid,
25426@code{False} if not. A @code{gdb.Symbol} object can become invalid if
25427the symbol it refers to does not exist in @value{GDBN} any longer.
25428All other @code{gdb.Symbol} methods will throw an exception if it is
25429invalid at the time the method is called.
d812018b 25430@end defun
f0823d2c
TT
25431
25432@defun Symbol.value (@r{[}frame@r{]})
25433Compute the value of the symbol, as a @code{gdb.Value}. For
25434functions, this computes the address of the function, cast to the
25435appropriate type. If the symbol requires a frame in order to compute
25436its value, then @var{frame} must be given. If @var{frame} is not
25437given, or if @var{frame} is invalid, then this method will throw an
25438exception.
25439@end defun
29703da4
PM
25440@end table
25441
f3e9a817
PM
25442The available domain categories in @code{gdb.Symbol} are represented
25443as constants in the @code{gdb} module:
25444
25445@table @code
25446@findex SYMBOL_UNDEF_DOMAIN
25447@findex gdb.SYMBOL_UNDEF_DOMAIN
d812018b 25448@item gdb.SYMBOL_UNDEF_DOMAIN
f3e9a817
PM
25449This is used when a domain has not been discovered or none of the
25450following domains apply. This usually indicates an error either
25451in the symbol information or in @value{GDBN}'s handling of symbols.
25452@findex SYMBOL_VAR_DOMAIN
25453@findex gdb.SYMBOL_VAR_DOMAIN
d812018b 25454@item gdb.SYMBOL_VAR_DOMAIN
f3e9a817
PM
25455This domain contains variables, function names, typedef names and enum
25456type values.
25457@findex SYMBOL_STRUCT_DOMAIN
25458@findex gdb.SYMBOL_STRUCT_DOMAIN
d812018b 25459@item gdb.SYMBOL_STRUCT_DOMAIN
f3e9a817
PM
25460This domain holds struct, union and enum type names.
25461@findex SYMBOL_LABEL_DOMAIN
25462@findex gdb.SYMBOL_LABEL_DOMAIN
d812018b 25463@item gdb.SYMBOL_LABEL_DOMAIN
f3e9a817
PM
25464This domain contains names of labels (for gotos).
25465@findex SYMBOL_VARIABLES_DOMAIN
25466@findex gdb.SYMBOL_VARIABLES_DOMAIN
d812018b 25467@item gdb.SYMBOL_VARIABLES_DOMAIN
f3e9a817
PM
25468This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
25469contains everything minus functions and types.
25470@findex SYMBOL_FUNCTIONS_DOMAIN
25471@findex gdb.SYMBOL_FUNCTIONS_DOMAIN
d812018b 25472@item gdb.SYMBOL_FUNCTION_DOMAIN
f3e9a817
PM
25473This domain contains all functions.
25474@findex SYMBOL_TYPES_DOMAIN
25475@findex gdb.SYMBOL_TYPES_DOMAIN
d812018b 25476@item gdb.SYMBOL_TYPES_DOMAIN
f3e9a817
PM
25477This domain contains all types.
25478@end table
25479
25480The available address class categories in @code{gdb.Symbol} are represented
25481as constants in the @code{gdb} module:
25482
25483@table @code
25484@findex SYMBOL_LOC_UNDEF
25485@findex gdb.SYMBOL_LOC_UNDEF
d812018b 25486@item gdb.SYMBOL_LOC_UNDEF
f3e9a817
PM
25487If this is returned by address class, it indicates an error either in
25488the symbol information or in @value{GDBN}'s handling of symbols.
25489@findex SYMBOL_LOC_CONST
25490@findex gdb.SYMBOL_LOC_CONST
d812018b 25491@item gdb.SYMBOL_LOC_CONST
f3e9a817
PM
25492Value is constant int.
25493@findex SYMBOL_LOC_STATIC
25494@findex gdb.SYMBOL_LOC_STATIC
d812018b 25495@item gdb.SYMBOL_LOC_STATIC
f3e9a817
PM
25496Value is at a fixed address.
25497@findex SYMBOL_LOC_REGISTER
25498@findex gdb.SYMBOL_LOC_REGISTER
d812018b 25499@item gdb.SYMBOL_LOC_REGISTER
f3e9a817
PM
25500Value is in a register.
25501@findex SYMBOL_LOC_ARG
25502@findex gdb.SYMBOL_LOC_ARG
d812018b 25503@item gdb.SYMBOL_LOC_ARG
f3e9a817
PM
25504Value is an argument. This value is at the offset stored within the
25505symbol inside the frame's argument list.
25506@findex SYMBOL_LOC_REF_ARG
25507@findex gdb.SYMBOL_LOC_REF_ARG
d812018b 25508@item gdb.SYMBOL_LOC_REF_ARG
f3e9a817
PM
25509Value address is stored in the frame's argument list. Just like
25510@code{LOC_ARG} except that the value's address is stored at the
25511offset, not the value itself.
25512@findex SYMBOL_LOC_REGPARM_ADDR
25513@findex gdb.SYMBOL_LOC_REGPARM_ADDR
d812018b 25514@item gdb.SYMBOL_LOC_REGPARM_ADDR
f3e9a817
PM
25515Value is a specified register. Just like @code{LOC_REGISTER} except
25516the register holds the address of the argument instead of the argument
25517itself.
25518@findex SYMBOL_LOC_LOCAL
25519@findex gdb.SYMBOL_LOC_LOCAL
d812018b 25520@item gdb.SYMBOL_LOC_LOCAL
f3e9a817
PM
25521Value is a local variable.
25522@findex SYMBOL_LOC_TYPEDEF
25523@findex gdb.SYMBOL_LOC_TYPEDEF
d812018b 25524@item gdb.SYMBOL_LOC_TYPEDEF
f3e9a817
PM
25525Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
25526have this class.
25527@findex SYMBOL_LOC_BLOCK
25528@findex gdb.SYMBOL_LOC_BLOCK
d812018b 25529@item gdb.SYMBOL_LOC_BLOCK
f3e9a817
PM
25530Value is a block.
25531@findex SYMBOL_LOC_CONST_BYTES
25532@findex gdb.SYMBOL_LOC_CONST_BYTES
d812018b 25533@item gdb.SYMBOL_LOC_CONST_BYTES
f3e9a817
PM
25534Value is a byte-sequence.
25535@findex SYMBOL_LOC_UNRESOLVED
25536@findex gdb.SYMBOL_LOC_UNRESOLVED
d812018b 25537@item gdb.SYMBOL_LOC_UNRESOLVED
f3e9a817
PM
25538Value is at a fixed address, but the address of the variable has to be
25539determined from the minimal symbol table whenever the variable is
25540referenced.
25541@findex SYMBOL_LOC_OPTIMIZED_OUT
25542@findex gdb.SYMBOL_LOC_OPTIMIZED_OUT
d812018b 25543@item gdb.SYMBOL_LOC_OPTIMIZED_OUT
f3e9a817
PM
25544The value does not actually exist in the program.
25545@findex SYMBOL_LOC_COMPUTED
25546@findex gdb.SYMBOL_LOC_COMPUTED
d812018b 25547@item gdb.SYMBOL_LOC_COMPUTED
f3e9a817
PM
25548The value's address is a computed location.
25549@end table
25550
25551@node Symbol Tables In Python
25552@subsubsection Symbol table representation in Python.
25553
25554@cindex symbol tables in python
25555@tindex gdb.Symtab
25556@tindex gdb.Symtab_and_line
25557
25558Access to symbol table data maintained by @value{GDBN} on the inferior
25559is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
25560@code{gdb.Symtab}. Symbol table and line data for a frame is returned
25561from the @code{find_sal} method in @code{gdb.Frame} object.
25562@xref{Frames In Python}.
25563
25564For more information on @value{GDBN}'s symbol table management, see
25565@ref{Symbols, ,Examining the Symbol Table}, for more information.
25566
25567A @code{gdb.Symtab_and_line} object has the following attributes:
25568
25569@table @code
d812018b 25570@defvar Symtab_and_line.symtab
f3e9a817
PM
25571The symbol table object (@code{gdb.Symtab}) for this frame.
25572This attribute is not writable.
d812018b 25573@end defvar
f3e9a817 25574
d812018b 25575@defvar Symtab_and_line.pc
3c15d565
SCR
25576Indicates the start of the address range occupied by code for the
25577current source line. This attribute is not writable.
d812018b 25578@end defvar
f3e9a817 25579
ee0bf529
SCR
25580@defvar Symtab_and_line.last
25581Indicates the end of the address range occupied by code for the current
25582source line. This attribute is not writable.
25583@end defvar
25584
d812018b 25585@defvar Symtab_and_line.line
f3e9a817
PM
25586Indicates the current line number for this object. This
25587attribute is not writable.
d812018b 25588@end defvar
f3e9a817
PM
25589@end table
25590
29703da4
PM
25591A @code{gdb.Symtab_and_line} object has the following methods:
25592
25593@table @code
d812018b 25594@defun Symtab_and_line.is_valid ()
29703da4
PM
25595Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid,
25596@code{False} if not. A @code{gdb.Symtab_and_line} object can become
25597invalid if the Symbol table and line object it refers to does not
25598exist in @value{GDBN} any longer. All other
25599@code{gdb.Symtab_and_line} methods will throw an exception if it is
25600invalid at the time the method is called.
d812018b 25601@end defun
29703da4
PM
25602@end table
25603
f3e9a817
PM
25604A @code{gdb.Symtab} object has the following attributes:
25605
25606@table @code
d812018b 25607@defvar Symtab.filename
f3e9a817 25608The symbol table's source filename. This attribute is not writable.
d812018b 25609@end defvar
f3e9a817 25610
d812018b 25611@defvar Symtab.objfile
f3e9a817
PM
25612The symbol table's backing object file. @xref{Objfiles In Python}.
25613This attribute is not writable.
d812018b 25614@end defvar
f3e9a817
PM
25615@end table
25616
29703da4 25617A @code{gdb.Symtab} object has the following methods:
f3e9a817
PM
25618
25619@table @code
d812018b 25620@defun Symtab.is_valid ()
29703da4
PM
25621Returns @code{True} if the @code{gdb.Symtab} object is valid,
25622@code{False} if not. A @code{gdb.Symtab} object can become invalid if
25623the symbol table it refers to does not exist in @value{GDBN} any
25624longer. All other @code{gdb.Symtab} methods will throw an exception
25625if it is invalid at the time the method is called.
d812018b 25626@end defun
29703da4 25627
d812018b 25628@defun Symtab.fullname ()
f3e9a817 25629Return the symbol table's source absolute file name.
d812018b 25630@end defun
a20ee7a4
SCR
25631
25632@defun Symtab.global_block ()
25633Return the global block of the underlying symbol table.
25634@xref{Blocks In Python}.
25635@end defun
25636
25637@defun Symtab.static_block ()
25638Return the static block of the underlying symbol table.
25639@xref{Blocks In Python}.
25640@end defun
f8f6f20b
TJB
25641@end table
25642
adc36818
PM
25643@node Breakpoints In Python
25644@subsubsection Manipulating breakpoints using Python
25645
25646@cindex breakpoints in python
25647@tindex gdb.Breakpoint
25648
25649Python code can manipulate breakpoints via the @code{gdb.Breakpoint}
25650class.
25651
d812018b 25652@defun Breakpoint.__init__ (spec @r{[}, type @r{[}, wp_class @r{[},internal@r{]]]})
adc36818
PM
25653Create a new breakpoint. @var{spec} is a string naming the
25654location of the breakpoint, or an expression that defines a
25655watchpoint. The contents can be any location recognized by the
25656@code{break} command, or in the case of a watchpoint, by the @code{watch}
25657command. The optional @var{type} denotes the breakpoint to create
25658from the types defined later in this chapter. This argument can be
d812018b
PK
25659either: @code{gdb.BP_BREAKPOINT} or @code{gdb.BP_WATCHPOINT}. @var{type}
25660defaults to @code{gdb.BP_BREAKPOINT}. The optional @var{internal} argument
84f4c1fe
PM
25661allows the breakpoint to become invisible to the user. The breakpoint
25662will neither be reported when created, nor will it be listed in the
25663output from @code{info breakpoints} (but will be listed with the
25664@code{maint info breakpoints} command). The optional @var{wp_class}
adc36818 25665argument defines the class of watchpoint to create, if @var{type} is
d812018b
PK
25666@code{gdb.BP_WATCHPOINT}. If a watchpoint class is not provided, it is
25667assumed to be a @code{gdb.WP_WRITE} class.
25668@end defun
adc36818 25669
d812018b 25670@defun Breakpoint.stop (self)
7371cf6d
PM
25671The @code{gdb.Breakpoint} class can be sub-classed and, in
25672particular, you may choose to implement the @code{stop} method.
25673If this method is defined as a sub-class of @code{gdb.Breakpoint},
25674it will be called when the inferior reaches any location of a
25675breakpoint which instantiates that sub-class. If the method returns
25676@code{True}, the inferior will be stopped at the location of the
25677breakpoint, otherwise the inferior will continue.
25678
25679If there are multiple breakpoints at the same location with a
25680@code{stop} method, each one will be called regardless of the
25681return status of the previous. This ensures that all @code{stop}
25682methods have a chance to execute at that location. In this scenario
25683if one of the methods returns @code{True} but the others return
25684@code{False}, the inferior will still be stopped.
25685
99f5279d
PM
25686You should not alter the execution state of the inferior (i.e.@:, step,
25687next, etc.), alter the current frame context (i.e.@:, change the current
25688active frame), or alter, add or delete any breakpoint. As a general
25689rule, you should not alter any data within @value{GDBN} or the inferior
25690at this time.
25691
7371cf6d
PM
25692Example @code{stop} implementation:
25693
25694@smallexample
25695class MyBreakpoint (gdb.Breakpoint):
25696 def stop (self):
25697 inf_val = gdb.parse_and_eval("foo")
25698 if inf_val == 3:
25699 return True
25700 return False
25701@end smallexample
d812018b 25702@end defun
7371cf6d 25703
adc36818
PM
25704The available watchpoint types represented by constants are defined in the
25705@code{gdb} module:
25706
25707@table @code
25708@findex WP_READ
25709@findex gdb.WP_READ
d812018b 25710@item gdb.WP_READ
adc36818
PM
25711Read only watchpoint.
25712
25713@findex WP_WRITE
25714@findex gdb.WP_WRITE
d812018b 25715@item gdb.WP_WRITE
adc36818
PM
25716Write only watchpoint.
25717
25718@findex WP_ACCESS
25719@findex gdb.WP_ACCESS
d812018b 25720@item gdb.WP_ACCESS
adc36818
PM
25721Read/Write watchpoint.
25722@end table
25723
d812018b 25724@defun Breakpoint.is_valid ()
adc36818
PM
25725Return @code{True} if this @code{Breakpoint} object is valid,
25726@code{False} otherwise. A @code{Breakpoint} object can become invalid
25727if the user deletes the breakpoint. In this case, the object still
25728exists, but the underlying breakpoint does not. In the cases of
25729watchpoint scope, the watchpoint remains valid even if execution of the
25730inferior leaves the scope of that watchpoint.
d812018b 25731@end defun
adc36818 25732
d812018b 25733@defun Breakpoint.delete
94b6973e
PM
25734Permanently deletes the @value{GDBN} breakpoint. This also
25735invalidates the Python @code{Breakpoint} object. Any further access
25736to this object's attributes or methods will raise an error.
d812018b 25737@end defun
94b6973e 25738
d812018b 25739@defvar Breakpoint.enabled
adc36818
PM
25740This attribute is @code{True} if the breakpoint is enabled, and
25741@code{False} otherwise. This attribute is writable.
d812018b 25742@end defvar
adc36818 25743
d812018b 25744@defvar Breakpoint.silent
adc36818
PM
25745This attribute is @code{True} if the breakpoint is silent, and
25746@code{False} otherwise. This attribute is writable.
25747
25748Note that a breakpoint can also be silent if it has commands and the
25749first command is @code{silent}. This is not reported by the
25750@code{silent} attribute.
d812018b 25751@end defvar
adc36818 25752
d812018b 25753@defvar Breakpoint.thread
adc36818
PM
25754If the breakpoint is thread-specific, this attribute holds the thread
25755id. If the breakpoint is not thread-specific, this attribute is
25756@code{None}. This attribute is writable.
d812018b 25757@end defvar
adc36818 25758
d812018b 25759@defvar Breakpoint.task
adc36818
PM
25760If the breakpoint is Ada task-specific, this attribute holds the Ada task
25761id. If the breakpoint is not task-specific (or the underlying
25762language is not Ada), this attribute is @code{None}. This attribute
25763is writable.
d812018b 25764@end defvar
adc36818 25765
d812018b 25766@defvar Breakpoint.ignore_count
adc36818
PM
25767This attribute holds the ignore count for the breakpoint, an integer.
25768This attribute is writable.
d812018b 25769@end defvar
adc36818 25770
d812018b 25771@defvar Breakpoint.number
adc36818
PM
25772This attribute holds the breakpoint's number --- the identifier used by
25773the user to manipulate the breakpoint. This attribute is not writable.
d812018b 25774@end defvar
adc36818 25775
d812018b 25776@defvar Breakpoint.type
adc36818
PM
25777This attribute holds the breakpoint's type --- the identifier used to
25778determine the actual breakpoint type or use-case. This attribute is not
25779writable.
d812018b 25780@end defvar
adc36818 25781
d812018b 25782@defvar Breakpoint.visible
84f4c1fe
PM
25783This attribute tells whether the breakpoint is visible to the user
25784when set, or when the @samp{info breakpoints} command is run. This
25785attribute is not writable.
d812018b 25786@end defvar
84f4c1fe 25787
adc36818
PM
25788The available types are represented by constants defined in the @code{gdb}
25789module:
25790
25791@table @code
25792@findex BP_BREAKPOINT
25793@findex gdb.BP_BREAKPOINT
d812018b 25794@item gdb.BP_BREAKPOINT
adc36818
PM
25795Normal code breakpoint.
25796
25797@findex BP_WATCHPOINT
25798@findex gdb.BP_WATCHPOINT
d812018b 25799@item gdb.BP_WATCHPOINT
adc36818
PM
25800Watchpoint breakpoint.
25801
25802@findex BP_HARDWARE_WATCHPOINT
25803@findex gdb.BP_HARDWARE_WATCHPOINT
d812018b 25804@item gdb.BP_HARDWARE_WATCHPOINT
adc36818
PM
25805Hardware assisted watchpoint.
25806
25807@findex BP_READ_WATCHPOINT
25808@findex gdb.BP_READ_WATCHPOINT
d812018b 25809@item gdb.BP_READ_WATCHPOINT
adc36818
PM
25810Hardware assisted read watchpoint.
25811
25812@findex BP_ACCESS_WATCHPOINT
25813@findex gdb.BP_ACCESS_WATCHPOINT
d812018b 25814@item gdb.BP_ACCESS_WATCHPOINT
adc36818
PM
25815Hardware assisted access watchpoint.
25816@end table
25817
d812018b 25818@defvar Breakpoint.hit_count
adc36818
PM
25819This attribute holds the hit count for the breakpoint, an integer.
25820This attribute is writable, but currently it can only be set to zero.
d812018b 25821@end defvar
adc36818 25822
d812018b 25823@defvar Breakpoint.location
adc36818
PM
25824This attribute holds the location of the breakpoint, as specified by
25825the user. It is a string. If the breakpoint does not have a location
25826(that is, it is a watchpoint) the attribute's value is @code{None}. This
25827attribute is not writable.
d812018b 25828@end defvar
adc36818 25829
d812018b 25830@defvar Breakpoint.expression
adc36818
PM
25831This attribute holds a breakpoint expression, as specified by
25832the user. It is a string. If the breakpoint does not have an
25833expression (the breakpoint is not a watchpoint) the attribute's value
25834is @code{None}. This attribute is not writable.
d812018b 25835@end defvar
adc36818 25836
d812018b 25837@defvar Breakpoint.condition
adc36818
PM
25838This attribute holds the condition of the breakpoint, as specified by
25839the user. It is a string. If there is no condition, this attribute's
25840value is @code{None}. This attribute is writable.
d812018b 25841@end defvar
adc36818 25842
d812018b 25843@defvar Breakpoint.commands
adc36818
PM
25844This attribute holds the commands attached to the breakpoint. If
25845there are commands, this attribute's value is a string holding all the
25846commands, separated by newlines. If there are no commands, this
25847attribute is @code{None}. This attribute is not writable.
d812018b 25848@end defvar
adc36818 25849
cc72b2a2
KP
25850@node Finish Breakpoints in Python
25851@subsubsection Finish Breakpoints
25852
25853@cindex python finish breakpoints
25854@tindex gdb.FinishBreakpoint
25855
25856A finish breakpoint is a temporary breakpoint set at the return address of
25857a frame, based on the @code{finish} command. @code{gdb.FinishBreakpoint}
25858extends @code{gdb.Breakpoint}. The underlying breakpoint will be disabled
25859and deleted when the execution will run out of the breakpoint scope (i.e.@:
25860@code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered).
25861Finish breakpoints are thread specific and must be create with the right
25862thread selected.
25863
25864@defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]})
25865Create a finish breakpoint at the return address of the @code{gdb.Frame}
25866object @var{frame}. If @var{frame} is not provided, this defaults to the
25867newest frame. The optional @var{internal} argument allows the breakpoint to
25868become invisible to the user. @xref{Breakpoints In Python}, for further
25869details about this argument.
25870@end defun
25871
25872@defun FinishBreakpoint.out_of_scope (self)
25873In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN}
25874@code{return} command, @dots{}), a function may not properly terminate, and
25875thus never hit the finish breakpoint. When @value{GDBN} notices such a
25876situation, the @code{out_of_scope} callback will be triggered.
25877
25878You may want to sub-class @code{gdb.FinishBreakpoint} and override this
25879method:
25880
25881@smallexample
25882class MyFinishBreakpoint (gdb.FinishBreakpoint)
25883 def stop (self):
25884 print "normal finish"
25885 return True
25886
25887 def out_of_scope ():
25888 print "abnormal finish"
25889@end smallexample
25890@end defun
25891
25892@defvar FinishBreakpoint.return_value
25893When @value{GDBN} is stopped at a finish breakpoint and the frame
25894used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this
25895attribute will contain a @code{gdb.Value} object corresponding to the return
25896value of the function. The value will be @code{None} if the function return
25897type is @code{void} or if the return value was not computable. This attribute
25898is not writable.
25899@end defvar
25900
be759fcf
PM
25901@node Lazy Strings In Python
25902@subsubsection Python representation of lazy strings.
25903
25904@cindex lazy strings in python
25905@tindex gdb.LazyString
25906
25907A @dfn{lazy string} is a string whose contents is not retrieved or
25908encoded until it is needed.
25909
25910A @code{gdb.LazyString} is represented in @value{GDBN} as an
25911@code{address} that points to a region of memory, an @code{encoding}
25912that will be used to encode that region of memory, and a @code{length}
25913to delimit the region of memory that represents the string. The
25914difference between a @code{gdb.LazyString} and a string wrapped within
25915a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated
25916differently by @value{GDBN} when printing. A @code{gdb.LazyString} is
25917retrieved and encoded during printing, while a @code{gdb.Value}
25918wrapping a string is immediately retrieved and encoded on creation.
25919
25920A @code{gdb.LazyString} object has the following functions:
25921
d812018b 25922@defun LazyString.value ()
be759fcf
PM
25923Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value
25924will point to the string in memory, but will lose all the delayed
25925retrieval, encoding and handling that @value{GDBN} applies to a
25926@code{gdb.LazyString}.
d812018b 25927@end defun
be759fcf 25928
d812018b 25929@defvar LazyString.address
be759fcf
PM
25930This attribute holds the address of the string. This attribute is not
25931writable.
d812018b 25932@end defvar
be759fcf 25933
d812018b 25934@defvar LazyString.length
be759fcf
PM
25935This attribute holds the length of the string in characters. If the
25936length is -1, then the string will be fetched and encoded up to the
25937first null of appropriate width. This attribute is not writable.
d812018b 25938@end defvar
be759fcf 25939
d812018b 25940@defvar LazyString.encoding
be759fcf
PM
25941This attribute holds the encoding that will be applied to the string
25942when the string is printed by @value{GDBN}. If the encoding is not
25943set, or contains an empty string, then @value{GDBN} will select the
25944most appropriate encoding when the string is printed. This attribute
25945is not writable.
d812018b 25946@end defvar
be759fcf 25947
d812018b 25948@defvar LazyString.type
be759fcf
PM
25949This attribute holds the type that is represented by the lazy string's
25950type. For a lazy string this will always be a pointer type. To
25951resolve this to the lazy string's character type, use the type's
25952@code{target} method. @xref{Types In Python}. This attribute is not
25953writable.
d812018b 25954@end defvar
be759fcf 25955
bf88dd68
JK
25956@node Python Auto-loading
25957@subsection Python Auto-loading
25958@cindex Python auto-loading
8a1ea21f
DE
25959
25960When a new object file is read (for example, due to the @code{file}
25961command, or because the inferior has loaded a shared library),
25962@value{GDBN} will look for Python support scripts in several ways:
3708f05e
JK
25963@file{@var{objfile}-gdb.py} (@pxref{objfile-gdb.py file})
25964and @code{.debug_gdb_scripts} section
25965(@pxref{dotdebug_gdb_scripts section}).
8a1ea21f
DE
25966
25967The auto-loading feature is useful for supplying application-specific
25968debugging commands and scripts.
25969
dbaefcf7
DE
25970Auto-loading can be enabled or disabled,
25971and the list of auto-loaded scripts can be printed.
8a1ea21f
DE
25972
25973@table @code
bf88dd68
JK
25974@anchor{set auto-load python-scripts}
25975@kindex set auto-load python-scripts
25976@item set auto-load python-scripts [on|off]
a86caf66 25977Enable or disable the auto-loading of Python scripts.
8a1ea21f 25978
bf88dd68
JK
25979@anchor{show auto-load python-scripts}
25980@kindex show auto-load python-scripts
25981@item show auto-load python-scripts
a86caf66 25982Show whether auto-loading of Python scripts is enabled or disabled.
dbaefcf7 25983
bf88dd68
JK
25984@anchor{info auto-load python-scripts}
25985@kindex info auto-load python-scripts
25986@cindex print list of auto-loaded Python scripts
25987@item info auto-load python-scripts [@var{regexp}]
25988Print the list of all Python scripts that @value{GDBN} auto-loaded.
75fc9810 25989
bf88dd68 25990Also printed is the list of Python scripts that were mentioned in
75fc9810 25991the @code{.debug_gdb_scripts} section and were not found
8e0583c8 25992(@pxref{dotdebug_gdb_scripts section}).
75fc9810
DE
25993This is useful because their names are not printed when @value{GDBN}
25994tries to load them and fails. There may be many of them, and printing
25995an error message for each one is problematic.
25996
bf88dd68 25997If @var{regexp} is supplied only Python scripts with matching names are printed.
dbaefcf7 25998
75fc9810
DE
25999Example:
26000
dbaefcf7 26001@smallexample
bf88dd68 26002(gdb) info auto-load python-scripts
bccbefd2
JK
26003Loaded Script
26004Yes py-section-script.py
26005 full name: /tmp/py-section-script.py
26006No my-foo-pretty-printers.py
dbaefcf7 26007@end smallexample
8a1ea21f
DE
26008@end table
26009
26010When reading an auto-loaded file, @value{GDBN} sets the
26011@dfn{current objfile}. This is available via the @code{gdb.current_objfile}
26012function (@pxref{Objfiles In Python}). This can be useful for
26013registering objfile-specific pretty-printers.
26014
3708f05e
JK
26015@menu
26016* objfile-gdb.py file:: The @file{@var{objfile}-gdb.py} file
26017* dotdebug_gdb_scripts section:: The @code{.debug_gdb_scripts} section
26018* Which flavor to choose?::
26019@end menu
26020
8a1ea21f
DE
26021@node objfile-gdb.py file
26022@subsubsection The @file{@var{objfile}-gdb.py} file
26023@cindex @file{@var{objfile}-gdb.py}
26024
26025When a new object file is read, @value{GDBN} looks for
7349ff92 26026a file named @file{@var{objfile}-gdb.py} (we call it @var{script-name} below),
8a1ea21f
DE
26027where @var{objfile} is the object file's real name, formed by ensuring
26028that the file name is absolute, following all symlinks, and resolving
26029@code{.} and @code{..} components. If this file exists and is
26030readable, @value{GDBN} will evaluate it as a Python script.
26031
1564a261 26032If this file does not exist, then @value{GDBN} will look for
c1668e4e
JK
26033@var{script-name} file in all of the directories as specified below.
26034
26035Note that loading of this script file also requires accordingly configured
26036@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
7349ff92 26037
e9687799
JK
26038For object files using @file{.exe} suffix @value{GDBN} tries to load first the
26039scripts normally according to its @file{.exe} filename. But if no scripts are
26040found @value{GDBN} also tries script filenames matching the object file without
26041its @file{.exe} suffix. This @file{.exe} stripping is case insensitive and it
26042is attempted on any platform. This makes the script filenames compatible
26043between Unix and MS-Windows hosts.
26044
7349ff92
JK
26045@table @code
26046@anchor{set auto-load scripts-directory}
26047@kindex set auto-load scripts-directory
26048@item set auto-load scripts-directory @r{[}@var{directories}@r{]}
26049Control @value{GDBN} auto-loaded scripts location. Multiple directory entries
26050may be delimited by the host platform path separator in use
26051(@samp{:} on Unix, @samp{;} on MS-Windows and MS-DOS).
26052
26053Each entry here needs to be covered also by the security setting
26054@code{set auto-load safe-path} (@pxref{set auto-load safe-path}).
26055
26056@anchor{with-auto-load-dir}
1564a261
JK
26057This variable defaults to @file{$debugdir:$datadir/auto-load}. The default
26058@code{set auto-load safe-path} value can be also overriden by @value{GDBN}
26059configuration option @option{--with-auto-load-dir}.
26060
26061Any reference to @file{$debugdir} will get replaced by
26062@var{debug-file-directory} value (@pxref{Separate Debug Files}) and any
26063reference to @file{$datadir} will get replaced by @var{data-directory} which is
26064determined at @value{GDBN} startup (@pxref{Data Files}). @file{$debugdir} and
26065@file{$datadir} must be placed as a directory component --- either alone or
26066delimited by @file{/} or @file{\} directory separators, depending on the host
26067platform.
7349ff92
JK
26068
26069The list of directories uses path separator (@samp{:} on GNU and Unix
26070systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly
26071to the @env{PATH} environment variable.
26072
26073@anchor{show auto-load scripts-directory}
26074@kindex show auto-load scripts-directory
26075@item show auto-load scripts-directory
26076Show @value{GDBN} auto-loaded scripts location.
26077@end table
8a1ea21f
DE
26078
26079@value{GDBN} does not track which files it has already auto-loaded this way.
26080@value{GDBN} will load the associated script every time the corresponding
26081@var{objfile} is opened.
26082So your @file{-gdb.py} file should be careful to avoid errors if it
26083is evaluated more than once.
26084
8e0583c8 26085@node dotdebug_gdb_scripts section
8a1ea21f
DE
26086@subsubsection The @code{.debug_gdb_scripts} section
26087@cindex @code{.debug_gdb_scripts} section
26088
26089For systems using file formats like ELF and COFF,
26090when @value{GDBN} loads a new object file
26091it will look for a special section named @samp{.debug_gdb_scripts}.
26092If this section exists, its contents is a list of names of scripts to load.
26093
26094@value{GDBN} will look for each specified script file first in the
26095current directory and then along the source search path
26096(@pxref{Source Path, ,Specifying Source Directories}),
26097except that @file{$cdir} is not searched, since the compilation
26098directory is not relevant to scripts.
26099
26100Entries can be placed in section @code{.debug_gdb_scripts} with,
26101for example, this GCC macro:
26102
26103@example
a3a7127e 26104/* Note: The "MS" section flags are to remove duplicates. */
8a1ea21f
DE
26105#define DEFINE_GDB_SCRIPT(script_name) \
26106 asm("\
26107.pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\
26108.byte 1\n\
26109.asciz \"" script_name "\"\n\
26110.popsection \n\
26111");
26112@end example
26113
26114@noindent
26115Then one can reference the macro in a header or source file like this:
26116
26117@example
26118DEFINE_GDB_SCRIPT ("my-app-scripts.py")
26119@end example
26120
26121The script name may include directories if desired.
26122
c1668e4e
JK
26123Note that loading of this script file also requires accordingly configured
26124@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
26125
8a1ea21f
DE
26126If the macro is put in a header, any application or library
26127using this header will get a reference to the specified script.
26128
26129@node Which flavor to choose?
26130@subsubsection Which flavor to choose?
26131
26132Given the multiple ways of auto-loading Python scripts, it might not always
26133be clear which one to choose. This section provides some guidance.
26134
26135Benefits of the @file{-gdb.py} way:
26136
26137@itemize @bullet
26138@item
26139Can be used with file formats that don't support multiple sections.
26140
26141@item
26142Ease of finding scripts for public libraries.
26143
26144Scripts specified in the @code{.debug_gdb_scripts} section are searched for
26145in the source search path.
26146For publicly installed libraries, e.g., @file{libstdc++}, there typically
26147isn't a source directory in which to find the script.
26148
26149@item
26150Doesn't require source code additions.
26151@end itemize
26152
26153Benefits of the @code{.debug_gdb_scripts} way:
26154
26155@itemize @bullet
26156@item
26157Works with static linking.
26158
26159Scripts for libraries done the @file{-gdb.py} way require an objfile to
26160trigger their loading. When an application is statically linked the only
26161objfile available is the executable, and it is cumbersome to attach all the
26162scripts from all the input libraries to the executable's @file{-gdb.py} script.
26163
26164@item
26165Works with classes that are entirely inlined.
26166
26167Some classes can be entirely inlined, and thus there may not be an associated
26168shared library to attach a @file{-gdb.py} script to.
26169
26170@item
26171Scripts needn't be copied out of the source tree.
26172
26173In some circumstances, apps can be built out of large collections of internal
26174libraries, and the build infrastructure necessary to install the
26175@file{-gdb.py} scripts in a place where @value{GDBN} can find them is
26176cumbersome. It may be easier to specify the scripts in the
26177@code{.debug_gdb_scripts} section as relative paths, and add a path to the
26178top of the source tree to the source search path.
26179@end itemize
26180
0e3509db
DE
26181@node Python modules
26182@subsection Python modules
26183@cindex python modules
26184
fa3a4f15 26185@value{GDBN} comes with several modules to assist writing Python code.
0e3509db
DE
26186
26187@menu
7b51bc51 26188* gdb.printing:: Building and registering pretty-printers.
0e3509db 26189* gdb.types:: Utilities for working with types.
fa3a4f15 26190* gdb.prompt:: Utilities for prompt value substitution.
0e3509db
DE
26191@end menu
26192
7b51bc51
DE
26193@node gdb.printing
26194@subsubsection gdb.printing
26195@cindex gdb.printing
26196
26197This module provides a collection of utilities for working with
26198pretty-printers.
26199
26200@table @code
26201@item PrettyPrinter (@var{name}, @var{subprinters}=None)
26202This class specifies the API that makes @samp{info pretty-printer},
26203@samp{enable pretty-printer} and @samp{disable pretty-printer} work.
26204Pretty-printers should generally inherit from this class.
26205
26206@item SubPrettyPrinter (@var{name})
26207For printers that handle multiple types, this class specifies the
26208corresponding API for the subprinters.
26209
26210@item RegexpCollectionPrettyPrinter (@var{name})
26211Utility class for handling multiple printers, all recognized via
26212regular expressions.
26213@xref{Writing a Pretty-Printer}, for an example.
26214
cafec441
TT
26215@item FlagEnumerationPrinter (@var{name})
26216A pretty-printer which handles printing of @code{enum} values. Unlike
26217@value{GDBN}'s built-in @code{enum} printing, this printer attempts to
26218work properly when there is some overlap between the enumeration
26219constants. @var{name} is the name of the printer and also the name of
26220the @code{enum} type to look up.
26221
9c15afc4 26222@item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False)
7b51bc51 26223Register @var{printer} with the pretty-printer list of @var{obj}.
9c15afc4
DE
26224If @var{replace} is @code{True} then any existing copy of the printer
26225is replaced. Otherwise a @code{RuntimeError} exception is raised
26226if a printer with the same name already exists.
7b51bc51
DE
26227@end table
26228
0e3509db
DE
26229@node gdb.types
26230@subsubsection gdb.types
7b51bc51 26231@cindex gdb.types
0e3509db
DE
26232
26233This module provides a collection of utilities for working with
18a9fc12 26234@code{gdb.Type} objects.
0e3509db
DE
26235
26236@table @code
26237@item get_basic_type (@var{type})
26238Return @var{type} with const and volatile qualifiers stripped,
26239and with typedefs and C@t{++} references converted to the underlying type.
26240
26241C@t{++} example:
26242
26243@smallexample
26244typedef const int const_int;
26245const_int foo (3);
26246const_int& foo_ref (foo);
26247int main () @{ return 0; @}
26248@end smallexample
26249
26250Then in gdb:
26251
26252@smallexample
26253(gdb) start
26254(gdb) python import gdb.types
26255(gdb) python foo_ref = gdb.parse_and_eval("foo_ref")
26256(gdb) python print gdb.types.get_basic_type(foo_ref.type)
26257int
26258@end smallexample
26259
26260@item has_field (@var{type}, @var{field})
26261Return @code{True} if @var{type}, assumed to be a type with fields
26262(e.g., a structure or union), has field @var{field}.
26263
26264@item make_enum_dict (@var{enum_type})
26265Return a Python @code{dictionary} type produced from @var{enum_type}.
5110b5df 26266
0aaaf063 26267@item deep_items (@var{type})
5110b5df
PK
26268Returns a Python iterator similar to the standard
26269@code{gdb.Type.iteritems} method, except that the iterator returned
0aaaf063 26270by @code{deep_items} will recursively traverse anonymous struct or
5110b5df
PK
26271union fields. For example:
26272
26273@smallexample
26274struct A
26275@{
26276 int a;
26277 union @{
26278 int b0;
26279 int b1;
26280 @};
26281@};
26282@end smallexample
26283
26284@noindent
26285Then in @value{GDBN}:
26286@smallexample
26287(@value{GDBP}) python import gdb.types
26288(@value{GDBP}) python struct_a = gdb.lookup_type("struct A")
26289(@value{GDBP}) python print struct_a.keys ()
26290@{['a', '']@}
0aaaf063 26291(@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)]
5110b5df
PK
26292@{['a', 'b0', 'b1']@}
26293@end smallexample
26294
18a9fc12
TT
26295@item get_type_recognizers ()
26296Return a list of the enabled type recognizers for the current context.
26297This is called by @value{GDBN} during the type-printing process
26298(@pxref{Type Printing API}).
26299
26300@item apply_type_recognizers (recognizers, type_obj)
26301Apply the type recognizers, @var{recognizers}, to the type object
26302@var{type_obj}. If any recognizer returns a string, return that
26303string. Otherwise, return @code{None}. This is called by
26304@value{GDBN} during the type-printing process (@pxref{Type Printing
26305API}).
26306
26307@item register_type_printer (locus, printer)
26308This is a convenience function to register a type printer.
26309@var{printer} is the type printer to register. It must implement the
26310type printer protocol. @var{locus} is either a @code{gdb.Objfile}, in
26311which case the printer is registered with that objfile; a
26312@code{gdb.Progspace}, in which case the printer is registered with
26313that progspace; or @code{None}, in which case the printer is
26314registered globally.
26315
26316@item TypePrinter
26317This is a base class that implements the type printer protocol. Type
26318printers are encouraged, but not required, to derive from this class.
26319It defines a constructor:
26320
26321@defmethod TypePrinter __init__ (self, name)
26322Initialize the type printer with the given name. The new printer
26323starts in the enabled state.
26324@end defmethod
26325
0e3509db 26326@end table
fa3a4f15
PM
26327
26328@node gdb.prompt
26329@subsubsection gdb.prompt
26330@cindex gdb.prompt
26331
26332This module provides a method for prompt value-substitution.
26333
26334@table @code
26335@item substitute_prompt (@var{string})
26336Return @var{string} with escape sequences substituted by values. Some
26337escape sequences take arguments. You can specify arguments inside
26338``@{@}'' immediately following the escape sequence.
26339
26340The escape sequences you can pass to this function are:
26341
26342@table @code
26343@item \\
26344Substitute a backslash.
26345@item \e
26346Substitute an ESC character.
26347@item \f
26348Substitute the selected frame; an argument names a frame parameter.
26349@item \n
26350Substitute a newline.
26351@item \p
26352Substitute a parameter's value; the argument names the parameter.
26353@item \r
26354Substitute a carriage return.
26355@item \t
26356Substitute the selected thread; an argument names a thread parameter.
26357@item \v
26358Substitute the version of GDB.
26359@item \w
26360Substitute the current working directory.
26361@item \[
26362Begin a sequence of non-printing characters. These sequences are
26363typically used with the ESC character, and are not counted in the string
26364length. Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a
26365blue-colored ``(gdb)'' prompt where the length is five.
26366@item \]
26367End a sequence of non-printing characters.
26368@end table
26369
26370For example:
26371
26372@smallexample
26373substitute_prompt (``frame: \f,
26374 print arguments: \p@{print frame-arguments@}'')
26375@end smallexample
26376
26377@exdent will return the string:
26378
26379@smallexample
26380"frame: main, print arguments: scalars"
26381@end smallexample
26382@end table
0e3509db 26383
5a56e9c5
DE
26384@node Aliases
26385@section Creating new spellings of existing commands
26386@cindex aliases for commands
26387
26388It is often useful to define alternate spellings of existing commands.
26389For example, if a new @value{GDBN} command defined in Python has
26390a long name to type, it is handy to have an abbreviated version of it
26391that involves less typing.
26392
26393@value{GDBN} itself uses aliases. For example @samp{s} is an alias
26394of the @samp{step} command even though it is otherwise an ambiguous
26395abbreviation of other commands like @samp{set} and @samp{show}.
26396
26397Aliases are also used to provide shortened or more common versions
26398of multi-word commands. For example, @value{GDBN} provides the
26399@samp{tty} alias of the @samp{set inferior-tty} command.
26400
26401You can define a new alias with the @samp{alias} command.
26402
26403@table @code
26404
26405@kindex alias
26406@item alias [-a] [--] @var{ALIAS} = @var{COMMAND}
26407
26408@end table
26409
26410@var{ALIAS} specifies the name of the new alias.
26411Each word of @var{ALIAS} must consist of letters, numbers, dashes and
26412underscores.
26413
26414@var{COMMAND} specifies the name of an existing command
26415that is being aliased.
26416
26417The @samp{-a} option specifies that the new alias is an abbreviation
26418of the command. Abbreviations are not shown in command
26419lists displayed by the @samp{help} command.
26420
26421The @samp{--} option specifies the end of options,
26422and is useful when @var{ALIAS} begins with a dash.
26423
26424Here is a simple example showing how to make an abbreviation
26425of a command so that there is less to type.
26426Suppose you were tired of typing @samp{disas}, the current
26427shortest unambiguous abbreviation of the @samp{disassemble} command
26428and you wanted an even shorter version named @samp{di}.
26429The following will accomplish this.
26430
26431@smallexample
26432(gdb) alias -a di = disas
26433@end smallexample
26434
26435Note that aliases are different from user-defined commands.
26436With a user-defined command, you also need to write documentation
26437for it with the @samp{document} command.
26438An alias automatically picks up the documentation of the existing command.
26439
26440Here is an example where we make @samp{elms} an abbreviation of
26441@samp{elements} in the @samp{set print elements} command.
26442This is to show that you can make an abbreviation of any part
26443of a command.
26444
26445@smallexample
26446(gdb) alias -a set print elms = set print elements
26447(gdb) alias -a show print elms = show print elements
26448(gdb) set p elms 20
26449(gdb) show p elms
26450Limit on string chars or array elements to print is 200.
26451@end smallexample
26452
26453Note that if you are defining an alias of a @samp{set} command,
26454and you want to have an alias for the corresponding @samp{show}
26455command, then you need to define the latter separately.
26456
26457Unambiguously abbreviated commands are allowed in @var{COMMAND} and
26458@var{ALIAS}, just as they are normally.
26459
26460@smallexample
26461(gdb) alias -a set pr elms = set p ele
26462@end smallexample
26463
26464Finally, here is an example showing the creation of a one word
26465alias for a more complex command.
26466This creates alias @samp{spe} of the command @samp{set print elements}.
26467
26468@smallexample
26469(gdb) alias spe = set print elements
26470(gdb) spe 20
26471@end smallexample
26472
21c294e6
AC
26473@node Interpreters
26474@chapter Command Interpreters
26475@cindex command interpreters
26476
26477@value{GDBN} supports multiple command interpreters, and some command
26478infrastructure to allow users or user interface writers to switch
26479between interpreters or run commands in other interpreters.
26480
26481@value{GDBN} currently supports two command interpreters, the console
26482interpreter (sometimes called the command-line interpreter or @sc{cli})
26483and the machine interface interpreter (or @sc{gdb/mi}). This manual
26484describes both of these interfaces in great detail.
26485
26486By default, @value{GDBN} will start with the console interpreter.
26487However, the user may choose to start @value{GDBN} with another
26488interpreter by specifying the @option{-i} or @option{--interpreter}
26489startup options. Defined interpreters include:
26490
26491@table @code
26492@item console
26493@cindex console interpreter
26494The traditional console or command-line interpreter. This is the most often
26495used interpreter with @value{GDBN}. With no interpreter specified at runtime,
26496@value{GDBN} will use this interpreter.
26497
26498@item mi
26499@cindex mi interpreter
26500The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
26501by programs wishing to use @value{GDBN} as a backend for a debugger GUI
26502or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
26503Interface}.
26504
26505@item mi2
26506@cindex mi2 interpreter
26507The current @sc{gdb/mi} interface.
26508
26509@item mi1
26510@cindex mi1 interpreter
26511The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
26512
26513@end table
26514
26515@cindex invoke another interpreter
26516The interpreter being used by @value{GDBN} may not be dynamically
26517switched at runtime. Although possible, this could lead to a very
26518precarious situation. Consider an IDE using @sc{gdb/mi}. If a user
26519enters the command "interpreter-set console" in a console view,
26520@value{GDBN} would switch to using the console interpreter, rendering
26521the IDE inoperable!
26522
26523@kindex interpreter-exec
26524Although you may only choose a single interpreter at startup, you may execute
26525commands in any interpreter from the current interpreter using the appropriate
26526command. If you are running the console interpreter, simply use the
26527@code{interpreter-exec} command:
26528
26529@smallexample
26530interpreter-exec mi "-data-list-register-names"
26531@end smallexample
26532
26533@sc{gdb/mi} has a similar command, although it is only available in versions of
26534@value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
26535
8e04817f
AC
26536@node TUI
26537@chapter @value{GDBN} Text User Interface
26538@cindex TUI
d0d5df6f 26539@cindex Text User Interface
c906108c 26540
8e04817f
AC
26541@menu
26542* TUI Overview:: TUI overview
26543* TUI Keys:: TUI key bindings
7cf36c78 26544* TUI Single Key Mode:: TUI single key mode
db2e3e2e 26545* TUI Commands:: TUI-specific commands
8e04817f
AC
26546* TUI Configuration:: TUI configuration variables
26547@end menu
c906108c 26548
46ba6afa 26549The @value{GDBN} Text User Interface (TUI) is a terminal
d0d5df6f
AC
26550interface which uses the @code{curses} library to show the source
26551file, the assembly output, the program registers and @value{GDBN}
46ba6afa
BW
26552commands in separate text windows. The TUI mode is supported only
26553on platforms where a suitable version of the @code{curses} library
26554is available.
d0d5df6f 26555
46ba6afa 26556The TUI mode is enabled by default when you invoke @value{GDBN} as
217bff3e 26557@samp{@value{GDBP} -tui}.
46ba6afa
BW
26558You can also switch in and out of TUI mode while @value{GDBN} runs by
26559using various TUI commands and key bindings, such as @kbd{C-x C-a}.
26560@xref{TUI Keys, ,TUI Key Bindings}.
c906108c 26561
8e04817f 26562@node TUI Overview
79a6e687 26563@section TUI Overview
c906108c 26564
46ba6afa 26565In TUI mode, @value{GDBN} can display several text windows:
c906108c 26566
8e04817f
AC
26567@table @emph
26568@item command
26569This window is the @value{GDBN} command window with the @value{GDBN}
46ba6afa
BW
26570prompt and the @value{GDBN} output. The @value{GDBN} input is still
26571managed using readline.
c906108c 26572
8e04817f
AC
26573@item source
26574The source window shows the source file of the program. The current
46ba6afa 26575line and active breakpoints are displayed in this window.
c906108c 26576
8e04817f
AC
26577@item assembly
26578The assembly window shows the disassembly output of the program.
c906108c 26579
8e04817f 26580@item register
46ba6afa
BW
26581This window shows the processor registers. Registers are highlighted
26582when their values change.
c906108c
SS
26583@end table
26584
269c21fe 26585The source and assembly windows show the current program position
46ba6afa
BW
26586by highlighting the current line and marking it with a @samp{>} marker.
26587Breakpoints are indicated with two markers. The first marker
269c21fe
SC
26588indicates the breakpoint type:
26589
26590@table @code
26591@item B
26592Breakpoint which was hit at least once.
26593
26594@item b
26595Breakpoint which was never hit.
26596
26597@item H
26598Hardware breakpoint which was hit at least once.
26599
26600@item h
26601Hardware breakpoint which was never hit.
269c21fe
SC
26602@end table
26603
26604The second marker indicates whether the breakpoint is enabled or not:
26605
26606@table @code
26607@item +
26608Breakpoint is enabled.
26609
26610@item -
26611Breakpoint is disabled.
269c21fe
SC
26612@end table
26613
46ba6afa
BW
26614The source, assembly and register windows are updated when the current
26615thread changes, when the frame changes, or when the program counter
26616changes.
26617
26618These windows are not all visible at the same time. The command
26619window is always visible. The others can be arranged in several
26620layouts:
c906108c 26621
8e04817f
AC
26622@itemize @bullet
26623@item
46ba6afa 26624source only,
2df3850c 26625
8e04817f 26626@item
46ba6afa 26627assembly only,
8e04817f
AC
26628
26629@item
46ba6afa 26630source and assembly,
8e04817f
AC
26631
26632@item
46ba6afa 26633source and registers, or
c906108c 26634
8e04817f 26635@item
46ba6afa 26636assembly and registers.
8e04817f 26637@end itemize
c906108c 26638
46ba6afa 26639A status line above the command window shows the following information:
b7bb15bc
SC
26640
26641@table @emph
26642@item target
46ba6afa 26643Indicates the current @value{GDBN} target.
b7bb15bc
SC
26644(@pxref{Targets, ,Specifying a Debugging Target}).
26645
26646@item process
46ba6afa 26647Gives the current process or thread number.
b7bb15bc
SC
26648When no process is being debugged, this field is set to @code{No process}.
26649
26650@item function
26651Gives the current function name for the selected frame.
26652The name is demangled if demangling is turned on (@pxref{Print Settings}).
46ba6afa 26653When there is no symbol corresponding to the current program counter,
b7bb15bc
SC
26654the string @code{??} is displayed.
26655
26656@item line
26657Indicates the current line number for the selected frame.
46ba6afa 26658When the current line number is not known, the string @code{??} is displayed.
b7bb15bc
SC
26659
26660@item pc
26661Indicates the current program counter address.
b7bb15bc
SC
26662@end table
26663
8e04817f
AC
26664@node TUI Keys
26665@section TUI Key Bindings
26666@cindex TUI key bindings
c906108c 26667
8e04817f 26668The TUI installs several key bindings in the readline keymaps
39037522
TT
26669@ifset SYSTEM_READLINE
26670(@pxref{Command Line Editing, , , rluserman, GNU Readline Library}).
26671@end ifset
26672@ifclear SYSTEM_READLINE
26673(@pxref{Command Line Editing}).
26674@end ifclear
26675The following key bindings are installed for both TUI mode and the
26676@value{GDBN} standard mode.
c906108c 26677
8e04817f
AC
26678@table @kbd
26679@kindex C-x C-a
26680@item C-x C-a
26681@kindex C-x a
26682@itemx C-x a
26683@kindex C-x A
26684@itemx C-x A
46ba6afa
BW
26685Enter or leave the TUI mode. When leaving the TUI mode,
26686the curses window management stops and @value{GDBN} operates using
26687its standard mode, writing on the terminal directly. When reentering
26688the TUI mode, control is given back to the curses windows.
8e04817f 26689The screen is then refreshed.
c906108c 26690
8e04817f
AC
26691@kindex C-x 1
26692@item C-x 1
26693Use a TUI layout with only one window. The layout will
26694either be @samp{source} or @samp{assembly}. When the TUI mode
26695is not active, it will switch to the TUI mode.
2df3850c 26696
8e04817f 26697Think of this key binding as the Emacs @kbd{C-x 1} binding.
c906108c 26698
8e04817f
AC
26699@kindex C-x 2
26700@item C-x 2
26701Use a TUI layout with at least two windows. When the current
46ba6afa 26702layout already has two windows, the next layout with two windows is used.
8e04817f
AC
26703When a new layout is chosen, one window will always be common to the
26704previous layout and the new one.
c906108c 26705
8e04817f 26706Think of it as the Emacs @kbd{C-x 2} binding.
2df3850c 26707
72ffddc9
SC
26708@kindex C-x o
26709@item C-x o
26710Change the active window. The TUI associates several key bindings
46ba6afa 26711(like scrolling and arrow keys) with the active window. This command
72ffddc9
SC
26712gives the focus to the next TUI window.
26713
26714Think of it as the Emacs @kbd{C-x o} binding.
26715
7cf36c78
SC
26716@kindex C-x s
26717@item C-x s
46ba6afa
BW
26718Switch in and out of the TUI SingleKey mode that binds single
26719keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}).
c906108c
SS
26720@end table
26721
46ba6afa 26722The following key bindings only work in the TUI mode:
5d161b24 26723
46ba6afa 26724@table @asis
8e04817f 26725@kindex PgUp
46ba6afa 26726@item @key{PgUp}
8e04817f 26727Scroll the active window one page up.
c906108c 26728
8e04817f 26729@kindex PgDn
46ba6afa 26730@item @key{PgDn}
8e04817f 26731Scroll the active window one page down.
c906108c 26732
8e04817f 26733@kindex Up
46ba6afa 26734@item @key{Up}
8e04817f 26735Scroll the active window one line up.
c906108c 26736
8e04817f 26737@kindex Down
46ba6afa 26738@item @key{Down}
8e04817f 26739Scroll the active window one line down.
c906108c 26740
8e04817f 26741@kindex Left
46ba6afa 26742@item @key{Left}
8e04817f 26743Scroll the active window one column left.
c906108c 26744
8e04817f 26745@kindex Right
46ba6afa 26746@item @key{Right}
8e04817f 26747Scroll the active window one column right.
c906108c 26748
8e04817f 26749@kindex C-L
46ba6afa 26750@item @kbd{C-L}
8e04817f 26751Refresh the screen.
8e04817f 26752@end table
c906108c 26753
46ba6afa
BW
26754Because the arrow keys scroll the active window in the TUI mode, they
26755are not available for their normal use by readline unless the command
26756window has the focus. When another window is active, you must use
26757other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b}
26758and @kbd{C-f} to control the command window.
8e04817f 26759
7cf36c78
SC
26760@node TUI Single Key Mode
26761@section TUI Single Key Mode
26762@cindex TUI single key mode
26763
46ba6afa
BW
26764The TUI also provides a @dfn{SingleKey} mode, which binds several
26765frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to
26766switch into this mode, where the following key bindings are used:
7cf36c78
SC
26767
26768@table @kbd
26769@kindex c @r{(SingleKey TUI key)}
26770@item c
26771continue
26772
26773@kindex d @r{(SingleKey TUI key)}
26774@item d
26775down
26776
26777@kindex f @r{(SingleKey TUI key)}
26778@item f
26779finish
26780
26781@kindex n @r{(SingleKey TUI key)}
26782@item n
26783next
26784
26785@kindex q @r{(SingleKey TUI key)}
26786@item q
46ba6afa 26787exit the SingleKey mode.
7cf36c78
SC
26788
26789@kindex r @r{(SingleKey TUI key)}
26790@item r
26791run
26792
26793@kindex s @r{(SingleKey TUI key)}
26794@item s
26795step
26796
26797@kindex u @r{(SingleKey TUI key)}
26798@item u
26799up
26800
26801@kindex v @r{(SingleKey TUI key)}
26802@item v
26803info locals
26804
26805@kindex w @r{(SingleKey TUI key)}
26806@item w
26807where
7cf36c78
SC
26808@end table
26809
26810Other keys temporarily switch to the @value{GDBN} command prompt.
26811The key that was pressed is inserted in the editing buffer so that
26812it is possible to type most @value{GDBN} commands without interaction
46ba6afa
BW
26813with the TUI SingleKey mode. Once the command is entered the TUI
26814SingleKey mode is restored. The only way to permanently leave
7f9087cb 26815this mode is by typing @kbd{q} or @kbd{C-x s}.
7cf36c78
SC
26816
26817
8e04817f 26818@node TUI Commands
db2e3e2e 26819@section TUI-specific Commands
8e04817f
AC
26820@cindex TUI commands
26821
26822The TUI has specific commands to control the text windows.
46ba6afa
BW
26823These commands are always available, even when @value{GDBN} is not in
26824the TUI mode. When @value{GDBN} is in the standard mode, most
26825of these commands will automatically switch to the TUI mode.
c906108c 26826
ff12863f
PA
26827Note that if @value{GDBN}'s @code{stdout} is not connected to a
26828terminal, or @value{GDBN} has been started with the machine interface
26829interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of
26830these commands will fail with an error, because it would not be
26831possible or desirable to enable curses window management.
26832
c906108c 26833@table @code
3d757584
SC
26834@item info win
26835@kindex info win
26836List and give the size of all displayed windows.
26837
8e04817f 26838@item layout next
4644b6e3 26839@kindex layout
8e04817f 26840Display the next layout.
2df3850c 26841
8e04817f 26842@item layout prev
8e04817f 26843Display the previous layout.
c906108c 26844
8e04817f 26845@item layout src
8e04817f 26846Display the source window only.
c906108c 26847
8e04817f 26848@item layout asm
8e04817f 26849Display the assembly window only.
c906108c 26850
8e04817f 26851@item layout split
8e04817f 26852Display the source and assembly window.
c906108c 26853
8e04817f 26854@item layout regs
8e04817f
AC
26855Display the register window together with the source or assembly window.
26856
46ba6afa 26857@item focus next
8e04817f 26858@kindex focus
46ba6afa
BW
26859Make the next window active for scrolling.
26860
26861@item focus prev
26862Make the previous window active for scrolling.
26863
26864@item focus src
26865Make the source window active for scrolling.
26866
26867@item focus asm
26868Make the assembly window active for scrolling.
26869
26870@item focus regs
26871Make the register window active for scrolling.
26872
26873@item focus cmd
26874Make the command window active for scrolling.
c906108c 26875
8e04817f
AC
26876@item refresh
26877@kindex refresh
7f9087cb 26878Refresh the screen. This is similar to typing @kbd{C-L}.
c906108c 26879
6a1b180d
SC
26880@item tui reg float
26881@kindex tui reg
26882Show the floating point registers in the register window.
26883
26884@item tui reg general
26885Show the general registers in the register window.
26886
26887@item tui reg next
26888Show the next register group. The list of register groups as well as
26889their order is target specific. The predefined register groups are the
26890following: @code{general}, @code{float}, @code{system}, @code{vector},
26891@code{all}, @code{save}, @code{restore}.
26892
26893@item tui reg system
26894Show the system registers in the register window.
26895
8e04817f
AC
26896@item update
26897@kindex update
26898Update the source window and the current execution point.
c906108c 26899
8e04817f
AC
26900@item winheight @var{name} +@var{count}
26901@itemx winheight @var{name} -@var{count}
26902@kindex winheight
26903Change the height of the window @var{name} by @var{count}
26904lines. Positive counts increase the height, while negative counts
26905decrease it.
2df3850c 26906
46ba6afa
BW
26907@item tabset @var{nchars}
26908@kindex tabset
c45da7e6 26909Set the width of tab stops to be @var{nchars} characters.
c906108c
SS
26910@end table
26911
8e04817f 26912@node TUI Configuration
79a6e687 26913@section TUI Configuration Variables
8e04817f 26914@cindex TUI configuration variables
c906108c 26915
46ba6afa 26916Several configuration variables control the appearance of TUI windows.
c906108c 26917
8e04817f
AC
26918@table @code
26919@item set tui border-kind @var{kind}
26920@kindex set tui border-kind
26921Select the border appearance for the source, assembly and register windows.
26922The possible values are the following:
26923@table @code
26924@item space
26925Use a space character to draw the border.
c906108c 26926
8e04817f 26927@item ascii
46ba6afa 26928Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border.
c906108c 26929
8e04817f
AC
26930@item acs
26931Use the Alternate Character Set to draw the border. The border is
26932drawn using character line graphics if the terminal supports them.
8e04817f 26933@end table
c78b4128 26934
8e04817f
AC
26935@item set tui border-mode @var{mode}
26936@kindex set tui border-mode
46ba6afa
BW
26937@itemx set tui active-border-mode @var{mode}
26938@kindex set tui active-border-mode
26939Select the display attributes for the borders of the inactive windows
26940or the active window. The @var{mode} can be one of the following:
8e04817f
AC
26941@table @code
26942@item normal
26943Use normal attributes to display the border.
c906108c 26944
8e04817f
AC
26945@item standout
26946Use standout mode.
c906108c 26947
8e04817f
AC
26948@item reverse
26949Use reverse video mode.
c906108c 26950
8e04817f
AC
26951@item half
26952Use half bright mode.
c906108c 26953
8e04817f
AC
26954@item half-standout
26955Use half bright and standout mode.
c906108c 26956
8e04817f
AC
26957@item bold
26958Use extra bright or bold mode.
c78b4128 26959
8e04817f
AC
26960@item bold-standout
26961Use extra bright or bold and standout mode.
8e04817f 26962@end table
8e04817f 26963@end table
c78b4128 26964
8e04817f
AC
26965@node Emacs
26966@chapter Using @value{GDBN} under @sc{gnu} Emacs
c78b4128 26967
8e04817f
AC
26968@cindex Emacs
26969@cindex @sc{gnu} Emacs
26970A special interface allows you to use @sc{gnu} Emacs to view (and
26971edit) the source files for the program you are debugging with
26972@value{GDBN}.
c906108c 26973
8e04817f
AC
26974To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
26975executable file you want to debug as an argument. This command starts
26976@value{GDBN} as a subprocess of Emacs, with input and output through a newly
26977created Emacs buffer.
26978@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c 26979
5e252a2e 26980Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two
8e04817f 26981things:
c906108c 26982
8e04817f
AC
26983@itemize @bullet
26984@item
5e252a2e
NR
26985All ``terminal'' input and output goes through an Emacs buffer, called
26986the GUD buffer.
c906108c 26987
8e04817f
AC
26988This applies both to @value{GDBN} commands and their output, and to the input
26989and output done by the program you are debugging.
bf0184be 26990
8e04817f
AC
26991This is useful because it means that you can copy the text of previous
26992commands and input them again; you can even use parts of the output
26993in this way.
bf0184be 26994
8e04817f
AC
26995All the facilities of Emacs' Shell mode are available for interacting
26996with your program. In particular, you can send signals the usual
26997way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
26998stop.
bf0184be
ND
26999
27000@item
8e04817f 27001@value{GDBN} displays source code through Emacs.
bf0184be 27002
8e04817f
AC
27003Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
27004source file for that frame and puts an arrow (@samp{=>}) at the
27005left margin of the current line. Emacs uses a separate buffer for
27006source display, and splits the screen to show both your @value{GDBN} session
27007and the source.
bf0184be 27008
8e04817f
AC
27009Explicit @value{GDBN} @code{list} or search commands still produce output as
27010usual, but you probably have no reason to use them from Emacs.
5e252a2e
NR
27011@end itemize
27012
27013We call this @dfn{text command mode}. Emacs 22.1, and later, also uses
27014a graphical mode, enabled by default, which provides further buffers
27015that can control the execution and describe the state of your program.
27016@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}.
c906108c 27017
64fabec2
AC
27018If you specify an absolute file name when prompted for the @kbd{M-x
27019gdb} argument, then Emacs sets your current working directory to where
27020your program resides. If you only specify the file name, then Emacs
7a9dd1b2 27021sets your current working directory to the directory associated
64fabec2
AC
27022with the previous buffer. In this case, @value{GDBN} may find your
27023program by searching your environment's @code{PATH} variable, but on
27024some operating systems it might not find the source. So, although the
27025@value{GDBN} input and output session proceeds normally, the auxiliary
27026buffer does not display the current source and line of execution.
27027
27028The initial working directory of @value{GDBN} is printed on the top
5e252a2e
NR
27029line of the GUD buffer and this serves as a default for the commands
27030that specify files for @value{GDBN} to operate on. @xref{Files,
27031,Commands to Specify Files}.
64fabec2
AC
27032
27033By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
27034need to call @value{GDBN} by a different name (for example, if you
27035keep several configurations around, with different names) you can
27036customize the Emacs variable @code{gud-gdb-command-name} to run the
27037one you want.
8e04817f 27038
5e252a2e 27039In the GUD buffer, you can use these special Emacs commands in
8e04817f 27040addition to the standard Shell mode commands:
c906108c 27041
8e04817f
AC
27042@table @kbd
27043@item C-h m
5e252a2e 27044Describe the features of Emacs' GUD Mode.
c906108c 27045
64fabec2 27046@item C-c C-s
8e04817f
AC
27047Execute to another source line, like the @value{GDBN} @code{step} command; also
27048update the display window to show the current file and location.
c906108c 27049
64fabec2 27050@item C-c C-n
8e04817f
AC
27051Execute to next source line in this function, skipping all function
27052calls, like the @value{GDBN} @code{next} command. Then update the display window
27053to show the current file and location.
c906108c 27054
64fabec2 27055@item C-c C-i
8e04817f
AC
27056Execute one instruction, like the @value{GDBN} @code{stepi} command; update
27057display window accordingly.
c906108c 27058
8e04817f
AC
27059@item C-c C-f
27060Execute until exit from the selected stack frame, like the @value{GDBN}
27061@code{finish} command.
c906108c 27062
64fabec2 27063@item C-c C-r
8e04817f
AC
27064Continue execution of your program, like the @value{GDBN} @code{continue}
27065command.
b433d00b 27066
64fabec2 27067@item C-c <
8e04817f
AC
27068Go up the number of frames indicated by the numeric argument
27069(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
27070like the @value{GDBN} @code{up} command.
b433d00b 27071
64fabec2 27072@item C-c >
8e04817f
AC
27073Go down the number of frames indicated by the numeric argument, like the
27074@value{GDBN} @code{down} command.
8e04817f 27075@end table
c906108c 27076
7f9087cb 27077In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break})
8e04817f 27078tells @value{GDBN} to set a breakpoint on the source line point is on.
c906108c 27079
5e252a2e
NR
27080In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a
27081separate frame which shows a backtrace when the GUD buffer is current.
27082Move point to any frame in the stack and type @key{RET} to make it
27083become the current frame and display the associated source in the
27084source buffer. Alternatively, click @kbd{Mouse-2} to make the
27085selected frame become the current one. In graphical mode, the
27086speedbar displays watch expressions.
64fabec2 27087
8e04817f
AC
27088If you accidentally delete the source-display buffer, an easy way to get
27089it back is to type the command @code{f} in the @value{GDBN} buffer, to
27090request a frame display; when you run under Emacs, this recreates
27091the source buffer if necessary to show you the context of the current
27092frame.
c906108c 27093
8e04817f
AC
27094The source files displayed in Emacs are in ordinary Emacs buffers
27095which are visiting the source files in the usual way. You can edit
27096the files with these buffers if you wish; but keep in mind that @value{GDBN}
27097communicates with Emacs in terms of line numbers. If you add or
27098delete lines from the text, the line numbers that @value{GDBN} knows cease
27099to correspond properly with the code.
b383017d 27100
5e252a2e
NR
27101A more detailed description of Emacs' interaction with @value{GDBN} is
27102given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu}
27103Emacs Manual}).
c906108c 27104
8e04817f
AC
27105@c The following dropped because Epoch is nonstandard. Reactivate
27106@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
27107@ignore
27108@kindex Emacs Epoch environment
27109@kindex Epoch
27110@kindex inspect
c906108c 27111
8e04817f
AC
27112Version 18 of @sc{gnu} Emacs has a built-in window system
27113called the @code{epoch}
27114environment. Users of this environment can use a new command,
27115@code{inspect} which performs identically to @code{print} except that
27116each value is printed in its own window.
27117@end ignore
c906108c 27118
922fbb7b
AC
27119
27120@node GDB/MI
27121@chapter The @sc{gdb/mi} Interface
27122
27123@unnumberedsec Function and Purpose
27124
27125@cindex @sc{gdb/mi}, its purpose
6b5e8c01
NR
27126@sc{gdb/mi} is a line based machine oriented text interface to
27127@value{GDBN} and is activated by specifying using the
27128@option{--interpreter} command line option (@pxref{Mode Options}). It
27129is specifically intended to support the development of systems which
27130use the debugger as just one small component of a larger system.
922fbb7b
AC
27131
27132This chapter is a specification of the @sc{gdb/mi} interface. It is written
27133in the form of a reference manual.
27134
27135Note that @sc{gdb/mi} is still under construction, so some of the
af6eff6f
NR
27136features described below are incomplete and subject to change
27137(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}).
922fbb7b
AC
27138
27139@unnumberedsec Notation and Terminology
27140
27141@cindex notational conventions, for @sc{gdb/mi}
27142This chapter uses the following notation:
27143
27144@itemize @bullet
27145@item
27146@code{|} separates two alternatives.
27147
27148@item
27149@code{[ @var{something} ]} indicates that @var{something} is optional:
27150it may or may not be given.
27151
27152@item
27153@code{( @var{group} )*} means that @var{group} inside the parentheses
27154may repeat zero or more times.
27155
27156@item
27157@code{( @var{group} )+} means that @var{group} inside the parentheses
27158may repeat one or more times.
27159
27160@item
27161@code{"@var{string}"} means a literal @var{string}.
27162@end itemize
27163
27164@ignore
27165@heading Dependencies
27166@end ignore
27167
922fbb7b 27168@menu
c3b108f7 27169* GDB/MI General Design::
922fbb7b
AC
27170* GDB/MI Command Syntax::
27171* GDB/MI Compatibility with CLI::
af6eff6f 27172* GDB/MI Development and Front Ends::
922fbb7b 27173* GDB/MI Output Records::
ef21caaf 27174* GDB/MI Simple Examples::
922fbb7b 27175* GDB/MI Command Description Format::
ef21caaf 27176* GDB/MI Breakpoint Commands::
3fa7bf06 27177* GDB/MI Catchpoint Commands::
a2c02241
NR
27178* GDB/MI Program Context::
27179* GDB/MI Thread Commands::
5d77fe44 27180* GDB/MI Ada Tasking Commands::
a2c02241
NR
27181* GDB/MI Program Execution::
27182* GDB/MI Stack Manipulation::
27183* GDB/MI Variable Objects::
922fbb7b 27184* GDB/MI Data Manipulation::
a2c02241
NR
27185* GDB/MI Tracepoint Commands::
27186* GDB/MI Symbol Query::
351ff01a 27187* GDB/MI File Commands::
922fbb7b
AC
27188@ignore
27189* GDB/MI Kod Commands::
27190* GDB/MI Memory Overlay Commands::
27191* GDB/MI Signal Handling Commands::
27192@end ignore
922fbb7b 27193* GDB/MI Target Manipulation::
a6b151f1 27194* GDB/MI File Transfer Commands::
ef21caaf 27195* GDB/MI Miscellaneous Commands::
922fbb7b
AC
27196@end menu
27197
c3b108f7
VP
27198@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27199@node GDB/MI General Design
27200@section @sc{gdb/mi} General Design
27201@cindex GDB/MI General Design
27202
27203Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three
27204parts---commands sent to @value{GDBN}, responses to those commands
27205and notifications. Each command results in exactly one response,
27206indicating either successful completion of the command, or an error.
27207For the commands that do not resume the target, the response contains the
27208requested information. For the commands that resume the target, the
27209response only indicates whether the target was successfully resumed.
27210Notifications is the mechanism for reporting changes in the state of the
27211target, or in @value{GDBN} state, that cannot conveniently be associated with
27212a command and reported as part of that command response.
27213
27214The important examples of notifications are:
27215@itemize @bullet
27216
27217@item
27218Exec notifications. These are used to report changes in
27219target state---when a target is resumed, or stopped. It would not
27220be feasible to include this information in response of resuming
27221commands, because one resume commands can result in multiple events in
27222different threads. Also, quite some time may pass before any event
27223happens in the target, while a frontend needs to know whether the resuming
27224command itself was successfully executed.
27225
27226@item
27227Console output, and status notifications. Console output
27228notifications are used to report output of CLI commands, as well as
27229diagnostics for other commands. Status notifications are used to
27230report the progress of a long-running operation. Naturally, including
27231this information in command response would mean no output is produced
27232until the command is finished, which is undesirable.
27233
27234@item
27235General notifications. Commands may have various side effects on
27236the @value{GDBN} or target state beyond their official purpose. For example,
27237a command may change the selected thread. Although such changes can
27238be included in command response, using notification allows for more
27239orthogonal frontend design.
27240
27241@end itemize
27242
27243There's no guarantee that whenever an MI command reports an error,
27244@value{GDBN} or the target are in any specific state, and especially,
27245the state is not reverted to the state before the MI command was
27246processed. Therefore, whenever an MI command results in an error,
27247we recommend that the frontend refreshes all the information shown in
27248the user interface.
27249
508094de
NR
27250
27251@menu
27252* Context management::
27253* Asynchronous and non-stop modes::
27254* Thread groups::
27255@end menu
27256
27257@node Context management
c3b108f7
VP
27258@subsection Context management
27259
27260In most cases when @value{GDBN} accesses the target, this access is
27261done in context of a specific thread and frame (@pxref{Frames}).
27262Often, even when accessing global data, the target requires that a thread
27263be specified. The CLI interface maintains the selected thread and frame,
27264and supplies them to target on each command. This is convenient,
27265because a command line user would not want to specify that information
27266explicitly on each command, and because user interacts with
27267@value{GDBN} via a single terminal, so no confusion is possible as
27268to what thread and frame are the current ones.
27269
27270In the case of MI, the concept of selected thread and frame is less
27271useful. First, a frontend can easily remember this information
27272itself. Second, a graphical frontend can have more than one window,
27273each one used for debugging a different thread, and the frontend might
27274want to access additional threads for internal purposes. This
27275increases the risk that by relying on implicitly selected thread, the
27276frontend may be operating on a wrong one. Therefore, each MI command
27277should explicitly specify which thread and frame to operate on. To
27278make it possible, each MI command accepts the @samp{--thread} and
27279@samp{--frame} options, the value to each is @value{GDBN} identifier
27280for thread and frame to operate on.
27281
27282Usually, each top-level window in a frontend allows the user to select
27283a thread and a frame, and remembers the user selection for further
27284operations. However, in some cases @value{GDBN} may suggest that the
27285current thread be changed. For example, when stopping on a breakpoint
27286it is reasonable to switch to the thread where breakpoint is hit. For
27287another example, if the user issues the CLI @samp{thread} command via
27288the frontend, it is desirable to change the frontend's selected thread to the
27289one specified by user. @value{GDBN} communicates the suggestion to
27290change current thread using the @samp{=thread-selected} notification.
27291No such notification is available for the selected frame at the moment.
27292
27293Note that historically, MI shares the selected thread with CLI, so
27294frontends used the @code{-thread-select} to execute commands in the
27295right context. However, getting this to work right is cumbersome. The
27296simplest way is for frontend to emit @code{-thread-select} command
27297before every command. This doubles the number of commands that need
27298to be sent. The alternative approach is to suppress @code{-thread-select}
27299if the selected thread in @value{GDBN} is supposed to be identical to the
27300thread the frontend wants to operate on. However, getting this
27301optimization right can be tricky. In particular, if the frontend
27302sends several commands to @value{GDBN}, and one of the commands changes the
27303selected thread, then the behaviour of subsequent commands will
27304change. So, a frontend should either wait for response from such
27305problematic commands, or explicitly add @code{-thread-select} for
27306all subsequent commands. No frontend is known to do this exactly
27307right, so it is suggested to just always pass the @samp{--thread} and
27308@samp{--frame} options.
27309
508094de 27310@node Asynchronous and non-stop modes
c3b108f7
VP
27311@subsection Asynchronous command execution and non-stop mode
27312
27313On some targets, @value{GDBN} is capable of processing MI commands
27314even while the target is running. This is called @dfn{asynchronous
27315command execution} (@pxref{Background Execution}). The frontend may
27316specify a preferrence for asynchronous execution using the
27317@code{-gdb-set target-async 1} command, which should be emitted before
27318either running the executable or attaching to the target. After the
27319frontend has started the executable or attached to the target, it can
27320find if asynchronous execution is enabled using the
27321@code{-list-target-features} command.
27322
27323Even if @value{GDBN} can accept a command while target is running,
27324many commands that access the target do not work when the target is
27325running. Therefore, asynchronous command execution is most useful
27326when combined with non-stop mode (@pxref{Non-Stop Mode}). Then,
27327it is possible to examine the state of one thread, while other threads
27328are running.
27329
27330When a given thread is running, MI commands that try to access the
27331target in the context of that thread may not work, or may work only on
27332some targets. In particular, commands that try to operate on thread's
27333stack will not work, on any target. Commands that read memory, or
27334modify breakpoints, may work or not work, depending on the target. Note
27335that even commands that operate on global state, such as @code{print},
27336@code{set}, and breakpoint commands, still access the target in the
27337context of a specific thread, so frontend should try to find a
27338stopped thread and perform the operation on that thread (using the
27339@samp{--thread} option).
27340
27341Which commands will work in the context of a running thread is
27342highly target dependent. However, the two commands
27343@code{-exec-interrupt}, to stop a thread, and @code{-thread-info},
27344to find the state of a thread, will always work.
27345
508094de 27346@node Thread groups
c3b108f7
VP
27347@subsection Thread groups
27348@value{GDBN} may be used to debug several processes at the same time.
27349On some platfroms, @value{GDBN} may support debugging of several
27350hardware systems, each one having several cores with several different
27351processes running on each core. This section describes the MI
27352mechanism to support such debugging scenarios.
27353
27354The key observation is that regardless of the structure of the
27355target, MI can have a global list of threads, because most commands that
27356accept the @samp{--thread} option do not need to know what process that
27357thread belongs to. Therefore, it is not necessary to introduce
27358neither additional @samp{--process} option, nor an notion of the
27359current process in the MI interface. The only strictly new feature
27360that is required is the ability to find how the threads are grouped
27361into processes.
27362
27363To allow the user to discover such grouping, and to support arbitrary
27364hierarchy of machines/cores/processes, MI introduces the concept of a
27365@dfn{thread group}. Thread group is a collection of threads and other
27366thread groups. A thread group always has a string identifier, a type,
27367and may have additional attributes specific to the type. A new
27368command, @code{-list-thread-groups}, returns the list of top-level
27369thread groups, which correspond to processes that @value{GDBN} is
27370debugging at the moment. By passing an identifier of a thread group
27371to the @code{-list-thread-groups} command, it is possible to obtain
27372the members of specific thread group.
27373
27374To allow the user to easily discover processes, and other objects, he
27375wishes to debug, a concept of @dfn{available thread group} is
27376introduced. Available thread group is an thread group that
27377@value{GDBN} is not debugging, but that can be attached to, using the
27378@code{-target-attach} command. The list of available top-level thread
27379groups can be obtained using @samp{-list-thread-groups --available}.
27380In general, the content of a thread group may be only retrieved only
27381after attaching to that thread group.
27382
a79b8f6e
VP
27383Thread groups are related to inferiors (@pxref{Inferiors and
27384Programs}). Each inferior corresponds to a thread group of a special
27385type @samp{process}, and some additional operations are permitted on
27386such thread groups.
27387
922fbb7b
AC
27388@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27389@node GDB/MI Command Syntax
27390@section @sc{gdb/mi} Command Syntax
27391
27392@menu
27393* GDB/MI Input Syntax::
27394* GDB/MI Output Syntax::
922fbb7b
AC
27395@end menu
27396
27397@node GDB/MI Input Syntax
27398@subsection @sc{gdb/mi} Input Syntax
27399
27400@cindex input syntax for @sc{gdb/mi}
27401@cindex @sc{gdb/mi}, input syntax
27402@table @code
27403@item @var{command} @expansion{}
27404@code{@var{cli-command} | @var{mi-command}}
27405
27406@item @var{cli-command} @expansion{}
27407@code{[ @var{token} ] @var{cli-command} @var{nl}}, where
27408@var{cli-command} is any existing @value{GDBN} CLI command.
27409
27410@item @var{mi-command} @expansion{}
27411@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
27412@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
27413
27414@item @var{token} @expansion{}
27415"any sequence of digits"
27416
27417@item @var{option} @expansion{}
27418@code{"-" @var{parameter} [ " " @var{parameter} ]}
27419
27420@item @var{parameter} @expansion{}
27421@code{@var{non-blank-sequence} | @var{c-string}}
27422
27423@item @var{operation} @expansion{}
27424@emph{any of the operations described in this chapter}
27425
27426@item @var{non-blank-sequence} @expansion{}
27427@emph{anything, provided it doesn't contain special characters such as
27428"-", @var{nl}, """ and of course " "}
27429
27430@item @var{c-string} @expansion{}
27431@code{""" @var{seven-bit-iso-c-string-content} """}
27432
27433@item @var{nl} @expansion{}
27434@code{CR | CR-LF}
27435@end table
27436
27437@noindent
27438Notes:
27439
27440@itemize @bullet
27441@item
27442The CLI commands are still handled by the @sc{mi} interpreter; their
27443output is described below.
27444
27445@item
27446The @code{@var{token}}, when present, is passed back when the command
27447finishes.
27448
27449@item
27450Some @sc{mi} commands accept optional arguments as part of the parameter
27451list. Each option is identified by a leading @samp{-} (dash) and may be
27452followed by an optional argument parameter. Options occur first in the
27453parameter list and can be delimited from normal parameters using
27454@samp{--} (this is useful when some parameters begin with a dash).
27455@end itemize
27456
27457Pragmatics:
27458
27459@itemize @bullet
27460@item
27461We want easy access to the existing CLI syntax (for debugging).
27462
27463@item
27464We want it to be easy to spot a @sc{mi} operation.
27465@end itemize
27466
27467@node GDB/MI Output Syntax
27468@subsection @sc{gdb/mi} Output Syntax
27469
27470@cindex output syntax of @sc{gdb/mi}
27471@cindex @sc{gdb/mi}, output syntax
27472The output from @sc{gdb/mi} consists of zero or more out-of-band records
27473followed, optionally, by a single result record. This result record
27474is for the most recent command. The sequence of output records is
594fe323 27475terminated by @samp{(gdb)}.
922fbb7b
AC
27476
27477If an input command was prefixed with a @code{@var{token}} then the
27478corresponding output for that command will also be prefixed by that same
27479@var{token}.
27480
27481@table @code
27482@item @var{output} @expansion{}
594fe323 27483@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
922fbb7b
AC
27484
27485@item @var{result-record} @expansion{}
27486@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
27487
27488@item @var{out-of-band-record} @expansion{}
27489@code{@var{async-record} | @var{stream-record}}
27490
27491@item @var{async-record} @expansion{}
27492@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
27493
27494@item @var{exec-async-output} @expansion{}
27495@code{[ @var{token} ] "*" @var{async-output}}
27496
27497@item @var{status-async-output} @expansion{}
27498@code{[ @var{token} ] "+" @var{async-output}}
27499
27500@item @var{notify-async-output} @expansion{}
27501@code{[ @var{token} ] "=" @var{async-output}}
27502
27503@item @var{async-output} @expansion{}
27504@code{@var{async-class} ( "," @var{result} )* @var{nl}}
27505
27506@item @var{result-class} @expansion{}
27507@code{"done" | "running" | "connected" | "error" | "exit"}
27508
27509@item @var{async-class} @expansion{}
27510@code{"stopped" | @var{others}} (where @var{others} will be added
27511depending on the needs---this is still in development).
27512
27513@item @var{result} @expansion{}
27514@code{ @var{variable} "=" @var{value}}
27515
27516@item @var{variable} @expansion{}
27517@code{ @var{string} }
27518
27519@item @var{value} @expansion{}
27520@code{ @var{const} | @var{tuple} | @var{list} }
27521
27522@item @var{const} @expansion{}
27523@code{@var{c-string}}
27524
27525@item @var{tuple} @expansion{}
27526@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
27527
27528@item @var{list} @expansion{}
27529@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
27530@var{result} ( "," @var{result} )* "]" }
27531
27532@item @var{stream-record} @expansion{}
27533@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
27534
27535@item @var{console-stream-output} @expansion{}
27536@code{"~" @var{c-string}}
27537
27538@item @var{target-stream-output} @expansion{}
27539@code{"@@" @var{c-string}}
27540
27541@item @var{log-stream-output} @expansion{}
27542@code{"&" @var{c-string}}
27543
27544@item @var{nl} @expansion{}
27545@code{CR | CR-LF}
27546
27547@item @var{token} @expansion{}
27548@emph{any sequence of digits}.
27549@end table
27550
27551@noindent
27552Notes:
27553
27554@itemize @bullet
27555@item
27556All output sequences end in a single line containing a period.
27557
27558@item
721c02de
VP
27559The @code{@var{token}} is from the corresponding request. Note that
27560for all async output, while the token is allowed by the grammar and
27561may be output by future versions of @value{GDBN} for select async
27562output messages, it is generally omitted. Frontends should treat
27563all async output as reporting general changes in the state of the
27564target and there should be no need to associate async output to any
27565prior command.
922fbb7b
AC
27566
27567@item
27568@cindex status output in @sc{gdb/mi}
27569@var{status-async-output} contains on-going status information about the
27570progress of a slow operation. It can be discarded. All status output is
27571prefixed by @samp{+}.
27572
27573@item
27574@cindex async output in @sc{gdb/mi}
27575@var{exec-async-output} contains asynchronous state change on the target
27576(stopped, started, disappeared). All async output is prefixed by
27577@samp{*}.
27578
27579@item
27580@cindex notify output in @sc{gdb/mi}
27581@var{notify-async-output} contains supplementary information that the
27582client should handle (e.g., a new breakpoint information). All notify
27583output is prefixed by @samp{=}.
27584
27585@item
27586@cindex console output in @sc{gdb/mi}
27587@var{console-stream-output} is output that should be displayed as is in the
27588console. It is the textual response to a CLI command. All the console
27589output is prefixed by @samp{~}.
27590
27591@item
27592@cindex target output in @sc{gdb/mi}
27593@var{target-stream-output} is the output produced by the target program.
27594All the target output is prefixed by @samp{@@}.
27595
27596@item
27597@cindex log output in @sc{gdb/mi}
27598@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
27599instance messages that should be displayed as part of an error log. All
27600the log output is prefixed by @samp{&}.
27601
27602@item
27603@cindex list output in @sc{gdb/mi}
27604New @sc{gdb/mi} commands should only output @var{lists} containing
27605@var{values}.
27606
27607
27608@end itemize
27609
27610@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
27611details about the various output records.
27612
922fbb7b
AC
27613@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27614@node GDB/MI Compatibility with CLI
27615@section @sc{gdb/mi} Compatibility with CLI
27616
27617@cindex compatibility, @sc{gdb/mi} and CLI
27618@cindex @sc{gdb/mi}, compatibility with CLI
922fbb7b 27619
a2c02241
NR
27620For the developers convenience CLI commands can be entered directly,
27621but there may be some unexpected behaviour. For example, commands
27622that query the user will behave as if the user replied yes, breakpoint
27623command lists are not executed and some CLI commands, such as
27624@code{if}, @code{when} and @code{define}, prompt for further input with
27625@samp{>}, which is not valid MI output.
ef21caaf
NR
27626
27627This feature may be removed at some stage in the future and it is
a2c02241
NR
27628recommended that front ends use the @code{-interpreter-exec} command
27629(@pxref{-interpreter-exec}).
922fbb7b 27630
af6eff6f
NR
27631@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27632@node GDB/MI Development and Front Ends
27633@section @sc{gdb/mi} Development and Front Ends
27634@cindex @sc{gdb/mi} development
27635
27636The application which takes the MI output and presents the state of the
27637program being debugged to the user is called a @dfn{front end}.
27638
27639Although @sc{gdb/mi} is still incomplete, it is currently being used
27640by a variety of front ends to @value{GDBN}. This makes it difficult
27641to introduce new functionality without breaking existing usage. This
27642section tries to minimize the problems by describing how the protocol
27643might change.
27644
27645Some changes in MI need not break a carefully designed front end, and
27646for these the MI version will remain unchanged. The following is a
27647list of changes that may occur within one level, so front ends should
27648parse MI output in a way that can handle them:
27649
27650@itemize @bullet
27651@item
27652New MI commands may be added.
27653
27654@item
27655New fields may be added to the output of any MI command.
27656
36ece8b3
NR
27657@item
27658The range of values for fields with specified values, e.g.,
9f708cb2 27659@code{in_scope} (@pxref{-var-update}) may be extended.
36ece8b3 27660
af6eff6f
NR
27661@c The format of field's content e.g type prefix, may change so parse it
27662@c at your own risk. Yes, in general?
27663
27664@c The order of fields may change? Shouldn't really matter but it might
27665@c resolve inconsistencies.
27666@end itemize
27667
27668If the changes are likely to break front ends, the MI version level
27669will be increased by one. This will allow the front end to parse the
27670output according to the MI version. Apart from mi0, new versions of
27671@value{GDBN} will not support old versions of MI and it will be the
27672responsibility of the front end to work with the new one.
27673
27674@c Starting with mi3, add a new command -mi-version that prints the MI
27675@c version?
27676
27677The best way to avoid unexpected changes in MI that might break your front
27678end is to make your project known to @value{GDBN} developers and
7a9a6b69 27679follow development on @email{gdb@@sourceware.org} and
fa0f268d 27680@email{gdb-patches@@sourceware.org}.
af6eff6f
NR
27681@cindex mailing lists
27682
922fbb7b
AC
27683@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27684@node GDB/MI Output Records
27685@section @sc{gdb/mi} Output Records
27686
27687@menu
27688* GDB/MI Result Records::
27689* GDB/MI Stream Records::
82f68b1c 27690* GDB/MI Async Records::
c3b108f7 27691* GDB/MI Frame Information::
dc146f7c 27692* GDB/MI Thread Information::
4368ebeb 27693* GDB/MI Ada Exception Information::
922fbb7b
AC
27694@end menu
27695
27696@node GDB/MI Result Records
27697@subsection @sc{gdb/mi} Result Records
27698
27699@cindex result records in @sc{gdb/mi}
27700@cindex @sc{gdb/mi}, result records
27701In addition to a number of out-of-band notifications, the response to a
27702@sc{gdb/mi} command includes one of the following result indications:
27703
27704@table @code
27705@findex ^done
27706@item "^done" [ "," @var{results} ]
27707The synchronous operation was successful, @code{@var{results}} are the return
27708values.
27709
27710@item "^running"
27711@findex ^running
8e9c5e02
VP
27712This result record is equivalent to @samp{^done}. Historically, it
27713was output instead of @samp{^done} if the command has resumed the
27714target. This behaviour is maintained for backward compatibility, but
27715all frontends should treat @samp{^done} and @samp{^running}
27716identically and rely on the @samp{*running} output record to determine
27717which threads are resumed.
922fbb7b 27718
ef21caaf
NR
27719@item "^connected"
27720@findex ^connected
3f94c067 27721@value{GDBN} has connected to a remote target.
ef21caaf 27722
922fbb7b
AC
27723@item "^error" "," @var{c-string}
27724@findex ^error
27725The operation failed. The @code{@var{c-string}} contains the corresponding
27726error message.
ef21caaf
NR
27727
27728@item "^exit"
27729@findex ^exit
3f94c067 27730@value{GDBN} has terminated.
ef21caaf 27731
922fbb7b
AC
27732@end table
27733
27734@node GDB/MI Stream Records
27735@subsection @sc{gdb/mi} Stream Records
27736
27737@cindex @sc{gdb/mi}, stream records
27738@cindex stream records in @sc{gdb/mi}
27739@value{GDBN} internally maintains a number of output streams: the console, the
27740target, and the log. The output intended for each of these streams is
27741funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
27742
27743Each stream record begins with a unique @dfn{prefix character} which
27744identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
27745Syntax}). In addition to the prefix, each stream record contains a
27746@code{@var{string-output}}. This is either raw text (with an implicit new
27747line) or a quoted C string (which does not contain an implicit newline).
27748
27749@table @code
27750@item "~" @var{string-output}
27751The console output stream contains text that should be displayed in the
27752CLI console window. It contains the textual responses to CLI commands.
27753
27754@item "@@" @var{string-output}
27755The target output stream contains any textual output from the running
ef21caaf
NR
27756target. This is only present when GDB's event loop is truly
27757asynchronous, which is currently only the case for remote targets.
922fbb7b
AC
27758
27759@item "&" @var{string-output}
27760The log stream contains debugging messages being produced by @value{GDBN}'s
27761internals.
27762@end table
27763
82f68b1c
VP
27764@node GDB/MI Async Records
27765@subsection @sc{gdb/mi} Async Records
922fbb7b 27766
82f68b1c
VP
27767@cindex async records in @sc{gdb/mi}
27768@cindex @sc{gdb/mi}, async records
27769@dfn{Async} records are used to notify the @sc{gdb/mi} client of
922fbb7b 27770additional changes that have occurred. Those changes can either be a
82f68b1c 27771consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of
922fbb7b
AC
27772target activity (e.g., target stopped).
27773
8eb41542 27774The following is the list of possible async records:
922fbb7b
AC
27775
27776@table @code
034dad6f 27777
e1ac3328
VP
27778@item *running,thread-id="@var{thread}"
27779The target is now running. The @var{thread} field tells which
27780specific thread is now running, and can be @samp{all} if all threads
27781are running. The frontend should assume that no interaction with a
27782running thread is possible after this notification is produced.
27783The frontend should not assume that this notification is output
27784only once for any command. @value{GDBN} may emit this notification
27785several times, either for different threads, because it cannot resume
27786all threads together, or even for a single thread, if the thread must
27787be stepped though some code before letting it run freely.
27788
dc146f7c 27789@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}"
82f68b1c
VP
27790The target has stopped. The @var{reason} field can have one of the
27791following values:
034dad6f
BR
27792
27793@table @code
27794@item breakpoint-hit
27795A breakpoint was reached.
27796@item watchpoint-trigger
27797A watchpoint was triggered.
27798@item read-watchpoint-trigger
27799A read watchpoint was triggered.
27800@item access-watchpoint-trigger
27801An access watchpoint was triggered.
27802@item function-finished
27803An -exec-finish or similar CLI command was accomplished.
27804@item location-reached
27805An -exec-until or similar CLI command was accomplished.
27806@item watchpoint-scope
27807A watchpoint has gone out of scope.
27808@item end-stepping-range
27809An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or
27810similar CLI command was accomplished.
27811@item exited-signalled
27812The inferior exited because of a signal.
27813@item exited
27814The inferior exited.
27815@item exited-normally
27816The inferior exited normally.
27817@item signal-received
27818A signal was received by the inferior.
36dfb11c
TT
27819@item solib-event
27820The inferior has stopped due to a library being loaded or unloaded.
edcc5120
TT
27821This can happen when @code{stop-on-solib-events} (@pxref{Files}) is
27822set or when a @code{catch load} or @code{catch unload} catchpoint is
27823in use (@pxref{Set Catchpoints}).
36dfb11c
TT
27824@item fork
27825The inferior has forked. This is reported when @code{catch fork}
27826(@pxref{Set Catchpoints}) has been used.
27827@item vfork
27828The inferior has vforked. This is reported in when @code{catch vfork}
27829(@pxref{Set Catchpoints}) has been used.
27830@item syscall-entry
27831The inferior entered a system call. This is reported when @code{catch
27832syscall} (@pxref{Set Catchpoints}) has been used.
27833@item syscall-entry
27834The inferior returned from a system call. This is reported when
27835@code{catch syscall} (@pxref{Set Catchpoints}) has been used.
27836@item exec
27837The inferior called @code{exec}. This is reported when @code{catch exec}
27838(@pxref{Set Catchpoints}) has been used.
922fbb7b
AC
27839@end table
27840
c3b108f7
VP
27841The @var{id} field identifies the thread that directly caused the stop
27842-- for example by hitting a breakpoint. Depending on whether all-stop
27843mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either
27844stop all threads, or only the thread that directly triggered the stop.
27845If all threads are stopped, the @var{stopped} field will have the
27846value of @code{"all"}. Otherwise, the value of the @var{stopped}
27847field will be a list of thread identifiers. Presently, this list will
27848always include a single thread, but frontend should be prepared to see
dc146f7c
VP
27849several threads in the list. The @var{core} field reports the
27850processor core on which the stop event has happened. This field may be absent
27851if such information is not available.
c3b108f7 27852
a79b8f6e
VP
27853@item =thread-group-added,id="@var{id}"
27854@itemx =thread-group-removed,id="@var{id}"
27855A thread group was either added or removed. The @var{id} field
27856contains the @value{GDBN} identifier of the thread group. When a thread
27857group is added, it generally might not be associated with a running
27858process. When a thread group is removed, its id becomes invalid and
27859cannot be used in any way.
27860
27861@item =thread-group-started,id="@var{id}",pid="@var{pid}"
27862A thread group became associated with a running program,
27863either because the program was just started or the thread group
27864was attached to a program. The @var{id} field contains the
27865@value{GDBN} identifier of the thread group. The @var{pid} field
27866contains process identifier, specific to the operating system.
27867
8cf64490 27868@item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"]
a79b8f6e
VP
27869A thread group is no longer associated with a running program,
27870either because the program has exited, or because it was detached
c3b108f7 27871from. The @var{id} field contains the @value{GDBN} identifier of the
8cf64490
TT
27872thread group. @var{code} is the exit code of the inferior; it exists
27873only when the inferior exited with some code.
c3b108f7
VP
27874
27875@item =thread-created,id="@var{id}",group-id="@var{gid}"
27876@itemx =thread-exited,id="@var{id}",group-id="@var{gid}"
82f68b1c 27877A thread either was created, or has exited. The @var{id} field
c3b108f7
VP
27878contains the @value{GDBN} identifier of the thread. The @var{gid}
27879field identifies the thread group this thread belongs to.
66bb093b
VP
27880
27881@item =thread-selected,id="@var{id}"
27882Informs that the selected thread was changed as result of the last
27883command. This notification is not emitted as result of @code{-thread-select}
27884command but is emitted whenever an MI command that is not documented
27885to change the selected thread actually changes it. In particular,
27886invoking, directly or indirectly (via user-defined command), the CLI
27887@code{thread} command, will generate this notification.
27888
27889We suggest that in response to this notification, front ends
27890highlight the selected thread and cause subsequent commands to apply to
27891that thread.
27892
c86cf029
VP
27893@item =library-loaded,...
27894Reports that a new library file was loaded by the program. This
27895notification has 4 fields---@var{id}, @var{target-name},
134eb42c 27896@var{host-name}, and @var{symbols-loaded}. The @var{id} field is an
c86cf029
VP
27897opaque identifier of the library. For remote debugging case,
27898@var{target-name} and @var{host-name} fields give the name of the
134eb42c
VP
27899library file on the target, and on the host respectively. For native
27900debugging, both those fields have the same value. The
f1cbe1d3
TT
27901@var{symbols-loaded} field is emitted only for backward compatibility
27902and should not be relied on to convey any useful information. The
27903@var{thread-group} field, if present, specifies the id of the thread
27904group in whose context the library was loaded. If the field is
27905absent, it means the library was loaded in the context of all present
27906thread groups.
c86cf029
VP
27907
27908@item =library-unloaded,...
134eb42c 27909Reports that a library was unloaded by the program. This notification
c86cf029 27910has 3 fields---@var{id}, @var{target-name} and @var{host-name} with
a79b8f6e
VP
27911the same meaning as for the @code{=library-loaded} notification.
27912The @var{thread-group} field, if present, specifies the id of the
27913thread group in whose context the library was unloaded. If the field is
27914absent, it means the library was unloaded in the context of all present
27915thread groups.
c86cf029 27916
201b4506
YQ
27917@item =traceframe-changed,num=@var{tfnum},tracepoint=@var{tpnum}
27918@itemx =traceframe-changed,end
27919Reports that the trace frame was changed and its new number is
27920@var{tfnum}. The number of the tracepoint associated with this trace
27921frame is @var{tpnum}.
27922
bb25a15c
YQ
27923@item =tsv-created,name=@var{name},value=@var{value}
27924Reports that the new trace state variable @var{name} is created with
27925value @var{value}.
27926
27927@item =tsv-deleted,name=@var{name}
27928@itemx =tsv-deleted
27929Reports that the trace state variable @var{name} is deleted or all
27930trace state variables are deleted.
27931
8d3788bd
VP
27932@item =breakpoint-created,bkpt=@{...@}
27933@itemx =breakpoint-modified,bkpt=@{...@}
d9f08f52 27934@itemx =breakpoint-deleted,id=@var{number}
8d3788bd
VP
27935Reports that a breakpoint was created, modified, or deleted,
27936respectively. Only user-visible breakpoints are reported to the MI
27937user.
27938
27939The @var{bkpt} argument is of the same form as returned by the various
d9f08f52
YQ
27940breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The
27941@var{number} is the ordinal number of the breakpoint.
8d3788bd
VP
27942
27943Note that if a breakpoint is emitted in the result record of a
27944command, then it will not also be emitted in an async record.
27945
82a90ccf
YQ
27946@item =record-started,thread-group="@var{id}"
27947@itemx =record-stopped,thread-group="@var{id}"
27948Execution log recording was either started or stopped on an
27949inferior. The @var{id} is the @value{GDBN} identifier of the thread
27950group corresponding to the affected inferior.
27951
5b9afe8a
YQ
27952@item =cmd-param-changed,param=@var{param},value=@var{value}
27953Reports that a parameter of the command @code{set @var{param}} is
27954changed to @var{value}. In the multi-word @code{set} command,
27955the @var{param} is the whole parameter list to @code{set} command.
27956For example, In command @code{set check type on}, @var{param}
27957is @code{check type} and @var{value} is @code{on}.
8de0566d
YQ
27958
27959@item =memory-changed,thread-group=@var{id},addr=@var{addr},len=@var{len}[,type="code"]
27960Reports that bytes from @var{addr} to @var{data} + @var{len} were
27961written in an inferior. The @var{id} is the identifier of the
27962thread group corresponding to the affected inferior. The optional
27963@code{type="code"} part is reported if the memory written to holds
27964executable code.
82f68b1c
VP
27965@end table
27966
c3b108f7
VP
27967@node GDB/MI Frame Information
27968@subsection @sc{gdb/mi} Frame Information
27969
27970Response from many MI commands includes an information about stack
27971frame. This information is a tuple that may have the following
27972fields:
27973
27974@table @code
27975@item level
27976The level of the stack frame. The innermost frame has the level of
27977zero. This field is always present.
27978
27979@item func
27980The name of the function corresponding to the frame. This field may
27981be absent if @value{GDBN} is unable to determine the function name.
27982
27983@item addr
27984The code address for the frame. This field is always present.
27985
27986@item file
27987The name of the source files that correspond to the frame's code
27988address. This field may be absent.
27989
27990@item line
27991The source line corresponding to the frames' code address. This field
27992may be absent.
27993
27994@item from
27995The name of the binary file (either executable or shared library) the
27996corresponds to the frame's code address. This field may be absent.
27997
27998@end table
82f68b1c 27999
dc146f7c
VP
28000@node GDB/MI Thread Information
28001@subsection @sc{gdb/mi} Thread Information
28002
28003Whenever @value{GDBN} has to report an information about a thread, it
28004uses a tuple with the following fields:
28005
28006@table @code
28007@item id
28008The numeric id assigned to the thread by @value{GDBN}. This field is
28009always present.
28010
28011@item target-id
28012Target-specific string identifying the thread. This field is always present.
28013
28014@item details
28015Additional information about the thread provided by the target.
28016It is supposed to be human-readable and not interpreted by the
28017frontend. This field is optional.
28018
28019@item state
28020Either @samp{stopped} or @samp{running}, depending on whether the
28021thread is presently running. This field is always present.
28022
28023@item core
28024The value of this field is an integer number of the processor core the
28025thread was last seen on. This field is optional.
28026@end table
28027
956a9fb9
JB
28028@node GDB/MI Ada Exception Information
28029@subsection @sc{gdb/mi} Ada Exception Information
28030
28031Whenever a @code{*stopped} record is emitted because the program
28032stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}),
28033@value{GDBN} provides the name of the exception that was raised via
28034the @code{exception-name} field.
922fbb7b 28035
ef21caaf
NR
28036@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28037@node GDB/MI Simple Examples
28038@section Simple Examples of @sc{gdb/mi} Interaction
28039@cindex @sc{gdb/mi}, simple examples
28040
28041This subsection presents several simple examples of interaction using
28042the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
28043following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
28044the output received from @sc{gdb/mi}.
28045
d3e8051b 28046Note the line breaks shown in the examples are here only for
ef21caaf
NR
28047readability, they don't appear in the real output.
28048
79a6e687 28049@subheading Setting a Breakpoint
ef21caaf
NR
28050
28051Setting a breakpoint generates synchronous output which contains detailed
28052information of the breakpoint.
28053
28054@smallexample
28055-> -break-insert main
28056<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
28057 enabled="y",addr="0x08048564",func="main",file="myprog.c",
28058 fullname="/home/nickrob/myprog.c",line="68",times="0"@}
28059<- (gdb)
28060@end smallexample
28061
28062@subheading Program Execution
28063
28064Program execution generates asynchronous records and MI gives the
28065reason that execution stopped.
28066
28067@smallexample
28068-> -exec-run
28069<- ^running
28070<- (gdb)
a47ec5fe 28071<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
ef21caaf
NR
28072 frame=@{addr="0x08048564",func="main",
28073 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}],
28074 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@}
28075<- (gdb)
28076-> -exec-continue
28077<- ^running
28078<- (gdb)
28079<- *stopped,reason="exited-normally"
28080<- (gdb)
28081@end smallexample
28082
3f94c067 28083@subheading Quitting @value{GDBN}
ef21caaf 28084
3f94c067 28085Quitting @value{GDBN} just prints the result class @samp{^exit}.
ef21caaf
NR
28086
28087@smallexample
28088-> (gdb)
28089<- -gdb-exit
28090<- ^exit
28091@end smallexample
28092
a6b29f87
VP
28093Please note that @samp{^exit} is printed immediately, but it might
28094take some time for @value{GDBN} to actually exit. During that time, @value{GDBN}
28095performs necessary cleanups, including killing programs being debugged
28096or disconnecting from debug hardware, so the frontend should wait till
28097@value{GDBN} exits and should only forcibly kill @value{GDBN} if it
28098fails to exit in reasonable time.
28099
a2c02241 28100@subheading A Bad Command
ef21caaf
NR
28101
28102Here's what happens if you pass a non-existent command:
28103
28104@smallexample
28105-> -rubbish
28106<- ^error,msg="Undefined MI command: rubbish"
594fe323 28107<- (gdb)
ef21caaf
NR
28108@end smallexample
28109
28110
922fbb7b
AC
28111@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28112@node GDB/MI Command Description Format
28113@section @sc{gdb/mi} Command Description Format
28114
28115The remaining sections describe blocks of commands. Each block of
28116commands is laid out in a fashion similar to this section.
28117
922fbb7b
AC
28118@subheading Motivation
28119
28120The motivation for this collection of commands.
28121
28122@subheading Introduction
28123
28124A brief introduction to this collection of commands as a whole.
28125
28126@subheading Commands
28127
28128For each command in the block, the following is described:
28129
28130@subsubheading Synopsis
28131
28132@smallexample
28133 -command @var{args}@dots{}
28134@end smallexample
28135
922fbb7b
AC
28136@subsubheading Result
28137
265eeb58 28138@subsubheading @value{GDBN} Command
922fbb7b 28139
265eeb58 28140The corresponding @value{GDBN} CLI command(s), if any.
922fbb7b
AC
28141
28142@subsubheading Example
28143
ef21caaf
NR
28144Example(s) formatted for readability. Some of the described commands have
28145not been implemented yet and these are labeled N.A.@: (not available).
28146
28147
922fbb7b 28148@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ef21caaf
NR
28149@node GDB/MI Breakpoint Commands
28150@section @sc{gdb/mi} Breakpoint Commands
922fbb7b
AC
28151
28152@cindex breakpoint commands for @sc{gdb/mi}
28153@cindex @sc{gdb/mi}, breakpoint commands
28154This section documents @sc{gdb/mi} commands for manipulating
28155breakpoints.
28156
28157@subheading The @code{-break-after} Command
28158@findex -break-after
28159
28160@subsubheading Synopsis
28161
28162@smallexample
28163 -break-after @var{number} @var{count}
28164@end smallexample
28165
28166The breakpoint number @var{number} is not in effect until it has been
28167hit @var{count} times. To see how this is reflected in the output of
28168the @samp{-break-list} command, see the description of the
28169@samp{-break-list} command below.
28170
28171@subsubheading @value{GDBN} Command
28172
28173The corresponding @value{GDBN} command is @samp{ignore}.
28174
28175@subsubheading Example
28176
28177@smallexample
594fe323 28178(gdb)
922fbb7b 28179-break-insert main
a47ec5fe
AR
28180^done,bkpt=@{number="1",type="breakpoint",disp="keep",
28181enabled="y",addr="0x000100d0",func="main",file="hello.c",
948d5102 28182fullname="/home/foo/hello.c",line="5",times="0"@}
594fe323 28183(gdb)
922fbb7b
AC
28184-break-after 1 3
28185~
28186^done
594fe323 28187(gdb)
922fbb7b
AC
28188-break-list
28189^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28190hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28191@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28192@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28193@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28194@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28195@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28196body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28197addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28198line="5",times="0",ignore="3"@}]@}
594fe323 28199(gdb)
922fbb7b
AC
28200@end smallexample
28201
28202@ignore
28203@subheading The @code{-break-catch} Command
28204@findex -break-catch
48cb2d85 28205@end ignore
922fbb7b
AC
28206
28207@subheading The @code{-break-commands} Command
28208@findex -break-commands
922fbb7b 28209
48cb2d85
VP
28210@subsubheading Synopsis
28211
28212@smallexample
28213 -break-commands @var{number} [ @var{command1} ... @var{commandN} ]
28214@end smallexample
28215
28216Specifies the CLI commands that should be executed when breakpoint
28217@var{number} is hit. The parameters @var{command1} to @var{commandN}
28218are the commands. If no command is specified, any previously-set
28219commands are cleared. @xref{Break Commands}. Typical use of this
28220functionality is tracing a program, that is, printing of values of
28221some variables whenever breakpoint is hit and then continuing.
28222
28223@subsubheading @value{GDBN} Command
28224
28225The corresponding @value{GDBN} command is @samp{commands}.
28226
28227@subsubheading Example
28228
28229@smallexample
28230(gdb)
28231-break-insert main
28232^done,bkpt=@{number="1",type="breakpoint",disp="keep",
28233enabled="y",addr="0x000100d0",func="main",file="hello.c",
28234fullname="/home/foo/hello.c",line="5",times="0"@}
28235(gdb)
28236-break-commands 1 "print v" "continue"
28237^done
28238(gdb)
28239@end smallexample
922fbb7b
AC
28240
28241@subheading The @code{-break-condition} Command
28242@findex -break-condition
28243
28244@subsubheading Synopsis
28245
28246@smallexample
28247 -break-condition @var{number} @var{expr}
28248@end smallexample
28249
28250Breakpoint @var{number} will stop the program only if the condition in
28251@var{expr} is true. The condition becomes part of the
28252@samp{-break-list} output (see the description of the @samp{-break-list}
28253command below).
28254
28255@subsubheading @value{GDBN} Command
28256
28257The corresponding @value{GDBN} command is @samp{condition}.
28258
28259@subsubheading Example
28260
28261@smallexample
594fe323 28262(gdb)
922fbb7b
AC
28263-break-condition 1 1
28264^done
594fe323 28265(gdb)
922fbb7b
AC
28266-break-list
28267^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28268hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28269@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28270@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28271@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28272@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28273@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28274body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28275addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28276line="5",cond="1",times="0",ignore="3"@}]@}
594fe323 28277(gdb)
922fbb7b
AC
28278@end smallexample
28279
28280@subheading The @code{-break-delete} Command
28281@findex -break-delete
28282
28283@subsubheading Synopsis
28284
28285@smallexample
28286 -break-delete ( @var{breakpoint} )+
28287@end smallexample
28288
28289Delete the breakpoint(s) whose number(s) are specified in the argument
28290list. This is obviously reflected in the breakpoint list.
28291
79a6e687 28292@subsubheading @value{GDBN} Command
922fbb7b
AC
28293
28294The corresponding @value{GDBN} command is @samp{delete}.
28295
28296@subsubheading Example
28297
28298@smallexample
594fe323 28299(gdb)
922fbb7b
AC
28300-break-delete 1
28301^done
594fe323 28302(gdb)
922fbb7b
AC
28303-break-list
28304^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
28305hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28306@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28307@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28308@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28309@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28310@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28311body=[]@}
594fe323 28312(gdb)
922fbb7b
AC
28313@end smallexample
28314
28315@subheading The @code{-break-disable} Command
28316@findex -break-disable
28317
28318@subsubheading Synopsis
28319
28320@smallexample
28321 -break-disable ( @var{breakpoint} )+
28322@end smallexample
28323
28324Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
28325break list is now set to @samp{n} for the named @var{breakpoint}(s).
28326
28327@subsubheading @value{GDBN} Command
28328
28329The corresponding @value{GDBN} command is @samp{disable}.
28330
28331@subsubheading Example
28332
28333@smallexample
594fe323 28334(gdb)
922fbb7b
AC
28335-break-disable 2
28336^done
594fe323 28337(gdb)
922fbb7b
AC
28338-break-list
28339^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28340hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28341@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28342@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28343@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28344@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28345@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28346body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
948d5102
NR
28347addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28348line="5",times="0"@}]@}
594fe323 28349(gdb)
922fbb7b
AC
28350@end smallexample
28351
28352@subheading The @code{-break-enable} Command
28353@findex -break-enable
28354
28355@subsubheading Synopsis
28356
28357@smallexample
28358 -break-enable ( @var{breakpoint} )+
28359@end smallexample
28360
28361Enable (previously disabled) @var{breakpoint}(s).
28362
28363@subsubheading @value{GDBN} Command
28364
28365The corresponding @value{GDBN} command is @samp{enable}.
28366
28367@subsubheading Example
28368
28369@smallexample
594fe323 28370(gdb)
922fbb7b
AC
28371-break-enable 2
28372^done
594fe323 28373(gdb)
922fbb7b
AC
28374-break-list
28375^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28376hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28377@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28378@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28379@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28380@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28381@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28382body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28383addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28384line="5",times="0"@}]@}
594fe323 28385(gdb)
922fbb7b
AC
28386@end smallexample
28387
28388@subheading The @code{-break-info} Command
28389@findex -break-info
28390
28391@subsubheading Synopsis
28392
28393@smallexample
28394 -break-info @var{breakpoint}
28395@end smallexample
28396
28397@c REDUNDANT???
28398Get information about a single breakpoint.
28399
79a6e687 28400@subsubheading @value{GDBN} Command
922fbb7b
AC
28401
28402The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
28403
28404@subsubheading Example
28405N.A.
28406
28407@subheading The @code{-break-insert} Command
28408@findex -break-insert
28409
28410@subsubheading Synopsis
28411
28412@smallexample
18148017 28413 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ]
922fbb7b 28414 [ -c @var{condition} ] [ -i @var{ignore-count} ]
472a2379 28415 [ -p @var{thread-id} ] [ @var{location} ]
922fbb7b
AC
28416@end smallexample
28417
28418@noindent
afe8ab22 28419If specified, @var{location}, can be one of:
922fbb7b
AC
28420
28421@itemize @bullet
28422@item function
28423@c @item +offset
28424@c @item -offset
28425@c @item linenum
28426@item filename:linenum
28427@item filename:function
28428@item *address
28429@end itemize
28430
28431The possible optional parameters of this command are:
28432
28433@table @samp
28434@item -t
948d5102 28435Insert a temporary breakpoint.
922fbb7b
AC
28436@item -h
28437Insert a hardware breakpoint.
afe8ab22
VP
28438@item -f
28439If @var{location} cannot be parsed (for example if it
28440refers to unknown files or functions), create a pending
28441breakpoint. Without this flag, @value{GDBN} will report
28442an error, and won't create a breakpoint, if @var{location}
28443cannot be parsed.
41447f92
VP
28444@item -d
28445Create a disabled breakpoint.
18148017
VP
28446@item -a
28447Create a tracepoint. @xref{Tracepoints}. When this parameter
28448is used together with @samp{-h}, a fast tracepoint is created.
472a2379
KS
28449@item -c @var{condition}
28450Make the breakpoint conditional on @var{condition}.
28451@item -i @var{ignore-count}
28452Initialize the @var{ignore-count}.
28453@item -p @var{thread-id}
28454Restrict the breakpoint to the specified @var{thread-id}.
922fbb7b
AC
28455@end table
28456
28457@subsubheading Result
28458
28459The result is in the form:
28460
28461@smallexample
948d5102
NR
28462^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
28463enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filename}",
ef21caaf 28464fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{threadno},]
f2a8bc8a 28465times="@var{times}"[,installed="@var{installed}"]@}
922fbb7b
AC
28466@end smallexample
28467
28468@noindent
948d5102
NR
28469where @var{number} is the @value{GDBN} number for this breakpoint,
28470@var{funcname} is the name of the function where the breakpoint was
28471inserted, @var{filename} is the name of the source file which contains
f2a8bc8a
YQ
28472this function, @var{lineno} is the source line number within that file,
28473@var{times} the number of times that the breakpoint has been hit
948d5102 28474(always 0 for -break-insert but may be greater for -break-info or -break-list
f2a8bc8a
YQ
28475which use the same output), and @var{installed}, which is an optional
28476boolean, is about the state of each non-pending tracepoint location
28477installed on target or not.
922fbb7b
AC
28478
28479Note: this format is open to change.
28480@c An out-of-band breakpoint instead of part of the result?
28481
28482@subsubheading @value{GDBN} Command
28483
28484The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
496ee73e 28485@samp{hbreak}, and @samp{thbreak}. @c and @samp{rbreak}.
922fbb7b
AC
28486
28487@subsubheading Example
28488
28489@smallexample
594fe323 28490(gdb)
922fbb7b 28491-break-insert main
948d5102
NR
28492^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
28493fullname="/home/foo/recursive2.c,line="4",times="0"@}
594fe323 28494(gdb)
922fbb7b 28495-break-insert -t foo
948d5102
NR
28496^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
28497fullname="/home/foo/recursive2.c,line="11",times="0"@}
594fe323 28498(gdb)
922fbb7b
AC
28499-break-list
28500^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28501hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28502@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28503@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28504@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28505@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28506@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28507body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28508addr="0x0001072c", func="main",file="recursive2.c",
28509fullname="/home/foo/recursive2.c,"line="4",times="0"@},
922fbb7b 28510bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
948d5102
NR
28511addr="0x00010774",func="foo",file="recursive2.c",
28512fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
594fe323 28513(gdb)
496ee73e
KS
28514@c -break-insert -r foo.*
28515@c ~int foo(int, int);
28516@c ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
28517@c "fullname="/home/foo/recursive2.c",line="11",times="0"@}
28518@c (gdb)
922fbb7b
AC
28519@end smallexample
28520
28521@subheading The @code{-break-list} Command
28522@findex -break-list
28523
28524@subsubheading Synopsis
28525
28526@smallexample
28527 -break-list
28528@end smallexample
28529
28530Displays the list of inserted breakpoints, showing the following fields:
28531
28532@table @samp
28533@item Number
28534number of the breakpoint
28535@item Type
28536type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
28537@item Disposition
28538should the breakpoint be deleted or disabled when it is hit: @samp{keep}
28539or @samp{nokeep}
28540@item Enabled
28541is the breakpoint enabled or no: @samp{y} or @samp{n}
28542@item Address
28543memory location at which the breakpoint is set
28544@item What
28545logical location of the breakpoint, expressed by function name, file
28546name, line number
28547@item Times
28548number of times the breakpoint has been hit
28549@end table
28550
28551If there are no breakpoints or watchpoints, the @code{BreakpointTable}
28552@code{body} field is an empty list.
28553
28554@subsubheading @value{GDBN} Command
28555
28556The corresponding @value{GDBN} command is @samp{info break}.
28557
28558@subsubheading Example
28559
28560@smallexample
594fe323 28561(gdb)
922fbb7b
AC
28562-break-list
28563^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28564hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28565@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28566@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28567@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28568@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28569@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28570body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28571addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
28572bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28573addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
28574line="13",times="0"@}]@}
594fe323 28575(gdb)
922fbb7b
AC
28576@end smallexample
28577
28578Here's an example of the result when there are no breakpoints:
28579
28580@smallexample
594fe323 28581(gdb)
922fbb7b
AC
28582-break-list
28583^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
28584hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28585@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28586@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28587@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28588@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28589@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28590body=[]@}
594fe323 28591(gdb)
922fbb7b
AC
28592@end smallexample
28593
18148017
VP
28594@subheading The @code{-break-passcount} Command
28595@findex -break-passcount
28596
28597@subsubheading Synopsis
28598
28599@smallexample
28600 -break-passcount @var{tracepoint-number} @var{passcount}
28601@end smallexample
28602
28603Set the passcount for tracepoint @var{tracepoint-number} to
28604@var{passcount}. If the breakpoint referred to by @var{tracepoint-number}
28605is not a tracepoint, error is emitted. This corresponds to CLI
28606command @samp{passcount}.
28607
922fbb7b
AC
28608@subheading The @code{-break-watch} Command
28609@findex -break-watch
28610
28611@subsubheading Synopsis
28612
28613@smallexample
28614 -break-watch [ -a | -r ]
28615@end smallexample
28616
28617Create a watchpoint. With the @samp{-a} option it will create an
d3e8051b 28618@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a
922fbb7b 28619read from or on a write to the memory location. With the @samp{-r}
d3e8051b 28620option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will
922fbb7b
AC
28621trigger only when the memory location is accessed for reading. Without
28622either of the options, the watchpoint created is a regular watchpoint,
d3e8051b 28623i.e., it will trigger when the memory location is accessed for writing.
79a6e687 28624@xref{Set Watchpoints, , Setting Watchpoints}.
922fbb7b
AC
28625
28626Note that @samp{-break-list} will report a single list of watchpoints and
28627breakpoints inserted.
28628
28629@subsubheading @value{GDBN} Command
28630
28631The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
28632@samp{rwatch}.
28633
28634@subsubheading Example
28635
28636Setting a watchpoint on a variable in the @code{main} function:
28637
28638@smallexample
594fe323 28639(gdb)
922fbb7b
AC
28640-break-watch x
28641^done,wpt=@{number="2",exp="x"@}
594fe323 28642(gdb)
922fbb7b
AC
28643-exec-continue
28644^running
0869d01b
NR
28645(gdb)
28646*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
922fbb7b 28647value=@{old="-268439212",new="55"@},
76ff342d 28648frame=@{func="main",args=[],file="recursive2.c",
948d5102 28649fullname="/home/foo/bar/recursive2.c",line="5"@}
594fe323 28650(gdb)
922fbb7b
AC
28651@end smallexample
28652
28653Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
28654the program execution twice: first for the variable changing value, then
28655for the watchpoint going out of scope.
28656
28657@smallexample
594fe323 28658(gdb)
922fbb7b
AC
28659-break-watch C
28660^done,wpt=@{number="5",exp="C"@}
594fe323 28661(gdb)
922fbb7b
AC
28662-exec-continue
28663^running
0869d01b
NR
28664(gdb)
28665*stopped,reason="watchpoint-trigger",
922fbb7b
AC
28666wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
28667frame=@{func="callee4",args=[],
76ff342d
DJ
28668file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28669fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 28670(gdb)
922fbb7b
AC
28671-exec-continue
28672^running
0869d01b
NR
28673(gdb)
28674*stopped,reason="watchpoint-scope",wpnum="5",
922fbb7b
AC
28675frame=@{func="callee3",args=[@{name="strarg",
28676value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
28677file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28678fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 28679(gdb)
922fbb7b
AC
28680@end smallexample
28681
28682Listing breakpoints and watchpoints, at different points in the program
28683execution. Note that once the watchpoint goes out of scope, it is
28684deleted.
28685
28686@smallexample
594fe323 28687(gdb)
922fbb7b
AC
28688-break-watch C
28689^done,wpt=@{number="2",exp="C"@}
594fe323 28690(gdb)
922fbb7b
AC
28691-break-list
28692^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28693hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28694@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28695@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28696@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28697@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28698@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28699body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28700addr="0x00010734",func="callee4",
948d5102
NR
28701file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28702fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
922fbb7b
AC
28703bkpt=@{number="2",type="watchpoint",disp="keep",
28704enabled="y",addr="",what="C",times="0"@}]@}
594fe323 28705(gdb)
922fbb7b
AC
28706-exec-continue
28707^running
0869d01b
NR
28708(gdb)
28709*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
922fbb7b
AC
28710value=@{old="-276895068",new="3"@},
28711frame=@{func="callee4",args=[],
76ff342d
DJ
28712file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28713fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 28714(gdb)
922fbb7b
AC
28715-break-list
28716^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28717hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28718@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28719@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28720@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28721@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28722@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28723body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28724addr="0x00010734",func="callee4",
948d5102
NR
28725file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28726fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
922fbb7b
AC
28727bkpt=@{number="2",type="watchpoint",disp="keep",
28728enabled="y",addr="",what="C",times="-5"@}]@}
594fe323 28729(gdb)
922fbb7b
AC
28730-exec-continue
28731^running
28732^done,reason="watchpoint-scope",wpnum="2",
28733frame=@{func="callee3",args=[@{name="strarg",
28734value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
28735file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28736fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 28737(gdb)
922fbb7b
AC
28738-break-list
28739^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28740hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28741@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28742@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28743@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28744@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28745@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28746body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28747addr="0x00010734",func="callee4",
948d5102
NR
28748file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28749fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
28750times="1"@}]@}
594fe323 28751(gdb)
922fbb7b
AC
28752@end smallexample
28753
3fa7bf06
MG
28754
28755@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28756@node GDB/MI Catchpoint Commands
28757@section @sc{gdb/mi} Catchpoint Commands
28758
28759This section documents @sc{gdb/mi} commands for manipulating
28760catchpoints.
28761
28762@subheading The @code{-catch-load} Command
28763@findex -catch-load
28764
28765@subsubheading Synopsis
28766
28767@smallexample
28768 -catch-load [ -t ] [ -d ] @var{regexp}
28769@end smallexample
28770
28771Add a catchpoint for library load events. If the @samp{-t} option is used,
28772the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting
28773Breakpoints}). If the @samp{-d} option is used, the catchpoint is created
28774in a disabled state. The @samp{regexp} argument is a regular
28775expression used to match the name of the loaded library.
28776
28777
28778@subsubheading @value{GDBN} Command
28779
28780The corresponding @value{GDBN} command is @samp{catch load}.
28781
28782@subsubheading Example
28783
28784@smallexample
28785-catch-load -t foo.so
28786^done,bkpt=@{number="1",type="catchpoint",disp="del",enabled="y",
28787what="load of library matching foo.so",times="0"@}
28788(gdb)
28789@end smallexample
28790
28791
28792@subheading The @code{-catch-unload} Command
28793@findex -catch-unload
28794
28795@subsubheading Synopsis
28796
28797@smallexample
28798 -catch-unload [ -t ] [ -d ] @var{regexp}
28799@end smallexample
28800
28801Add a catchpoint for library unload events. If the @samp{-t} option is
28802used, the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting
28803Breakpoints}). If the @samp{-d} option is used, the catchpoint is
28804created in a disabled state. The @samp{regexp} argument is a regular
28805expression used to match the name of the unloaded library.
28806
28807@subsubheading @value{GDBN} Command
28808
28809The corresponding @value{GDBN} command is @samp{catch unload}.
28810
28811@subsubheading Example
28812
28813@smallexample
28814-catch-unload -d bar.so
28815^done,bkpt=@{number="2",type="catchpoint",disp="keep",enabled="n",
28816what="load of library matching bar.so",times="0"@}
28817(gdb)
28818@end smallexample
28819
28820
922fbb7b 28821@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
28822@node GDB/MI Program Context
28823@section @sc{gdb/mi} Program Context
922fbb7b 28824
a2c02241
NR
28825@subheading The @code{-exec-arguments} Command
28826@findex -exec-arguments
922fbb7b 28827
922fbb7b
AC
28828
28829@subsubheading Synopsis
28830
28831@smallexample
a2c02241 28832 -exec-arguments @var{args}
922fbb7b
AC
28833@end smallexample
28834
a2c02241
NR
28835Set the inferior program arguments, to be used in the next
28836@samp{-exec-run}.
922fbb7b 28837
a2c02241 28838@subsubheading @value{GDBN} Command
922fbb7b 28839
a2c02241 28840The corresponding @value{GDBN} command is @samp{set args}.
922fbb7b 28841
a2c02241 28842@subsubheading Example
922fbb7b 28843
fbc5282e
MK
28844@smallexample
28845(gdb)
28846-exec-arguments -v word
28847^done
28848(gdb)
28849@end smallexample
922fbb7b 28850
a2c02241 28851
9901a55b 28852@ignore
a2c02241
NR
28853@subheading The @code{-exec-show-arguments} Command
28854@findex -exec-show-arguments
28855
28856@subsubheading Synopsis
28857
28858@smallexample
28859 -exec-show-arguments
28860@end smallexample
28861
28862Print the arguments of the program.
922fbb7b
AC
28863
28864@subsubheading @value{GDBN} Command
28865
a2c02241 28866The corresponding @value{GDBN} command is @samp{show args}.
922fbb7b
AC
28867
28868@subsubheading Example
a2c02241 28869N.A.
9901a55b 28870@end ignore
922fbb7b 28871
922fbb7b 28872
a2c02241
NR
28873@subheading The @code{-environment-cd} Command
28874@findex -environment-cd
922fbb7b 28875
a2c02241 28876@subsubheading Synopsis
922fbb7b
AC
28877
28878@smallexample
a2c02241 28879 -environment-cd @var{pathdir}
922fbb7b
AC
28880@end smallexample
28881
a2c02241 28882Set @value{GDBN}'s working directory.
922fbb7b 28883
a2c02241 28884@subsubheading @value{GDBN} Command
922fbb7b 28885
a2c02241
NR
28886The corresponding @value{GDBN} command is @samp{cd}.
28887
28888@subsubheading Example
922fbb7b
AC
28889
28890@smallexample
594fe323 28891(gdb)
a2c02241
NR
28892-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
28893^done
594fe323 28894(gdb)
922fbb7b
AC
28895@end smallexample
28896
28897
a2c02241
NR
28898@subheading The @code{-environment-directory} Command
28899@findex -environment-directory
922fbb7b
AC
28900
28901@subsubheading Synopsis
28902
28903@smallexample
a2c02241 28904 -environment-directory [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
28905@end smallexample
28906
a2c02241
NR
28907Add directories @var{pathdir} to beginning of search path for source files.
28908If the @samp{-r} option is used, the search path is reset to the default
28909search path. If directories @var{pathdir} are supplied in addition to the
28910@samp{-r} option, the search path is first reset and then addition
28911occurs as normal.
28912Multiple directories may be specified, separated by blanks. Specifying
28913multiple directories in a single command
28914results in the directories added to the beginning of the
28915search path in the same order they were presented in the command.
28916If blanks are needed as
28917part of a directory name, double-quotes should be used around
28918the name. In the command output, the path will show up separated
d3e8051b 28919by the system directory-separator character. The directory-separator
a2c02241
NR
28920character must not be used
28921in any directory name.
28922If no directories are specified, the current search path is displayed.
922fbb7b
AC
28923
28924@subsubheading @value{GDBN} Command
28925
a2c02241 28926The corresponding @value{GDBN} command is @samp{dir}.
922fbb7b
AC
28927
28928@subsubheading Example
28929
922fbb7b 28930@smallexample
594fe323 28931(gdb)
a2c02241
NR
28932-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
28933^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 28934(gdb)
a2c02241
NR
28935-environment-directory ""
28936^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 28937(gdb)
a2c02241
NR
28938-environment-directory -r /home/jjohnstn/src/gdb /usr/src
28939^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
594fe323 28940(gdb)
a2c02241
NR
28941-environment-directory -r
28942^done,source-path="$cdir:$cwd"
594fe323 28943(gdb)
922fbb7b
AC
28944@end smallexample
28945
28946
a2c02241
NR
28947@subheading The @code{-environment-path} Command
28948@findex -environment-path
922fbb7b
AC
28949
28950@subsubheading Synopsis
28951
28952@smallexample
a2c02241 28953 -environment-path [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
28954@end smallexample
28955
a2c02241
NR
28956Add directories @var{pathdir} to beginning of search path for object files.
28957If the @samp{-r} option is used, the search path is reset to the original
28958search path that existed at gdb start-up. If directories @var{pathdir} are
28959supplied in addition to the
28960@samp{-r} option, the search path is first reset and then addition
28961occurs as normal.
28962Multiple directories may be specified, separated by blanks. Specifying
28963multiple directories in a single command
28964results in the directories added to the beginning of the
28965search path in the same order they were presented in the command.
28966If blanks are needed as
28967part of a directory name, double-quotes should be used around
28968the name. In the command output, the path will show up separated
d3e8051b 28969by the system directory-separator character. The directory-separator
a2c02241
NR
28970character must not be used
28971in any directory name.
28972If no directories are specified, the current path is displayed.
28973
922fbb7b
AC
28974
28975@subsubheading @value{GDBN} Command
28976
a2c02241 28977The corresponding @value{GDBN} command is @samp{path}.
922fbb7b
AC
28978
28979@subsubheading Example
28980
922fbb7b 28981@smallexample
594fe323 28982(gdb)
a2c02241
NR
28983-environment-path
28984^done,path="/usr/bin"
594fe323 28985(gdb)
a2c02241
NR
28986-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
28987^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
594fe323 28988(gdb)
a2c02241
NR
28989-environment-path -r /usr/local/bin
28990^done,path="/usr/local/bin:/usr/bin"
594fe323 28991(gdb)
922fbb7b
AC
28992@end smallexample
28993
28994
a2c02241
NR
28995@subheading The @code{-environment-pwd} Command
28996@findex -environment-pwd
922fbb7b
AC
28997
28998@subsubheading Synopsis
28999
29000@smallexample
a2c02241 29001 -environment-pwd
922fbb7b
AC
29002@end smallexample
29003
a2c02241 29004Show the current working directory.
922fbb7b 29005
79a6e687 29006@subsubheading @value{GDBN} Command
922fbb7b 29007
a2c02241 29008The corresponding @value{GDBN} command is @samp{pwd}.
922fbb7b
AC
29009
29010@subsubheading Example
29011
922fbb7b 29012@smallexample
594fe323 29013(gdb)
a2c02241
NR
29014-environment-pwd
29015^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
594fe323 29016(gdb)
922fbb7b
AC
29017@end smallexample
29018
a2c02241
NR
29019@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29020@node GDB/MI Thread Commands
29021@section @sc{gdb/mi} Thread Commands
29022
29023
29024@subheading The @code{-thread-info} Command
29025@findex -thread-info
922fbb7b
AC
29026
29027@subsubheading Synopsis
29028
29029@smallexample
8e8901c5 29030 -thread-info [ @var{thread-id} ]
922fbb7b
AC
29031@end smallexample
29032
8e8901c5
VP
29033Reports information about either a specific thread, if
29034the @var{thread-id} parameter is present, or about all
29035threads. When printing information about all threads,
29036also reports the current thread.
29037
79a6e687 29038@subsubheading @value{GDBN} Command
922fbb7b 29039
8e8901c5
VP
29040The @samp{info thread} command prints the same information
29041about all threads.
922fbb7b 29042
4694da01 29043@subsubheading Result
922fbb7b 29044
4694da01
TT
29045The result is a list of threads. The following attributes are
29046defined for a given thread:
29047
29048@table @samp
29049@item current
29050This field exists only for the current thread. It has the value @samp{*}.
29051
29052@item id
29053The identifier that @value{GDBN} uses to refer to the thread.
29054
29055@item target-id
29056The identifier that the target uses to refer to the thread.
29057
29058@item details
29059Extra information about the thread, in a target-specific format. This
29060field is optional.
29061
29062@item name
29063The name of the thread. If the user specified a name using the
29064@code{thread name} command, then this name is given. Otherwise, if
29065@value{GDBN} can extract the thread name from the target, then that
29066name is given. If @value{GDBN} cannot find the thread name, then this
29067field is omitted.
29068
29069@item frame
29070The stack frame currently executing in the thread.
922fbb7b 29071
4694da01
TT
29072@item state
29073The thread's state. The @samp{state} field may have the following
29074values:
c3b108f7
VP
29075
29076@table @code
29077@item stopped
29078The thread is stopped. Frame information is available for stopped
29079threads.
29080
29081@item running
29082The thread is running. There's no frame information for running
29083threads.
29084
29085@end table
29086
4694da01
TT
29087@item core
29088If @value{GDBN} can find the CPU core on which this thread is running,
29089then this field is the core identifier. This field is optional.
29090
29091@end table
29092
29093@subsubheading Example
29094
29095@smallexample
29096-thread-info
29097^done,threads=[
29098@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
29099 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",
29100 args=[]@},state="running"@},
29101@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
29102 frame=@{level="0",addr="0x0804891f",func="foo",
29103 args=[@{name="i",value="10"@}],
29104 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},
29105 state="running"@}],
29106current-thread-id="1"
29107(gdb)
29108@end smallexample
29109
a2c02241
NR
29110@subheading The @code{-thread-list-ids} Command
29111@findex -thread-list-ids
922fbb7b 29112
a2c02241 29113@subsubheading Synopsis
922fbb7b 29114
a2c02241
NR
29115@smallexample
29116 -thread-list-ids
29117@end smallexample
922fbb7b 29118
a2c02241
NR
29119Produces a list of the currently known @value{GDBN} thread ids. At the
29120end of the list it also prints the total number of such threads.
922fbb7b 29121
c3b108f7
VP
29122This command is retained for historical reasons, the
29123@code{-thread-info} command should be used instead.
29124
922fbb7b
AC
29125@subsubheading @value{GDBN} Command
29126
a2c02241 29127Part of @samp{info threads} supplies the same information.
922fbb7b
AC
29128
29129@subsubheading Example
29130
922fbb7b 29131@smallexample
594fe323 29132(gdb)
a2c02241
NR
29133-thread-list-ids
29134^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
592375cd 29135current-thread-id="1",number-of-threads="3"
594fe323 29136(gdb)
922fbb7b
AC
29137@end smallexample
29138
a2c02241
NR
29139
29140@subheading The @code{-thread-select} Command
29141@findex -thread-select
922fbb7b
AC
29142
29143@subsubheading Synopsis
29144
29145@smallexample
a2c02241 29146 -thread-select @var{threadnum}
922fbb7b
AC
29147@end smallexample
29148
a2c02241
NR
29149Make @var{threadnum} the current thread. It prints the number of the new
29150current thread, and the topmost frame for that thread.
922fbb7b 29151
c3b108f7
VP
29152This command is deprecated in favor of explicitly using the
29153@samp{--thread} option to each command.
29154
922fbb7b
AC
29155@subsubheading @value{GDBN} Command
29156
a2c02241 29157The corresponding @value{GDBN} command is @samp{thread}.
922fbb7b
AC
29158
29159@subsubheading Example
922fbb7b
AC
29160
29161@smallexample
594fe323 29162(gdb)
a2c02241
NR
29163-exec-next
29164^running
594fe323 29165(gdb)
a2c02241
NR
29166*stopped,reason="end-stepping-range",thread-id="2",line="187",
29167file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
594fe323 29168(gdb)
a2c02241
NR
29169-thread-list-ids
29170^done,
29171thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
29172number-of-threads="3"
594fe323 29173(gdb)
a2c02241
NR
29174-thread-select 3
29175^done,new-thread-id="3",
29176frame=@{level="0",func="vprintf",
29177args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
29178@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
594fe323 29179(gdb)
922fbb7b
AC
29180@end smallexample
29181
5d77fe44
JB
29182@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29183@node GDB/MI Ada Tasking Commands
29184@section @sc{gdb/mi} Ada Tasking Commands
29185
29186@subheading The @code{-ada-task-info} Command
29187@findex -ada-task-info
29188
29189@subsubheading Synopsis
29190
29191@smallexample
29192 -ada-task-info [ @var{task-id} ]
29193@end smallexample
29194
29195Reports information about either a specific Ada task, if the
29196@var{task-id} parameter is present, or about all Ada tasks.
29197
29198@subsubheading @value{GDBN} Command
29199
29200The @samp{info tasks} command prints the same information
29201about all Ada tasks (@pxref{Ada Tasks}).
29202
29203@subsubheading Result
29204
29205The result is a table of Ada tasks. The following columns are
29206defined for each Ada task:
29207
29208@table @samp
29209@item current
29210This field exists only for the current thread. It has the value @samp{*}.
29211
29212@item id
29213The identifier that @value{GDBN} uses to refer to the Ada task.
29214
29215@item task-id
29216The identifier that the target uses to refer to the Ada task.
29217
29218@item thread-id
29219The identifier of the thread corresponding to the Ada task.
29220
29221This field should always exist, as Ada tasks are always implemented
29222on top of a thread. But if @value{GDBN} cannot find this corresponding
29223thread for any reason, the field is omitted.
29224
29225@item parent-id
29226This field exists only when the task was created by another task.
29227In this case, it provides the ID of the parent task.
29228
29229@item priority
29230The base priority of the task.
29231
29232@item state
29233The current state of the task. For a detailed description of the
29234possible states, see @ref{Ada Tasks}.
29235
29236@item name
29237The name of the task.
29238
29239@end table
29240
29241@subsubheading Example
29242
29243@smallexample
29244-ada-task-info
29245^done,tasks=@{nr_rows="3",nr_cols="8",
29246hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@},
29247@{width="3",alignment="1",col_name="id",colhdr="ID"@},
29248@{width="9",alignment="1",col_name="task-id",colhdr="TID"@},
29249@{width="4",alignment="1",col_name="thread-id",colhdr=""@},
29250@{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@},
29251@{width="3",alignment="1",col_name="priority",colhdr="Pri"@},
29252@{width="22",alignment="-1",col_name="state",colhdr="State"@},
29253@{width="1",alignment="2",col_name="name",colhdr="Name"@}],
29254body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48",
29255state="Child Termination Wait",name="main_task"@}]@}
29256(gdb)
29257@end smallexample
29258
a2c02241
NR
29259@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29260@node GDB/MI Program Execution
29261@section @sc{gdb/mi} Program Execution
922fbb7b 29262
ef21caaf 29263These are the asynchronous commands which generate the out-of-band
3f94c067 29264record @samp{*stopped}. Currently @value{GDBN} only really executes
ef21caaf
NR
29265asynchronously with remote targets and this interaction is mimicked in
29266other cases.
922fbb7b 29267
922fbb7b
AC
29268@subheading The @code{-exec-continue} Command
29269@findex -exec-continue
29270
29271@subsubheading Synopsis
29272
29273@smallexample
540aa8e7 29274 -exec-continue [--reverse] [--all|--thread-group N]
922fbb7b
AC
29275@end smallexample
29276
540aa8e7
MS
29277Resumes the execution of the inferior program, which will continue
29278to execute until it reaches a debugger stop event. If the
29279@samp{--reverse} option is specified, execution resumes in reverse until
29280it reaches a stop event. Stop events may include
29281@itemize @bullet
29282@item
29283breakpoints or watchpoints
29284@item
29285signals or exceptions
29286@item
29287the end of the process (or its beginning under @samp{--reverse})
29288@item
29289the end or beginning of a replay log if one is being used.
29290@end itemize
29291In all-stop mode (@pxref{All-Stop
29292Mode}), may resume only one thread, or all threads, depending on the
29293value of the @samp{scheduler-locking} variable. If @samp{--all} is
a79b8f6e 29294specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is
540aa8e7
MS
29295ignored in all-stop mode. If the @samp{--thread-group} options is
29296specified, then all threads in that thread group are resumed.
922fbb7b
AC
29297
29298@subsubheading @value{GDBN} Command
29299
29300The corresponding @value{GDBN} corresponding is @samp{continue}.
29301
29302@subsubheading Example
29303
29304@smallexample
29305-exec-continue
29306^running
594fe323 29307(gdb)
922fbb7b 29308@@Hello world
a47ec5fe
AR
29309*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{
29310func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
29311line="13"@}
594fe323 29312(gdb)
922fbb7b
AC
29313@end smallexample
29314
29315
29316@subheading The @code{-exec-finish} Command
29317@findex -exec-finish
29318
29319@subsubheading Synopsis
29320
29321@smallexample
540aa8e7 29322 -exec-finish [--reverse]
922fbb7b
AC
29323@end smallexample
29324
ef21caaf
NR
29325Resumes the execution of the inferior program until the current
29326function is exited. Displays the results returned by the function.
540aa8e7
MS
29327If the @samp{--reverse} option is specified, resumes the reverse
29328execution of the inferior program until the point where current
29329function was called.
922fbb7b
AC
29330
29331@subsubheading @value{GDBN} Command
29332
29333The corresponding @value{GDBN} command is @samp{finish}.
29334
29335@subsubheading Example
29336
29337Function returning @code{void}.
29338
29339@smallexample
29340-exec-finish
29341^running
594fe323 29342(gdb)
922fbb7b
AC
29343@@hello from foo
29344*stopped,reason="function-finished",frame=@{func="main",args=[],
948d5102 29345file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@}
594fe323 29346(gdb)
922fbb7b
AC
29347@end smallexample
29348
29349Function returning other than @code{void}. The name of the internal
29350@value{GDBN} variable storing the result is printed, together with the
29351value itself.
29352
29353@smallexample
29354-exec-finish
29355^running
594fe323 29356(gdb)
922fbb7b
AC
29357*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
29358args=[@{name="a",value="1"],@{name="b",value="9"@}@},
948d5102 29359file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
922fbb7b 29360gdb-result-var="$1",return-value="0"
594fe323 29361(gdb)
922fbb7b
AC
29362@end smallexample
29363
29364
29365@subheading The @code{-exec-interrupt} Command
29366@findex -exec-interrupt
29367
29368@subsubheading Synopsis
29369
29370@smallexample
c3b108f7 29371 -exec-interrupt [--all|--thread-group N]
922fbb7b
AC
29372@end smallexample
29373
ef21caaf
NR
29374Interrupts the background execution of the target. Note how the token
29375associated with the stop message is the one for the execution command
29376that has been interrupted. The token for the interrupt itself only
29377appears in the @samp{^done} output. If the user is trying to
922fbb7b
AC
29378interrupt a non-running program, an error message will be printed.
29379
c3b108f7
VP
29380Note that when asynchronous execution is enabled, this command is
29381asynchronous just like other execution commands. That is, first the
29382@samp{^done} response will be printed, and the target stop will be
29383reported after that using the @samp{*stopped} notification.
29384
29385In non-stop mode, only the context thread is interrupted by default.
a79b8f6e
VP
29386All threads (in all inferiors) will be interrupted if the
29387@samp{--all} option is specified. If the @samp{--thread-group}
29388option is specified, all threads in that group will be interrupted.
c3b108f7 29389
922fbb7b
AC
29390@subsubheading @value{GDBN} Command
29391
29392The corresponding @value{GDBN} command is @samp{interrupt}.
29393
29394@subsubheading Example
29395
29396@smallexample
594fe323 29397(gdb)
922fbb7b
AC
29398111-exec-continue
29399111^running
29400
594fe323 29401(gdb)
922fbb7b
AC
29402222-exec-interrupt
29403222^done
594fe323 29404(gdb)
922fbb7b 29405111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
76ff342d 29406frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
948d5102 29407fullname="/home/foo/bar/try.c",line="13"@}
594fe323 29408(gdb)
922fbb7b 29409
594fe323 29410(gdb)
922fbb7b
AC
29411-exec-interrupt
29412^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
594fe323 29413(gdb)
922fbb7b
AC
29414@end smallexample
29415
83eba9b7
VP
29416@subheading The @code{-exec-jump} Command
29417@findex -exec-jump
29418
29419@subsubheading Synopsis
29420
29421@smallexample
29422 -exec-jump @var{location}
29423@end smallexample
29424
29425Resumes execution of the inferior program at the location specified by
29426parameter. @xref{Specify Location}, for a description of the
29427different forms of @var{location}.
29428
29429@subsubheading @value{GDBN} Command
29430
29431The corresponding @value{GDBN} command is @samp{jump}.
29432
29433@subsubheading Example
29434
29435@smallexample
29436-exec-jump foo.c:10
29437*running,thread-id="all"
29438^running
29439@end smallexample
29440
922fbb7b
AC
29441
29442@subheading The @code{-exec-next} Command
29443@findex -exec-next
29444
29445@subsubheading Synopsis
29446
29447@smallexample
540aa8e7 29448 -exec-next [--reverse]
922fbb7b
AC
29449@end smallexample
29450
ef21caaf
NR
29451Resumes execution of the inferior program, stopping when the beginning
29452of the next source line is reached.
922fbb7b 29453
540aa8e7
MS
29454If the @samp{--reverse} option is specified, resumes reverse execution
29455of the inferior program, stopping at the beginning of the previous
29456source line. If you issue this command on the first line of a
29457function, it will take you back to the caller of that function, to the
29458source line where the function was called.
29459
29460
922fbb7b
AC
29461@subsubheading @value{GDBN} Command
29462
29463The corresponding @value{GDBN} command is @samp{next}.
29464
29465@subsubheading Example
29466
29467@smallexample
29468-exec-next
29469^running
594fe323 29470(gdb)
922fbb7b 29471*stopped,reason="end-stepping-range",line="8",file="hello.c"
594fe323 29472(gdb)
922fbb7b
AC
29473@end smallexample
29474
29475
29476@subheading The @code{-exec-next-instruction} Command
29477@findex -exec-next-instruction
29478
29479@subsubheading Synopsis
29480
29481@smallexample
540aa8e7 29482 -exec-next-instruction [--reverse]
922fbb7b
AC
29483@end smallexample
29484
ef21caaf
NR
29485Executes one machine instruction. If the instruction is a function
29486call, continues until the function returns. If the program stops at an
29487instruction in the middle of a source line, the address will be
29488printed as well.
922fbb7b 29489
540aa8e7
MS
29490If the @samp{--reverse} option is specified, resumes reverse execution
29491of the inferior program, stopping at the previous instruction. If the
29492previously executed instruction was a return from another function,
29493it will continue to execute in reverse until the call to that function
29494(from the current stack frame) is reached.
29495
922fbb7b
AC
29496@subsubheading @value{GDBN} Command
29497
29498The corresponding @value{GDBN} command is @samp{nexti}.
29499
29500@subsubheading Example
29501
29502@smallexample
594fe323 29503(gdb)
922fbb7b
AC
29504-exec-next-instruction
29505^running
29506
594fe323 29507(gdb)
922fbb7b
AC
29508*stopped,reason="end-stepping-range",
29509addr="0x000100d4",line="5",file="hello.c"
594fe323 29510(gdb)
922fbb7b
AC
29511@end smallexample
29512
29513
29514@subheading The @code{-exec-return} Command
29515@findex -exec-return
29516
29517@subsubheading Synopsis
29518
29519@smallexample
29520 -exec-return
29521@end smallexample
29522
29523Makes current function return immediately. Doesn't execute the inferior.
29524Displays the new current frame.
29525
29526@subsubheading @value{GDBN} Command
29527
29528The corresponding @value{GDBN} command is @samp{return}.
29529
29530@subsubheading Example
29531
29532@smallexample
594fe323 29533(gdb)
922fbb7b
AC
29534200-break-insert callee4
29535200^done,bkpt=@{number="1",addr="0x00010734",
29536file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 29537(gdb)
922fbb7b
AC
29538000-exec-run
29539000^running
594fe323 29540(gdb)
a47ec5fe 29541000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
922fbb7b 29542frame=@{func="callee4",args=[],
76ff342d
DJ
29543file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29544fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 29545(gdb)
922fbb7b
AC
29546205-break-delete
29547205^done
594fe323 29548(gdb)
922fbb7b
AC
29549111-exec-return
29550111^done,frame=@{level="0",func="callee3",
29551args=[@{name="strarg",
29552value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
29553file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29554fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 29555(gdb)
922fbb7b
AC
29556@end smallexample
29557
29558
29559@subheading The @code{-exec-run} Command
29560@findex -exec-run
29561
29562@subsubheading Synopsis
29563
29564@smallexample
a79b8f6e 29565 -exec-run [--all | --thread-group N]
922fbb7b
AC
29566@end smallexample
29567
ef21caaf
NR
29568Starts execution of the inferior from the beginning. The inferior
29569executes until either a breakpoint is encountered or the program
29570exits. In the latter case the output will include an exit code, if
29571the program has exited exceptionally.
922fbb7b 29572
a79b8f6e
VP
29573When no option is specified, the current inferior is started. If the
29574@samp{--thread-group} option is specified, it should refer to a thread
29575group of type @samp{process}, and that thread group will be started.
29576If the @samp{--all} option is specified, then all inferiors will be started.
29577
922fbb7b
AC
29578@subsubheading @value{GDBN} Command
29579
29580The corresponding @value{GDBN} command is @samp{run}.
29581
ef21caaf 29582@subsubheading Examples
922fbb7b
AC
29583
29584@smallexample
594fe323 29585(gdb)
922fbb7b
AC
29586-break-insert main
29587^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
594fe323 29588(gdb)
922fbb7b
AC
29589-exec-run
29590^running
594fe323 29591(gdb)
a47ec5fe 29592*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
76ff342d 29593frame=@{func="main",args=[],file="recursive2.c",
948d5102 29594fullname="/home/foo/bar/recursive2.c",line="4"@}
594fe323 29595(gdb)
922fbb7b
AC
29596@end smallexample
29597
ef21caaf
NR
29598@noindent
29599Program exited normally:
29600
29601@smallexample
594fe323 29602(gdb)
ef21caaf
NR
29603-exec-run
29604^running
594fe323 29605(gdb)
ef21caaf
NR
29606x = 55
29607*stopped,reason="exited-normally"
594fe323 29608(gdb)
ef21caaf
NR
29609@end smallexample
29610
29611@noindent
29612Program exited exceptionally:
29613
29614@smallexample
594fe323 29615(gdb)
ef21caaf
NR
29616-exec-run
29617^running
594fe323 29618(gdb)
ef21caaf
NR
29619x = 55
29620*stopped,reason="exited",exit-code="01"
594fe323 29621(gdb)
ef21caaf
NR
29622@end smallexample
29623
29624Another way the program can terminate is if it receives a signal such as
29625@code{SIGINT}. In this case, @sc{gdb/mi} displays this:
29626
29627@smallexample
594fe323 29628(gdb)
ef21caaf
NR
29629*stopped,reason="exited-signalled",signal-name="SIGINT",
29630signal-meaning="Interrupt"
29631@end smallexample
29632
922fbb7b 29633
a2c02241
NR
29634@c @subheading -exec-signal
29635
29636
29637@subheading The @code{-exec-step} Command
29638@findex -exec-step
922fbb7b
AC
29639
29640@subsubheading Synopsis
29641
29642@smallexample
540aa8e7 29643 -exec-step [--reverse]
922fbb7b
AC
29644@end smallexample
29645
a2c02241
NR
29646Resumes execution of the inferior program, stopping when the beginning
29647of the next source line is reached, if the next source line is not a
29648function call. If it is, stop at the first instruction of the called
540aa8e7
MS
29649function. If the @samp{--reverse} option is specified, resumes reverse
29650execution of the inferior program, stopping at the beginning of the
29651previously executed source line.
922fbb7b
AC
29652
29653@subsubheading @value{GDBN} Command
29654
a2c02241 29655The corresponding @value{GDBN} command is @samp{step}.
922fbb7b
AC
29656
29657@subsubheading Example
29658
29659Stepping into a function:
29660
29661@smallexample
29662-exec-step
29663^running
594fe323 29664(gdb)
922fbb7b
AC
29665*stopped,reason="end-stepping-range",
29666frame=@{func="foo",args=[@{name="a",value="10"@},
76ff342d 29667@{name="b",value="0"@}],file="recursive2.c",
948d5102 29668fullname="/home/foo/bar/recursive2.c",line="11"@}
594fe323 29669(gdb)
922fbb7b
AC
29670@end smallexample
29671
29672Regular stepping:
29673
29674@smallexample
29675-exec-step
29676^running
594fe323 29677(gdb)
922fbb7b 29678*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
594fe323 29679(gdb)
922fbb7b
AC
29680@end smallexample
29681
29682
29683@subheading The @code{-exec-step-instruction} Command
29684@findex -exec-step-instruction
29685
29686@subsubheading Synopsis
29687
29688@smallexample
540aa8e7 29689 -exec-step-instruction [--reverse]
922fbb7b
AC
29690@end smallexample
29691
540aa8e7
MS
29692Resumes the inferior which executes one machine instruction. If the
29693@samp{--reverse} option is specified, resumes reverse execution of the
29694inferior program, stopping at the previously executed instruction.
29695The output, once @value{GDBN} has stopped, will vary depending on
29696whether we have stopped in the middle of a source line or not. In the
29697former case, the address at which the program stopped will be printed
29698as well.
922fbb7b
AC
29699
29700@subsubheading @value{GDBN} Command
29701
29702The corresponding @value{GDBN} command is @samp{stepi}.
29703
29704@subsubheading Example
29705
29706@smallexample
594fe323 29707(gdb)
922fbb7b
AC
29708-exec-step-instruction
29709^running
29710
594fe323 29711(gdb)
922fbb7b 29712*stopped,reason="end-stepping-range",
76ff342d 29713frame=@{func="foo",args=[],file="try.c",
948d5102 29714fullname="/home/foo/bar/try.c",line="10"@}
594fe323 29715(gdb)
922fbb7b
AC
29716-exec-step-instruction
29717^running
29718
594fe323 29719(gdb)
922fbb7b 29720*stopped,reason="end-stepping-range",
76ff342d 29721frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
948d5102 29722fullname="/home/foo/bar/try.c",line="10"@}
594fe323 29723(gdb)
922fbb7b
AC
29724@end smallexample
29725
29726
29727@subheading The @code{-exec-until} Command
29728@findex -exec-until
29729
29730@subsubheading Synopsis
29731
29732@smallexample
29733 -exec-until [ @var{location} ]
29734@end smallexample
29735
ef21caaf
NR
29736Executes the inferior until the @var{location} specified in the
29737argument is reached. If there is no argument, the inferior executes
29738until a source line greater than the current one is reached. The
29739reason for stopping in this case will be @samp{location-reached}.
922fbb7b
AC
29740
29741@subsubheading @value{GDBN} Command
29742
29743The corresponding @value{GDBN} command is @samp{until}.
29744
29745@subsubheading Example
29746
29747@smallexample
594fe323 29748(gdb)
922fbb7b
AC
29749-exec-until recursive2.c:6
29750^running
594fe323 29751(gdb)
922fbb7b
AC
29752x = 55
29753*stopped,reason="location-reached",frame=@{func="main",args=[],
948d5102 29754file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@}
594fe323 29755(gdb)
922fbb7b
AC
29756@end smallexample
29757
29758@ignore
29759@subheading -file-clear
29760Is this going away????
29761@end ignore
29762
351ff01a 29763@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
29764@node GDB/MI Stack Manipulation
29765@section @sc{gdb/mi} Stack Manipulation Commands
351ff01a 29766
922fbb7b 29767
a2c02241
NR
29768@subheading The @code{-stack-info-frame} Command
29769@findex -stack-info-frame
922fbb7b
AC
29770
29771@subsubheading Synopsis
29772
29773@smallexample
a2c02241 29774 -stack-info-frame
922fbb7b
AC
29775@end smallexample
29776
a2c02241 29777Get info on the selected frame.
922fbb7b
AC
29778
29779@subsubheading @value{GDBN} Command
29780
a2c02241
NR
29781The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
29782(without arguments).
922fbb7b
AC
29783
29784@subsubheading Example
29785
29786@smallexample
594fe323 29787(gdb)
a2c02241
NR
29788-stack-info-frame
29789^done,frame=@{level="1",addr="0x0001076c",func="callee3",
29790file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29791fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
594fe323 29792(gdb)
922fbb7b
AC
29793@end smallexample
29794
a2c02241
NR
29795@subheading The @code{-stack-info-depth} Command
29796@findex -stack-info-depth
922fbb7b
AC
29797
29798@subsubheading Synopsis
29799
29800@smallexample
a2c02241 29801 -stack-info-depth [ @var{max-depth} ]
922fbb7b
AC
29802@end smallexample
29803
a2c02241
NR
29804Return the depth of the stack. If the integer argument @var{max-depth}
29805is specified, do not count beyond @var{max-depth} frames.
922fbb7b
AC
29806
29807@subsubheading @value{GDBN} Command
29808
a2c02241 29809There's no equivalent @value{GDBN} command.
922fbb7b
AC
29810
29811@subsubheading Example
29812
a2c02241
NR
29813For a stack with frame levels 0 through 11:
29814
922fbb7b 29815@smallexample
594fe323 29816(gdb)
a2c02241
NR
29817-stack-info-depth
29818^done,depth="12"
594fe323 29819(gdb)
a2c02241
NR
29820-stack-info-depth 4
29821^done,depth="4"
594fe323 29822(gdb)
a2c02241
NR
29823-stack-info-depth 12
29824^done,depth="12"
594fe323 29825(gdb)
a2c02241
NR
29826-stack-info-depth 11
29827^done,depth="11"
594fe323 29828(gdb)
a2c02241
NR
29829-stack-info-depth 13
29830^done,depth="12"
594fe323 29831(gdb)
922fbb7b
AC
29832@end smallexample
29833
a2c02241
NR
29834@subheading The @code{-stack-list-arguments} Command
29835@findex -stack-list-arguments
922fbb7b
AC
29836
29837@subsubheading Synopsis
29838
29839@smallexample
3afae151 29840 -stack-list-arguments @var{print-values}
a2c02241 29841 [ @var{low-frame} @var{high-frame} ]
922fbb7b
AC
29842@end smallexample
29843
a2c02241
NR
29844Display a list of the arguments for the frames between @var{low-frame}
29845and @var{high-frame} (inclusive). If @var{low-frame} and
2f1acb09
VP
29846@var{high-frame} are not provided, list the arguments for the whole
29847call stack. If the two arguments are equal, show the single frame
29848at the corresponding level. It is an error if @var{low-frame} is
29849larger than the actual number of frames. On the other hand,
29850@var{high-frame} may be larger than the actual number of frames, in
29851which case only existing frames will be returned.
a2c02241 29852
3afae151
VP
29853If @var{print-values} is 0 or @code{--no-values}, print only the names of
29854the variables; if it is 1 or @code{--all-values}, print also their
29855values; and if it is 2 or @code{--simple-values}, print the name,
29856type and value for simple data types, and the name and type for arrays,
29857structures and unions.
922fbb7b 29858
b3372f91
VP
29859Use of this command to obtain arguments in a single frame is
29860deprecated in favor of the @samp{-stack-list-variables} command.
29861
922fbb7b
AC
29862@subsubheading @value{GDBN} Command
29863
a2c02241
NR
29864@value{GDBN} does not have an equivalent command. @code{gdbtk} has a
29865@samp{gdb_get_args} command which partially overlaps with the
29866functionality of @samp{-stack-list-arguments}.
922fbb7b
AC
29867
29868@subsubheading Example
922fbb7b 29869
a2c02241 29870@smallexample
594fe323 29871(gdb)
a2c02241
NR
29872-stack-list-frames
29873^done,
29874stack=[
29875frame=@{level="0",addr="0x00010734",func="callee4",
29876file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29877fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
29878frame=@{level="1",addr="0x0001076c",func="callee3",
29879file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29880fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
29881frame=@{level="2",addr="0x0001078c",func="callee2",
29882file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29883fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
29884frame=@{level="3",addr="0x000107b4",func="callee1",
29885file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29886fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
29887frame=@{level="4",addr="0x000107e0",func="main",
29888file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29889fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
594fe323 29890(gdb)
a2c02241
NR
29891-stack-list-arguments 0
29892^done,
29893stack-args=[
29894frame=@{level="0",args=[]@},
29895frame=@{level="1",args=[name="strarg"]@},
29896frame=@{level="2",args=[name="intarg",name="strarg"]@},
29897frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
29898frame=@{level="4",args=[]@}]
594fe323 29899(gdb)
a2c02241
NR
29900-stack-list-arguments 1
29901^done,
29902stack-args=[
29903frame=@{level="0",args=[]@},
29904frame=@{level="1",
29905 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
29906frame=@{level="2",args=[
29907@{name="intarg",value="2"@},
29908@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
29909@{frame=@{level="3",args=[
29910@{name="intarg",value="2"@},
29911@{name="strarg",value="0x11940 \"A string argument.\""@},
29912@{name="fltarg",value="3.5"@}]@},
29913frame=@{level="4",args=[]@}]
594fe323 29914(gdb)
a2c02241
NR
29915-stack-list-arguments 0 2 2
29916^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
594fe323 29917(gdb)
a2c02241
NR
29918-stack-list-arguments 1 2 2
29919^done,stack-args=[frame=@{level="2",
29920args=[@{name="intarg",value="2"@},
29921@{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
594fe323 29922(gdb)
a2c02241
NR
29923@end smallexample
29924
29925@c @subheading -stack-list-exception-handlers
922fbb7b 29926
a2c02241
NR
29927
29928@subheading The @code{-stack-list-frames} Command
29929@findex -stack-list-frames
1abaf70c
BR
29930
29931@subsubheading Synopsis
29932
29933@smallexample
a2c02241 29934 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
1abaf70c
BR
29935@end smallexample
29936
a2c02241
NR
29937List the frames currently on the stack. For each frame it displays the
29938following info:
29939
29940@table @samp
29941@item @var{level}
d3e8051b 29942The frame number, 0 being the topmost frame, i.e., the innermost function.
a2c02241
NR
29943@item @var{addr}
29944The @code{$pc} value for that frame.
29945@item @var{func}
29946Function name.
29947@item @var{file}
29948File name of the source file where the function lives.
7d288aaa
TT
29949@item @var{fullname}
29950The full file name of the source file where the function lives.
a2c02241
NR
29951@item @var{line}
29952Line number corresponding to the @code{$pc}.
7d288aaa
TT
29953@item @var{from}
29954The shared library where this function is defined. This is only given
29955if the frame's function is not known.
a2c02241
NR
29956@end table
29957
29958If invoked without arguments, this command prints a backtrace for the
29959whole stack. If given two integer arguments, it shows the frames whose
29960levels are between the two arguments (inclusive). If the two arguments
2ab1eb7a
VP
29961are equal, it shows the single frame at the corresponding level. It is
29962an error if @var{low-frame} is larger than the actual number of
a5451f4e 29963frames. On the other hand, @var{high-frame} may be larger than the
2ab1eb7a 29964actual number of frames, in which case only existing frames will be returned.
1abaf70c
BR
29965
29966@subsubheading @value{GDBN} Command
29967
a2c02241 29968The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
1abaf70c
BR
29969
29970@subsubheading Example
29971
a2c02241
NR
29972Full stack backtrace:
29973
1abaf70c 29974@smallexample
594fe323 29975(gdb)
a2c02241
NR
29976-stack-list-frames
29977^done,stack=
29978[frame=@{level="0",addr="0x0001076c",func="foo",
29979 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@},
29980frame=@{level="1",addr="0x000107a4",func="foo",
29981 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29982frame=@{level="2",addr="0x000107a4",func="foo",
29983 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29984frame=@{level="3",addr="0x000107a4",func="foo",
29985 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29986frame=@{level="4",addr="0x000107a4",func="foo",
29987 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29988frame=@{level="5",addr="0x000107a4",func="foo",
29989 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29990frame=@{level="6",addr="0x000107a4",func="foo",
29991 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29992frame=@{level="7",addr="0x000107a4",func="foo",
29993 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29994frame=@{level="8",addr="0x000107a4",func="foo",
29995 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29996frame=@{level="9",addr="0x000107a4",func="foo",
29997 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29998frame=@{level="10",addr="0x000107a4",func="foo",
29999 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
30000frame=@{level="11",addr="0x00010738",func="main",
30001 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}]
594fe323 30002(gdb)
1abaf70c
BR
30003@end smallexample
30004
a2c02241 30005Show frames between @var{low_frame} and @var{high_frame}:
1abaf70c 30006
a2c02241 30007@smallexample
594fe323 30008(gdb)
a2c02241
NR
30009-stack-list-frames 3 5
30010^done,stack=
30011[frame=@{level="3",addr="0x000107a4",func="foo",
30012 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
30013frame=@{level="4",addr="0x000107a4",func="foo",
30014 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
30015frame=@{level="5",addr="0x000107a4",func="foo",
30016 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 30017(gdb)
a2c02241 30018@end smallexample
922fbb7b 30019
a2c02241 30020Show a single frame:
922fbb7b
AC
30021
30022@smallexample
594fe323 30023(gdb)
a2c02241
NR
30024-stack-list-frames 3 3
30025^done,stack=
30026[frame=@{level="3",addr="0x000107a4",func="foo",
30027 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 30028(gdb)
922fbb7b
AC
30029@end smallexample
30030
922fbb7b 30031
a2c02241
NR
30032@subheading The @code{-stack-list-locals} Command
30033@findex -stack-list-locals
57c22c6c 30034
a2c02241 30035@subsubheading Synopsis
922fbb7b
AC
30036
30037@smallexample
a2c02241 30038 -stack-list-locals @var{print-values}
922fbb7b
AC
30039@end smallexample
30040
a2c02241
NR
30041Display the local variable names for the selected frame. If
30042@var{print-values} is 0 or @code{--no-values}, print only the names of
30043the variables; if it is 1 or @code{--all-values}, print also their
30044values; and if it is 2 or @code{--simple-values}, print the name,
3afae151 30045type and value for simple data types, and the name and type for arrays,
a2c02241
NR
30046structures and unions. In this last case, a frontend can immediately
30047display the value of simple data types and create variable objects for
d3e8051b 30048other data types when the user wishes to explore their values in
a2c02241 30049more detail.
922fbb7b 30050
b3372f91
VP
30051This command is deprecated in favor of the
30052@samp{-stack-list-variables} command.
30053
922fbb7b
AC
30054@subsubheading @value{GDBN} Command
30055
a2c02241 30056@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
922fbb7b
AC
30057
30058@subsubheading Example
922fbb7b
AC
30059
30060@smallexample
594fe323 30061(gdb)
a2c02241
NR
30062-stack-list-locals 0
30063^done,locals=[name="A",name="B",name="C"]
594fe323 30064(gdb)
a2c02241
NR
30065-stack-list-locals --all-values
30066^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
30067 @{name="C",value="@{1, 2, 3@}"@}]
30068-stack-list-locals --simple-values
30069^done,locals=[@{name="A",type="int",value="1"@},
30070 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
594fe323 30071(gdb)
922fbb7b
AC
30072@end smallexample
30073
b3372f91
VP
30074@subheading The @code{-stack-list-variables} Command
30075@findex -stack-list-variables
30076
30077@subsubheading Synopsis
30078
30079@smallexample
30080 -stack-list-variables @var{print-values}
30081@end smallexample
30082
30083Display the names of local variables and function arguments for the selected frame. If
30084@var{print-values} is 0 or @code{--no-values}, print only the names of
30085the variables; if it is 1 or @code{--all-values}, print also their
30086values; and if it is 2 or @code{--simple-values}, print the name,
3afae151 30087type and value for simple data types, and the name and type for arrays,
b3372f91
VP
30088structures and unions.
30089
30090@subsubheading Example
30091
30092@smallexample
30093(gdb)
30094-stack-list-variables --thread 1 --frame 0 --all-values
4f412fd0 30095^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}]
b3372f91
VP
30096(gdb)
30097@end smallexample
30098
922fbb7b 30099
a2c02241
NR
30100@subheading The @code{-stack-select-frame} Command
30101@findex -stack-select-frame
922fbb7b
AC
30102
30103@subsubheading Synopsis
30104
30105@smallexample
a2c02241 30106 -stack-select-frame @var{framenum}
922fbb7b
AC
30107@end smallexample
30108
a2c02241
NR
30109Change the selected frame. Select a different frame @var{framenum} on
30110the stack.
922fbb7b 30111
c3b108f7
VP
30112This command in deprecated in favor of passing the @samp{--frame}
30113option to every command.
30114
922fbb7b
AC
30115@subsubheading @value{GDBN} Command
30116
a2c02241
NR
30117The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
30118@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
922fbb7b
AC
30119
30120@subsubheading Example
30121
30122@smallexample
594fe323 30123(gdb)
a2c02241 30124-stack-select-frame 2
922fbb7b 30125^done
594fe323 30126(gdb)
922fbb7b
AC
30127@end smallexample
30128
30129@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
30130@node GDB/MI Variable Objects
30131@section @sc{gdb/mi} Variable Objects
922fbb7b 30132
a1b5960f 30133@ignore
922fbb7b 30134
a2c02241 30135@subheading Motivation for Variable Objects in @sc{gdb/mi}
922fbb7b 30136
a2c02241
NR
30137For the implementation of a variable debugger window (locals, watched
30138expressions, etc.), we are proposing the adaptation of the existing code
30139used by @code{Insight}.
922fbb7b 30140
a2c02241 30141The two main reasons for that are:
922fbb7b 30142
a2c02241
NR
30143@enumerate 1
30144@item
30145It has been proven in practice (it is already on its second generation).
922fbb7b 30146
a2c02241
NR
30147@item
30148It will shorten development time (needless to say how important it is
30149now).
30150@end enumerate
922fbb7b 30151
a2c02241
NR
30152The original interface was designed to be used by Tcl code, so it was
30153slightly changed so it could be used through @sc{gdb/mi}. This section
30154describes the @sc{gdb/mi} operations that will be available and gives some
30155hints about their use.
922fbb7b 30156
a2c02241
NR
30157@emph{Note}: In addition to the set of operations described here, we
30158expect the @sc{gui} implementation of a variable window to require, at
30159least, the following operations:
922fbb7b 30160
a2c02241
NR
30161@itemize @bullet
30162@item @code{-gdb-show} @code{output-radix}
30163@item @code{-stack-list-arguments}
30164@item @code{-stack-list-locals}
30165@item @code{-stack-select-frame}
30166@end itemize
922fbb7b 30167
a1b5960f
VP
30168@end ignore
30169
c8b2f53c 30170@subheading Introduction to Variable Objects
922fbb7b 30171
a2c02241 30172@cindex variable objects in @sc{gdb/mi}
c8b2f53c
VP
30173
30174Variable objects are "object-oriented" MI interface for examining and
30175changing values of expressions. Unlike some other MI interfaces that
30176work with expressions, variable objects are specifically designed for
30177simple and efficient presentation in the frontend. A variable object
30178is identified by string name. When a variable object is created, the
30179frontend specifies the expression for that variable object. The
30180expression can be a simple variable, or it can be an arbitrary complex
30181expression, and can even involve CPU registers. After creating a
30182variable object, the frontend can invoke other variable object
30183operations---for example to obtain or change the value of a variable
30184object, or to change display format.
30185
30186Variable objects have hierarchical tree structure. Any variable object
30187that corresponds to a composite type, such as structure in C, has
30188a number of child variable objects, for example corresponding to each
30189element of a structure. A child variable object can itself have
30190children, recursively. Recursion ends when we reach
25d5ea92
VP
30191leaf variable objects, which always have built-in types. Child variable
30192objects are created only by explicit request, so if a frontend
30193is not interested in the children of a particular variable object, no
30194child will be created.
c8b2f53c
VP
30195
30196For a leaf variable object it is possible to obtain its value as a
30197string, or set the value from a string. String value can be also
30198obtained for a non-leaf variable object, but it's generally a string
30199that only indicates the type of the object, and does not list its
30200contents. Assignment to a non-leaf variable object is not allowed.
30201
30202A frontend does not need to read the values of all variable objects each time
30203the program stops. Instead, MI provides an update command that lists all
30204variable objects whose values has changed since the last update
30205operation. This considerably reduces the amount of data that must
25d5ea92
VP
30206be transferred to the frontend. As noted above, children variable
30207objects are created on demand, and only leaf variable objects have a
30208real value. As result, gdb will read target memory only for leaf
30209variables that frontend has created.
30210
30211The automatic update is not always desirable. For example, a frontend
30212might want to keep a value of some expression for future reference,
30213and never update it. For another example, fetching memory is
30214relatively slow for embedded targets, so a frontend might want
30215to disable automatic update for the variables that are either not
30216visible on the screen, or ``closed''. This is possible using so
30217called ``frozen variable objects''. Such variable objects are never
30218implicitly updated.
922fbb7b 30219
c3b108f7
VP
30220Variable objects can be either @dfn{fixed} or @dfn{floating}. For the
30221fixed variable object, the expression is parsed when the variable
30222object is created, including associating identifiers to specific
30223variables. The meaning of expression never changes. For a floating
30224variable object the values of variables whose names appear in the
30225expressions are re-evaluated every time in the context of the current
30226frame. Consider this example:
30227
30228@smallexample
30229void do_work(...)
30230@{
30231 struct work_state state;
30232
30233 if (...)
30234 do_work(...);
30235@}
30236@end smallexample
30237
30238If a fixed variable object for the @code{state} variable is created in
7a9dd1b2 30239this function, and we enter the recursive call, the variable
c3b108f7
VP
30240object will report the value of @code{state} in the top-level
30241@code{do_work} invocation. On the other hand, a floating variable
30242object will report the value of @code{state} in the current frame.
30243
30244If an expression specified when creating a fixed variable object
30245refers to a local variable, the variable object becomes bound to the
30246thread and frame in which the variable object is created. When such
30247variable object is updated, @value{GDBN} makes sure that the
30248thread/frame combination the variable object is bound to still exists,
30249and re-evaluates the variable object in context of that thread/frame.
30250
a2c02241
NR
30251The following is the complete set of @sc{gdb/mi} operations defined to
30252access this functionality:
922fbb7b 30253
a2c02241
NR
30254@multitable @columnfractions .4 .6
30255@item @strong{Operation}
30256@tab @strong{Description}
922fbb7b 30257
0cc7d26f
TT
30258@item @code{-enable-pretty-printing}
30259@tab enable Python-based pretty-printing
a2c02241
NR
30260@item @code{-var-create}
30261@tab create a variable object
30262@item @code{-var-delete}
22d8a470 30263@tab delete the variable object and/or its children
a2c02241
NR
30264@item @code{-var-set-format}
30265@tab set the display format of this variable
30266@item @code{-var-show-format}
30267@tab show the display format of this variable
30268@item @code{-var-info-num-children}
30269@tab tells how many children this object has
30270@item @code{-var-list-children}
30271@tab return a list of the object's children
30272@item @code{-var-info-type}
30273@tab show the type of this variable object
30274@item @code{-var-info-expression}
02142340
VP
30275@tab print parent-relative expression that this variable object represents
30276@item @code{-var-info-path-expression}
30277@tab print full expression that this variable object represents
a2c02241
NR
30278@item @code{-var-show-attributes}
30279@tab is this variable editable? does it exist here?
30280@item @code{-var-evaluate-expression}
30281@tab get the value of this variable
30282@item @code{-var-assign}
30283@tab set the value of this variable
30284@item @code{-var-update}
30285@tab update the variable and its children
25d5ea92
VP
30286@item @code{-var-set-frozen}
30287@tab set frozeness attribute
0cc7d26f
TT
30288@item @code{-var-set-update-range}
30289@tab set range of children to display on update
a2c02241 30290@end multitable
922fbb7b 30291
a2c02241
NR
30292In the next subsection we describe each operation in detail and suggest
30293how it can be used.
922fbb7b 30294
a2c02241 30295@subheading Description And Use of Operations on Variable Objects
922fbb7b 30296
0cc7d26f
TT
30297@subheading The @code{-enable-pretty-printing} Command
30298@findex -enable-pretty-printing
30299
30300@smallexample
30301-enable-pretty-printing
30302@end smallexample
30303
30304@value{GDBN} allows Python-based visualizers to affect the output of the
30305MI variable object commands. However, because there was no way to
30306implement this in a fully backward-compatible way, a front end must
30307request that this functionality be enabled.
30308
30309Once enabled, this feature cannot be disabled.
30310
30311Note that if Python support has not been compiled into @value{GDBN},
30312this command will still succeed (and do nothing).
30313
f43030c4
TT
30314This feature is currently (as of @value{GDBN} 7.0) experimental, and
30315may work differently in future versions of @value{GDBN}.
30316
a2c02241
NR
30317@subheading The @code{-var-create} Command
30318@findex -var-create
ef21caaf 30319
a2c02241 30320@subsubheading Synopsis
ef21caaf 30321
a2c02241
NR
30322@smallexample
30323 -var-create @{@var{name} | "-"@}
c3b108f7 30324 @{@var{frame-addr} | "*" | "@@"@} @var{expression}
a2c02241
NR
30325@end smallexample
30326
30327This operation creates a variable object, which allows the monitoring of
30328a variable, the result of an expression, a memory cell or a CPU
30329register.
ef21caaf 30330
a2c02241
NR
30331The @var{name} parameter is the string by which the object can be
30332referenced. It must be unique. If @samp{-} is specified, the varobj
30333system will generate a string ``varNNNNNN'' automatically. It will be
c3b108f7 30334unique provided that one does not specify @var{name} of that format.
a2c02241 30335The command fails if a duplicate name is found.
ef21caaf 30336
a2c02241
NR
30337The frame under which the expression should be evaluated can be
30338specified by @var{frame-addr}. A @samp{*} indicates that the current
c3b108f7
VP
30339frame should be used. A @samp{@@} indicates that a floating variable
30340object must be created.
922fbb7b 30341
a2c02241
NR
30342@var{expression} is any expression valid on the current language set (must not
30343begin with a @samp{*}), or one of the following:
922fbb7b 30344
a2c02241
NR
30345@itemize @bullet
30346@item
30347@samp{*@var{addr}}, where @var{addr} is the address of a memory cell
922fbb7b 30348
a2c02241
NR
30349@item
30350@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
922fbb7b 30351
a2c02241
NR
30352@item
30353@samp{$@var{regname}} --- a CPU register name
30354@end itemize
922fbb7b 30355
0cc7d26f
TT
30356@cindex dynamic varobj
30357A varobj's contents may be provided by a Python-based pretty-printer. In this
30358case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs
30359have slightly different semantics in some cases. If the
30360@code{-enable-pretty-printing} command is not sent, then @value{GDBN}
30361will never create a dynamic varobj. This ensures backward
30362compatibility for existing clients.
30363
a2c02241 30364@subsubheading Result
922fbb7b 30365
0cc7d26f
TT
30366This operation returns attributes of the newly-created varobj. These
30367are:
30368
30369@table @samp
30370@item name
30371The name of the varobj.
30372
30373@item numchild
30374The number of children of the varobj. This number is not necessarily
30375reliable for a dynamic varobj. Instead, you must examine the
30376@samp{has_more} attribute.
30377
30378@item value
30379The varobj's scalar value. For a varobj whose type is some sort of
30380aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value
30381will not be interesting.
30382
30383@item type
30384The varobj's type. This is a string representation of the type, as
8264ba82
AG
30385would be printed by the @value{GDBN} CLI. If @samp{print object}
30386(@pxref{Print Settings, set print object}) is set to @code{on}, the
30387@emph{actual} (derived) type of the object is shown rather than the
30388@emph{declared} one.
0cc7d26f
TT
30389
30390@item thread-id
30391If a variable object is bound to a specific thread, then this is the
30392thread's identifier.
30393
30394@item has_more
30395For a dynamic varobj, this indicates whether there appear to be any
30396children available. For a non-dynamic varobj, this will be 0.
30397
30398@item dynamic
30399This attribute will be present and have the value @samp{1} if the
30400varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30401then this attribute will not be present.
30402
30403@item displayhint
30404A dynamic varobj can supply a display hint to the front end. The
30405value comes directly from the Python pretty-printer object's
4c374409 30406@code{display_hint} method. @xref{Pretty Printing API}.
0cc7d26f
TT
30407@end table
30408
30409Typical output will look like this:
922fbb7b
AC
30410
30411@smallexample
0cc7d26f
TT
30412 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}",
30413 has_more="@var{has_more}"
dcaaae04
NR
30414@end smallexample
30415
a2c02241
NR
30416
30417@subheading The @code{-var-delete} Command
30418@findex -var-delete
922fbb7b
AC
30419
30420@subsubheading Synopsis
30421
30422@smallexample
22d8a470 30423 -var-delete [ -c ] @var{name}
922fbb7b
AC
30424@end smallexample
30425
a2c02241 30426Deletes a previously created variable object and all of its children.
22d8a470 30427With the @samp{-c} option, just deletes the children.
922fbb7b 30428
a2c02241 30429Returns an error if the object @var{name} is not found.
922fbb7b 30430
922fbb7b 30431
a2c02241
NR
30432@subheading The @code{-var-set-format} Command
30433@findex -var-set-format
922fbb7b 30434
a2c02241 30435@subsubheading Synopsis
922fbb7b
AC
30436
30437@smallexample
a2c02241 30438 -var-set-format @var{name} @var{format-spec}
922fbb7b
AC
30439@end smallexample
30440
a2c02241
NR
30441Sets the output format for the value of the object @var{name} to be
30442@var{format-spec}.
30443
de051565 30444@anchor{-var-set-format}
a2c02241
NR
30445The syntax for the @var{format-spec} is as follows:
30446
30447@smallexample
30448 @var{format-spec} @expansion{}
30449 @{binary | decimal | hexadecimal | octal | natural@}
30450@end smallexample
30451
c8b2f53c
VP
30452The natural format is the default format choosen automatically
30453based on the variable type (like decimal for an @code{int}, hex
30454for pointers, etc.).
30455
30456For a variable with children, the format is set only on the
30457variable itself, and the children are not affected.
a2c02241
NR
30458
30459@subheading The @code{-var-show-format} Command
30460@findex -var-show-format
922fbb7b
AC
30461
30462@subsubheading Synopsis
30463
30464@smallexample
a2c02241 30465 -var-show-format @var{name}
922fbb7b
AC
30466@end smallexample
30467
a2c02241 30468Returns the format used to display the value of the object @var{name}.
922fbb7b 30469
a2c02241
NR
30470@smallexample
30471 @var{format} @expansion{}
30472 @var{format-spec}
30473@end smallexample
922fbb7b 30474
922fbb7b 30475
a2c02241
NR
30476@subheading The @code{-var-info-num-children} Command
30477@findex -var-info-num-children
30478
30479@subsubheading Synopsis
30480
30481@smallexample
30482 -var-info-num-children @var{name}
30483@end smallexample
30484
30485Returns the number of children of a variable object @var{name}:
30486
30487@smallexample
30488 numchild=@var{n}
30489@end smallexample
30490
0cc7d26f
TT
30491Note that this number is not completely reliable for a dynamic varobj.
30492It will return the current number of children, but more children may
30493be available.
30494
a2c02241
NR
30495
30496@subheading The @code{-var-list-children} Command
30497@findex -var-list-children
30498
30499@subsubheading Synopsis
30500
30501@smallexample
0cc7d26f 30502 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}]
a2c02241 30503@end smallexample
b569d230 30504@anchor{-var-list-children}
a2c02241
NR
30505
30506Return a list of the children of the specified variable object and
30507create variable objects for them, if they do not already exist. With
f5011d11 30508a single argument or if @var{print-values} has a value of 0 or
a2c02241
NR
30509@code{--no-values}, print only the names of the variables; if
30510@var{print-values} is 1 or @code{--all-values}, also print their
30511values; and if it is 2 or @code{--simple-values} print the name and
30512value for simple data types and just the name for arrays, structures
30513and unions.
922fbb7b 30514
0cc7d26f
TT
30515@var{from} and @var{to}, if specified, indicate the range of children
30516to report. If @var{from} or @var{to} is less than zero, the range is
30517reset and all children will be reported. Otherwise, children starting
30518at @var{from} (zero-based) and up to and excluding @var{to} will be
30519reported.
30520
30521If a child range is requested, it will only affect the current call to
30522@code{-var-list-children}, but not future calls to @code{-var-update}.
30523For this, you must instead use @code{-var-set-update-range}. The
30524intent of this approach is to enable a front end to implement any
30525update approach it likes; for example, scrolling a view may cause the
30526front end to request more children with @code{-var-list-children}, and
30527then the front end could call @code{-var-set-update-range} with a
30528different range to ensure that future updates are restricted to just
30529the visible items.
30530
b569d230
EZ
30531For each child the following results are returned:
30532
30533@table @var
30534
30535@item name
30536Name of the variable object created for this child.
30537
30538@item exp
30539The expression to be shown to the user by the front end to designate this child.
30540For example this may be the name of a structure member.
30541
0cc7d26f
TT
30542For a dynamic varobj, this value cannot be used to form an
30543expression. There is no way to do this at all with a dynamic varobj.
30544
b569d230
EZ
30545For C/C@t{++} structures there are several pseudo children returned to
30546designate access qualifiers. For these pseudo children @var{exp} is
30547@samp{public}, @samp{private}, or @samp{protected}. In this case the
30548type and value are not present.
30549
0cc7d26f
TT
30550A dynamic varobj will not report the access qualifying
30551pseudo-children, regardless of the language. This information is not
30552available at all with a dynamic varobj.
30553
b569d230 30554@item numchild
0cc7d26f
TT
30555Number of children this child has. For a dynamic varobj, this will be
305560.
b569d230
EZ
30557
30558@item type
8264ba82
AG
30559The type of the child. If @samp{print object}
30560(@pxref{Print Settings, set print object}) is set to @code{on}, the
30561@emph{actual} (derived) type of the object is shown rather than the
30562@emph{declared} one.
b569d230
EZ
30563
30564@item value
30565If values were requested, this is the value.
30566
30567@item thread-id
30568If this variable object is associated with a thread, this is the thread id.
30569Otherwise this result is not present.
30570
30571@item frozen
30572If the variable object is frozen, this variable will be present with a value of 1.
30573@end table
30574
0cc7d26f
TT
30575The result may have its own attributes:
30576
30577@table @samp
30578@item displayhint
30579A dynamic varobj can supply a display hint to the front end. The
30580value comes directly from the Python pretty-printer object's
4c374409 30581@code{display_hint} method. @xref{Pretty Printing API}.
0cc7d26f
TT
30582
30583@item has_more
30584This is an integer attribute which is nonzero if there are children
30585remaining after the end of the selected range.
30586@end table
30587
922fbb7b
AC
30588@subsubheading Example
30589
30590@smallexample
594fe323 30591(gdb)
a2c02241 30592 -var-list-children n
b569d230 30593 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 30594 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
594fe323 30595(gdb)
a2c02241 30596 -var-list-children --all-values n
b569d230 30597 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 30598 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
922fbb7b
AC
30599@end smallexample
30600
922fbb7b 30601
a2c02241
NR
30602@subheading The @code{-var-info-type} Command
30603@findex -var-info-type
922fbb7b 30604
a2c02241
NR
30605@subsubheading Synopsis
30606
30607@smallexample
30608 -var-info-type @var{name}
30609@end smallexample
30610
30611Returns the type of the specified variable @var{name}. The type is
30612returned as a string in the same format as it is output by the
30613@value{GDBN} CLI:
30614
30615@smallexample
30616 type=@var{typename}
30617@end smallexample
30618
30619
30620@subheading The @code{-var-info-expression} Command
30621@findex -var-info-expression
922fbb7b
AC
30622
30623@subsubheading Synopsis
30624
30625@smallexample
a2c02241 30626 -var-info-expression @var{name}
922fbb7b
AC
30627@end smallexample
30628
02142340
VP
30629Returns a string that is suitable for presenting this
30630variable object in user interface. The string is generally
30631not valid expression in the current language, and cannot be evaluated.
30632
30633For example, if @code{a} is an array, and variable object
30634@code{A} was created for @code{a}, then we'll get this output:
922fbb7b 30635
a2c02241 30636@smallexample
02142340
VP
30637(gdb) -var-info-expression A.1
30638^done,lang="C",exp="1"
a2c02241 30639@end smallexample
922fbb7b 30640
a2c02241 30641@noindent
02142340
VP
30642Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}.
30643
30644Note that the output of the @code{-var-list-children} command also
30645includes those expressions, so the @code{-var-info-expression} command
30646is of limited use.
30647
30648@subheading The @code{-var-info-path-expression} Command
30649@findex -var-info-path-expression
30650
30651@subsubheading Synopsis
30652
30653@smallexample
30654 -var-info-path-expression @var{name}
30655@end smallexample
30656
30657Returns an expression that can be evaluated in the current
30658context and will yield the same value that a variable object has.
30659Compare this with the @code{-var-info-expression} command, which
30660result can be used only for UI presentation. Typical use of
30661the @code{-var-info-path-expression} command is creating a
30662watchpoint from a variable object.
30663
0cc7d26f
TT
30664This command is currently not valid for children of a dynamic varobj,
30665and will give an error when invoked on one.
30666
02142340
VP
30667For example, suppose @code{C} is a C@t{++} class, derived from class
30668@code{Base}, and that the @code{Base} class has a member called
30669@code{m_size}. Assume a variable @code{c} is has the type of
30670@code{C} and a variable object @code{C} was created for variable
30671@code{c}. Then, we'll get this output:
30672@smallexample
30673(gdb) -var-info-path-expression C.Base.public.m_size
30674^done,path_expr=((Base)c).m_size)
30675@end smallexample
922fbb7b 30676
a2c02241
NR
30677@subheading The @code{-var-show-attributes} Command
30678@findex -var-show-attributes
922fbb7b 30679
a2c02241 30680@subsubheading Synopsis
922fbb7b 30681
a2c02241
NR
30682@smallexample
30683 -var-show-attributes @var{name}
30684@end smallexample
922fbb7b 30685
a2c02241 30686List attributes of the specified variable object @var{name}:
922fbb7b
AC
30687
30688@smallexample
a2c02241 30689 status=@var{attr} [ ( ,@var{attr} )* ]
922fbb7b
AC
30690@end smallexample
30691
a2c02241
NR
30692@noindent
30693where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
30694
30695@subheading The @code{-var-evaluate-expression} Command
30696@findex -var-evaluate-expression
30697
30698@subsubheading Synopsis
30699
30700@smallexample
de051565 30701 -var-evaluate-expression [-f @var{format-spec}] @var{name}
a2c02241
NR
30702@end smallexample
30703
30704Evaluates the expression that is represented by the specified variable
de051565
MK
30705object and returns its value as a string. The format of the string
30706can be specified with the @samp{-f} option. The possible values of
30707this option are the same as for @code{-var-set-format}
30708(@pxref{-var-set-format}). If the @samp{-f} option is not specified,
30709the current display format will be used. The current display format
30710can be changed using the @code{-var-set-format} command.
a2c02241
NR
30711
30712@smallexample
30713 value=@var{value}
30714@end smallexample
30715
30716Note that one must invoke @code{-var-list-children} for a variable
30717before the value of a child variable can be evaluated.
30718
30719@subheading The @code{-var-assign} Command
30720@findex -var-assign
30721
30722@subsubheading Synopsis
30723
30724@smallexample
30725 -var-assign @var{name} @var{expression}
30726@end smallexample
30727
30728Assigns the value of @var{expression} to the variable object specified
30729by @var{name}. The object must be @samp{editable}. If the variable's
30730value is altered by the assign, the variable will show up in any
30731subsequent @code{-var-update} list.
30732
30733@subsubheading Example
922fbb7b
AC
30734
30735@smallexample
594fe323 30736(gdb)
a2c02241
NR
30737-var-assign var1 3
30738^done,value="3"
594fe323 30739(gdb)
a2c02241
NR
30740-var-update *
30741^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
594fe323 30742(gdb)
922fbb7b
AC
30743@end smallexample
30744
a2c02241
NR
30745@subheading The @code{-var-update} Command
30746@findex -var-update
30747
30748@subsubheading Synopsis
30749
30750@smallexample
30751 -var-update [@var{print-values}] @{@var{name} | "*"@}
30752@end smallexample
30753
c8b2f53c
VP
30754Reevaluate the expressions corresponding to the variable object
30755@var{name} and all its direct and indirect children, and return the
36ece8b3
NR
30756list of variable objects whose values have changed; @var{name} must
30757be a root variable object. Here, ``changed'' means that the result of
30758@code{-var-evaluate-expression} before and after the
30759@code{-var-update} is different. If @samp{*} is used as the variable
9f708cb2
VP
30760object names, all existing variable objects are updated, except
30761for frozen ones (@pxref{-var-set-frozen}). The option
36ece8b3 30762@var{print-values} determines whether both names and values, or just
de051565 30763names are printed. The possible values of this option are the same
36ece8b3
NR
30764as for @code{-var-list-children} (@pxref{-var-list-children}). It is
30765recommended to use the @samp{--all-values} option, to reduce the
30766number of MI commands needed on each program stop.
c8b2f53c 30767
c3b108f7
VP
30768With the @samp{*} parameter, if a variable object is bound to a
30769currently running thread, it will not be updated, without any
30770diagnostic.
a2c02241 30771
0cc7d26f
TT
30772If @code{-var-set-update-range} was previously used on a varobj, then
30773only the selected range of children will be reported.
922fbb7b 30774
0cc7d26f
TT
30775@code{-var-update} reports all the changed varobjs in a tuple named
30776@samp{changelist}.
30777
30778Each item in the change list is itself a tuple holding:
30779
30780@table @samp
30781@item name
30782The name of the varobj.
30783
30784@item value
30785If values were requested for this update, then this field will be
30786present and will hold the value of the varobj.
922fbb7b 30787
0cc7d26f 30788@item in_scope
9f708cb2 30789@anchor{-var-update}
0cc7d26f 30790This field is a string which may take one of three values:
36ece8b3
NR
30791
30792@table @code
30793@item "true"
30794The variable object's current value is valid.
30795
30796@item "false"
30797The variable object does not currently hold a valid value but it may
30798hold one in the future if its associated expression comes back into
30799scope.
30800
30801@item "invalid"
30802The variable object no longer holds a valid value.
30803This can occur when the executable file being debugged has changed,
30804either through recompilation or by using the @value{GDBN} @code{file}
30805command. The front end should normally choose to delete these variable
30806objects.
30807@end table
30808
30809In the future new values may be added to this list so the front should
30810be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}.
30811
0cc7d26f
TT
30812@item type_changed
30813This is only present if the varobj is still valid. If the type
30814changed, then this will be the string @samp{true}; otherwise it will
30815be @samp{false}.
30816
7191c139
JB
30817When a varobj's type changes, its children are also likely to have
30818become incorrect. Therefore, the varobj's children are automatically
30819deleted when this attribute is @samp{true}. Also, the varobj's update
30820range, when set using the @code{-var-set-update-range} command, is
30821unset.
30822
0cc7d26f
TT
30823@item new_type
30824If the varobj's type changed, then this field will be present and will
30825hold the new type.
30826
30827@item new_num_children
30828For a dynamic varobj, if the number of children changed, or if the
30829type changed, this will be the new number of children.
30830
30831The @samp{numchild} field in other varobj responses is generally not
30832valid for a dynamic varobj -- it will show the number of children that
30833@value{GDBN} knows about, but because dynamic varobjs lazily
30834instantiate their children, this will not reflect the number of
30835children which may be available.
30836
30837The @samp{new_num_children} attribute only reports changes to the
30838number of children known by @value{GDBN}. This is the only way to
30839detect whether an update has removed children (which necessarily can
30840only happen at the end of the update range).
30841
30842@item displayhint
30843The display hint, if any.
30844
30845@item has_more
30846This is an integer value, which will be 1 if there are more children
30847available outside the varobj's update range.
30848
30849@item dynamic
30850This attribute will be present and have the value @samp{1} if the
30851varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30852then this attribute will not be present.
30853
30854@item new_children
30855If new children were added to a dynamic varobj within the selected
30856update range (as set by @code{-var-set-update-range}), then they will
30857be listed in this attribute.
30858@end table
30859
30860@subsubheading Example
30861
30862@smallexample
30863(gdb)
30864-var-assign var1 3
30865^done,value="3"
30866(gdb)
30867-var-update --all-values var1
30868^done,changelist=[@{name="var1",value="3",in_scope="true",
30869type_changed="false"@}]
30870(gdb)
30871@end smallexample
30872
25d5ea92
VP
30873@subheading The @code{-var-set-frozen} Command
30874@findex -var-set-frozen
9f708cb2 30875@anchor{-var-set-frozen}
25d5ea92
VP
30876
30877@subsubheading Synopsis
30878
30879@smallexample
9f708cb2 30880 -var-set-frozen @var{name} @var{flag}
25d5ea92
VP
30881@end smallexample
30882
9f708cb2 30883Set the frozenness flag on the variable object @var{name}. The
25d5ea92 30884@var{flag} parameter should be either @samp{1} to make the variable
9f708cb2 30885frozen or @samp{0} to make it unfrozen. If a variable object is
25d5ea92 30886frozen, then neither itself, nor any of its children, are
9f708cb2 30887implicitly updated by @code{-var-update} of
25d5ea92
VP
30888a parent variable or by @code{-var-update *}. Only
30889@code{-var-update} of the variable itself will update its value and
30890values of its children. After a variable object is unfrozen, it is
30891implicitly updated by all subsequent @code{-var-update} operations.
30892Unfreezing a variable does not update it, only subsequent
30893@code{-var-update} does.
30894
30895@subsubheading Example
30896
30897@smallexample
30898(gdb)
30899-var-set-frozen V 1
30900^done
30901(gdb)
30902@end smallexample
30903
0cc7d26f
TT
30904@subheading The @code{-var-set-update-range} command
30905@findex -var-set-update-range
30906@anchor{-var-set-update-range}
30907
30908@subsubheading Synopsis
30909
30910@smallexample
30911 -var-set-update-range @var{name} @var{from} @var{to}
30912@end smallexample
30913
30914Set the range of children to be returned by future invocations of
30915@code{-var-update}.
30916
30917@var{from} and @var{to} indicate the range of children to report. If
30918@var{from} or @var{to} is less than zero, the range is reset and all
30919children will be reported. Otherwise, children starting at @var{from}
30920(zero-based) and up to and excluding @var{to} will be reported.
30921
30922@subsubheading Example
30923
30924@smallexample
30925(gdb)
30926-var-set-update-range V 1 2
30927^done
30928@end smallexample
30929
b6313243
TT
30930@subheading The @code{-var-set-visualizer} command
30931@findex -var-set-visualizer
30932@anchor{-var-set-visualizer}
30933
30934@subsubheading Synopsis
30935
30936@smallexample
30937 -var-set-visualizer @var{name} @var{visualizer}
30938@end smallexample
30939
30940Set a visualizer for the variable object @var{name}.
30941
30942@var{visualizer} is the visualizer to use. The special value
30943@samp{None} means to disable any visualizer in use.
30944
30945If not @samp{None}, @var{visualizer} must be a Python expression.
30946This expression must evaluate to a callable object which accepts a
30947single argument. @value{GDBN} will call this object with the value of
30948the varobj @var{name} as an argument (this is done so that the same
30949Python pretty-printing code can be used for both the CLI and MI).
30950When called, this object must return an object which conforms to the
4c374409 30951pretty-printing interface (@pxref{Pretty Printing API}).
b6313243
TT
30952
30953The pre-defined function @code{gdb.default_visualizer} may be used to
30954select a visualizer by following the built-in process
30955(@pxref{Selecting Pretty-Printers}). This is done automatically when
30956a varobj is created, and so ordinarily is not needed.
30957
30958This feature is only available if Python support is enabled. The MI
30959command @code{-list-features} (@pxref{GDB/MI Miscellaneous Commands})
30960can be used to check this.
30961
30962@subsubheading Example
30963
30964Resetting the visualizer:
30965
30966@smallexample
30967(gdb)
30968-var-set-visualizer V None
30969^done
30970@end smallexample
30971
30972Reselecting the default (type-based) visualizer:
30973
30974@smallexample
30975(gdb)
30976-var-set-visualizer V gdb.default_visualizer
30977^done
30978@end smallexample
30979
30980Suppose @code{SomeClass} is a visualizer class. A lambda expression
30981can be used to instantiate this class for a varobj:
30982
30983@smallexample
30984(gdb)
30985-var-set-visualizer V "lambda val: SomeClass()"
30986^done
30987@end smallexample
25d5ea92 30988
a2c02241
NR
30989@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30990@node GDB/MI Data Manipulation
30991@section @sc{gdb/mi} Data Manipulation
922fbb7b 30992
a2c02241
NR
30993@cindex data manipulation, in @sc{gdb/mi}
30994@cindex @sc{gdb/mi}, data manipulation
30995This section describes the @sc{gdb/mi} commands that manipulate data:
30996examine memory and registers, evaluate expressions, etc.
30997
30998@c REMOVED FROM THE INTERFACE.
30999@c @subheading -data-assign
31000@c Change the value of a program variable. Plenty of side effects.
79a6e687 31001@c @subsubheading GDB Command
a2c02241
NR
31002@c set variable
31003@c @subsubheading Example
31004@c N.A.
31005
31006@subheading The @code{-data-disassemble} Command
31007@findex -data-disassemble
922fbb7b
AC
31008
31009@subsubheading Synopsis
31010
31011@smallexample
a2c02241
NR
31012 -data-disassemble
31013 [ -s @var{start-addr} -e @var{end-addr} ]
31014 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
31015 -- @var{mode}
922fbb7b
AC
31016@end smallexample
31017
a2c02241
NR
31018@noindent
31019Where:
31020
31021@table @samp
31022@item @var{start-addr}
31023is the beginning address (or @code{$pc})
31024@item @var{end-addr}
31025is the end address
31026@item @var{filename}
31027is the name of the file to disassemble
31028@item @var{linenum}
31029is the line number to disassemble around
31030@item @var{lines}
d3e8051b 31031is the number of disassembly lines to be produced. If it is -1,
a2c02241
NR
31032the whole function will be disassembled, in case no @var{end-addr} is
31033specified. If @var{end-addr} is specified as a non-zero value, and
31034@var{lines} is lower than the number of disassembly lines between
31035@var{start-addr} and @var{end-addr}, only @var{lines} lines are
31036displayed; if @var{lines} is higher than the number of lines between
31037@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
31038are displayed.
31039@item @var{mode}
b716877b
AB
31040is either 0 (meaning only disassembly), 1 (meaning mixed source and
31041disassembly), 2 (meaning disassembly with raw opcodes), or 3 (meaning
31042mixed source and disassembly with raw opcodes).
a2c02241
NR
31043@end table
31044
31045@subsubheading Result
31046
ed8a1c2d
AB
31047The result of the @code{-data-disassemble} command will be a list named
31048@samp{asm_insns}, the contents of this list depend on the @var{mode}
31049used with the @code{-data-disassemble} command.
a2c02241 31050
ed8a1c2d
AB
31051For modes 0 and 2 the @samp{asm_insns} list contains tuples with the
31052following fields:
31053
31054@table @code
31055@item address
31056The address at which this instruction was disassembled.
31057
31058@item func-name
31059The name of the function this instruction is within.
31060
31061@item offset
31062The decimal offset in bytes from the start of @samp{func-name}.
31063
31064@item inst
31065The text disassembly for this @samp{address}.
31066
31067@item opcodes
31068This field is only present for mode 2. This contains the raw opcode
31069bytes for the @samp{inst} field.
31070
31071@end table
31072
31073For modes 1 and 3 the @samp{asm_insns} list contains tuples named
31074@samp{src_and_asm_line}, each of which has the following fields:
a2c02241 31075
ed8a1c2d
AB
31076@table @code
31077@item line
31078The line number within @samp{file}.
31079
31080@item file
31081The file name from the compilation unit. This might be an absolute
31082file name or a relative file name depending on the compile command
31083used.
31084
31085@item fullname
f35a17b5
JK
31086Absolute file name of @samp{file}. It is converted to a canonical form
31087using the source file search path
31088(@pxref{Source Path, ,Specifying Source Directories})
31089and after resolving all the symbolic links.
31090
31091If the source file is not found this field will contain the path as
31092present in the debug information.
ed8a1c2d
AB
31093
31094@item line_asm_insn
31095This is a list of tuples containing the disassembly for @samp{line} in
31096@samp{file}. The fields of each tuple are the same as for
31097@code{-data-disassemble} in @var{mode} 0 and 2, so @samp{address},
31098@samp{func-name}, @samp{offset}, @samp{inst}, and optionally
31099@samp{opcodes}.
31100
31101@end table
31102
31103Note that whatever included in the @samp{inst} field, is not
31104manipulated directly by @sc{gdb/mi}, i.e., it is not possible to
31105adjust its format.
922fbb7b
AC
31106
31107@subsubheading @value{GDBN} Command
31108
ed8a1c2d 31109The corresponding @value{GDBN} command is @samp{disassemble}.
922fbb7b
AC
31110
31111@subsubheading Example
31112
a2c02241
NR
31113Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
31114
922fbb7b 31115@smallexample
594fe323 31116(gdb)
a2c02241
NR
31117-data-disassemble -s $pc -e "$pc + 20" -- 0
31118^done,
31119asm_insns=[
31120@{address="0x000107c0",func-name="main",offset="4",
31121inst="mov 2, %o0"@},
31122@{address="0x000107c4",func-name="main",offset="8",
31123inst="sethi %hi(0x11800), %o2"@},
31124@{address="0x000107c8",func-name="main",offset="12",
31125inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
31126@{address="0x000107cc",func-name="main",offset="16",
31127inst="sethi %hi(0x11800), %o2"@},
31128@{address="0x000107d0",func-name="main",offset="20",
31129inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
594fe323 31130(gdb)
a2c02241
NR
31131@end smallexample
31132
31133Disassemble the whole @code{main} function. Line 32 is part of
31134@code{main}.
31135
31136@smallexample
31137-data-disassemble -f basics.c -l 32 -- 0
31138^done,asm_insns=[
31139@{address="0x000107bc",func-name="main",offset="0",
31140inst="save %sp, -112, %sp"@},
31141@{address="0x000107c0",func-name="main",offset="4",
31142inst="mov 2, %o0"@},
31143@{address="0x000107c4",func-name="main",offset="8",
31144inst="sethi %hi(0x11800), %o2"@},
31145[@dots{}]
31146@{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
31147@{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
594fe323 31148(gdb)
922fbb7b
AC
31149@end smallexample
31150
a2c02241 31151Disassemble 3 instructions from the start of @code{main}:
922fbb7b 31152
a2c02241 31153@smallexample
594fe323 31154(gdb)
a2c02241
NR
31155-data-disassemble -f basics.c -l 32 -n 3 -- 0
31156^done,asm_insns=[
31157@{address="0x000107bc",func-name="main",offset="0",
31158inst="save %sp, -112, %sp"@},
31159@{address="0x000107c0",func-name="main",offset="4",
31160inst="mov 2, %o0"@},
31161@{address="0x000107c4",func-name="main",offset="8",
31162inst="sethi %hi(0x11800), %o2"@}]
594fe323 31163(gdb)
a2c02241
NR
31164@end smallexample
31165
31166Disassemble 3 instructions from the start of @code{main} in mixed mode:
31167
31168@smallexample
594fe323 31169(gdb)
a2c02241
NR
31170-data-disassemble -f basics.c -l 32 -n 3 -- 1
31171^done,asm_insns=[
31172src_and_asm_line=@{line="31",
ed8a1c2d
AB
31173file="../../../src/gdb/testsuite/gdb.mi/basics.c",
31174fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
31175line_asm_insn=[@{address="0x000107bc",
31176func-name="main",offset="0",inst="save %sp, -112, %sp"@}]@},
a2c02241 31177src_and_asm_line=@{line="32",
ed8a1c2d
AB
31178file="../../../src/gdb/testsuite/gdb.mi/basics.c",
31179fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
31180line_asm_insn=[@{address="0x000107c0",
31181func-name="main",offset="4",inst="mov 2, %o0"@},
a2c02241
NR
31182@{address="0x000107c4",func-name="main",offset="8",
31183inst="sethi %hi(0x11800), %o2"@}]@}]
594fe323 31184(gdb)
a2c02241
NR
31185@end smallexample
31186
31187
31188@subheading The @code{-data-evaluate-expression} Command
31189@findex -data-evaluate-expression
922fbb7b
AC
31190
31191@subsubheading Synopsis
31192
31193@smallexample
a2c02241 31194 -data-evaluate-expression @var{expr}
922fbb7b
AC
31195@end smallexample
31196
a2c02241
NR
31197Evaluate @var{expr} as an expression. The expression could contain an
31198inferior function call. The function call will execute synchronously.
31199If the expression contains spaces, it must be enclosed in double quotes.
922fbb7b
AC
31200
31201@subsubheading @value{GDBN} Command
31202
a2c02241
NR
31203The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
31204@samp{call}. In @code{gdbtk} only, there's a corresponding
31205@samp{gdb_eval} command.
922fbb7b
AC
31206
31207@subsubheading Example
31208
a2c02241
NR
31209In the following example, the numbers that precede the commands are the
31210@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
31211Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
31212output.
31213
922fbb7b 31214@smallexample
a2c02241
NR
31215211-data-evaluate-expression A
31216211^done,value="1"
594fe323 31217(gdb)
a2c02241
NR
31218311-data-evaluate-expression &A
31219311^done,value="0xefffeb7c"
594fe323 31220(gdb)
a2c02241
NR
31221411-data-evaluate-expression A+3
31222411^done,value="4"
594fe323 31223(gdb)
a2c02241
NR
31224511-data-evaluate-expression "A + 3"
31225511^done,value="4"
594fe323 31226(gdb)
a2c02241 31227@end smallexample
922fbb7b
AC
31228
31229
a2c02241
NR
31230@subheading The @code{-data-list-changed-registers} Command
31231@findex -data-list-changed-registers
922fbb7b
AC
31232
31233@subsubheading Synopsis
31234
31235@smallexample
a2c02241 31236 -data-list-changed-registers
922fbb7b
AC
31237@end smallexample
31238
a2c02241 31239Display a list of the registers that have changed.
922fbb7b
AC
31240
31241@subsubheading @value{GDBN} Command
31242
a2c02241
NR
31243@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
31244has the corresponding command @samp{gdb_changed_register_list}.
922fbb7b
AC
31245
31246@subsubheading Example
922fbb7b 31247
a2c02241 31248On a PPC MBX board:
922fbb7b
AC
31249
31250@smallexample
594fe323 31251(gdb)
a2c02241
NR
31252-exec-continue
31253^running
922fbb7b 31254
594fe323 31255(gdb)
a47ec5fe
AR
31256*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{
31257func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
31258line="5"@}
594fe323 31259(gdb)
a2c02241
NR
31260-data-list-changed-registers
31261^done,changed-registers=["0","1","2","4","5","6","7","8","9",
31262"10","11","13","14","15","16","17","18","19","20","21","22","23",
31263"24","25","26","27","28","30","31","64","65","66","67","69"]
594fe323 31264(gdb)
a2c02241 31265@end smallexample
922fbb7b
AC
31266
31267
a2c02241
NR
31268@subheading The @code{-data-list-register-names} Command
31269@findex -data-list-register-names
922fbb7b
AC
31270
31271@subsubheading Synopsis
31272
31273@smallexample
a2c02241 31274 -data-list-register-names [ ( @var{regno} )+ ]
922fbb7b
AC
31275@end smallexample
31276
a2c02241
NR
31277Show a list of register names for the current target. If no arguments
31278are given, it shows a list of the names of all the registers. If
31279integer numbers are given as arguments, it will print a list of the
31280names of the registers corresponding to the arguments. To ensure
31281consistency between a register name and its number, the output list may
31282include empty register names.
922fbb7b
AC
31283
31284@subsubheading @value{GDBN} Command
31285
a2c02241
NR
31286@value{GDBN} does not have a command which corresponds to
31287@samp{-data-list-register-names}. In @code{gdbtk} there is a
31288corresponding command @samp{gdb_regnames}.
922fbb7b
AC
31289
31290@subsubheading Example
922fbb7b 31291
a2c02241
NR
31292For the PPC MBX board:
31293@smallexample
594fe323 31294(gdb)
a2c02241
NR
31295-data-list-register-names
31296^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
31297"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
31298"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
31299"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
31300"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
31301"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
31302"", "pc","ps","cr","lr","ctr","xer"]
594fe323 31303(gdb)
a2c02241
NR
31304-data-list-register-names 1 2 3
31305^done,register-names=["r1","r2","r3"]
594fe323 31306(gdb)
a2c02241 31307@end smallexample
922fbb7b 31308
a2c02241
NR
31309@subheading The @code{-data-list-register-values} Command
31310@findex -data-list-register-values
922fbb7b
AC
31311
31312@subsubheading Synopsis
31313
31314@smallexample
a2c02241 31315 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
922fbb7b
AC
31316@end smallexample
31317
a2c02241
NR
31318Display the registers' contents. @var{fmt} is the format according to
31319which the registers' contents are to be returned, followed by an optional
31320list of numbers specifying the registers to display. A missing list of
31321numbers indicates that the contents of all the registers must be returned.
31322
31323Allowed formats for @var{fmt} are:
31324
31325@table @code
31326@item x
31327Hexadecimal
31328@item o
31329Octal
31330@item t
31331Binary
31332@item d
31333Decimal
31334@item r
31335Raw
31336@item N
31337Natural
31338@end table
922fbb7b
AC
31339
31340@subsubheading @value{GDBN} Command
31341
a2c02241
NR
31342The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
31343all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
922fbb7b
AC
31344
31345@subsubheading Example
922fbb7b 31346
a2c02241
NR
31347For a PPC MBX board (note: line breaks are for readability only, they
31348don't appear in the actual output):
31349
31350@smallexample
594fe323 31351(gdb)
a2c02241
NR
31352-data-list-register-values r 64 65
31353^done,register-values=[@{number="64",value="0xfe00a300"@},
31354@{number="65",value="0x00029002"@}]
594fe323 31355(gdb)
a2c02241
NR
31356-data-list-register-values x
31357^done,register-values=[@{number="0",value="0xfe0043c8"@},
31358@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
31359@{number="3",value="0x0"@},@{number="4",value="0xa"@},
31360@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
31361@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
31362@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
31363@{number="11",value="0x1"@},@{number="12",value="0x0"@},
31364@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
31365@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
31366@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
31367@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
31368@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
31369@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
31370@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
31371@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
31372@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
31373@{number="31",value="0x0"@},@{number="32",value="0x0"@},
31374@{number="33",value="0x0"@},@{number="34",value="0x0"@},
31375@{number="35",value="0x0"@},@{number="36",value="0x0"@},
31376@{number="37",value="0x0"@},@{number="38",value="0x0"@},
31377@{number="39",value="0x0"@},@{number="40",value="0x0"@},
31378@{number="41",value="0x0"@},@{number="42",value="0x0"@},
31379@{number="43",value="0x0"@},@{number="44",value="0x0"@},
31380@{number="45",value="0x0"@},@{number="46",value="0x0"@},
31381@{number="47",value="0x0"@},@{number="48",value="0x0"@},
31382@{number="49",value="0x0"@},@{number="50",value="0x0"@},
31383@{number="51",value="0x0"@},@{number="52",value="0x0"@},
31384@{number="53",value="0x0"@},@{number="54",value="0x0"@},
31385@{number="55",value="0x0"@},@{number="56",value="0x0"@},
31386@{number="57",value="0x0"@},@{number="58",value="0x0"@},
31387@{number="59",value="0x0"@},@{number="60",value="0x0"@},
31388@{number="61",value="0x0"@},@{number="62",value="0x0"@},
31389@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
31390@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
31391@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
31392@{number="69",value="0x20002b03"@}]
594fe323 31393(gdb)
a2c02241 31394@end smallexample
922fbb7b 31395
a2c02241
NR
31396
31397@subheading The @code{-data-read-memory} Command
31398@findex -data-read-memory
922fbb7b 31399
8dedea02
VP
31400This command is deprecated, use @code{-data-read-memory-bytes} instead.
31401
922fbb7b
AC
31402@subsubheading Synopsis
31403
31404@smallexample
a2c02241
NR
31405 -data-read-memory [ -o @var{byte-offset} ]
31406 @var{address} @var{word-format} @var{word-size}
31407 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
922fbb7b
AC
31408@end smallexample
31409
a2c02241
NR
31410@noindent
31411where:
922fbb7b 31412
a2c02241
NR
31413@table @samp
31414@item @var{address}
31415An expression specifying the address of the first memory word to be
31416read. Complex expressions containing embedded white space should be
31417quoted using the C convention.
922fbb7b 31418
a2c02241
NR
31419@item @var{word-format}
31420The format to be used to print the memory words. The notation is the
31421same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
79a6e687 31422,Output Formats}).
922fbb7b 31423
a2c02241
NR
31424@item @var{word-size}
31425The size of each memory word in bytes.
922fbb7b 31426
a2c02241
NR
31427@item @var{nr-rows}
31428The number of rows in the output table.
922fbb7b 31429
a2c02241
NR
31430@item @var{nr-cols}
31431The number of columns in the output table.
922fbb7b 31432
a2c02241
NR
31433@item @var{aschar}
31434If present, indicates that each row should include an @sc{ascii} dump. The
31435value of @var{aschar} is used as a padding character when a byte is not a
31436member of the printable @sc{ascii} character set (printable @sc{ascii}
31437characters are those whose code is between 32 and 126, inclusively).
922fbb7b 31438
a2c02241
NR
31439@item @var{byte-offset}
31440An offset to add to the @var{address} before fetching memory.
31441@end table
922fbb7b 31442
a2c02241
NR
31443This command displays memory contents as a table of @var{nr-rows} by
31444@var{nr-cols} words, each word being @var{word-size} bytes. In total,
31445@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
31446(returned as @samp{total-bytes}). Should less than the requested number
31447of bytes be returned by the target, the missing words are identified
31448using @samp{N/A}. The number of bytes read from the target is returned
31449in @samp{nr-bytes} and the starting address used to read memory in
31450@samp{addr}.
31451
31452The address of the next/previous row or page is available in
31453@samp{next-row} and @samp{prev-row}, @samp{next-page} and
31454@samp{prev-page}.
922fbb7b
AC
31455
31456@subsubheading @value{GDBN} Command
31457
a2c02241
NR
31458The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
31459@samp{gdb_get_mem} memory read command.
922fbb7b
AC
31460
31461@subsubheading Example
32e7087d 31462
a2c02241
NR
31463Read six bytes of memory starting at @code{bytes+6} but then offset by
31464@code{-6} bytes. Format as three rows of two columns. One byte per
31465word. Display each word in hex.
32e7087d
JB
31466
31467@smallexample
594fe323 31468(gdb)
a2c02241
NR
314699-data-read-memory -o -6 -- bytes+6 x 1 3 2
314709^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
31471next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
31472prev-page="0x0000138a",memory=[
31473@{addr="0x00001390",data=["0x00","0x01"]@},
31474@{addr="0x00001392",data=["0x02","0x03"]@},
31475@{addr="0x00001394",data=["0x04","0x05"]@}]
594fe323 31476(gdb)
32e7087d
JB
31477@end smallexample
31478
a2c02241
NR
31479Read two bytes of memory starting at address @code{shorts + 64} and
31480display as a single word formatted in decimal.
32e7087d 31481
32e7087d 31482@smallexample
594fe323 31483(gdb)
a2c02241
NR
314845-data-read-memory shorts+64 d 2 1 1
314855^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
31486next-row="0x00001512",prev-row="0x0000150e",
31487next-page="0x00001512",prev-page="0x0000150e",memory=[
31488@{addr="0x00001510",data=["128"]@}]
594fe323 31489(gdb)
32e7087d
JB
31490@end smallexample
31491
a2c02241
NR
31492Read thirty two bytes of memory starting at @code{bytes+16} and format
31493as eight rows of four columns. Include a string encoding with @samp{x}
31494used as the non-printable character.
922fbb7b
AC
31495
31496@smallexample
594fe323 31497(gdb)
a2c02241
NR
314984-data-read-memory bytes+16 x 1 8 4 x
314994^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
31500next-row="0x000013c0",prev-row="0x0000139c",
31501next-page="0x000013c0",prev-page="0x00001380",memory=[
31502@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
31503@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
31504@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
31505@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
31506@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
31507@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
31508@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
31509@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
594fe323 31510(gdb)
922fbb7b
AC
31511@end smallexample
31512
8dedea02
VP
31513@subheading The @code{-data-read-memory-bytes} Command
31514@findex -data-read-memory-bytes
31515
31516@subsubheading Synopsis
31517
31518@smallexample
31519 -data-read-memory-bytes [ -o @var{byte-offset} ]
31520 @var{address} @var{count}
31521@end smallexample
31522
31523@noindent
31524where:
31525
31526@table @samp
31527@item @var{address}
31528An expression specifying the address of the first memory word to be
31529read. Complex expressions containing embedded white space should be
31530quoted using the C convention.
31531
31532@item @var{count}
31533The number of bytes to read. This should be an integer literal.
31534
31535@item @var{byte-offset}
31536The offsets in bytes relative to @var{address} at which to start
31537reading. This should be an integer literal. This option is provided
31538so that a frontend is not required to first evaluate address and then
31539perform address arithmetics itself.
31540
31541@end table
31542
31543This command attempts to read all accessible memory regions in the
31544specified range. First, all regions marked as unreadable in the memory
31545map (if one is defined) will be skipped. @xref{Memory Region
31546Attributes}. Second, @value{GDBN} will attempt to read the remaining
31547regions. For each one, if reading full region results in an errors,
31548@value{GDBN} will try to read a subset of the region.
31549
31550In general, every single byte in the region may be readable or not,
31551and the only way to read every readable byte is to try a read at
31552every address, which is not practical. Therefore, @value{GDBN} will
31553attempt to read all accessible bytes at either beginning or the end
31554of the region, using a binary division scheme. This heuristic works
31555well for reading accross a memory map boundary. Note that if a region
31556has a readable range that is neither at the beginning or the end,
31557@value{GDBN} will not read it.
31558
31559The result record (@pxref{GDB/MI Result Records}) that is output of
31560the command includes a field named @samp{memory} whose content is a
31561list of tuples. Each tuple represent a successfully read memory block
31562and has the following fields:
31563
31564@table @code
31565@item begin
31566The start address of the memory block, as hexadecimal literal.
31567
31568@item end
31569The end address of the memory block, as hexadecimal literal.
31570
31571@item offset
31572The offset of the memory block, as hexadecimal literal, relative to
31573the start address passed to @code{-data-read-memory-bytes}.
31574
31575@item contents
31576The contents of the memory block, in hex.
31577
31578@end table
31579
31580
31581
31582@subsubheading @value{GDBN} Command
31583
31584The corresponding @value{GDBN} command is @samp{x}.
31585
31586@subsubheading Example
31587
31588@smallexample
31589(gdb)
31590-data-read-memory-bytes &a 10
31591^done,memory=[@{begin="0xbffff154",offset="0x00000000",
31592 end="0xbffff15e",
31593 contents="01000000020000000300"@}]
31594(gdb)
31595@end smallexample
31596
31597
31598@subheading The @code{-data-write-memory-bytes} Command
31599@findex -data-write-memory-bytes
31600
31601@subsubheading Synopsis
31602
31603@smallexample
31604 -data-write-memory-bytes @var{address} @var{contents}
62747a60 31605 -data-write-memory-bytes @var{address} @var{contents} @r{[}@var{count}@r{]}
8dedea02
VP
31606@end smallexample
31607
31608@noindent
31609where:
31610
31611@table @samp
31612@item @var{address}
31613An expression specifying the address of the first memory word to be
31614read. Complex expressions containing embedded white space should be
31615quoted using the C convention.
31616
31617@item @var{contents}
31618The hex-encoded bytes to write.
31619
62747a60
TT
31620@item @var{count}
31621Optional argument indicating the number of bytes to be written. If @var{count}
31622is greater than @var{contents}' length, @value{GDBN} will repeatedly
31623write @var{contents} until it fills @var{count} bytes.
31624
8dedea02
VP
31625@end table
31626
31627@subsubheading @value{GDBN} Command
31628
31629There's no corresponding @value{GDBN} command.
31630
31631@subsubheading Example
31632
31633@smallexample
31634(gdb)
31635-data-write-memory-bytes &a "aabbccdd"
31636^done
31637(gdb)
31638@end smallexample
31639
62747a60
TT
31640@smallexample
31641(gdb)
31642-data-write-memory-bytes &a "aabbccdd" 16e
31643^done
31644(gdb)
31645@end smallexample
8dedea02 31646
a2c02241
NR
31647@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31648@node GDB/MI Tracepoint Commands
31649@section @sc{gdb/mi} Tracepoint Commands
922fbb7b 31650
18148017
VP
31651The commands defined in this section implement MI support for
31652tracepoints. For detailed introduction, see @ref{Tracepoints}.
31653
31654@subheading The @code{-trace-find} Command
31655@findex -trace-find
31656
31657@subsubheading Synopsis
31658
31659@smallexample
31660 -trace-find @var{mode} [@var{parameters}@dots{}]
31661@end smallexample
31662
31663Find a trace frame using criteria defined by @var{mode} and
31664@var{parameters}. The following table lists permissible
31665modes and their parameters. For details of operation, see @ref{tfind}.
31666
31667@table @samp
31668
31669@item none
31670No parameters are required. Stops examining trace frames.
31671
31672@item frame-number
31673An integer is required as parameter. Selects tracepoint frame with
31674that index.
31675
31676@item tracepoint-number
31677An integer is required as parameter. Finds next
31678trace frame that corresponds to tracepoint with the specified number.
31679
31680@item pc
31681An address is required as parameter. Finds
31682next trace frame that corresponds to any tracepoint at the specified
31683address.
31684
31685@item pc-inside-range
31686Two addresses are required as parameters. Finds next trace
31687frame that corresponds to a tracepoint at an address inside the
31688specified range. Both bounds are considered to be inside the range.
31689
31690@item pc-outside-range
31691Two addresses are required as parameters. Finds
31692next trace frame that corresponds to a tracepoint at an address outside
31693the specified range. Both bounds are considered to be inside the range.
31694
31695@item line
31696Line specification is required as parameter. @xref{Specify Location}.
31697Finds next trace frame that corresponds to a tracepoint at
31698the specified location.
31699
31700@end table
31701
31702If @samp{none} was passed as @var{mode}, the response does not
31703have fields. Otherwise, the response may have the following fields:
31704
31705@table @samp
31706@item found
31707This field has either @samp{0} or @samp{1} as the value, depending
31708on whether a matching tracepoint was found.
31709
31710@item traceframe
31711The index of the found traceframe. This field is present iff
31712the @samp{found} field has value of @samp{1}.
31713
31714@item tracepoint
31715The index of the found tracepoint. This field is present iff
31716the @samp{found} field has value of @samp{1}.
31717
31718@item frame
31719The information about the frame corresponding to the found trace
31720frame. This field is present only if a trace frame was found.
cd64ee31 31721@xref{GDB/MI Frame Information}, for description of this field.
18148017
VP
31722
31723@end table
31724
7d13fe92
SS
31725@subsubheading @value{GDBN} Command
31726
31727The corresponding @value{GDBN} command is @samp{tfind}.
31728
18148017
VP
31729@subheading -trace-define-variable
31730@findex -trace-define-variable
31731
31732@subsubheading Synopsis
31733
31734@smallexample
31735 -trace-define-variable @var{name} [ @var{value} ]
31736@end smallexample
31737
31738Create trace variable @var{name} if it does not exist. If
31739@var{value} is specified, sets the initial value of the specified
31740trace variable to that value. Note that the @var{name} should start
31741with the @samp{$} character.
31742
7d13fe92
SS
31743@subsubheading @value{GDBN} Command
31744
31745The corresponding @value{GDBN} command is @samp{tvariable}.
31746
18148017
VP
31747@subheading -trace-list-variables
31748@findex -trace-list-variables
922fbb7b 31749
18148017 31750@subsubheading Synopsis
922fbb7b 31751
18148017
VP
31752@smallexample
31753 -trace-list-variables
31754@end smallexample
922fbb7b 31755
18148017
VP
31756Return a table of all defined trace variables. Each element of the
31757table has the following fields:
922fbb7b 31758
18148017
VP
31759@table @samp
31760@item name
31761The name of the trace variable. This field is always present.
922fbb7b 31762
18148017
VP
31763@item initial
31764The initial value. This is a 64-bit signed integer. This
31765field is always present.
922fbb7b 31766
18148017
VP
31767@item current
31768The value the trace variable has at the moment. This is a 64-bit
31769signed integer. This field is absent iff current value is
31770not defined, for example if the trace was never run, or is
31771presently running.
922fbb7b 31772
18148017 31773@end table
922fbb7b 31774
7d13fe92
SS
31775@subsubheading @value{GDBN} Command
31776
31777The corresponding @value{GDBN} command is @samp{tvariables}.
31778
18148017 31779@subsubheading Example
922fbb7b 31780
18148017
VP
31781@smallexample
31782(gdb)
31783-trace-list-variables
31784^done,trace-variables=@{nr_rows="1",nr_cols="3",
31785hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@},
31786 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@},
31787 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}],
31788body=[variable=@{name="$trace_timestamp",initial="0"@}
31789 variable=@{name="$foo",initial="10",current="15"@}]@}
31790(gdb)
31791@end smallexample
922fbb7b 31792
18148017
VP
31793@subheading -trace-save
31794@findex -trace-save
922fbb7b 31795
18148017
VP
31796@subsubheading Synopsis
31797
31798@smallexample
31799 -trace-save [-r ] @var{filename}
31800@end smallexample
31801
31802Saves the collected trace data to @var{filename}. Without the
31803@samp{-r} option, the data is downloaded from the target and saved
31804in a local file. With the @samp{-r} option the target is asked
31805to perform the save.
31806
7d13fe92
SS
31807@subsubheading @value{GDBN} Command
31808
31809The corresponding @value{GDBN} command is @samp{tsave}.
31810
18148017
VP
31811
31812@subheading -trace-start
31813@findex -trace-start
31814
31815@subsubheading Synopsis
31816
31817@smallexample
31818 -trace-start
31819@end smallexample
922fbb7b 31820
18148017
VP
31821Starts a tracing experiments. The result of this command does not
31822have any fields.
922fbb7b 31823
7d13fe92
SS
31824@subsubheading @value{GDBN} Command
31825
31826The corresponding @value{GDBN} command is @samp{tstart}.
31827
18148017
VP
31828@subheading -trace-status
31829@findex -trace-status
922fbb7b 31830
18148017
VP
31831@subsubheading Synopsis
31832
31833@smallexample
31834 -trace-status
31835@end smallexample
31836
a97153c7 31837Obtains the status of a tracing experiment. The result may include
18148017
VP
31838the following fields:
31839
31840@table @samp
31841
31842@item supported
31843May have a value of either @samp{0}, when no tracing operations are
31844supported, @samp{1}, when all tracing operations are supported, or
31845@samp{file} when examining trace file. In the latter case, examining
31846of trace frame is possible but new tracing experiement cannot be
31847started. This field is always present.
31848
31849@item running
31850May have a value of either @samp{0} or @samp{1} depending on whether
31851tracing experiement is in progress on target. This field is present
31852if @samp{supported} field is not @samp{0}.
31853
31854@item stop-reason
31855Report the reason why the tracing was stopped last time. This field
31856may be absent iff tracing was never stopped on target yet. The
31857value of @samp{request} means the tracing was stopped as result of
31858the @code{-trace-stop} command. The value of @samp{overflow} means
31859the tracing buffer is full. The value of @samp{disconnection} means
31860tracing was automatically stopped when @value{GDBN} has disconnected.
31861The value of @samp{passcount} means tracing was stopped when a
31862tracepoint was passed a maximal number of times for that tracepoint.
31863This field is present if @samp{supported} field is not @samp{0}.
31864
31865@item stopping-tracepoint
31866The number of tracepoint whose passcount as exceeded. This field is
31867present iff the @samp{stop-reason} field has the value of
31868@samp{passcount}.
31869
31870@item frames
87290684
SS
31871@itemx frames-created
31872The @samp{frames} field is a count of the total number of trace frames
31873in the trace buffer, while @samp{frames-created} is the total created
31874during the run, including ones that were discarded, such as when a
31875circular trace buffer filled up. Both fields are optional.
18148017
VP
31876
31877@item buffer-size
31878@itemx buffer-free
31879These fields tell the current size of the tracing buffer and the
87290684 31880remaining space. These fields are optional.
18148017 31881
a97153c7
PA
31882@item circular
31883The value of the circular trace buffer flag. @code{1} means that the
31884trace buffer is circular and old trace frames will be discarded if
31885necessary to make room, @code{0} means that the trace buffer is linear
31886and may fill up.
31887
31888@item disconnected
31889The value of the disconnected tracing flag. @code{1} means that
31890tracing will continue after @value{GDBN} disconnects, @code{0} means
31891that the trace run will stop.
31892
18148017
VP
31893@end table
31894
7d13fe92
SS
31895@subsubheading @value{GDBN} Command
31896
31897The corresponding @value{GDBN} command is @samp{tstatus}.
31898
18148017
VP
31899@subheading -trace-stop
31900@findex -trace-stop
31901
31902@subsubheading Synopsis
31903
31904@smallexample
31905 -trace-stop
31906@end smallexample
922fbb7b 31907
18148017
VP
31908Stops a tracing experiment. The result of this command has the same
31909fields as @code{-trace-status}, except that the @samp{supported} and
31910@samp{running} fields are not output.
922fbb7b 31911
7d13fe92
SS
31912@subsubheading @value{GDBN} Command
31913
31914The corresponding @value{GDBN} command is @samp{tstop}.
31915
922fbb7b 31916
a2c02241
NR
31917@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31918@node GDB/MI Symbol Query
31919@section @sc{gdb/mi} Symbol Query Commands
922fbb7b
AC
31920
31921
9901a55b 31922@ignore
a2c02241
NR
31923@subheading The @code{-symbol-info-address} Command
31924@findex -symbol-info-address
922fbb7b
AC
31925
31926@subsubheading Synopsis
31927
31928@smallexample
a2c02241 31929 -symbol-info-address @var{symbol}
922fbb7b
AC
31930@end smallexample
31931
a2c02241 31932Describe where @var{symbol} is stored.
922fbb7b
AC
31933
31934@subsubheading @value{GDBN} Command
31935
a2c02241 31936The corresponding @value{GDBN} command is @samp{info address}.
922fbb7b
AC
31937
31938@subsubheading Example
31939N.A.
31940
31941
a2c02241
NR
31942@subheading The @code{-symbol-info-file} Command
31943@findex -symbol-info-file
922fbb7b
AC
31944
31945@subsubheading Synopsis
31946
31947@smallexample
a2c02241 31948 -symbol-info-file
922fbb7b
AC
31949@end smallexample
31950
a2c02241 31951Show the file for the symbol.
922fbb7b 31952
a2c02241 31953@subsubheading @value{GDBN} Command
922fbb7b 31954
a2c02241
NR
31955There's no equivalent @value{GDBN} command. @code{gdbtk} has
31956@samp{gdb_find_file}.
922fbb7b
AC
31957
31958@subsubheading Example
31959N.A.
31960
31961
a2c02241
NR
31962@subheading The @code{-symbol-info-function} Command
31963@findex -symbol-info-function
922fbb7b
AC
31964
31965@subsubheading Synopsis
31966
31967@smallexample
a2c02241 31968 -symbol-info-function
922fbb7b
AC
31969@end smallexample
31970
a2c02241 31971Show which function the symbol lives in.
922fbb7b
AC
31972
31973@subsubheading @value{GDBN} Command
31974
a2c02241 31975@samp{gdb_get_function} in @code{gdbtk}.
922fbb7b
AC
31976
31977@subsubheading Example
31978N.A.
31979
31980
a2c02241
NR
31981@subheading The @code{-symbol-info-line} Command
31982@findex -symbol-info-line
922fbb7b
AC
31983
31984@subsubheading Synopsis
31985
31986@smallexample
a2c02241 31987 -symbol-info-line
922fbb7b
AC
31988@end smallexample
31989
a2c02241 31990Show the core addresses of the code for a source line.
922fbb7b 31991
a2c02241 31992@subsubheading @value{GDBN} Command
922fbb7b 31993
a2c02241
NR
31994The corresponding @value{GDBN} command is @samp{info line}.
31995@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
922fbb7b
AC
31996
31997@subsubheading Example
a2c02241 31998N.A.
922fbb7b
AC
31999
32000
a2c02241
NR
32001@subheading The @code{-symbol-info-symbol} Command
32002@findex -symbol-info-symbol
07f31aa6
DJ
32003
32004@subsubheading Synopsis
32005
a2c02241
NR
32006@smallexample
32007 -symbol-info-symbol @var{addr}
32008@end smallexample
07f31aa6 32009
a2c02241 32010Describe what symbol is at location @var{addr}.
07f31aa6 32011
a2c02241 32012@subsubheading @value{GDBN} Command
07f31aa6 32013
a2c02241 32014The corresponding @value{GDBN} command is @samp{info symbol}.
07f31aa6
DJ
32015
32016@subsubheading Example
a2c02241 32017N.A.
07f31aa6
DJ
32018
32019
a2c02241
NR
32020@subheading The @code{-symbol-list-functions} Command
32021@findex -symbol-list-functions
922fbb7b
AC
32022
32023@subsubheading Synopsis
32024
32025@smallexample
a2c02241 32026 -symbol-list-functions
922fbb7b
AC
32027@end smallexample
32028
a2c02241 32029List the functions in the executable.
922fbb7b
AC
32030
32031@subsubheading @value{GDBN} Command
32032
a2c02241
NR
32033@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
32034@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
32035
32036@subsubheading Example
a2c02241 32037N.A.
9901a55b 32038@end ignore
922fbb7b
AC
32039
32040
a2c02241
NR
32041@subheading The @code{-symbol-list-lines} Command
32042@findex -symbol-list-lines
922fbb7b
AC
32043
32044@subsubheading Synopsis
32045
32046@smallexample
a2c02241 32047 -symbol-list-lines @var{filename}
922fbb7b
AC
32048@end smallexample
32049
a2c02241
NR
32050Print the list of lines that contain code and their associated program
32051addresses for the given source filename. The entries are sorted in
32052ascending PC order.
922fbb7b
AC
32053
32054@subsubheading @value{GDBN} Command
32055
a2c02241 32056There is no corresponding @value{GDBN} command.
922fbb7b
AC
32057
32058@subsubheading Example
a2c02241 32059@smallexample
594fe323 32060(gdb)
a2c02241
NR
32061-symbol-list-lines basics.c
32062^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
594fe323 32063(gdb)
a2c02241 32064@end smallexample
922fbb7b
AC
32065
32066
9901a55b 32067@ignore
a2c02241
NR
32068@subheading The @code{-symbol-list-types} Command
32069@findex -symbol-list-types
922fbb7b
AC
32070
32071@subsubheading Synopsis
32072
32073@smallexample
a2c02241 32074 -symbol-list-types
922fbb7b
AC
32075@end smallexample
32076
a2c02241 32077List all the type names.
922fbb7b
AC
32078
32079@subsubheading @value{GDBN} Command
32080
a2c02241
NR
32081The corresponding commands are @samp{info types} in @value{GDBN},
32082@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
32083
32084@subsubheading Example
32085N.A.
32086
32087
a2c02241
NR
32088@subheading The @code{-symbol-list-variables} Command
32089@findex -symbol-list-variables
922fbb7b
AC
32090
32091@subsubheading Synopsis
32092
32093@smallexample
a2c02241 32094 -symbol-list-variables
922fbb7b
AC
32095@end smallexample
32096
a2c02241 32097List all the global and static variable names.
922fbb7b
AC
32098
32099@subsubheading @value{GDBN} Command
32100
a2c02241 32101@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
32102
32103@subsubheading Example
32104N.A.
32105
32106
a2c02241
NR
32107@subheading The @code{-symbol-locate} Command
32108@findex -symbol-locate
922fbb7b
AC
32109
32110@subsubheading Synopsis
32111
32112@smallexample
a2c02241 32113 -symbol-locate
922fbb7b
AC
32114@end smallexample
32115
922fbb7b
AC
32116@subsubheading @value{GDBN} Command
32117
a2c02241 32118@samp{gdb_loc} in @code{gdbtk}.
922fbb7b
AC
32119
32120@subsubheading Example
32121N.A.
32122
32123
a2c02241
NR
32124@subheading The @code{-symbol-type} Command
32125@findex -symbol-type
922fbb7b
AC
32126
32127@subsubheading Synopsis
32128
32129@smallexample
a2c02241 32130 -symbol-type @var{variable}
922fbb7b
AC
32131@end smallexample
32132
a2c02241 32133Show type of @var{variable}.
922fbb7b 32134
a2c02241 32135@subsubheading @value{GDBN} Command
922fbb7b 32136
a2c02241
NR
32137The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
32138@samp{gdb_obj_variable}.
32139
32140@subsubheading Example
32141N.A.
9901a55b 32142@end ignore
a2c02241
NR
32143
32144
32145@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32146@node GDB/MI File Commands
32147@section @sc{gdb/mi} File Commands
32148
32149This section describes the GDB/MI commands to specify executable file names
32150and to read in and obtain symbol table information.
32151
32152@subheading The @code{-file-exec-and-symbols} Command
32153@findex -file-exec-and-symbols
32154
32155@subsubheading Synopsis
922fbb7b
AC
32156
32157@smallexample
a2c02241 32158 -file-exec-and-symbols @var{file}
922fbb7b
AC
32159@end smallexample
32160
a2c02241
NR
32161Specify the executable file to be debugged. This file is the one from
32162which the symbol table is also read. If no file is specified, the
32163command clears the executable and symbol information. If breakpoints
32164are set when using this command with no arguments, @value{GDBN} will produce
32165error messages. Otherwise, no output is produced, except a completion
32166notification.
32167
922fbb7b
AC
32168@subsubheading @value{GDBN} Command
32169
a2c02241 32170The corresponding @value{GDBN} command is @samp{file}.
922fbb7b
AC
32171
32172@subsubheading Example
32173
32174@smallexample
594fe323 32175(gdb)
a2c02241
NR
32176-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32177^done
594fe323 32178(gdb)
922fbb7b
AC
32179@end smallexample
32180
922fbb7b 32181
a2c02241
NR
32182@subheading The @code{-file-exec-file} Command
32183@findex -file-exec-file
922fbb7b
AC
32184
32185@subsubheading Synopsis
32186
32187@smallexample
a2c02241 32188 -file-exec-file @var{file}
922fbb7b
AC
32189@end smallexample
32190
a2c02241
NR
32191Specify the executable file to be debugged. Unlike
32192@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
32193from this file. If used without argument, @value{GDBN} clears the information
32194about the executable file. No output is produced, except a completion
32195notification.
922fbb7b 32196
a2c02241
NR
32197@subsubheading @value{GDBN} Command
32198
32199The corresponding @value{GDBN} command is @samp{exec-file}.
922fbb7b
AC
32200
32201@subsubheading Example
a2c02241
NR
32202
32203@smallexample
594fe323 32204(gdb)
a2c02241
NR
32205-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32206^done
594fe323 32207(gdb)
a2c02241 32208@end smallexample
922fbb7b
AC
32209
32210
9901a55b 32211@ignore
a2c02241
NR
32212@subheading The @code{-file-list-exec-sections} Command
32213@findex -file-list-exec-sections
922fbb7b
AC
32214
32215@subsubheading Synopsis
32216
32217@smallexample
a2c02241 32218 -file-list-exec-sections
922fbb7b
AC
32219@end smallexample
32220
a2c02241
NR
32221List the sections of the current executable file.
32222
922fbb7b
AC
32223@subsubheading @value{GDBN} Command
32224
a2c02241
NR
32225The @value{GDBN} command @samp{info file} shows, among the rest, the same
32226information as this command. @code{gdbtk} has a corresponding command
32227@samp{gdb_load_info}.
922fbb7b
AC
32228
32229@subsubheading Example
32230N.A.
9901a55b 32231@end ignore
922fbb7b
AC
32232
32233
a2c02241
NR
32234@subheading The @code{-file-list-exec-source-file} Command
32235@findex -file-list-exec-source-file
922fbb7b
AC
32236
32237@subsubheading Synopsis
32238
32239@smallexample
a2c02241 32240 -file-list-exec-source-file
922fbb7b
AC
32241@end smallexample
32242
a2c02241 32243List the line number, the current source file, and the absolute path
44288b44
NR
32244to the current source file for the current executable. The macro
32245information field has a value of @samp{1} or @samp{0} depending on
32246whether or not the file includes preprocessor macro information.
922fbb7b
AC
32247
32248@subsubheading @value{GDBN} Command
32249
a2c02241 32250The @value{GDBN} equivalent is @samp{info source}
922fbb7b
AC
32251
32252@subsubheading Example
32253
922fbb7b 32254@smallexample
594fe323 32255(gdb)
a2c02241 32256123-file-list-exec-source-file
44288b44 32257123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
594fe323 32258(gdb)
922fbb7b
AC
32259@end smallexample
32260
32261
a2c02241
NR
32262@subheading The @code{-file-list-exec-source-files} Command
32263@findex -file-list-exec-source-files
922fbb7b
AC
32264
32265@subsubheading Synopsis
32266
32267@smallexample
a2c02241 32268 -file-list-exec-source-files
922fbb7b
AC
32269@end smallexample
32270
a2c02241
NR
32271List the source files for the current executable.
32272
f35a17b5
JK
32273It will always output both the filename and fullname (absolute file
32274name) of a source file.
922fbb7b
AC
32275
32276@subsubheading @value{GDBN} Command
32277
a2c02241
NR
32278The @value{GDBN} equivalent is @samp{info sources}.
32279@code{gdbtk} has an analogous command @samp{gdb_listfiles}.
922fbb7b
AC
32280
32281@subsubheading Example
922fbb7b 32282@smallexample
594fe323 32283(gdb)
a2c02241
NR
32284-file-list-exec-source-files
32285^done,files=[
32286@{file=foo.c,fullname=/home/foo.c@},
32287@{file=/home/bar.c,fullname=/home/bar.c@},
32288@{file=gdb_could_not_find_fullpath.c@}]
594fe323 32289(gdb)
922fbb7b
AC
32290@end smallexample
32291
9901a55b 32292@ignore
a2c02241
NR
32293@subheading The @code{-file-list-shared-libraries} Command
32294@findex -file-list-shared-libraries
922fbb7b 32295
a2c02241 32296@subsubheading Synopsis
922fbb7b 32297
a2c02241
NR
32298@smallexample
32299 -file-list-shared-libraries
32300@end smallexample
922fbb7b 32301
a2c02241 32302List the shared libraries in the program.
922fbb7b 32303
a2c02241 32304@subsubheading @value{GDBN} Command
922fbb7b 32305
a2c02241 32306The corresponding @value{GDBN} command is @samp{info shared}.
922fbb7b 32307
a2c02241
NR
32308@subsubheading Example
32309N.A.
922fbb7b
AC
32310
32311
a2c02241
NR
32312@subheading The @code{-file-list-symbol-files} Command
32313@findex -file-list-symbol-files
922fbb7b 32314
a2c02241 32315@subsubheading Synopsis
922fbb7b 32316
a2c02241
NR
32317@smallexample
32318 -file-list-symbol-files
32319@end smallexample
922fbb7b 32320
a2c02241 32321List symbol files.
922fbb7b 32322
a2c02241 32323@subsubheading @value{GDBN} Command
922fbb7b 32324
a2c02241 32325The corresponding @value{GDBN} command is @samp{info file} (part of it).
922fbb7b 32326
a2c02241
NR
32327@subsubheading Example
32328N.A.
9901a55b 32329@end ignore
922fbb7b 32330
922fbb7b 32331
a2c02241
NR
32332@subheading The @code{-file-symbol-file} Command
32333@findex -file-symbol-file
922fbb7b 32334
a2c02241 32335@subsubheading Synopsis
922fbb7b 32336
a2c02241
NR
32337@smallexample
32338 -file-symbol-file @var{file}
32339@end smallexample
922fbb7b 32340
a2c02241
NR
32341Read symbol table info from the specified @var{file} argument. When
32342used without arguments, clears @value{GDBN}'s symbol table info. No output is
32343produced, except for a completion notification.
922fbb7b 32344
a2c02241 32345@subsubheading @value{GDBN} Command
922fbb7b 32346
a2c02241 32347The corresponding @value{GDBN} command is @samp{symbol-file}.
922fbb7b 32348
a2c02241 32349@subsubheading Example
922fbb7b 32350
a2c02241 32351@smallexample
594fe323 32352(gdb)
a2c02241
NR
32353-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
32354^done
594fe323 32355(gdb)
a2c02241 32356@end smallexample
922fbb7b 32357
a2c02241 32358@ignore
a2c02241
NR
32359@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32360@node GDB/MI Memory Overlay Commands
32361@section @sc{gdb/mi} Memory Overlay Commands
922fbb7b 32362
a2c02241 32363The memory overlay commands are not implemented.
922fbb7b 32364
a2c02241 32365@c @subheading -overlay-auto
922fbb7b 32366
a2c02241 32367@c @subheading -overlay-list-mapping-state
922fbb7b 32368
a2c02241 32369@c @subheading -overlay-list-overlays
922fbb7b 32370
a2c02241 32371@c @subheading -overlay-map
922fbb7b 32372
a2c02241 32373@c @subheading -overlay-off
922fbb7b 32374
a2c02241 32375@c @subheading -overlay-on
922fbb7b 32376
a2c02241 32377@c @subheading -overlay-unmap
922fbb7b 32378
a2c02241
NR
32379@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32380@node GDB/MI Signal Handling Commands
32381@section @sc{gdb/mi} Signal Handling Commands
922fbb7b 32382
a2c02241 32383Signal handling commands are not implemented.
922fbb7b 32384
a2c02241 32385@c @subheading -signal-handle
922fbb7b 32386
a2c02241 32387@c @subheading -signal-list-handle-actions
922fbb7b 32388
a2c02241
NR
32389@c @subheading -signal-list-signal-types
32390@end ignore
922fbb7b 32391
922fbb7b 32392
a2c02241
NR
32393@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32394@node GDB/MI Target Manipulation
32395@section @sc{gdb/mi} Target Manipulation Commands
922fbb7b
AC
32396
32397
a2c02241
NR
32398@subheading The @code{-target-attach} Command
32399@findex -target-attach
922fbb7b
AC
32400
32401@subsubheading Synopsis
32402
32403@smallexample
c3b108f7 32404 -target-attach @var{pid} | @var{gid} | @var{file}
922fbb7b
AC
32405@end smallexample
32406
c3b108f7
VP
32407Attach to a process @var{pid} or a file @var{file} outside of
32408@value{GDBN}, or a thread group @var{gid}. If attaching to a thread
32409group, the id previously returned by
32410@samp{-list-thread-groups --available} must be used.
922fbb7b 32411
79a6e687 32412@subsubheading @value{GDBN} Command
922fbb7b 32413
a2c02241 32414The corresponding @value{GDBN} command is @samp{attach}.
922fbb7b 32415
a2c02241 32416@subsubheading Example
b56e7235
VP
32417@smallexample
32418(gdb)
32419-target-attach 34
32420=thread-created,id="1"
5ae4183a 32421*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@}
b56e7235
VP
32422^done
32423(gdb)
32424@end smallexample
a2c02241 32425
9901a55b 32426@ignore
a2c02241
NR
32427@subheading The @code{-target-compare-sections} Command
32428@findex -target-compare-sections
922fbb7b
AC
32429
32430@subsubheading Synopsis
32431
32432@smallexample
a2c02241 32433 -target-compare-sections [ @var{section} ]
922fbb7b
AC
32434@end smallexample
32435
a2c02241
NR
32436Compare data of section @var{section} on target to the exec file.
32437Without the argument, all sections are compared.
922fbb7b 32438
a2c02241 32439@subsubheading @value{GDBN} Command
922fbb7b 32440
a2c02241 32441The @value{GDBN} equivalent is @samp{compare-sections}.
922fbb7b 32442
a2c02241
NR
32443@subsubheading Example
32444N.A.
9901a55b 32445@end ignore
a2c02241
NR
32446
32447
32448@subheading The @code{-target-detach} Command
32449@findex -target-detach
922fbb7b
AC
32450
32451@subsubheading Synopsis
32452
32453@smallexample
c3b108f7 32454 -target-detach [ @var{pid} | @var{gid} ]
922fbb7b
AC
32455@end smallexample
32456
a2c02241 32457Detach from the remote target which normally resumes its execution.
c3b108f7
VP
32458If either @var{pid} or @var{gid} is specified, detaches from either
32459the specified process, or specified thread group. There's no output.
a2c02241 32460
79a6e687 32461@subsubheading @value{GDBN} Command
a2c02241
NR
32462
32463The corresponding @value{GDBN} command is @samp{detach}.
32464
32465@subsubheading Example
922fbb7b
AC
32466
32467@smallexample
594fe323 32468(gdb)
a2c02241
NR
32469-target-detach
32470^done
594fe323 32471(gdb)
922fbb7b
AC
32472@end smallexample
32473
32474
a2c02241
NR
32475@subheading The @code{-target-disconnect} Command
32476@findex -target-disconnect
922fbb7b
AC
32477
32478@subsubheading Synopsis
32479
123dc839 32480@smallexample
a2c02241 32481 -target-disconnect
123dc839 32482@end smallexample
922fbb7b 32483
a2c02241
NR
32484Disconnect from the remote target. There's no output and the target is
32485generally not resumed.
32486
79a6e687 32487@subsubheading @value{GDBN} Command
a2c02241
NR
32488
32489The corresponding @value{GDBN} command is @samp{disconnect}.
bc8ced35
NR
32490
32491@subsubheading Example
922fbb7b
AC
32492
32493@smallexample
594fe323 32494(gdb)
a2c02241
NR
32495-target-disconnect
32496^done
594fe323 32497(gdb)
922fbb7b
AC
32498@end smallexample
32499
32500
a2c02241
NR
32501@subheading The @code{-target-download} Command
32502@findex -target-download
922fbb7b
AC
32503
32504@subsubheading Synopsis
32505
32506@smallexample
a2c02241 32507 -target-download
922fbb7b
AC
32508@end smallexample
32509
a2c02241
NR
32510Loads the executable onto the remote target.
32511It prints out an update message every half second, which includes the fields:
32512
32513@table @samp
32514@item section
32515The name of the section.
32516@item section-sent
32517The size of what has been sent so far for that section.
32518@item section-size
32519The size of the section.
32520@item total-sent
32521The total size of what was sent so far (the current and the previous sections).
32522@item total-size
32523The size of the overall executable to download.
32524@end table
32525
32526@noindent
32527Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
32528@sc{gdb/mi} Output Syntax}).
32529
32530In addition, it prints the name and size of the sections, as they are
32531downloaded. These messages include the following fields:
32532
32533@table @samp
32534@item section
32535The name of the section.
32536@item section-size
32537The size of the section.
32538@item total-size
32539The size of the overall executable to download.
32540@end table
32541
32542@noindent
32543At the end, a summary is printed.
32544
32545@subsubheading @value{GDBN} Command
32546
32547The corresponding @value{GDBN} command is @samp{load}.
32548
32549@subsubheading Example
32550
32551Note: each status message appears on a single line. Here the messages
32552have been broken down so that they can fit onto a page.
922fbb7b
AC
32553
32554@smallexample
594fe323 32555(gdb)
a2c02241
NR
32556-target-download
32557+download,@{section=".text",section-size="6668",total-size="9880"@}
32558+download,@{section=".text",section-sent="512",section-size="6668",
32559total-sent="512",total-size="9880"@}
32560+download,@{section=".text",section-sent="1024",section-size="6668",
32561total-sent="1024",total-size="9880"@}
32562+download,@{section=".text",section-sent="1536",section-size="6668",
32563total-sent="1536",total-size="9880"@}
32564+download,@{section=".text",section-sent="2048",section-size="6668",
32565total-sent="2048",total-size="9880"@}
32566+download,@{section=".text",section-sent="2560",section-size="6668",
32567total-sent="2560",total-size="9880"@}
32568+download,@{section=".text",section-sent="3072",section-size="6668",
32569total-sent="3072",total-size="9880"@}
32570+download,@{section=".text",section-sent="3584",section-size="6668",
32571total-sent="3584",total-size="9880"@}
32572+download,@{section=".text",section-sent="4096",section-size="6668",
32573total-sent="4096",total-size="9880"@}
32574+download,@{section=".text",section-sent="4608",section-size="6668",
32575total-sent="4608",total-size="9880"@}
32576+download,@{section=".text",section-sent="5120",section-size="6668",
32577total-sent="5120",total-size="9880"@}
32578+download,@{section=".text",section-sent="5632",section-size="6668",
32579total-sent="5632",total-size="9880"@}
32580+download,@{section=".text",section-sent="6144",section-size="6668",
32581total-sent="6144",total-size="9880"@}
32582+download,@{section=".text",section-sent="6656",section-size="6668",
32583total-sent="6656",total-size="9880"@}
32584+download,@{section=".init",section-size="28",total-size="9880"@}
32585+download,@{section=".fini",section-size="28",total-size="9880"@}
32586+download,@{section=".data",section-size="3156",total-size="9880"@}
32587+download,@{section=".data",section-sent="512",section-size="3156",
32588total-sent="7236",total-size="9880"@}
32589+download,@{section=".data",section-sent="1024",section-size="3156",
32590total-sent="7748",total-size="9880"@}
32591+download,@{section=".data",section-sent="1536",section-size="3156",
32592total-sent="8260",total-size="9880"@}
32593+download,@{section=".data",section-sent="2048",section-size="3156",
32594total-sent="8772",total-size="9880"@}
32595+download,@{section=".data",section-sent="2560",section-size="3156",
32596total-sent="9284",total-size="9880"@}
32597+download,@{section=".data",section-sent="3072",section-size="3156",
32598total-sent="9796",total-size="9880"@}
32599^done,address="0x10004",load-size="9880",transfer-rate="6586",
32600write-rate="429"
594fe323 32601(gdb)
922fbb7b
AC
32602@end smallexample
32603
32604
9901a55b 32605@ignore
a2c02241
NR
32606@subheading The @code{-target-exec-status} Command
32607@findex -target-exec-status
922fbb7b
AC
32608
32609@subsubheading Synopsis
32610
32611@smallexample
a2c02241 32612 -target-exec-status
922fbb7b
AC
32613@end smallexample
32614
a2c02241
NR
32615Provide information on the state of the target (whether it is running or
32616not, for instance).
922fbb7b 32617
a2c02241 32618@subsubheading @value{GDBN} Command
922fbb7b 32619
a2c02241
NR
32620There's no equivalent @value{GDBN} command.
32621
32622@subsubheading Example
32623N.A.
922fbb7b 32624
a2c02241
NR
32625
32626@subheading The @code{-target-list-available-targets} Command
32627@findex -target-list-available-targets
922fbb7b
AC
32628
32629@subsubheading Synopsis
32630
32631@smallexample
a2c02241 32632 -target-list-available-targets
922fbb7b
AC
32633@end smallexample
32634
a2c02241 32635List the possible targets to connect to.
922fbb7b 32636
a2c02241 32637@subsubheading @value{GDBN} Command
922fbb7b 32638
a2c02241 32639The corresponding @value{GDBN} command is @samp{help target}.
922fbb7b 32640
a2c02241
NR
32641@subsubheading Example
32642N.A.
32643
32644
32645@subheading The @code{-target-list-current-targets} Command
32646@findex -target-list-current-targets
922fbb7b
AC
32647
32648@subsubheading Synopsis
32649
32650@smallexample
a2c02241 32651 -target-list-current-targets
922fbb7b
AC
32652@end smallexample
32653
a2c02241 32654Describe the current target.
922fbb7b 32655
a2c02241 32656@subsubheading @value{GDBN} Command
922fbb7b 32657
a2c02241
NR
32658The corresponding information is printed by @samp{info file} (among
32659other things).
922fbb7b 32660
a2c02241
NR
32661@subsubheading Example
32662N.A.
32663
32664
32665@subheading The @code{-target-list-parameters} Command
32666@findex -target-list-parameters
922fbb7b
AC
32667
32668@subsubheading Synopsis
32669
32670@smallexample
a2c02241 32671 -target-list-parameters
922fbb7b
AC
32672@end smallexample
32673
a2c02241 32674@c ????
9901a55b 32675@end ignore
a2c02241
NR
32676
32677@subsubheading @value{GDBN} Command
32678
32679No equivalent.
922fbb7b
AC
32680
32681@subsubheading Example
a2c02241
NR
32682N.A.
32683
32684
32685@subheading The @code{-target-select} Command
32686@findex -target-select
32687
32688@subsubheading Synopsis
922fbb7b
AC
32689
32690@smallexample
a2c02241 32691 -target-select @var{type} @var{parameters @dots{}}
922fbb7b
AC
32692@end smallexample
32693
a2c02241 32694Connect @value{GDBN} to the remote target. This command takes two args:
922fbb7b 32695
a2c02241
NR
32696@table @samp
32697@item @var{type}
75c99385 32698The type of target, for instance @samp{remote}, etc.
a2c02241
NR
32699@item @var{parameters}
32700Device names, host names and the like. @xref{Target Commands, ,
79a6e687 32701Commands for Managing Targets}, for more details.
a2c02241
NR
32702@end table
32703
32704The output is a connection notification, followed by the address at
32705which the target program is, in the following form:
922fbb7b
AC
32706
32707@smallexample
a2c02241
NR
32708^connected,addr="@var{address}",func="@var{function name}",
32709 args=[@var{arg list}]
922fbb7b
AC
32710@end smallexample
32711
a2c02241
NR
32712@subsubheading @value{GDBN} Command
32713
32714The corresponding @value{GDBN} command is @samp{target}.
265eeb58
NR
32715
32716@subsubheading Example
922fbb7b 32717
265eeb58 32718@smallexample
594fe323 32719(gdb)
75c99385 32720-target-select remote /dev/ttya
a2c02241 32721^connected,addr="0xfe00a300",func="??",args=[]
594fe323 32722(gdb)
265eeb58 32723@end smallexample
ef21caaf 32724
a6b151f1
DJ
32725@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32726@node GDB/MI File Transfer Commands
32727@section @sc{gdb/mi} File Transfer Commands
32728
32729
32730@subheading The @code{-target-file-put} Command
32731@findex -target-file-put
32732
32733@subsubheading Synopsis
32734
32735@smallexample
32736 -target-file-put @var{hostfile} @var{targetfile}
32737@end smallexample
32738
32739Copy file @var{hostfile} from the host system (the machine running
32740@value{GDBN}) to @var{targetfile} on the target system.
32741
32742@subsubheading @value{GDBN} Command
32743
32744The corresponding @value{GDBN} command is @samp{remote put}.
32745
32746@subsubheading Example
32747
32748@smallexample
32749(gdb)
32750-target-file-put localfile remotefile
32751^done
32752(gdb)
32753@end smallexample
32754
32755
1763a388 32756@subheading The @code{-target-file-get} Command
a6b151f1
DJ
32757@findex -target-file-get
32758
32759@subsubheading Synopsis
32760
32761@smallexample
32762 -target-file-get @var{targetfile} @var{hostfile}
32763@end smallexample
32764
32765Copy file @var{targetfile} from the target system to @var{hostfile}
32766on the host system.
32767
32768@subsubheading @value{GDBN} Command
32769
32770The corresponding @value{GDBN} command is @samp{remote get}.
32771
32772@subsubheading Example
32773
32774@smallexample
32775(gdb)
32776-target-file-get remotefile localfile
32777^done
32778(gdb)
32779@end smallexample
32780
32781
32782@subheading The @code{-target-file-delete} Command
32783@findex -target-file-delete
32784
32785@subsubheading Synopsis
32786
32787@smallexample
32788 -target-file-delete @var{targetfile}
32789@end smallexample
32790
32791Delete @var{targetfile} from the target system.
32792
32793@subsubheading @value{GDBN} Command
32794
32795The corresponding @value{GDBN} command is @samp{remote delete}.
32796
32797@subsubheading Example
32798
32799@smallexample
32800(gdb)
32801-target-file-delete remotefile
32802^done
32803(gdb)
32804@end smallexample
32805
32806
ef21caaf
NR
32807@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32808@node GDB/MI Miscellaneous Commands
32809@section Miscellaneous @sc{gdb/mi} Commands
32810
32811@c @subheading -gdb-complete
32812
32813@subheading The @code{-gdb-exit} Command
32814@findex -gdb-exit
32815
32816@subsubheading Synopsis
32817
32818@smallexample
32819 -gdb-exit
32820@end smallexample
32821
32822Exit @value{GDBN} immediately.
32823
32824@subsubheading @value{GDBN} Command
32825
32826Approximately corresponds to @samp{quit}.
32827
32828@subsubheading Example
32829
32830@smallexample
594fe323 32831(gdb)
ef21caaf
NR
32832-gdb-exit
32833^exit
32834@end smallexample
32835
a2c02241 32836
9901a55b 32837@ignore
a2c02241
NR
32838@subheading The @code{-exec-abort} Command
32839@findex -exec-abort
32840
32841@subsubheading Synopsis
32842
32843@smallexample
32844 -exec-abort
32845@end smallexample
32846
32847Kill the inferior running program.
32848
32849@subsubheading @value{GDBN} Command
32850
32851The corresponding @value{GDBN} command is @samp{kill}.
32852
32853@subsubheading Example
32854N.A.
9901a55b 32855@end ignore
a2c02241
NR
32856
32857
ef21caaf
NR
32858@subheading The @code{-gdb-set} Command
32859@findex -gdb-set
32860
32861@subsubheading Synopsis
32862
32863@smallexample
32864 -gdb-set
32865@end smallexample
32866
32867Set an internal @value{GDBN} variable.
32868@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
32869
32870@subsubheading @value{GDBN} Command
32871
32872The corresponding @value{GDBN} command is @samp{set}.
32873
32874@subsubheading Example
32875
32876@smallexample
594fe323 32877(gdb)
ef21caaf
NR
32878-gdb-set $foo=3
32879^done
594fe323 32880(gdb)
ef21caaf
NR
32881@end smallexample
32882
32883
32884@subheading The @code{-gdb-show} Command
32885@findex -gdb-show
32886
32887@subsubheading Synopsis
32888
32889@smallexample
32890 -gdb-show
32891@end smallexample
32892
32893Show the current value of a @value{GDBN} variable.
32894
79a6e687 32895@subsubheading @value{GDBN} Command
ef21caaf
NR
32896
32897The corresponding @value{GDBN} command is @samp{show}.
32898
32899@subsubheading Example
32900
32901@smallexample
594fe323 32902(gdb)
ef21caaf
NR
32903-gdb-show annotate
32904^done,value="0"
594fe323 32905(gdb)
ef21caaf
NR
32906@end smallexample
32907
32908@c @subheading -gdb-source
32909
32910
32911@subheading The @code{-gdb-version} Command
32912@findex -gdb-version
32913
32914@subsubheading Synopsis
32915
32916@smallexample
32917 -gdb-version
32918@end smallexample
32919
32920Show version information for @value{GDBN}. Used mostly in testing.
32921
32922@subsubheading @value{GDBN} Command
32923
32924The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by
32925default shows this information when you start an interactive session.
32926
32927@subsubheading Example
32928
32929@c This example modifies the actual output from GDB to avoid overfull
32930@c box in TeX.
32931@smallexample
594fe323 32932(gdb)
ef21caaf
NR
32933-gdb-version
32934~GNU gdb 5.2.1
32935~Copyright 2000 Free Software Foundation, Inc.
32936~GDB is free software, covered by the GNU General Public License, and
32937~you are welcome to change it and/or distribute copies of it under
32938~ certain conditions.
32939~Type "show copying" to see the conditions.
32940~There is absolutely no warranty for GDB. Type "show warranty" for
32941~ details.
32942~This GDB was configured as
32943 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
32944^done
594fe323 32945(gdb)
ef21caaf
NR
32946@end smallexample
32947
084344da
VP
32948@subheading The @code{-list-features} Command
32949@findex -list-features
32950
32951Returns a list of particular features of the MI protocol that
32952this version of gdb implements. A feature can be a command,
32953or a new field in an output of some command, or even an
32954important bugfix. While a frontend can sometimes detect presence
32955of a feature at runtime, it is easier to perform detection at debugger
32956startup.
32957
32958The command returns a list of strings, with each string naming an
32959available feature. Each returned string is just a name, it does not
32960have any internal structure. The list of possible feature names
32961is given below.
32962
32963Example output:
32964
32965@smallexample
32966(gdb) -list-features
32967^done,result=["feature1","feature2"]
32968@end smallexample
32969
32970The current list of features is:
32971
30e026bb
VP
32972@table @samp
32973@item frozen-varobjs
a05336a1
JB
32974Indicates support for the @code{-var-set-frozen} command, as well
32975as possible presense of the @code{frozen} field in the output
30e026bb
VP
32976of @code{-varobj-create}.
32977@item pending-breakpoints
a05336a1
JB
32978Indicates support for the @option{-f} option to the @code{-break-insert}
32979command.
b6313243 32980@item python
a05336a1 32981Indicates Python scripting support, Python-based
b6313243
TT
32982pretty-printing commands, and possible presence of the
32983@samp{display_hint} field in the output of @code{-var-list-children}
30e026bb 32984@item thread-info
a05336a1 32985Indicates support for the @code{-thread-info} command.
8dedea02 32986@item data-read-memory-bytes
a05336a1 32987Indicates support for the @code{-data-read-memory-bytes} and the
8dedea02 32988@code{-data-write-memory-bytes} commands.
39c4d40a
TT
32989@item breakpoint-notifications
32990Indicates that changes to breakpoints and breakpoints created via the
32991CLI will be announced via async records.
5d77fe44
JB
32992@item ada-task-info
32993Indicates support for the @code{-ada-task-info} command.
30e026bb 32994@end table
084344da 32995
c6ebd6cf
VP
32996@subheading The @code{-list-target-features} Command
32997@findex -list-target-features
32998
32999Returns a list of particular features that are supported by the
33000target. Those features affect the permitted MI commands, but
33001unlike the features reported by the @code{-list-features} command, the
33002features depend on which target GDB is using at the moment. Whenever
33003a target can change, due to commands such as @code{-target-select},
33004@code{-target-attach} or @code{-exec-run}, the list of target features
33005may change, and the frontend should obtain it again.
33006Example output:
33007
33008@smallexample
33009(gdb) -list-features
33010^done,result=["async"]
33011@end smallexample
33012
33013The current list of features is:
33014
33015@table @samp
33016@item async
33017Indicates that the target is capable of asynchronous command
33018execution, which means that @value{GDBN} will accept further commands
33019while the target is running.
33020
f75d858b
MK
33021@item reverse
33022Indicates that the target is capable of reverse execution.
33023@xref{Reverse Execution}, for more information.
33024
c6ebd6cf
VP
33025@end table
33026
c3b108f7
VP
33027@subheading The @code{-list-thread-groups} Command
33028@findex -list-thread-groups
33029
33030@subheading Synopsis
33031
33032@smallexample
dc146f7c 33033-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ]
c3b108f7
VP
33034@end smallexample
33035
dc146f7c
VP
33036Lists thread groups (@pxref{Thread groups}). When a single thread
33037group is passed as the argument, lists the children of that group.
33038When several thread group are passed, lists information about those
33039thread groups. Without any parameters, lists information about all
33040top-level thread groups.
33041
33042Normally, thread groups that are being debugged are reported.
33043With the @samp{--available} option, @value{GDBN} reports thread groups
33044available on the target.
33045
33046The output of this command may have either a @samp{threads} result or
33047a @samp{groups} result. The @samp{thread} result has a list of tuples
33048as value, with each tuple describing a thread (@pxref{GDB/MI Thread
33049Information}). The @samp{groups} result has a list of tuples as value,
33050each tuple describing a thread group. If top-level groups are
33051requested (that is, no parameter is passed), or when several groups
33052are passed, the output always has a @samp{groups} result. The format
33053of the @samp{group} result is described below.
33054
33055To reduce the number of roundtrips it's possible to list thread groups
33056together with their children, by passing the @samp{--recurse} option
33057and the recursion depth. Presently, only recursion depth of 1 is
33058permitted. If this option is present, then every reported thread group
33059will also include its children, either as @samp{group} or
33060@samp{threads} field.
33061
33062In general, any combination of option and parameters is permitted, with
33063the following caveats:
33064
33065@itemize @bullet
33066@item
33067When a single thread group is passed, the output will typically
33068be the @samp{threads} result. Because threads may not contain
33069anything, the @samp{recurse} option will be ignored.
33070
33071@item
33072When the @samp{--available} option is passed, limited information may
33073be available. In particular, the list of threads of a process might
33074be inaccessible. Further, specifying specific thread groups might
33075not give any performance advantage over listing all thread groups.
33076The frontend should assume that @samp{-list-thread-groups --available}
33077is always an expensive operation and cache the results.
33078
33079@end itemize
33080
33081The @samp{groups} result is a list of tuples, where each tuple may
33082have the following fields:
33083
33084@table @code
33085@item id
33086Identifier of the thread group. This field is always present.
a79b8f6e
VP
33087The identifier is an opaque string; frontends should not try to
33088convert it to an integer, even though it might look like one.
dc146f7c
VP
33089
33090@item type
33091The type of the thread group. At present, only @samp{process} is a
33092valid type.
33093
33094@item pid
33095The target-specific process identifier. This field is only present
a79b8f6e 33096for thread groups of type @samp{process} and only if the process exists.
c3b108f7 33097
dc146f7c
VP
33098@item num_children
33099The number of children this thread group has. This field may be
33100absent for an available thread group.
33101
33102@item threads
33103This field has a list of tuples as value, each tuple describing a
33104thread. It may be present if the @samp{--recurse} option is
33105specified, and it's actually possible to obtain the threads.
33106
33107@item cores
33108This field is a list of integers, each identifying a core that one
33109thread of the group is running on. This field may be absent if
33110such information is not available.
33111
a79b8f6e
VP
33112@item executable
33113The name of the executable file that corresponds to this thread group.
33114The field is only present for thread groups of type @samp{process},
33115and only if there is a corresponding executable file.
33116
dc146f7c 33117@end table
c3b108f7
VP
33118
33119@subheading Example
33120
33121@smallexample
33122@value{GDBP}
33123-list-thread-groups
33124^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}]
33125-list-thread-groups 17
33126^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
33127 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
33128@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
33129 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
33130 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]]
dc146f7c
VP
33131-list-thread-groups --available
33132^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}]
33133-list-thread-groups --available --recurse 1
33134 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
33135 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
33136 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..]
33137-list-thread-groups --available --recurse 1 17 18
33138^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
33139 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
33140 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...]
c3b108f7 33141@end smallexample
c6ebd6cf 33142
f3e0e960
SS
33143@subheading The @code{-info-os} Command
33144@findex -info-os
33145
33146@subsubheading Synopsis
33147
33148@smallexample
33149-info-os [ @var{type} ]
33150@end smallexample
33151
33152If no argument is supplied, the command returns a table of available
33153operating-system-specific information types. If one of these types is
33154supplied as an argument @var{type}, then the command returns a table
33155of data of that type.
33156
33157The types of information available depend on the target operating
33158system.
33159
33160@subsubheading @value{GDBN} Command
33161
33162The corresponding @value{GDBN} command is @samp{info os}.
33163
33164@subsubheading Example
33165
33166When run on a @sc{gnu}/Linux system, the output will look something
33167like this:
33168
33169@smallexample
33170@value{GDBP}
33171-info-os
71caed83 33172^done,OSDataTable=@{nr_rows="9",nr_cols="3",
f3e0e960 33173hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@},
71caed83
SS
33174 @{width="10",alignment="-1",col_name="col1",colhdr="Description"@},
33175 @{width="10",alignment="-1",col_name="col2",colhdr="Title"@}],
33176body=[item=@{col0="processes",col1="Listing of all processes",
33177 col2="Processes"@},
33178 item=@{col0="procgroups",col1="Listing of all process groups",
33179 col2="Process groups"@},
33180 item=@{col0="threads",col1="Listing of all threads",
33181 col2="Threads"@},
33182 item=@{col0="files",col1="Listing of all file descriptors",
33183 col2="File descriptors"@},
33184 item=@{col0="sockets",col1="Listing of all internet-domain sockets",
33185 col2="Sockets"@},
33186 item=@{col0="shm",col1="Listing of all shared-memory regions",
33187 col2="Shared-memory regions"@},
33188 item=@{col0="semaphores",col1="Listing of all semaphores",
33189 col2="Semaphores"@},
33190 item=@{col0="msg",col1="Listing of all message queues",
33191 col2="Message queues"@},
33192 item=@{col0="modules",col1="Listing of all loaded kernel modules",
33193 col2="Kernel modules"@}]@}
f3e0e960
SS
33194@value{GDBP}
33195-info-os processes
33196^done,OSDataTable=@{nr_rows="190",nr_cols="4",
33197hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@},
33198 @{width="10",alignment="-1",col_name="col1",colhdr="user"@},
33199 @{width="10",alignment="-1",col_name="col2",colhdr="command"@},
33200 @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}],
33201body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@},
33202 item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@},
33203 item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@},
33204 ...
33205 item=@{col0="26446",col1="stan",col2="bash",col3="0"@},
33206 item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@}
33207(gdb)
33208@end smallexample
a79b8f6e 33209
71caed83
SS
33210(Note that the MI output here includes a @code{"Title"} column that
33211does not appear in command-line @code{info os}; this column is useful
33212for MI clients that want to enumerate the types of data, such as in a
33213popup menu, but is needless clutter on the command line, and
33214@code{info os} omits it.)
33215
a79b8f6e
VP
33216@subheading The @code{-add-inferior} Command
33217@findex -add-inferior
33218
33219@subheading Synopsis
33220
33221@smallexample
33222-add-inferior
33223@end smallexample
33224
33225Creates a new inferior (@pxref{Inferiors and Programs}). The created
33226inferior is not associated with any executable. Such association may
33227be established with the @samp{-file-exec-and-symbols} command
33228(@pxref{GDB/MI File Commands}). The command response has a single
33229field, @samp{thread-group}, whose value is the identifier of the
33230thread group corresponding to the new inferior.
33231
33232@subheading Example
33233
33234@smallexample
33235@value{GDBP}
33236-add-inferior
33237^done,thread-group="i3"
33238@end smallexample
33239
ef21caaf
NR
33240@subheading The @code{-interpreter-exec} Command
33241@findex -interpreter-exec
33242
33243@subheading Synopsis
33244
33245@smallexample
33246-interpreter-exec @var{interpreter} @var{command}
33247@end smallexample
a2c02241 33248@anchor{-interpreter-exec}
ef21caaf
NR
33249
33250Execute the specified @var{command} in the given @var{interpreter}.
33251
33252@subheading @value{GDBN} Command
33253
33254The corresponding @value{GDBN} command is @samp{interpreter-exec}.
33255
33256@subheading Example
33257
33258@smallexample
594fe323 33259(gdb)
ef21caaf
NR
33260-interpreter-exec console "break main"
33261&"During symbol reading, couldn't parse type; debugger out of date?.\n"
33262&"During symbol reading, bad structure-type format.\n"
33263~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
33264^done
594fe323 33265(gdb)
ef21caaf
NR
33266@end smallexample
33267
33268@subheading The @code{-inferior-tty-set} Command
33269@findex -inferior-tty-set
33270
33271@subheading Synopsis
33272
33273@smallexample
33274-inferior-tty-set /dev/pts/1
33275@end smallexample
33276
33277Set terminal for future runs of the program being debugged.
33278
33279@subheading @value{GDBN} Command
33280
33281The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1.
33282
33283@subheading Example
33284
33285@smallexample
594fe323 33286(gdb)
ef21caaf
NR
33287-inferior-tty-set /dev/pts/1
33288^done
594fe323 33289(gdb)
ef21caaf
NR
33290@end smallexample
33291
33292@subheading The @code{-inferior-tty-show} Command
33293@findex -inferior-tty-show
33294
33295@subheading Synopsis
33296
33297@smallexample
33298-inferior-tty-show
33299@end smallexample
33300
33301Show terminal for future runs of program being debugged.
33302
33303@subheading @value{GDBN} Command
33304
33305The corresponding @value{GDBN} command is @samp{show inferior-tty}.
33306
33307@subheading Example
33308
33309@smallexample
594fe323 33310(gdb)
ef21caaf
NR
33311-inferior-tty-set /dev/pts/1
33312^done
594fe323 33313(gdb)
ef21caaf
NR
33314-inferior-tty-show
33315^done,inferior_tty_terminal="/dev/pts/1"
594fe323 33316(gdb)
ef21caaf 33317@end smallexample
922fbb7b 33318
a4eefcd8
NR
33319@subheading The @code{-enable-timings} Command
33320@findex -enable-timings
33321
33322@subheading Synopsis
33323
33324@smallexample
33325-enable-timings [yes | no]
33326@end smallexample
33327
33328Toggle the printing of the wallclock, user and system times for an MI
33329command as a field in its output. This command is to help frontend
33330developers optimize the performance of their code. No argument is
33331equivalent to @samp{yes}.
33332
33333@subheading @value{GDBN} Command
33334
33335No equivalent.
33336
33337@subheading Example
33338
33339@smallexample
33340(gdb)
33341-enable-timings
33342^done
33343(gdb)
33344-break-insert main
33345^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
33346addr="0x080484ed",func="main",file="myprog.c",
33347fullname="/home/nickrob/myprog.c",line="73",times="0"@},
33348time=@{wallclock="0.05185",user="0.00800",system="0.00000"@}
33349(gdb)
33350-enable-timings no
33351^done
33352(gdb)
33353-exec-run
33354^running
33355(gdb)
a47ec5fe 33356*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
a4eefcd8
NR
33357frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@},
33358@{name="argv",value="0xbfb60364"@}],file="myprog.c",
33359fullname="/home/nickrob/myprog.c",line="73"@}
33360(gdb)
33361@end smallexample
33362
922fbb7b
AC
33363@node Annotations
33364@chapter @value{GDBN} Annotations
33365
086432e2
AC
33366This chapter describes annotations in @value{GDBN}. Annotations were
33367designed to interface @value{GDBN} to graphical user interfaces or other
33368similar programs which want to interact with @value{GDBN} at a
922fbb7b
AC
33369relatively high level.
33370
d3e8051b 33371The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2
AC
33372(@pxref{GDB/MI}).
33373
922fbb7b
AC
33374@ignore
33375This is Edition @value{EDITION}, @value{DATE}.
33376@end ignore
33377
33378@menu
33379* Annotations Overview:: What annotations are; the general syntax.
9e6c4bd5 33380* Server Prefix:: Issuing a command without affecting user state.
922fbb7b
AC
33381* Prompting:: Annotations marking @value{GDBN}'s need for input.
33382* Errors:: Annotations for error messages.
922fbb7b
AC
33383* Invalidation:: Some annotations describe things now invalid.
33384* Annotations for Running::
33385 Whether the program is running, how it stopped, etc.
33386* Source Annotations:: Annotations describing source code.
922fbb7b
AC
33387@end menu
33388
33389@node Annotations Overview
33390@section What is an Annotation?
33391@cindex annotations
33392
922fbb7b
AC
33393Annotations start with a newline character, two @samp{control-z}
33394characters, and the name of the annotation. If there is no additional
33395information associated with this annotation, the name of the annotation
33396is followed immediately by a newline. If there is additional
33397information, the name of the annotation is followed by a space, the
33398additional information, and a newline. The additional information
33399cannot contain newline characters.
33400
33401Any output not beginning with a newline and two @samp{control-z}
33402characters denotes literal output from @value{GDBN}. Currently there is
33403no need for @value{GDBN} to output a newline followed by two
33404@samp{control-z} characters, but if there was such a need, the
33405annotations could be extended with an @samp{escape} annotation which
33406means those three characters as output.
33407
086432e2
AC
33408The annotation @var{level}, which is specified using the
33409@option{--annotate} command line option (@pxref{Mode Options}), controls
33410how much information @value{GDBN} prints together with its prompt,
33411values of expressions, source lines, and other types of output. Level 0
d3e8051b 33412is for no annotations, level 1 is for use when @value{GDBN} is run as a
086432e2
AC
33413subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
33414for programs that control @value{GDBN}, and level 2 annotations have
33415been made obsolete (@pxref{Limitations, , Limitations of the Annotation
09d4efe1
EZ
33416Interface, annotate, GDB's Obsolete Annotations}).
33417
33418@table @code
33419@kindex set annotate
33420@item set annotate @var{level}
e09f16f9 33421The @value{GDBN} command @code{set annotate} sets the level of
09d4efe1 33422annotations to the specified @var{level}.
9c16f35a
EZ
33423
33424@item show annotate
33425@kindex show annotate
33426Show the current annotation level.
09d4efe1
EZ
33427@end table
33428
33429This chapter describes level 3 annotations.
086432e2 33430
922fbb7b
AC
33431A simple example of starting up @value{GDBN} with annotations is:
33432
33433@smallexample
086432e2
AC
33434$ @kbd{gdb --annotate=3}
33435GNU gdb 6.0
33436Copyright 2003 Free Software Foundation, Inc.
922fbb7b
AC
33437GDB is free software, covered by the GNU General Public License,
33438and you are welcome to change it and/or distribute copies of it
33439under certain conditions.
33440Type "show copying" to see the conditions.
33441There is absolutely no warranty for GDB. Type "show warranty"
33442for details.
086432e2 33443This GDB was configured as "i386-pc-linux-gnu"
922fbb7b
AC
33444
33445^Z^Zpre-prompt
f7dc1244 33446(@value{GDBP})
922fbb7b 33447^Z^Zprompt
086432e2 33448@kbd{quit}
922fbb7b
AC
33449
33450^Z^Zpost-prompt
b383017d 33451$
922fbb7b
AC
33452@end smallexample
33453
33454Here @samp{quit} is input to @value{GDBN}; the rest is output from
33455@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
33456denotes a @samp{control-z} character) are annotations; the rest is
33457output from @value{GDBN}.
33458
9e6c4bd5
NR
33459@node Server Prefix
33460@section The Server Prefix
33461@cindex server prefix
33462
33463If you prefix a command with @samp{server } then it will not affect
33464the command history, nor will it affect @value{GDBN}'s notion of which
33465command to repeat if @key{RET} is pressed on a line by itself. This
33466means that commands can be run behind a user's back by a front-end in
33467a transparent manner.
33468
d837706a
NR
33469The @code{server } prefix does not affect the recording of values into
33470the value history; to print a value without recording it into the
33471value history, use the @code{output} command instead of the
33472@code{print} command.
33473
33474Using this prefix also disables confirmation requests
33475(@pxref{confirmation requests}).
9e6c4bd5 33476
922fbb7b
AC
33477@node Prompting
33478@section Annotation for @value{GDBN} Input
33479
33480@cindex annotations for prompts
33481When @value{GDBN} prompts for input, it annotates this fact so it is possible
33482to know when to send output, when the output from a given command is
33483over, etc.
33484
33485Different kinds of input each have a different @dfn{input type}. Each
33486input type has three annotations: a @code{pre-} annotation, which
33487denotes the beginning of any prompt which is being output, a plain
33488annotation, which denotes the end of the prompt, and then a @code{post-}
33489annotation which denotes the end of any echo which may (or may not) be
33490associated with the input. For example, the @code{prompt} input type
33491features the following annotations:
33492
33493@smallexample
33494^Z^Zpre-prompt
33495^Z^Zprompt
33496^Z^Zpost-prompt
33497@end smallexample
33498
33499The input types are
33500
33501@table @code
e5ac9b53
EZ
33502@findex pre-prompt annotation
33503@findex prompt annotation
33504@findex post-prompt annotation
922fbb7b
AC
33505@item prompt
33506When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
33507
e5ac9b53
EZ
33508@findex pre-commands annotation
33509@findex commands annotation
33510@findex post-commands annotation
922fbb7b
AC
33511@item commands
33512When @value{GDBN} prompts for a set of commands, like in the @code{commands}
33513command. The annotations are repeated for each command which is input.
33514
e5ac9b53
EZ
33515@findex pre-overload-choice annotation
33516@findex overload-choice annotation
33517@findex post-overload-choice annotation
922fbb7b
AC
33518@item overload-choice
33519When @value{GDBN} wants the user to select between various overloaded functions.
33520
e5ac9b53
EZ
33521@findex pre-query annotation
33522@findex query annotation
33523@findex post-query annotation
922fbb7b
AC
33524@item query
33525When @value{GDBN} wants the user to confirm a potentially dangerous operation.
33526
e5ac9b53
EZ
33527@findex pre-prompt-for-continue annotation
33528@findex prompt-for-continue annotation
33529@findex post-prompt-for-continue annotation
922fbb7b
AC
33530@item prompt-for-continue
33531When @value{GDBN} is asking the user to press return to continue. Note: Don't
33532expect this to work well; instead use @code{set height 0} to disable
33533prompting. This is because the counting of lines is buggy in the
33534presence of annotations.
33535@end table
33536
33537@node Errors
33538@section Errors
33539@cindex annotations for errors, warnings and interrupts
33540
e5ac9b53 33541@findex quit annotation
922fbb7b
AC
33542@smallexample
33543^Z^Zquit
33544@end smallexample
33545
33546This annotation occurs right before @value{GDBN} responds to an interrupt.
33547
e5ac9b53 33548@findex error annotation
922fbb7b
AC
33549@smallexample
33550^Z^Zerror
33551@end smallexample
33552
33553This annotation occurs right before @value{GDBN} responds to an error.
33554
33555Quit and error annotations indicate that any annotations which @value{GDBN} was
33556in the middle of may end abruptly. For example, if a
33557@code{value-history-begin} annotation is followed by a @code{error}, one
33558cannot expect to receive the matching @code{value-history-end}. One
33559cannot expect not to receive it either, however; an error annotation
33560does not necessarily mean that @value{GDBN} is immediately returning all the way
33561to the top level.
33562
e5ac9b53 33563@findex error-begin annotation
922fbb7b
AC
33564A quit or error annotation may be preceded by
33565
33566@smallexample
33567^Z^Zerror-begin
33568@end smallexample
33569
33570Any output between that and the quit or error annotation is the error
33571message.
33572
33573Warning messages are not yet annotated.
33574@c If we want to change that, need to fix warning(), type_error(),
33575@c range_error(), and possibly other places.
33576
922fbb7b
AC
33577@node Invalidation
33578@section Invalidation Notices
33579
33580@cindex annotations for invalidation messages
33581The following annotations say that certain pieces of state may have
33582changed.
33583
33584@table @code
e5ac9b53 33585@findex frames-invalid annotation
922fbb7b
AC
33586@item ^Z^Zframes-invalid
33587
33588The frames (for example, output from the @code{backtrace} command) may
33589have changed.
33590
e5ac9b53 33591@findex breakpoints-invalid annotation
922fbb7b
AC
33592@item ^Z^Zbreakpoints-invalid
33593
33594The breakpoints may have changed. For example, the user just added or
33595deleted a breakpoint.
33596@end table
33597
33598@node Annotations for Running
33599@section Running the Program
33600@cindex annotations for running programs
33601
e5ac9b53
EZ
33602@findex starting annotation
33603@findex stopping annotation
922fbb7b 33604When the program starts executing due to a @value{GDBN} command such as
b383017d 33605@code{step} or @code{continue},
922fbb7b
AC
33606
33607@smallexample
33608^Z^Zstarting
33609@end smallexample
33610
b383017d 33611is output. When the program stops,
922fbb7b
AC
33612
33613@smallexample
33614^Z^Zstopped
33615@end smallexample
33616
33617is output. Before the @code{stopped} annotation, a variety of
33618annotations describe how the program stopped.
33619
33620@table @code
e5ac9b53 33621@findex exited annotation
922fbb7b
AC
33622@item ^Z^Zexited @var{exit-status}
33623The program exited, and @var{exit-status} is the exit status (zero for
33624successful exit, otherwise nonzero).
33625
e5ac9b53
EZ
33626@findex signalled annotation
33627@findex signal-name annotation
33628@findex signal-name-end annotation
33629@findex signal-string annotation
33630@findex signal-string-end annotation
922fbb7b
AC
33631@item ^Z^Zsignalled
33632The program exited with a signal. After the @code{^Z^Zsignalled}, the
33633annotation continues:
33634
33635@smallexample
33636@var{intro-text}
33637^Z^Zsignal-name
33638@var{name}
33639^Z^Zsignal-name-end
33640@var{middle-text}
33641^Z^Zsignal-string
33642@var{string}
33643^Z^Zsignal-string-end
33644@var{end-text}
33645@end smallexample
33646
33647@noindent
33648where @var{name} is the name of the signal, such as @code{SIGILL} or
33649@code{SIGSEGV}, and @var{string} is the explanation of the signal, such
33650as @code{Illegal Instruction} or @code{Segmentation fault}.
33651@var{intro-text}, @var{middle-text}, and @var{end-text} are for the
33652user's benefit and have no particular format.
33653
e5ac9b53 33654@findex signal annotation
922fbb7b
AC
33655@item ^Z^Zsignal
33656The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
33657just saying that the program received the signal, not that it was
33658terminated with it.
33659
e5ac9b53 33660@findex breakpoint annotation
922fbb7b
AC
33661@item ^Z^Zbreakpoint @var{number}
33662The program hit breakpoint number @var{number}.
33663
e5ac9b53 33664@findex watchpoint annotation
922fbb7b
AC
33665@item ^Z^Zwatchpoint @var{number}
33666The program hit watchpoint number @var{number}.
33667@end table
33668
33669@node Source Annotations
33670@section Displaying Source
33671@cindex annotations for source display
33672
e5ac9b53 33673@findex source annotation
922fbb7b
AC
33674The following annotation is used instead of displaying source code:
33675
33676@smallexample
33677^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
33678@end smallexample
33679
33680where @var{filename} is an absolute file name indicating which source
33681file, @var{line} is the line number within that file (where 1 is the
33682first line in the file), @var{character} is the character position
33683within the file (where 0 is the first character in the file) (for most
33684debug formats this will necessarily point to the beginning of a line),
33685@var{middle} is @samp{middle} if @var{addr} is in the middle of the
33686line, or @samp{beg} if @var{addr} is at the beginning of the line, and
33687@var{addr} is the address in the target program associated with the
33688source which is being displayed. @var{addr} is in the form @samp{0x}
33689followed by one or more lowercase hex digits (note that this does not
33690depend on the language).
33691
4efc6507
DE
33692@node JIT Interface
33693@chapter JIT Compilation Interface
33694@cindex just-in-time compilation
33695@cindex JIT compilation interface
33696
33697This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation
33698interface. A JIT compiler is a program or library that generates native
33699executable code at runtime and executes it, usually in order to achieve good
33700performance while maintaining platform independence.
33701
33702Programs that use JIT compilation are normally difficult to debug because
33703portions of their code are generated at runtime, instead of being loaded from
33704object files, which is where @value{GDBN} normally finds the program's symbols
33705and debug information. In order to debug programs that use JIT compilation,
33706@value{GDBN} has an interface that allows the program to register in-memory
33707symbol files with @value{GDBN} at runtime.
33708
33709If you are using @value{GDBN} to debug a program that uses this interface, then
33710it should work transparently so long as you have not stripped the binary. If
33711you are developing a JIT compiler, then the interface is documented in the rest
33712of this chapter. At this time, the only known client of this interface is the
33713LLVM JIT.
33714
33715Broadly speaking, the JIT interface mirrors the dynamic loader interface. The
33716JIT compiler communicates with @value{GDBN} by writing data into a global
33717variable and calling a fuction at a well-known symbol. When @value{GDBN}
33718attaches, it reads a linked list of symbol files from the global variable to
33719find existing code, and puts a breakpoint in the function so that it can find
33720out about additional code.
33721
33722@menu
33723* Declarations:: Relevant C struct declarations
33724* Registering Code:: Steps to register code
33725* Unregistering Code:: Steps to unregister code
f85b53f8 33726* Custom Debug Info:: Emit debug information in a custom format
4efc6507
DE
33727@end menu
33728
33729@node Declarations
33730@section JIT Declarations
33731
33732These are the relevant struct declarations that a C program should include to
33733implement the interface:
33734
33735@smallexample
33736typedef enum
33737@{
33738 JIT_NOACTION = 0,
33739 JIT_REGISTER_FN,
33740 JIT_UNREGISTER_FN
33741@} jit_actions_t;
33742
33743struct jit_code_entry
33744@{
33745 struct jit_code_entry *next_entry;
33746 struct jit_code_entry *prev_entry;
33747 const char *symfile_addr;
33748 uint64_t symfile_size;
33749@};
33750
33751struct jit_descriptor
33752@{
33753 uint32_t version;
33754 /* This type should be jit_actions_t, but we use uint32_t
33755 to be explicit about the bitwidth. */
33756 uint32_t action_flag;
33757 struct jit_code_entry *relevant_entry;
33758 struct jit_code_entry *first_entry;
33759@};
33760
33761/* GDB puts a breakpoint in this function. */
33762void __attribute__((noinline)) __jit_debug_register_code() @{ @};
33763
33764/* Make sure to specify the version statically, because the
33765 debugger may check the version before we can set it. */
33766struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @};
33767@end smallexample
33768
33769If the JIT is multi-threaded, then it is important that the JIT synchronize any
33770modifications to this global data properly, which can easily be done by putting
33771a global mutex around modifications to these structures.
33772
33773@node Registering Code
33774@section Registering Code
33775
33776To register code with @value{GDBN}, the JIT should follow this protocol:
33777
33778@itemize @bullet
33779@item
33780Generate an object file in memory with symbols and other desired debug
33781information. The file must include the virtual addresses of the sections.
33782
33783@item
33784Create a code entry for the file, which gives the start and size of the symbol
33785file.
33786
33787@item
33788Add it to the linked list in the JIT descriptor.
33789
33790@item
33791Point the relevant_entry field of the descriptor at the entry.
33792
33793@item
33794Set @code{action_flag} to @code{JIT_REGISTER} and call
33795@code{__jit_debug_register_code}.
33796@end itemize
33797
33798When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the
33799@code{relevant_entry} pointer so it doesn't have to walk the list looking for
33800new code. However, the linked list must still be maintained in order to allow
33801@value{GDBN} to attach to a running process and still find the symbol files.
33802
33803@node Unregistering Code
33804@section Unregistering Code
33805
33806If code is freed, then the JIT should use the following protocol:
33807
33808@itemize @bullet
33809@item
33810Remove the code entry corresponding to the code from the linked list.
33811
33812@item
33813Point the @code{relevant_entry} field of the descriptor at the code entry.
33814
33815@item
33816Set @code{action_flag} to @code{JIT_UNREGISTER} and call
33817@code{__jit_debug_register_code}.
33818@end itemize
33819
33820If the JIT frees or recompiles code without unregistering it, then @value{GDBN}
33821and the JIT will leak the memory used for the associated symbol files.
33822
f85b53f8
SD
33823@node Custom Debug Info
33824@section Custom Debug Info
33825@cindex custom JIT debug info
33826@cindex JIT debug info reader
33827
33828Generating debug information in platform-native file formats (like ELF
33829or COFF) may be an overkill for JIT compilers; especially if all the
33830debug info is used for is displaying a meaningful backtrace. The
33831issue can be resolved by having the JIT writers decide on a debug info
33832format and also provide a reader that parses the debug info generated
33833by the JIT compiler. This section gives a brief overview on writing
33834such a parser. More specific details can be found in the source file
33835@file{gdb/jit-reader.in}, which is also installed as a header at
33836@file{@var{includedir}/gdb/jit-reader.h} for easy inclusion.
33837
33838The reader is implemented as a shared object (so this functionality is
33839not available on platforms which don't allow loading shared objects at
33840runtime). Two @value{GDBN} commands, @code{jit-reader-load} and
33841@code{jit-reader-unload} are provided, to be used to load and unload
33842the readers from a preconfigured directory. Once loaded, the shared
33843object is used the parse the debug information emitted by the JIT
33844compiler.
33845
33846@menu
33847* Using JIT Debug Info Readers:: How to use supplied readers correctly
33848* Writing JIT Debug Info Readers:: Creating a debug-info reader
33849@end menu
33850
33851@node Using JIT Debug Info Readers
33852@subsection Using JIT Debug Info Readers
33853@kindex jit-reader-load
33854@kindex jit-reader-unload
33855
33856Readers can be loaded and unloaded using the @code{jit-reader-load}
33857and @code{jit-reader-unload} commands.
33858
33859@table @code
33860@item jit-reader-load @var{reader-name}
33861Load the JIT reader named @var{reader-name}. On a UNIX system, this
33862will usually load @file{@var{libdir}/gdb/@var{reader-name}}, where
33863@var{libdir} is the system library directory, usually
33864@file{/usr/local/lib}. Only one reader can be active at a time;
33865trying to load a second reader when one is already loaded will result
33866in @value{GDBN} reporting an error. A new JIT reader can be loaded by
33867first unloading the current one using @code{jit-reader-load} and then
33868invoking @code{jit-reader-load}.
33869
33870@item jit-reader-unload
33871Unload the currently loaded JIT reader.
33872
33873@end table
33874
33875@node Writing JIT Debug Info Readers
33876@subsection Writing JIT Debug Info Readers
33877@cindex writing JIT debug info readers
33878
33879As mentioned, a reader is essentially a shared object conforming to a
33880certain ABI. This ABI is described in @file{jit-reader.h}.
33881
33882@file{jit-reader.h} defines the structures, macros and functions
33883required to write a reader. It is installed (along with
33884@value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is
33885the system include directory.
33886
33887Readers need to be released under a GPL compatible license. A reader
33888can be declared as released under such a license by placing the macro
33889@code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file.
33890
33891The entry point for readers is the symbol @code{gdb_init_reader},
33892which is expected to be a function with the prototype
33893
33894@findex gdb_init_reader
33895@smallexample
33896extern struct gdb_reader_funcs *gdb_init_reader (void);
33897@end smallexample
33898
33899@cindex @code{struct gdb_reader_funcs}
33900
33901@code{struct gdb_reader_funcs} contains a set of pointers to callback
33902functions. These functions are executed to read the debug info
33903generated by the JIT compiler (@code{read}), to unwind stack frames
33904(@code{unwind}) and to create canonical frame IDs
33905(@code{get_Frame_id}). It also has a callback that is called when the
33906reader is being unloaded (@code{destroy}). The struct looks like this
33907
33908@smallexample
33909struct gdb_reader_funcs
33910@{
33911 /* Must be set to GDB_READER_INTERFACE_VERSION. */
33912 int reader_version;
33913
33914 /* For use by the reader. */
33915 void *priv_data;
33916
33917 gdb_read_debug_info *read;
33918 gdb_unwind_frame *unwind;
33919 gdb_get_frame_id *get_frame_id;
33920 gdb_destroy_reader *destroy;
33921@};
33922@end smallexample
33923
33924@cindex @code{struct gdb_symbol_callbacks}
33925@cindex @code{struct gdb_unwind_callbacks}
33926
33927The callbacks are provided with another set of callbacks by
33928@value{GDBN} to do their job. For @code{read}, these callbacks are
33929passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind}
33930and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}.
33931@code{struct gdb_symbol_callbacks} has callbacks to create new object
33932files and new symbol tables inside those object files. @code{struct
33933gdb_unwind_callbacks} has callbacks to read registers off the current
33934frame and to write out the values of the registers in the previous
33935frame. Both have a callback (@code{target_read}) to read bytes off the
33936target's address space.
33937
d1feda86
YQ
33938@node In-Process Agent
33939@chapter In-Process Agent
33940@cindex debugging agent
33941The traditional debugging model is conceptually low-speed, but works fine,
33942because most bugs can be reproduced in debugging-mode execution. However,
33943as multi-core or many-core processors are becoming mainstream, and
33944multi-threaded programs become more and more popular, there should be more
33945and more bugs that only manifest themselves at normal-mode execution, for
33946example, thread races, because debugger's interference with the program's
33947timing may conceal the bugs. On the other hand, in some applications,
33948it is not feasible for the debugger to interrupt the program's execution
33949long enough for the developer to learn anything helpful about its behavior.
33950If the program's correctness depends on its real-time behavior, delays
33951introduced by a debugger might cause the program to fail, even when the
33952code itself is correct. It is useful to be able to observe the program's
33953behavior without interrupting it.
33954
33955Therefore, traditional debugging model is too intrusive to reproduce
33956some bugs. In order to reduce the interference with the program, we can
33957reduce the number of operations performed by debugger. The
33958@dfn{In-Process Agent}, a shared library, is running within the same
33959process with inferior, and is able to perform some debugging operations
33960itself. As a result, debugger is only involved when necessary, and
33961performance of debugging can be improved accordingly. Note that
33962interference with program can be reduced but can't be removed completely,
33963because the in-process agent will still stop or slow down the program.
33964
33965The in-process agent can interpret and execute Agent Expressions
33966(@pxref{Agent Expressions}) during performing debugging operations. The
33967agent expressions can be used for different purposes, such as collecting
33968data in tracepoints, and condition evaluation in breakpoints.
33969
33970@anchor{Control Agent}
33971You can control whether the in-process agent is used as an aid for
33972debugging with the following commands:
33973
33974@table @code
33975@kindex set agent on
33976@item set agent on
33977Causes the in-process agent to perform some operations on behalf of the
33978debugger. Just which operations requested by the user will be done
33979by the in-process agent depends on the its capabilities. For example,
33980if you request to evaluate breakpoint conditions in the in-process agent,
33981and the in-process agent has such capability as well, then breakpoint
33982conditions will be evaluated in the in-process agent.
33983
33984@kindex set agent off
33985@item set agent off
33986Disables execution of debugging operations by the in-process agent. All
33987of the operations will be performed by @value{GDBN}.
33988
33989@kindex show agent
33990@item show agent
33991Display the current setting of execution of debugging operations by
33992the in-process agent.
33993@end table
33994
16bdd41f
YQ
33995@menu
33996* In-Process Agent Protocol::
33997@end menu
33998
33999@node In-Process Agent Protocol
34000@section In-Process Agent Protocol
34001@cindex in-process agent protocol
34002
34003The in-process agent is able to communicate with both @value{GDBN} and
34004GDBserver (@pxref{In-Process Agent}). This section documents the protocol
34005used for communications between @value{GDBN} or GDBserver and the IPA.
34006In general, @value{GDBN} or GDBserver sends commands
34007(@pxref{IPA Protocol Commands}) and data to in-process agent, and then
34008in-process agent replies back with the return result of the command, or
34009some other information. The data sent to in-process agent is composed
34010of primitive data types, such as 4-byte or 8-byte type, and composite
34011types, which are called objects (@pxref{IPA Protocol Objects}).
34012
34013@menu
34014* IPA Protocol Objects::
34015* IPA Protocol Commands::
34016@end menu
34017
34018@node IPA Protocol Objects
34019@subsection IPA Protocol Objects
34020@cindex ipa protocol objects
34021
34022The commands sent to and results received from agent may contain some
34023complex data types called @dfn{objects}.
34024
34025The in-process agent is running on the same machine with @value{GDBN}
34026or GDBserver, so it doesn't have to handle as much differences between
34027two ends as remote protocol (@pxref{Remote Protocol}) tries to handle.
34028However, there are still some differences of two ends in two processes:
34029
34030@enumerate
34031@item
34032word size. On some 64-bit machines, @value{GDBN} or GDBserver can be
34033compiled as a 64-bit executable, while in-process agent is a 32-bit one.
34034@item
34035ABI. Some machines may have multiple types of ABI, @value{GDBN} or
34036GDBserver is compiled with one, and in-process agent is compiled with
34037the other one.
34038@end enumerate
34039
34040Here are the IPA Protocol Objects:
34041
34042@enumerate
34043@item
34044agent expression object. It represents an agent expression
34045(@pxref{Agent Expressions}).
34046@anchor{agent expression object}
34047@item
34048tracepoint action object. It represents a tracepoint action
34049(@pxref{Tracepoint Actions,,Tracepoint Action Lists}) to collect registers,
34050memory, static trace data and to evaluate expression.
34051@anchor{tracepoint action object}
34052@item
34053tracepoint object. It represents a tracepoint (@pxref{Tracepoints}).
34054@anchor{tracepoint object}
34055
34056@end enumerate
34057
34058The following table describes important attributes of each IPA protocol
34059object:
34060
34061@multitable @columnfractions .30 .20 .50
34062@headitem Name @tab Size @tab Description
34063@item @emph{agent expression object} @tab @tab
34064@item length @tab 4 @tab length of bytes code
34065@item byte code @tab @var{length} @tab contents of byte code
34066@item @emph{tracepoint action for collecting memory} @tab @tab
34067@item 'M' @tab 1 @tab type of tracepoint action
34068@item addr @tab 8 @tab if @var{basereg} is @samp{-1}, @var{addr} is the
34069address of the lowest byte to collect, otherwise @var{addr} is the offset
34070of @var{basereg} for memory collecting.
34071@item len @tab 8 @tab length of memory for collecting
34072@item basereg @tab 4 @tab the register number containing the starting
34073memory address for collecting.
34074@item @emph{tracepoint action for collecting registers} @tab @tab
34075@item 'R' @tab 1 @tab type of tracepoint action
34076@item @emph{tracepoint action for collecting static trace data} @tab @tab
34077@item 'L' @tab 1 @tab type of tracepoint action
34078@item @emph{tracepoint action for expression evaluation} @tab @tab
34079@item 'X' @tab 1 @tab type of tracepoint action
34080@item agent expression @tab length of @tab @ref{agent expression object}
34081@item @emph{tracepoint object} @tab @tab
34082@item number @tab 4 @tab number of tracepoint
34083@item address @tab 8 @tab address of tracepoint inserted on
34084@item type @tab 4 @tab type of tracepoint
34085@item enabled @tab 1 @tab enable or disable of tracepoint
34086@item step_count @tab 8 @tab step
34087@item pass_count @tab 8 @tab pass
34088@item numactions @tab 4 @tab number of tracepoint actions
34089@item hit count @tab 8 @tab hit count
34090@item trace frame usage @tab 8 @tab trace frame usage
34091@item compiled_cond @tab 8 @tab compiled condition
34092@item orig_size @tab 8 @tab orig size
34093@item condition @tab 4 if condition is NULL otherwise length of
34094@ref{agent expression object}
34095@tab zero if condition is NULL, otherwise is
34096@ref{agent expression object}
34097@item actions @tab variable
34098@tab numactions number of @ref{tracepoint action object}
34099@end multitable
34100
34101@node IPA Protocol Commands
34102@subsection IPA Protocol Commands
34103@cindex ipa protocol commands
34104
34105The spaces in each command are delimiters to ease reading this commands
34106specification. They don't exist in real commands.
34107
34108@table @samp
34109
34110@item FastTrace:@var{tracepoint_object} @var{gdb_jump_pad_head}
34111Installs a new fast tracepoint described by @var{tracepoint_object}
34112(@pxref{tracepoint object}). @var{gdb_jump_pad_head}, 8-byte long, is the
34113head of @dfn{jumppad}, which is used to jump to data collection routine
34114in IPA finally.
34115
34116Replies:
34117@table @samp
34118@item OK @var{target_address} @var{gdb_jump_pad_head} @var{fjump_size} @var{fjump}
34119@var{target_address} is address of tracepoint in the inferior.
34120@var{gdb_jump_pad_head} is updated head of jumppad. Both of
34121@var{target_address} and @var{gdb_jump_pad_head} are 8-byte long.
34122@var{fjump} contains a sequence of instructions jump to jumppad entry.
34123@var{fjump_size}, 4-byte long, is the size of @var{fjump}.
34124@item E @var{NN}
34125for an error
34126
34127@end table
34128
7255706c
YQ
34129@item close
34130Closes the in-process agent. This command is sent when @value{GDBN} or GDBserver
34131is about to kill inferiors.
34132
16bdd41f
YQ
34133@item qTfSTM
34134@xref{qTfSTM}.
34135@item qTsSTM
34136@xref{qTsSTM}.
34137@item qTSTMat
34138@xref{qTSTMat}.
34139@item probe_marker_at:@var{address}
34140Asks in-process agent to probe the marker at @var{address}.
34141
34142Replies:
34143@table @samp
34144@item E @var{NN}
34145for an error
34146@end table
34147@item unprobe_marker_at:@var{address}
34148Asks in-process agent to unprobe the marker at @var{address}.
34149@end table
34150
8e04817f
AC
34151@node GDB Bugs
34152@chapter Reporting Bugs in @value{GDBN}
34153@cindex bugs in @value{GDBN}
34154@cindex reporting bugs in @value{GDBN}
c906108c 34155
8e04817f 34156Your bug reports play an essential role in making @value{GDBN} reliable.
c906108c 34157
8e04817f
AC
34158Reporting a bug may help you by bringing a solution to your problem, or it
34159may not. But in any case the principal function of a bug report is to help
34160the entire community by making the next version of @value{GDBN} work better. Bug
34161reports are your contribution to the maintenance of @value{GDBN}.
c906108c 34162
8e04817f
AC
34163In order for a bug report to serve its purpose, you must include the
34164information that enables us to fix the bug.
c4555f82
SC
34165
34166@menu
8e04817f
AC
34167* Bug Criteria:: Have you found a bug?
34168* Bug Reporting:: How to report bugs
c4555f82
SC
34169@end menu
34170
8e04817f 34171@node Bug Criteria
79a6e687 34172@section Have You Found a Bug?
8e04817f 34173@cindex bug criteria
c4555f82 34174
8e04817f 34175If you are not sure whether you have found a bug, here are some guidelines:
c4555f82
SC
34176
34177@itemize @bullet
8e04817f
AC
34178@cindex fatal signal
34179@cindex debugger crash
34180@cindex crash of debugger
c4555f82 34181@item
8e04817f
AC
34182If the debugger gets a fatal signal, for any input whatever, that is a
34183@value{GDBN} bug. Reliable debuggers never crash.
34184
34185@cindex error on valid input
34186@item
34187If @value{GDBN} produces an error message for valid input, that is a
34188bug. (Note that if you're cross debugging, the problem may also be
34189somewhere in the connection to the target.)
c4555f82 34190
8e04817f 34191@cindex invalid input
c4555f82 34192@item
8e04817f
AC
34193If @value{GDBN} does not produce an error message for invalid input,
34194that is a bug. However, you should note that your idea of
34195``invalid input'' might be our idea of ``an extension'' or ``support
34196for traditional practice''.
34197
34198@item
34199If you are an experienced user of debugging tools, your suggestions
34200for improvement of @value{GDBN} are welcome in any case.
c4555f82
SC
34201@end itemize
34202
8e04817f 34203@node Bug Reporting
79a6e687 34204@section How to Report Bugs
8e04817f
AC
34205@cindex bug reports
34206@cindex @value{GDBN} bugs, reporting
34207
34208A number of companies and individuals offer support for @sc{gnu} products.
34209If you obtained @value{GDBN} from a support organization, we recommend you
34210contact that organization first.
34211
34212You can find contact information for many support companies and
34213individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
34214distribution.
34215@c should add a web page ref...
34216
c16158bc
JM
34217@ifset BUGURL
34218@ifset BUGURL_DEFAULT
129188f6 34219In any event, we also recommend that you submit bug reports for
d3e8051b 34220@value{GDBN}. The preferred method is to submit them directly using
129188f6
AC
34221@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
34222page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
34223be used.
8e04817f
AC
34224
34225@strong{Do not send bug reports to @samp{info-gdb}, or to
34226@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
34227not want to receive bug reports. Those that do have arranged to receive
34228@samp{bug-gdb}.
34229
34230The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
34231serves as a repeater. The mailing list and the newsgroup carry exactly
34232the same messages. Often people think of posting bug reports to the
34233newsgroup instead of mailing them. This appears to work, but it has one
34234problem which can be crucial: a newsgroup posting often lacks a mail
34235path back to the sender. Thus, if we need to ask for more information,
34236we may be unable to reach you. For this reason, it is better to send
34237bug reports to the mailing list.
c16158bc
JM
34238@end ifset
34239@ifclear BUGURL_DEFAULT
34240In any event, we also recommend that you submit bug reports for
34241@value{GDBN} to @value{BUGURL}.
34242@end ifclear
34243@end ifset
c4555f82 34244
8e04817f
AC
34245The fundamental principle of reporting bugs usefully is this:
34246@strong{report all the facts}. If you are not sure whether to state a
34247fact or leave it out, state it!
c4555f82 34248
8e04817f
AC
34249Often people omit facts because they think they know what causes the
34250problem and assume that some details do not matter. Thus, you might
34251assume that the name of the variable you use in an example does not matter.
34252Well, probably it does not, but one cannot be sure. Perhaps the bug is a
34253stray memory reference which happens to fetch from the location where that
34254name is stored in memory; perhaps, if the name were different, the contents
34255of that location would fool the debugger into doing the right thing despite
34256the bug. Play it safe and give a specific, complete example. That is the
34257easiest thing for you to do, and the most helpful.
c4555f82 34258
8e04817f
AC
34259Keep in mind that the purpose of a bug report is to enable us to fix the
34260bug. It may be that the bug has been reported previously, but neither
34261you nor we can know that unless your bug report is complete and
34262self-contained.
c4555f82 34263
8e04817f
AC
34264Sometimes people give a few sketchy facts and ask, ``Does this ring a
34265bell?'' Those bug reports are useless, and we urge everyone to
34266@emph{refuse to respond to them} except to chide the sender to report
34267bugs properly.
34268
34269To enable us to fix the bug, you should include all these things:
c4555f82
SC
34270
34271@itemize @bullet
34272@item
8e04817f
AC
34273The version of @value{GDBN}. @value{GDBN} announces it if you start
34274with no arguments; you can also print it at any time using @code{show
34275version}.
c4555f82 34276
8e04817f
AC
34277Without this, we will not know whether there is any point in looking for
34278the bug in the current version of @value{GDBN}.
c4555f82
SC
34279
34280@item
8e04817f
AC
34281The type of machine you are using, and the operating system name and
34282version number.
c4555f82
SC
34283
34284@item
c1468174 34285What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
8e04817f 34286``@value{GCC}--2.8.1''.
c4555f82
SC
34287
34288@item
8e04817f 34289What compiler (and its version) was used to compile the program you are
c1468174 34290debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
3f94c067
BW
34291C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version}
34292to get this information; for other compilers, see the documentation for
34293those compilers.
c4555f82 34294
8e04817f
AC
34295@item
34296The command arguments you gave the compiler to compile your example and
34297observe the bug. For example, did you use @samp{-O}? To guarantee
34298you will not omit something important, list them all. A copy of the
34299Makefile (or the output from make) is sufficient.
c4555f82 34300
8e04817f
AC
34301If we were to try to guess the arguments, we would probably guess wrong
34302and then we might not encounter the bug.
c4555f82 34303
8e04817f
AC
34304@item
34305A complete input script, and all necessary source files, that will
34306reproduce the bug.
c4555f82 34307
8e04817f
AC
34308@item
34309A description of what behavior you observe that you believe is
34310incorrect. For example, ``It gets a fatal signal.''
c4555f82 34311
8e04817f
AC
34312Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
34313will certainly notice it. But if the bug is incorrect output, we might
34314not notice unless it is glaringly wrong. You might as well not give us
34315a chance to make a mistake.
c4555f82 34316
8e04817f
AC
34317Even if the problem you experience is a fatal signal, you should still
34318say so explicitly. Suppose something strange is going on, such as, your
34319copy of @value{GDBN} is out of synch, or you have encountered a bug in
34320the C library on your system. (This has happened!) Your copy might
34321crash and ours would not. If you told us to expect a crash, then when
34322ours fails to crash, we would know that the bug was not happening for
34323us. If you had not told us to expect a crash, then we would not be able
34324to draw any conclusion from our observations.
c4555f82 34325
e0c07bf0
MC
34326@pindex script
34327@cindex recording a session script
34328To collect all this information, you can use a session recording program
34329such as @command{script}, which is available on many Unix systems.
34330Just run your @value{GDBN} session inside @command{script} and then
34331include the @file{typescript} file with your bug report.
34332
34333Another way to record a @value{GDBN} session is to run @value{GDBN}
34334inside Emacs and then save the entire buffer to a file.
34335
8e04817f
AC
34336@item
34337If you wish to suggest changes to the @value{GDBN} source, send us context
34338diffs. If you even discuss something in the @value{GDBN} source, refer to
34339it by context, not by line number.
c4555f82 34340
8e04817f
AC
34341The line numbers in our development sources will not match those in your
34342sources. Your line numbers would convey no useful information to us.
c4555f82 34343
8e04817f 34344@end itemize
c4555f82 34345
8e04817f 34346Here are some things that are not necessary:
c4555f82 34347
8e04817f
AC
34348@itemize @bullet
34349@item
34350A description of the envelope of the bug.
c4555f82 34351
8e04817f
AC
34352Often people who encounter a bug spend a lot of time investigating
34353which changes to the input file will make the bug go away and which
34354changes will not affect it.
c4555f82 34355
8e04817f
AC
34356This is often time consuming and not very useful, because the way we
34357will find the bug is by running a single example under the debugger
34358with breakpoints, not by pure deduction from a series of examples.
34359We recommend that you save your time for something else.
c4555f82 34360
8e04817f
AC
34361Of course, if you can find a simpler example to report @emph{instead}
34362of the original one, that is a convenience for us. Errors in the
34363output will be easier to spot, running under the debugger will take
34364less time, and so on.
c4555f82 34365
8e04817f
AC
34366However, simplification is not vital; if you do not want to do this,
34367report the bug anyway and send us the entire test case you used.
c4555f82 34368
8e04817f
AC
34369@item
34370A patch for the bug.
c4555f82 34371
8e04817f
AC
34372A patch for the bug does help us if it is a good one. But do not omit
34373the necessary information, such as the test case, on the assumption that
34374a patch is all we need. We might see problems with your patch and decide
34375to fix the problem another way, or we might not understand it at all.
c4555f82 34376
8e04817f
AC
34377Sometimes with a program as complicated as @value{GDBN} it is very hard to
34378construct an example that will make the program follow a certain path
34379through the code. If you do not send us the example, we will not be able
34380to construct one, so we will not be able to verify that the bug is fixed.
c4555f82 34381
8e04817f
AC
34382And if we cannot understand what bug you are trying to fix, or why your
34383patch should be an improvement, we will not install it. A test case will
34384help us to understand.
c4555f82 34385
8e04817f
AC
34386@item
34387A guess about what the bug is or what it depends on.
c4555f82 34388
8e04817f
AC
34389Such guesses are usually wrong. Even we cannot guess right about such
34390things without first using the debugger to find the facts.
34391@end itemize
c4555f82 34392
8e04817f
AC
34393@c The readline documentation is distributed with the readline code
34394@c and consists of the two following files:
cc88a640
JK
34395@c rluser.texi
34396@c hsuser.texi
8e04817f
AC
34397@c Use -I with makeinfo to point to the appropriate directory,
34398@c environment var TEXINPUTS with TeX.
39037522 34399@ifclear SYSTEM_READLINE
5bdf8622 34400@include rluser.texi
cc88a640 34401@include hsuser.texi
39037522 34402@end ifclear
c4555f82 34403
4ceed123
JB
34404@node In Memoriam
34405@appendix In Memoriam
34406
9ed350ad
JB
34407The @value{GDBN} project mourns the loss of the following long-time
34408contributors:
4ceed123
JB
34409
34410@table @code
34411@item Fred Fish
9ed350ad
JB
34412Fred was a long-standing contributor to @value{GDBN} (1991-2006), and
34413to Free Software in general. Outside of @value{GDBN}, he was known in
34414the Amiga world for his series of Fish Disks, and the GeekGadget project.
4ceed123
JB
34415
34416@item Michael Snyder
9ed350ad
JB
34417Michael was one of the Global Maintainers of the @value{GDBN} project,
34418with contributions recorded as early as 1996, until 2011. In addition
34419to his day to day participation, he was a large driving force behind
34420adding Reverse Debugging to @value{GDBN}.
4ceed123
JB
34421@end table
34422
34423Beyond their technical contributions to the project, they were also
34424enjoyable members of the Free Software Community. We will miss them.
c4555f82 34425
8e04817f
AC
34426@node Formatting Documentation
34427@appendix Formatting Documentation
c4555f82 34428
8e04817f
AC
34429@cindex @value{GDBN} reference card
34430@cindex reference card
34431The @value{GDBN} 4 release includes an already-formatted reference card, ready
34432for printing with PostScript or Ghostscript, in the @file{gdb}
34433subdirectory of the main source directory@footnote{In
34434@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
34435release.}. If you can use PostScript or Ghostscript with your printer,
34436you can print the reference card immediately with @file{refcard.ps}.
c4555f82 34437
8e04817f
AC
34438The release also includes the source for the reference card. You
34439can format it, using @TeX{}, by typing:
c4555f82 34440
474c8240 34441@smallexample
8e04817f 34442make refcard.dvi
474c8240 34443@end smallexample
c4555f82 34444
8e04817f
AC
34445The @value{GDBN} reference card is designed to print in @dfn{landscape}
34446mode on US ``letter'' size paper;
34447that is, on a sheet 11 inches wide by 8.5 inches
34448high. You will need to specify this form of printing as an option to
34449your @sc{dvi} output program.
c4555f82 34450
8e04817f 34451@cindex documentation
c4555f82 34452
8e04817f
AC
34453All the documentation for @value{GDBN} comes as part of the machine-readable
34454distribution. The documentation is written in Texinfo format, which is
34455a documentation system that uses a single source file to produce both
34456on-line information and a printed manual. You can use one of the Info
34457formatting commands to create the on-line version of the documentation
34458and @TeX{} (or @code{texi2roff}) to typeset the printed version.
c4555f82 34459
8e04817f
AC
34460@value{GDBN} includes an already formatted copy of the on-line Info
34461version of this manual in the @file{gdb} subdirectory. The main Info
34462file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
34463subordinate files matching @samp{gdb.info*} in the same directory. If
34464necessary, you can print out these files, or read them with any editor;
34465but they are easier to read using the @code{info} subsystem in @sc{gnu}
34466Emacs or the standalone @code{info} program, available as part of the
34467@sc{gnu} Texinfo distribution.
c4555f82 34468
8e04817f
AC
34469If you want to format these Info files yourself, you need one of the
34470Info formatting programs, such as @code{texinfo-format-buffer} or
34471@code{makeinfo}.
c4555f82 34472
8e04817f
AC
34473If you have @code{makeinfo} installed, and are in the top level
34474@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
34475version @value{GDBVN}), you can make the Info file by typing:
c4555f82 34476
474c8240 34477@smallexample
8e04817f
AC
34478cd gdb
34479make gdb.info
474c8240 34480@end smallexample
c4555f82 34481
8e04817f
AC
34482If you want to typeset and print copies of this manual, you need @TeX{},
34483a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
34484Texinfo definitions file.
c4555f82 34485
8e04817f
AC
34486@TeX{} is a typesetting program; it does not print files directly, but
34487produces output files called @sc{dvi} files. To print a typeset
34488document, you need a program to print @sc{dvi} files. If your system
34489has @TeX{} installed, chances are it has such a program. The precise
34490command to use depends on your system; @kbd{lpr -d} is common; another
34491(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
34492require a file name without any extension or a @samp{.dvi} extension.
c4555f82 34493
8e04817f
AC
34494@TeX{} also requires a macro definitions file called
34495@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
34496written in Texinfo format. On its own, @TeX{} cannot either read or
34497typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
34498and is located in the @file{gdb-@var{version-number}/texinfo}
34499directory.
c4555f82 34500
8e04817f 34501If you have @TeX{} and a @sc{dvi} printer program installed, you can
d3e8051b 34502typeset and print this manual. First switch to the @file{gdb}
8e04817f
AC
34503subdirectory of the main source directory (for example, to
34504@file{gdb-@value{GDBVN}/gdb}) and type:
c4555f82 34505
474c8240 34506@smallexample
8e04817f 34507make gdb.dvi
474c8240 34508@end smallexample
c4555f82 34509
8e04817f 34510Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c4555f82 34511
8e04817f
AC
34512@node Installing GDB
34513@appendix Installing @value{GDBN}
8e04817f 34514@cindex installation
c4555f82 34515
7fa2210b
DJ
34516@menu
34517* Requirements:: Requirements for building @value{GDBN}
db2e3e2e 34518* Running Configure:: Invoking the @value{GDBN} @file{configure} script
7fa2210b
DJ
34519* Separate Objdir:: Compiling @value{GDBN} in another directory
34520* Config Names:: Specifying names for hosts and targets
34521* Configure Options:: Summary of options for configure
098b41a6 34522* System-wide configuration:: Having a system-wide init file
7fa2210b
DJ
34523@end menu
34524
34525@node Requirements
79a6e687 34526@section Requirements for Building @value{GDBN}
7fa2210b
DJ
34527@cindex building @value{GDBN}, requirements for
34528
34529Building @value{GDBN} requires various tools and packages to be available.
34530Other packages will be used only if they are found.
34531
79a6e687 34532@heading Tools/Packages Necessary for Building @value{GDBN}
7fa2210b
DJ
34533@table @asis
34534@item ISO C90 compiler
34535@value{GDBN} is written in ISO C90. It should be buildable with any
34536working C90 compiler, e.g.@: GCC.
34537
34538@end table
34539
79a6e687 34540@heading Tools/Packages Optional for Building @value{GDBN}
7fa2210b
DJ
34541@table @asis
34542@item Expat
123dc839 34543@anchor{Expat}
7fa2210b
DJ
34544@value{GDBN} can use the Expat XML parsing library. This library may be
34545included with your operating system distribution; if it is not, you
34546can get the latest version from @url{http://expat.sourceforge.net}.
db2e3e2e 34547The @file{configure} script will search for this library in several
7fa2210b
DJ
34548standard locations; if it is installed in an unusual path, you can
34549use the @option{--with-libexpat-prefix} option to specify its location.
34550
9cceb671
DJ
34551Expat is used for:
34552
34553@itemize @bullet
34554@item
34555Remote protocol memory maps (@pxref{Memory Map Format})
34556@item
34557Target descriptions (@pxref{Target Descriptions})
34558@item
2268b414
JK
34559Remote shared library lists (@xref{Library List Format},
34560or alternatively @pxref{Library List Format for SVR4 Targets})
9cceb671
DJ
34561@item
34562MS-Windows shared libraries (@pxref{Shared Libraries})
b3b9301e
PA
34563@item
34564Traceframe info (@pxref{Traceframe Info Format})
9cceb671 34565@end itemize
7fa2210b 34566
31fffb02
CS
34567@item zlib
34568@cindex compressed debug sections
34569@value{GDBN} will use the @samp{zlib} library, if available, to read
34570compressed debug sections. Some linkers, such as GNU gold, are capable
34571of producing binaries with compressed debug sections. If @value{GDBN}
34572is compiled with @samp{zlib}, it will be able to read the debug
34573information in such binaries.
34574
34575The @samp{zlib} library is likely included with your operating system
34576distribution; if it is not, you can get the latest version from
34577@url{http://zlib.net}.
34578
6c7a06a3
TT
34579@item iconv
34580@value{GDBN}'s features related to character sets (@pxref{Character
34581Sets}) require a functioning @code{iconv} implementation. If you are
34582on a GNU system, then this is provided by the GNU C Library. Some
34583other systems also provide a working @code{iconv}.
34584
478aac75
DE
34585If @value{GDBN} is using the @code{iconv} program which is installed
34586in a non-standard place, you will need to tell @value{GDBN} where to find it.
34587This is done with @option{--with-iconv-bin} which specifies the
34588directory that contains the @code{iconv} program.
34589
34590On systems without @code{iconv}, you can install GNU Libiconv. If you
6c7a06a3
TT
34591have previously installed Libiconv, you can use the
34592@option{--with-libiconv-prefix} option to configure.
34593
34594@value{GDBN}'s top-level @file{configure} and @file{Makefile} will
34595arrange to build Libiconv if a directory named @file{libiconv} appears
34596in the top-most source directory. If Libiconv is built this way, and
34597if the operating system does not provide a suitable @code{iconv}
34598implementation, then the just-built library will automatically be used
34599by @value{GDBN}. One easy way to set this up is to download GNU
34600Libiconv, unpack it, and then rename the directory holding the
34601Libiconv source code to @samp{libiconv}.
7fa2210b
DJ
34602@end table
34603
34604@node Running Configure
db2e3e2e 34605@section Invoking the @value{GDBN} @file{configure} Script
7fa2210b 34606@cindex configuring @value{GDBN}
db2e3e2e 34607@value{GDBN} comes with a @file{configure} script that automates the process
8e04817f
AC
34608of preparing @value{GDBN} for installation; you can then use @code{make} to
34609build the @code{gdb} program.
34610@iftex
34611@c irrelevant in info file; it's as current as the code it lives with.
34612@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
34613look at the @file{README} file in the sources; we may have improved the
34614installation procedures since publishing this manual.}
34615@end iftex
c4555f82 34616
8e04817f
AC
34617The @value{GDBN} distribution includes all the source code you need for
34618@value{GDBN} in a single directory, whose name is usually composed by
34619appending the version number to @samp{gdb}.
c4555f82 34620
8e04817f
AC
34621For example, the @value{GDBN} version @value{GDBVN} distribution is in the
34622@file{gdb-@value{GDBVN}} directory. That directory contains:
c4555f82 34623
8e04817f
AC
34624@table @code
34625@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
34626script for configuring @value{GDBN} and all its supporting libraries
c4555f82 34627
8e04817f
AC
34628@item gdb-@value{GDBVN}/gdb
34629the source specific to @value{GDBN} itself
c4555f82 34630
8e04817f
AC
34631@item gdb-@value{GDBVN}/bfd
34632source for the Binary File Descriptor library
c906108c 34633
8e04817f
AC
34634@item gdb-@value{GDBVN}/include
34635@sc{gnu} include files
c906108c 34636
8e04817f
AC
34637@item gdb-@value{GDBVN}/libiberty
34638source for the @samp{-liberty} free software library
c906108c 34639
8e04817f
AC
34640@item gdb-@value{GDBVN}/opcodes
34641source for the library of opcode tables and disassemblers
c906108c 34642
8e04817f
AC
34643@item gdb-@value{GDBVN}/readline
34644source for the @sc{gnu} command-line interface
c906108c 34645
8e04817f
AC
34646@item gdb-@value{GDBVN}/glob
34647source for the @sc{gnu} filename pattern-matching subroutine
c906108c 34648
8e04817f
AC
34649@item gdb-@value{GDBVN}/mmalloc
34650source for the @sc{gnu} memory-mapped malloc package
34651@end table
c906108c 34652
db2e3e2e 34653The simplest way to configure and build @value{GDBN} is to run @file{configure}
8e04817f
AC
34654from the @file{gdb-@var{version-number}} source directory, which in
34655this example is the @file{gdb-@value{GDBVN}} directory.
c906108c 34656
8e04817f 34657First switch to the @file{gdb-@var{version-number}} source directory
db2e3e2e 34658if you are not already in it; then run @file{configure}. Pass the
8e04817f
AC
34659identifier for the platform on which @value{GDBN} will run as an
34660argument.
c906108c 34661
8e04817f 34662For example:
c906108c 34663
474c8240 34664@smallexample
8e04817f
AC
34665cd gdb-@value{GDBVN}
34666./configure @var{host}
34667make
474c8240 34668@end smallexample
c906108c 34669
8e04817f
AC
34670@noindent
34671where @var{host} is an identifier such as @samp{sun4} or
34672@samp{decstation}, that identifies the platform where @value{GDBN} will run.
db2e3e2e 34673(You can often leave off @var{host}; @file{configure} tries to guess the
8e04817f 34674correct value by examining your system.)
c906108c 34675
8e04817f
AC
34676Running @samp{configure @var{host}} and then running @code{make} builds the
34677@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
34678libraries, then @code{gdb} itself. The configured source files, and the
34679binaries, are left in the corresponding source directories.
c906108c 34680
8e04817f 34681@need 750
db2e3e2e 34682@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
8e04817f
AC
34683system does not recognize this automatically when you run a different
34684shell, you may need to run @code{sh} on it explicitly:
c906108c 34685
474c8240 34686@smallexample
8e04817f 34687sh configure @var{host}
474c8240 34688@end smallexample
c906108c 34689
db2e3e2e 34690If you run @file{configure} from a directory that contains source
8e04817f 34691directories for multiple libraries or programs, such as the
db2e3e2e
BW
34692@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN},
34693@file{configure}
8e04817f
AC
34694creates configuration files for every directory level underneath (unless
34695you tell it not to, with the @samp{--norecursion} option).
34696
db2e3e2e 34697You should run the @file{configure} script from the top directory in the
94e91d6d 34698source tree, the @file{gdb-@var{version-number}} directory. If you run
db2e3e2e 34699@file{configure} from one of the subdirectories, you will configure only
94e91d6d 34700that subdirectory. That is usually not what you want. In particular,
db2e3e2e 34701if you run the first @file{configure} from the @file{gdb} subdirectory
94e91d6d
MC
34702of the @file{gdb-@var{version-number}} directory, you will omit the
34703configuration of @file{bfd}, @file{readline}, and other sibling
34704directories of the @file{gdb} subdirectory. This leads to build errors
34705about missing include files such as @file{bfd/bfd.h}.
c906108c 34706
8e04817f
AC
34707You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
34708However, you should make sure that the shell on your path (named by
34709the @samp{SHELL} environment variable) is publicly readable. Remember
34710that @value{GDBN} uses the shell to start your program---some systems refuse to
34711let @value{GDBN} debug child processes whose programs are not readable.
c906108c 34712
8e04817f 34713@node Separate Objdir
79a6e687 34714@section Compiling @value{GDBN} in Another Directory
c906108c 34715
8e04817f
AC
34716If you want to run @value{GDBN} versions for several host or target machines,
34717you need a different @code{gdb} compiled for each combination of
db2e3e2e 34718host and target. @file{configure} is designed to make this easy by
8e04817f
AC
34719allowing you to generate each configuration in a separate subdirectory,
34720rather than in the source directory. If your @code{make} program
34721handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
34722@code{make} in each of these directories builds the @code{gdb}
34723program specified there.
c906108c 34724
db2e3e2e 34725To build @code{gdb} in a separate directory, run @file{configure}
8e04817f 34726with the @samp{--srcdir} option to specify where to find the source.
db2e3e2e
BW
34727(You also need to specify a path to find @file{configure}
34728itself from your working directory. If the path to @file{configure}
8e04817f
AC
34729would be the same as the argument to @samp{--srcdir}, you can leave out
34730the @samp{--srcdir} option; it is assumed.)
c906108c 34731
8e04817f
AC
34732For example, with version @value{GDBVN}, you can build @value{GDBN} in a
34733separate directory for a Sun 4 like this:
c906108c 34734
474c8240 34735@smallexample
8e04817f
AC
34736@group
34737cd gdb-@value{GDBVN}
34738mkdir ../gdb-sun4
34739cd ../gdb-sun4
34740../gdb-@value{GDBVN}/configure sun4
34741make
34742@end group
474c8240 34743@end smallexample
c906108c 34744
db2e3e2e 34745When @file{configure} builds a configuration using a remote source
8e04817f
AC
34746directory, it creates a tree for the binaries with the same structure
34747(and using the same names) as the tree under the source directory. In
34748the example, you'd find the Sun 4 library @file{libiberty.a} in the
34749directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
34750@file{gdb-sun4/gdb}.
c906108c 34751
94e91d6d
MC
34752Make sure that your path to the @file{configure} script has just one
34753instance of @file{gdb} in it. If your path to @file{configure} looks
34754like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
34755one subdirectory of @value{GDBN}, not the whole package. This leads to
34756build errors about missing include files such as @file{bfd/bfd.h}.
34757
8e04817f
AC
34758One popular reason to build several @value{GDBN} configurations in separate
34759directories is to configure @value{GDBN} for cross-compiling (where
34760@value{GDBN} runs on one machine---the @dfn{host}---while debugging
34761programs that run on another machine---the @dfn{target}).
34762You specify a cross-debugging target by
db2e3e2e 34763giving the @samp{--target=@var{target}} option to @file{configure}.
c906108c 34764
8e04817f
AC
34765When you run @code{make} to build a program or library, you must run
34766it in a configured directory---whatever directory you were in when you
db2e3e2e 34767called @file{configure} (or one of its subdirectories).
c906108c 34768
db2e3e2e 34769The @code{Makefile} that @file{configure} generates in each source
8e04817f
AC
34770directory also runs recursively. If you type @code{make} in a source
34771directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
34772directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
34773will build all the required libraries, and then build GDB.
c906108c 34774
8e04817f
AC
34775When you have multiple hosts or targets configured in separate
34776directories, you can run @code{make} on them in parallel (for example,
34777if they are NFS-mounted on each of the hosts); they will not interfere
34778with each other.
c906108c 34779
8e04817f 34780@node Config Names
79a6e687 34781@section Specifying Names for Hosts and Targets
c906108c 34782
db2e3e2e 34783The specifications used for hosts and targets in the @file{configure}
8e04817f
AC
34784script are based on a three-part naming scheme, but some short predefined
34785aliases are also supported. The full naming scheme encodes three pieces
34786of information in the following pattern:
c906108c 34787
474c8240 34788@smallexample
8e04817f 34789@var{architecture}-@var{vendor}-@var{os}
474c8240 34790@end smallexample
c906108c 34791
8e04817f
AC
34792For example, you can use the alias @code{sun4} as a @var{host} argument,
34793or as the value for @var{target} in a @code{--target=@var{target}}
34794option. The equivalent full name is @samp{sparc-sun-sunos4}.
c906108c 34795
db2e3e2e 34796The @file{configure} script accompanying @value{GDBN} does not provide
8e04817f 34797any query facility to list all supported host and target names or
db2e3e2e 34798aliases. @file{configure} calls the Bourne shell script
8e04817f
AC
34799@code{config.sub} to map abbreviations to full names; you can read the
34800script, if you wish, or you can use it to test your guesses on
34801abbreviations---for example:
c906108c 34802
8e04817f
AC
34803@smallexample
34804% sh config.sub i386-linux
34805i386-pc-linux-gnu
34806% sh config.sub alpha-linux
34807alpha-unknown-linux-gnu
34808% sh config.sub hp9k700
34809hppa1.1-hp-hpux
34810% sh config.sub sun4
34811sparc-sun-sunos4.1.1
34812% sh config.sub sun3
34813m68k-sun-sunos4.1.1
34814% sh config.sub i986v
34815Invalid configuration `i986v': machine `i986v' not recognized
34816@end smallexample
c906108c 34817
8e04817f
AC
34818@noindent
34819@code{config.sub} is also distributed in the @value{GDBN} source
34820directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
d700128c 34821
8e04817f 34822@node Configure Options
db2e3e2e 34823@section @file{configure} Options
c906108c 34824
db2e3e2e
BW
34825Here is a summary of the @file{configure} options and arguments that
34826are most often useful for building @value{GDBN}. @file{configure} also has
8e04817f 34827several other options not listed here. @inforef{What Configure
db2e3e2e 34828Does,,configure.info}, for a full explanation of @file{configure}.
c906108c 34829
474c8240 34830@smallexample
8e04817f
AC
34831configure @r{[}--help@r{]}
34832 @r{[}--prefix=@var{dir}@r{]}
34833 @r{[}--exec-prefix=@var{dir}@r{]}
34834 @r{[}--srcdir=@var{dirname}@r{]}
34835 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
34836 @r{[}--target=@var{target}@r{]}
34837 @var{host}
474c8240 34838@end smallexample
c906108c 34839
8e04817f
AC
34840@noindent
34841You may introduce options with a single @samp{-} rather than
34842@samp{--} if you prefer; but you may abbreviate option names if you use
34843@samp{--}.
c906108c 34844
8e04817f
AC
34845@table @code
34846@item --help
db2e3e2e 34847Display a quick summary of how to invoke @file{configure}.
c906108c 34848
8e04817f
AC
34849@item --prefix=@var{dir}
34850Configure the source to install programs and files under directory
34851@file{@var{dir}}.
c906108c 34852
8e04817f
AC
34853@item --exec-prefix=@var{dir}
34854Configure the source to install programs under directory
34855@file{@var{dir}}.
c906108c 34856
8e04817f
AC
34857@c avoid splitting the warning from the explanation:
34858@need 2000
34859@item --srcdir=@var{dirname}
34860@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
34861@code{make} that implements the @code{VPATH} feature.}@*
34862Use this option to make configurations in directories separate from the
34863@value{GDBN} source directories. Among other things, you can use this to
34864build (or maintain) several configurations simultaneously, in separate
db2e3e2e 34865directories. @file{configure} writes configuration-specific files in
8e04817f 34866the current directory, but arranges for them to use the source in the
db2e3e2e 34867directory @var{dirname}. @file{configure} creates directories under
8e04817f
AC
34868the working directory in parallel to the source directories below
34869@var{dirname}.
c906108c 34870
8e04817f 34871@item --norecursion
db2e3e2e 34872Configure only the directory level where @file{configure} is executed; do not
8e04817f 34873propagate configuration to subdirectories.
c906108c 34874
8e04817f
AC
34875@item --target=@var{target}
34876Configure @value{GDBN} for cross-debugging programs running on the specified
34877@var{target}. Without this option, @value{GDBN} is configured to debug
34878programs that run on the same machine (@var{host}) as @value{GDBN} itself.
c906108c 34879
8e04817f 34880There is no convenient way to generate a list of all available targets.
c906108c 34881
8e04817f
AC
34882@item @var{host} @dots{}
34883Configure @value{GDBN} to run on the specified @var{host}.
c906108c 34884
8e04817f
AC
34885There is no convenient way to generate a list of all available hosts.
34886@end table
c906108c 34887
8e04817f
AC
34888There are many other options available as well, but they are generally
34889needed for special purposes only.
c906108c 34890
098b41a6
JG
34891@node System-wide configuration
34892@section System-wide configuration and settings
34893@cindex system-wide init file
34894
34895@value{GDBN} can be configured to have a system-wide init file;
34896this file will be read and executed at startup (@pxref{Startup, , What
34897@value{GDBN} does during startup}).
34898
34899Here is the corresponding configure option:
34900
34901@table @code
34902@item --with-system-gdbinit=@var{file}
34903Specify that the default location of the system-wide init file is
34904@var{file}.
34905@end table
34906
34907If @value{GDBN} has been configured with the option @option{--prefix=$prefix},
34908it may be subject to relocation. Two possible cases:
34909
34910@itemize @bullet
34911@item
34912If the default location of this init file contains @file{$prefix},
34913it will be subject to relocation. Suppose that the configure options
34914are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit};
34915if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system
34916init file is looked for as @file{$install/etc/gdbinit} instead of
34917@file{$prefix/etc/gdbinit}.
34918
34919@item
34920By contrast, if the default location does not contain the prefix,
34921it will not be relocated. E.g.@: if @value{GDBN} has been configured with
34922@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit},
34923then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit},
34924wherever @value{GDBN} is installed.
34925@end itemize
34926
e64e0392
DE
34927If the configured location of the system-wide init file (as given by the
34928@option{--with-system-gdbinit} option at configure time) is in the
34929data-directory (as specified by @option{--with-gdb-datadir} at configure
34930time) or in one of its subdirectories, then @value{GDBN} will look for the
34931system-wide init file in the directory specified by the
34932@option{--data-directory} command-line option.
34933Note that the system-wide init file is only read once, during @value{GDBN}
34934initialization. If the data-directory is changed after @value{GDBN} has
34935started with the @code{set data-directory} command, the file will not be
34936reread.
34937
8e04817f
AC
34938@node Maintenance Commands
34939@appendix Maintenance Commands
34940@cindex maintenance commands
34941@cindex internal commands
c906108c 34942
8e04817f 34943In addition to commands intended for @value{GDBN} users, @value{GDBN}
09d4efe1
EZ
34944includes a number of commands intended for @value{GDBN} developers,
34945that are not documented elsewhere in this manual. These commands are
da316a69
EZ
34946provided here for reference. (For commands that turn on debugging
34947messages, see @ref{Debugging Output}.)
c906108c 34948
8e04817f 34949@table @code
09d4efe1 34950@kindex maint agent
782b2b07 34951@kindex maint agent-eval
f77cc5f0
HZ
34952@item maint agent @r{[}-at @var{location}@r{,}@r{]} @var{expression}
34953@itemx maint agent-eval @r{[}-at @var{location}@r{,}@r{]} @var{expression}
09d4efe1
EZ
34954Translate the given @var{expression} into remote agent bytecodes.
34955This command is useful for debugging the Agent Expression mechanism
782b2b07
SS
34956(@pxref{Agent Expressions}). The @samp{agent} version produces an
34957expression useful for data collection, such as by tracepoints, while
34958@samp{maint agent-eval} produces an expression that evaluates directly
34959to a result. For instance, a collection expression for @code{globa +
34960globb} will include bytecodes to record four bytes of memory at each
34961of the addresses of @code{globa} and @code{globb}, while discarding
34962the result of the addition, while an evaluation expression will do the
34963addition and return the sum.
f77cc5f0
HZ
34964If @code{-at} is given, generate remote agent bytecode for @var{location}.
34965If not, generate remote agent bytecode for current frame PC address.
09d4efe1 34966
d3ce09f5
SS
34967@kindex maint agent-printf
34968@item maint agent-printf @var{format},@var{expr},...
34969Translate the given format string and list of argument expressions
34970into remote agent bytecodes and display them as a disassembled list.
34971This command is useful for debugging the agent version of dynamic
34972printf (@pxref{Dynamic Printf}.
34973
8e04817f
AC
34974@kindex maint info breakpoints
34975@item @anchor{maint info breakpoints}maint info breakpoints
34976Using the same format as @samp{info breakpoints}, display both the
34977breakpoints you've set explicitly, and those @value{GDBN} is using for
34978internal purposes. Internal breakpoints are shown with negative
34979breakpoint numbers. The type column identifies what kind of breakpoint
34980is shown:
c906108c 34981
8e04817f
AC
34982@table @code
34983@item breakpoint
34984Normal, explicitly set breakpoint.
c906108c 34985
8e04817f
AC
34986@item watchpoint
34987Normal, explicitly set watchpoint.
c906108c 34988
8e04817f
AC
34989@item longjmp
34990Internal breakpoint, used to handle correctly stepping through
34991@code{longjmp} calls.
c906108c 34992
8e04817f
AC
34993@item longjmp resume
34994Internal breakpoint at the target of a @code{longjmp}.
c906108c 34995
8e04817f
AC
34996@item until
34997Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
c906108c 34998
8e04817f
AC
34999@item finish
35000Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
c906108c 35001
8e04817f
AC
35002@item shlib events
35003Shared library events.
c906108c 35004
8e04817f 35005@end table
c906108c 35006
d6b28940
TT
35007@kindex maint info bfds
35008@item maint info bfds
35009This prints information about each @code{bfd} object that is known to
35010@value{GDBN}. @xref{Top, , BFD, bfd, The Binary File Descriptor Library}.
35011
fff08868
HZ
35012@kindex set displaced-stepping
35013@kindex show displaced-stepping
237fc4c9
PA
35014@cindex displaced stepping support
35015@cindex out-of-line single-stepping
fff08868
HZ
35016@item set displaced-stepping
35017@itemx show displaced-stepping
237fc4c9 35018Control whether or not @value{GDBN} will do @dfn{displaced stepping}
fff08868
HZ
35019if the target supports it. Displaced stepping is a way to single-step
35020over breakpoints without removing them from the inferior, by executing
35021an out-of-line copy of the instruction that was originally at the
35022breakpoint location. It is also known as out-of-line single-stepping.
35023
35024@table @code
35025@item set displaced-stepping on
35026If the target architecture supports it, @value{GDBN} will use
35027displaced stepping to step over breakpoints.
35028
35029@item set displaced-stepping off
35030@value{GDBN} will not use displaced stepping to step over breakpoints,
35031even if such is supported by the target architecture.
35032
35033@cindex non-stop mode, and @samp{set displaced-stepping}
35034@item set displaced-stepping auto
35035This is the default mode. @value{GDBN} will use displaced stepping
35036only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target
35037architecture supports displaced stepping.
35038@end table
237fc4c9 35039
09d4efe1
EZ
35040@kindex maint check-symtabs
35041@item maint check-symtabs
35042Check the consistency of psymtabs and symtabs.
35043
35044@kindex maint cplus first_component
35045@item maint cplus first_component @var{name}
35046Print the first C@t{++} class/namespace component of @var{name}.
35047
35048@kindex maint cplus namespace
35049@item maint cplus namespace
35050Print the list of possible C@t{++} namespaces.
35051
35052@kindex maint demangle
35053@item maint demangle @var{name}
d3e8051b 35054Demangle a C@t{++} or Objective-C mangled @var{name}.
09d4efe1
EZ
35055
35056@kindex maint deprecate
35057@kindex maint undeprecate
35058@cindex deprecated commands
35059@item maint deprecate @var{command} @r{[}@var{replacement}@r{]}
35060@itemx maint undeprecate @var{command}
35061Deprecate or undeprecate the named @var{command}. Deprecated commands
35062cause @value{GDBN} to issue a warning when you use them. The optional
35063argument @var{replacement} says which newer command should be used in
35064favor of the deprecated one; if it is given, @value{GDBN} will mention
35065the replacement as part of the warning.
35066
35067@kindex maint dump-me
35068@item maint dump-me
721c2651 35069@cindex @code{SIGQUIT} signal, dump core of @value{GDBN}
09d4efe1 35070Cause a fatal signal in the debugger and force it to dump its core.
721c2651
EZ
35071This is supported only on systems which support aborting a program
35072with the @code{SIGQUIT} signal.
09d4efe1 35073
8d30a00d
AC
35074@kindex maint internal-error
35075@kindex maint internal-warning
09d4efe1
EZ
35076@item maint internal-error @r{[}@var{message-text}@r{]}
35077@itemx maint internal-warning @r{[}@var{message-text}@r{]}
8d30a00d
AC
35078Cause @value{GDBN} to call the internal function @code{internal_error}
35079or @code{internal_warning} and hence behave as though an internal error
35080or internal warning has been detected. In addition to reporting the
35081internal problem, these functions give the user the opportunity to
35082either quit @value{GDBN} or create a core file of the current
35083@value{GDBN} session.
35084
09d4efe1
EZ
35085These commands take an optional parameter @var{message-text} that is
35086used as the text of the error or warning message.
35087
d3e8051b 35088Here's an example of using @code{internal-error}:
09d4efe1 35089
8d30a00d 35090@smallexample
f7dc1244 35091(@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
8d30a00d
AC
35092@dots{}/maint.c:121: internal-error: testing, 1, 2
35093A problem internal to GDB has been detected. Further
35094debugging may prove unreliable.
35095Quit this debugging session? (y or n) @kbd{n}
35096Create a core file? (y or n) @kbd{n}
f7dc1244 35097(@value{GDBP})
8d30a00d
AC
35098@end smallexample
35099
3c16cced
PA
35100@cindex @value{GDBN} internal error
35101@cindex internal errors, control of @value{GDBN} behavior
35102
35103@kindex maint set internal-error
35104@kindex maint show internal-error
35105@kindex maint set internal-warning
35106@kindex maint show internal-warning
35107@item maint set internal-error @var{action} [ask|yes|no]
35108@itemx maint show internal-error @var{action}
35109@itemx maint set internal-warning @var{action} [ask|yes|no]
35110@itemx maint show internal-warning @var{action}
35111When @value{GDBN} reports an internal problem (error or warning) it
35112gives the user the opportunity to both quit @value{GDBN} and create a
35113core file of the current @value{GDBN} session. These commands let you
35114override the default behaviour for each particular @var{action},
35115described in the table below.
35116
35117@table @samp
35118@item quit
35119You can specify that @value{GDBN} should always (yes) or never (no)
35120quit. The default is to ask the user what to do.
35121
35122@item corefile
35123You can specify that @value{GDBN} should always (yes) or never (no)
35124create a core file. The default is to ask the user what to do.
35125@end table
35126
09d4efe1
EZ
35127@kindex maint packet
35128@item maint packet @var{text}
35129If @value{GDBN} is talking to an inferior via the serial protocol,
35130then this command sends the string @var{text} to the inferior, and
35131displays the response packet. @value{GDBN} supplies the initial
35132@samp{$} character, the terminating @samp{#} character, and the
35133checksum.
35134
35135@kindex maint print architecture
35136@item maint print architecture @r{[}@var{file}@r{]}
35137Print the entire architecture configuration. The optional argument
35138@var{file} names the file where the output goes.
8d30a00d 35139
81adfced
DJ
35140@kindex maint print c-tdesc
35141@item maint print c-tdesc
35142Print the current target description (@pxref{Target Descriptions}) as
35143a C source file. The created source file can be used in @value{GDBN}
35144when an XML parser is not available to parse the description.
35145
00905d52
AC
35146@kindex maint print dummy-frames
35147@item maint print dummy-frames
00905d52
AC
35148Prints the contents of @value{GDBN}'s internal dummy-frame stack.
35149
35150@smallexample
f7dc1244 35151(@value{GDBP}) @kbd{b add}
00905d52 35152@dots{}
f7dc1244 35153(@value{GDBP}) @kbd{print add(2,3)}
00905d52
AC
35154Breakpoint 2, add (a=2, b=3) at @dots{}
3515558 return (a + b);
35156The program being debugged stopped while in a function called from GDB.
35157@dots{}
f7dc1244 35158(@value{GDBP}) @kbd{maint print dummy-frames}
00905d52
AC
351590x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
35160 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@}
35161 call_lo=0x01014000 call_hi=0x01014001
f7dc1244 35162(@value{GDBP})
00905d52
AC
35163@end smallexample
35164
35165Takes an optional file parameter.
35166
0680b120
AC
35167@kindex maint print registers
35168@kindex maint print raw-registers
35169@kindex maint print cooked-registers
617073a9 35170@kindex maint print register-groups
c21236dc 35171@kindex maint print remote-registers
09d4efe1
EZ
35172@item maint print registers @r{[}@var{file}@r{]}
35173@itemx maint print raw-registers @r{[}@var{file}@r{]}
35174@itemx maint print cooked-registers @r{[}@var{file}@r{]}
35175@itemx maint print register-groups @r{[}@var{file}@r{]}
c21236dc 35176@itemx maint print remote-registers @r{[}@var{file}@r{]}
0680b120
AC
35177Print @value{GDBN}'s internal register data structures.
35178
617073a9 35179The command @code{maint print raw-registers} includes the contents of
c21236dc
PA
35180the raw register cache; the command @code{maint print
35181cooked-registers} includes the (cooked) value of all registers,
35182including registers which aren't available on the target nor visible
35183to user; the command @code{maint print register-groups} includes the
35184groups that each register is a member of; and the command @code{maint
35185print remote-registers} includes the remote target's register numbers
35186and offsets in the `G' packets. @xref{Registers,, Registers, gdbint,
617073a9 35187@value{GDBN} Internals}.
0680b120 35188
09d4efe1
EZ
35189These commands take an optional parameter, a file name to which to
35190write the information.
0680b120 35191
617073a9 35192@kindex maint print reggroups
09d4efe1
EZ
35193@item maint print reggroups @r{[}@var{file}@r{]}
35194Print @value{GDBN}'s internal register group data structures. The
35195optional argument @var{file} tells to what file to write the
35196information.
617073a9 35197
09d4efe1 35198The register groups info looks like this:
617073a9
AC
35199
35200@smallexample
f7dc1244 35201(@value{GDBP}) @kbd{maint print reggroups}
b383017d
RM
35202 Group Type
35203 general user
35204 float user
35205 all user
35206 vector user
35207 system user
35208 save internal
35209 restore internal
617073a9
AC
35210@end smallexample
35211
09d4efe1
EZ
35212@kindex flushregs
35213@item flushregs
35214This command forces @value{GDBN} to flush its internal register cache.
35215
35216@kindex maint print objfiles
35217@cindex info for known object files
35218@item maint print objfiles
35219Print a dump of all known object files. For each object file, this
35220command prints its name, address in memory, and all of its psymtabs
35221and symtabs.
35222
8a1ea21f
DE
35223@kindex maint print section-scripts
35224@cindex info for known .debug_gdb_scripts-loaded scripts
35225@item maint print section-scripts [@var{regexp}]
35226Print a dump of scripts specified in the @code{.debug_gdb_section} section.
35227If @var{regexp} is specified, only print scripts loaded by object files
35228matching @var{regexp}.
35229For each script, this command prints its name as specified in the objfile,
35230and the full path if known.
8e0583c8 35231@xref{dotdebug_gdb_scripts section}.
8a1ea21f 35232
09d4efe1
EZ
35233@kindex maint print statistics
35234@cindex bcache statistics
35235@item maint print statistics
35236This command prints, for each object file in the program, various data
35237about that object file followed by the byte cache (@dfn{bcache})
35238statistics for the object file. The objfile data includes the number
d3e8051b 35239of minimal, partial, full, and stabs symbols, the number of types
09d4efe1
EZ
35240defined by the objfile, the number of as yet unexpanded psym tables,
35241the number of line tables and string tables, and the amount of memory
35242used by the various tables. The bcache statistics include the counts,
35243sizes, and counts of duplicates of all and unique objects, max,
35244average, and median entry size, total memory used and its overhead and
35245savings, and various measures of the hash table size and chain
35246lengths.
35247
c7ba131e
JB
35248@kindex maint print target-stack
35249@cindex target stack description
35250@item maint print target-stack
35251A @dfn{target} is an interface between the debugger and a particular
35252kind of file or process. Targets can be stacked in @dfn{strata},
35253so that more than one target can potentially respond to a request.
35254In particular, memory accesses will walk down the stack of targets
35255until they find a target that is interested in handling that particular
35256address.
35257
35258This command prints a short description of each layer that was pushed on
35259the @dfn{target stack}, starting from the top layer down to the bottom one.
35260
09d4efe1
EZ
35261@kindex maint print type
35262@cindex type chain of a data type
35263@item maint print type @var{expr}
35264Print the type chain for a type specified by @var{expr}. The argument
35265can be either a type name or a symbol. If it is a symbol, the type of
35266that symbol is described. The type chain produced by this command is
35267a recursive definition of the data type as stored in @value{GDBN}'s
35268data structures, including its flags and contained types.
35269
9eae7c52
TT
35270@kindex maint set dwarf2 always-disassemble
35271@kindex maint show dwarf2 always-disassemble
35272@item maint set dwarf2 always-disassemble
35273@item maint show dwarf2 always-disassemble
35274Control the behavior of @code{info address} when using DWARF debugging
35275information.
35276
35277The default is @code{off}, which means that @value{GDBN} should try to
35278describe a variable's location in an easily readable format. When
35279@code{on}, @value{GDBN} will instead display the DWARF location
35280expression in an assembly-like format. Note that some locations are
35281too complex for @value{GDBN} to describe simply; in this case you will
35282always see the disassembly form.
35283
35284Here is an example of the resulting disassembly:
35285
35286@smallexample
35287(gdb) info addr argc
35288Symbol "argc" is a complex DWARF expression:
35289 1: DW_OP_fbreg 0
35290@end smallexample
35291
35292For more information on these expressions, see
35293@uref{http://www.dwarfstd.org/, the DWARF standard}.
35294
09d4efe1
EZ
35295@kindex maint set dwarf2 max-cache-age
35296@kindex maint show dwarf2 max-cache-age
35297@item maint set dwarf2 max-cache-age
35298@itemx maint show dwarf2 max-cache-age
35299Control the DWARF 2 compilation unit cache.
35300
35301@cindex DWARF 2 compilation units cache
35302In object files with inter-compilation-unit references, such as those
35303produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2
35304reader needs to frequently refer to previously read compilation units.
35305This setting controls how long a compilation unit will remain in the
35306cache if it is not referenced. A higher limit means that cached
35307compilation units will be stored in memory longer, and more total
35308memory will be used. Setting it to zero disables caching, which will
35309slow down @value{GDBN} startup, but reduce memory consumption.
35310
e7ba9c65
DJ
35311@kindex maint set profile
35312@kindex maint show profile
35313@cindex profiling GDB
35314@item maint set profile
35315@itemx maint show profile
35316Control profiling of @value{GDBN}.
35317
35318Profiling will be disabled until you use the @samp{maint set profile}
35319command to enable it. When you enable profiling, the system will begin
35320collecting timing and execution count data; when you disable profiling or
35321exit @value{GDBN}, the results will be written to a log file. Remember that
35322if you use profiling, @value{GDBN} will overwrite the profiling log file
35323(often called @file{gmon.out}). If you have a record of important profiling
35324data in a @file{gmon.out} file, be sure to move it to a safe location.
35325
35326Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
b383017d 35327compiled with the @samp{-pg} compiler option.
e7ba9c65 35328
cbe54154
PA
35329@kindex maint set show-debug-regs
35330@kindex maint show show-debug-regs
eac35c4e 35331@cindex hardware debug registers
cbe54154
PA
35332@item maint set show-debug-regs
35333@itemx maint show show-debug-regs
eac35c4e 35334Control whether to show variables that mirror the hardware debug
09d4efe1 35335registers. Use @code{ON} to enable, @code{OFF} to disable. If
3f94c067 35336enabled, the debug registers values are shown when @value{GDBN} inserts or
09d4efe1
EZ
35337removes a hardware breakpoint or watchpoint, and when the inferior
35338triggers a hardware-assisted breakpoint or watchpoint.
35339
711e434b
PM
35340@kindex maint set show-all-tib
35341@kindex maint show show-all-tib
35342@item maint set show-all-tib
35343@itemx maint show show-all-tib
35344Control whether to show all non zero areas within a 1k block starting
35345at thread local base, when using the @samp{info w32 thread-information-block}
35346command.
35347
09d4efe1
EZ
35348@kindex maint space
35349@cindex memory used by commands
35350@item maint space
35351Control whether to display memory usage for each command. If set to a
35352nonzero value, @value{GDBN} will display how much memory each command
35353took, following the command's own output. This can also be requested
35354by invoking @value{GDBN} with the @option{--statistics} command-line
35355switch (@pxref{Mode Options}).
35356
35357@kindex maint time
35358@cindex time of command execution
35359@item maint time
0a1c4d10
DE
35360Control whether to display the execution time of @value{GDBN} for each command.
35361If set to a nonzero value, @value{GDBN} will display how much time it
09d4efe1 35362took to execute each command, following the command's own output.
0a1c4d10
DE
35363Both CPU time and wallclock time are printed.
35364Printing both is useful when trying to determine whether the cost is
35365CPU or, e.g., disk/network, latency.
35366Note that the CPU time printed is for @value{GDBN} only, it does not include
35367the execution time of the inferior because there's no mechanism currently
35368to compute how much time was spent by @value{GDBN} and how much time was
35369spent by the program been debugged.
09d4efe1
EZ
35370This can also be requested by invoking @value{GDBN} with the
35371@option{--statistics} command-line switch (@pxref{Mode Options}).
35372
35373@kindex maint translate-address
35374@item maint translate-address @r{[}@var{section}@r{]} @var{addr}
35375Find the symbol stored at the location specified by the address
35376@var{addr} and an optional section name @var{section}. If found,
35377@value{GDBN} prints the name of the closest symbol and an offset from
35378the symbol's location to the specified address. This is similar to
35379the @code{info address} command (@pxref{Symbols}), except that this
35380command also allows to find symbols in other sections.
ae038cb0 35381
c14c28ba
PP
35382If section was not specified, the section in which the symbol was found
35383is also printed. For dynamically linked executables, the name of
35384executable or shared library containing the symbol is printed as well.
35385
8e04817f 35386@end table
c906108c 35387
9c16f35a
EZ
35388The following command is useful for non-interactive invocations of
35389@value{GDBN}, such as in the test suite.
35390
35391@table @code
35392@item set watchdog @var{nsec}
35393@kindex set watchdog
35394@cindex watchdog timer
35395@cindex timeout for commands
35396Set the maximum number of seconds @value{GDBN} will wait for the
35397target operation to finish. If this time expires, @value{GDBN}
35398reports and error and the command is aborted.
35399
35400@item show watchdog
35401Show the current setting of the target wait timeout.
35402@end table
c906108c 35403
e0ce93ac 35404@node Remote Protocol
8e04817f 35405@appendix @value{GDBN} Remote Serial Protocol
c906108c 35406
ee2d5c50
AC
35407@menu
35408* Overview::
35409* Packets::
35410* Stop Reply Packets::
35411* General Query Packets::
a1dcb23a 35412* Architecture-Specific Protocol Details::
9d29849a 35413* Tracepoint Packets::
a6b151f1 35414* Host I/O Packets::
9a6253be 35415* Interrupts::
8b23ecc4
SL
35416* Notification Packets::
35417* Remote Non-Stop::
a6f3e723 35418* Packet Acknowledgment::
ee2d5c50 35419* Examples::
79a6e687 35420* File-I/O Remote Protocol Extension::
cfa9d6d9 35421* Library List Format::
2268b414 35422* Library List Format for SVR4 Targets::
79a6e687 35423* Memory Map Format::
dc146f7c 35424* Thread List Format::
b3b9301e 35425* Traceframe Info Format::
ee2d5c50
AC
35426@end menu
35427
35428@node Overview
35429@section Overview
35430
8e04817f
AC
35431There may be occasions when you need to know something about the
35432protocol---for example, if there is only one serial port to your target
35433machine, you might want your program to do something special if it
35434recognizes a packet meant for @value{GDBN}.
c906108c 35435
d2c6833e 35436In the examples below, @samp{->} and @samp{<-} are used to indicate
bf06d120 35437transmitted and received data, respectively.
c906108c 35438
8e04817f
AC
35439@cindex protocol, @value{GDBN} remote serial
35440@cindex serial protocol, @value{GDBN} remote
35441@cindex remote serial protocol
8b23ecc4
SL
35442All @value{GDBN} commands and responses (other than acknowledgments
35443and notifications, see @ref{Notification Packets}) are sent as a
35444@var{packet}. A @var{packet} is introduced with the character
8e04817f
AC
35445@samp{$}, the actual @var{packet-data}, and the terminating character
35446@samp{#} followed by a two-digit @var{checksum}:
c906108c 35447
474c8240 35448@smallexample
8e04817f 35449@code{$}@var{packet-data}@code{#}@var{checksum}
474c8240 35450@end smallexample
8e04817f 35451@noindent
c906108c 35452
8e04817f
AC
35453@cindex checksum, for @value{GDBN} remote
35454@noindent
35455The two-digit @var{checksum} is computed as the modulo 256 sum of all
35456characters between the leading @samp{$} and the trailing @samp{#} (an
35457eight bit unsigned checksum).
c906108c 35458
8e04817f
AC
35459Implementors should note that prior to @value{GDBN} 5.0 the protocol
35460specification also included an optional two-digit @var{sequence-id}:
c906108c 35461
474c8240 35462@smallexample
8e04817f 35463@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
474c8240 35464@end smallexample
c906108c 35465
8e04817f
AC
35466@cindex sequence-id, for @value{GDBN} remote
35467@noindent
35468That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
35469has never output @var{sequence-id}s. Stubs that handle packets added
35470since @value{GDBN} 5.0 must not accept @var{sequence-id}.
c906108c 35471
8e04817f
AC
35472When either the host or the target machine receives a packet, the first
35473response expected is an acknowledgment: either @samp{+} (to indicate
35474the package was received correctly) or @samp{-} (to request
35475retransmission):
c906108c 35476
474c8240 35477@smallexample
d2c6833e
AC
35478-> @code{$}@var{packet-data}@code{#}@var{checksum}
35479<- @code{+}
474c8240 35480@end smallexample
8e04817f 35481@noindent
53a5351d 35482
a6f3e723
SL
35483The @samp{+}/@samp{-} acknowledgments can be disabled
35484once a connection is established.
35485@xref{Packet Acknowledgment}, for details.
35486
8e04817f
AC
35487The host (@value{GDBN}) sends @var{command}s, and the target (the
35488debugging stub incorporated in your program) sends a @var{response}. In
35489the case of step and continue @var{command}s, the response is only sent
8b23ecc4
SL
35490when the operation has completed, and the target has again stopped all
35491threads in all attached processes. This is the default all-stop mode
35492behavior, but the remote protocol also supports @value{GDBN}'s non-stop
35493execution mode; see @ref{Remote Non-Stop}, for details.
c906108c 35494
8e04817f
AC
35495@var{packet-data} consists of a sequence of characters with the
35496exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
35497exceptions).
c906108c 35498
ee2d5c50 35499@cindex remote protocol, field separator
0876f84a 35500Fields within the packet should be separated using @samp{,} @samp{;} or
8e04817f 35501@samp{:}. Except where otherwise noted all numbers are represented in
ee2d5c50 35502@sc{hex} with leading zeros suppressed.
c906108c 35503
8e04817f
AC
35504Implementors should note that prior to @value{GDBN} 5.0, the character
35505@samp{:} could not appear as the third character in a packet (as it
35506would potentially conflict with the @var{sequence-id}).
c906108c 35507
0876f84a
DJ
35508@cindex remote protocol, binary data
35509@anchor{Binary Data}
35510Binary data in most packets is encoded either as two hexadecimal
35511digits per byte of binary data. This allowed the traditional remote
35512protocol to work over connections which were only seven-bit clean.
35513Some packets designed more recently assume an eight-bit clean
35514connection, and use a more efficient encoding to send and receive
35515binary data.
35516
35517The binary data representation uses @code{7d} (@sc{ascii} @samp{@}})
35518as an escape character. Any escaped byte is transmitted as the escape
35519character followed by the original character XORed with @code{0x20}.
35520For example, the byte @code{0x7d} would be transmitted as the two
35521bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}),
35522@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii}
35523@samp{@}}) must always be escaped. Responses sent by the stub
35524must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it
35525is not interpreted as the start of a run-length encoded sequence
35526(described next).
35527
1d3811f6
DJ
35528Response @var{data} can be run-length encoded to save space.
35529Run-length encoding replaces runs of identical characters with one
35530instance of the repeated character, followed by a @samp{*} and a
35531repeat count. The repeat count is itself sent encoded, to avoid
35532binary characters in @var{data}: a value of @var{n} is sent as
35533@code{@var{n}+29}. For a repeat count greater or equal to 3, this
35534produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii}
35535code 32) for a repeat count of 3. (This is because run-length
35536encoding starts to win for counts 3 or more.) Thus, for example,
35537@samp{0* } is a run-length encoding of ``0000'': the space character
35538after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 =
355393}} more times.
35540
35541The printable characters @samp{#} and @samp{$} or with a numeric value
35542greater than 126 must not be used. Runs of six repeats (@samp{#}) or
35543seven repeats (@samp{$}) can be expanded using a repeat count of only
35544five (@samp{"}). For example, @samp{00000000} can be encoded as
35545@samp{0*"00}.
c906108c 35546
8e04817f
AC
35547The error response returned for some packets includes a two character
35548error number. That number is not well defined.
c906108c 35549
f8da2bff 35550@cindex empty response, for unsupported packets
8e04817f
AC
35551For any @var{command} not supported by the stub, an empty response
35552(@samp{$#00}) should be returned. That way it is possible to extend the
35553protocol. A newer @value{GDBN} can tell if a packet is supported based
35554on that response.
c906108c 35555
393eab54
PA
35556At a minimum, a stub is required to support the @samp{g} and @samp{G}
35557commands for register access, and the @samp{m} and @samp{M} commands
35558for memory access. Stubs that only control single-threaded targets
35559can implement run control with the @samp{c} (continue), and @samp{s}
35560(step) commands. Stubs that support multi-threading targets should
35561support the @samp{vCont} command. All other commands are optional.
c906108c 35562
ee2d5c50
AC
35563@node Packets
35564@section Packets
35565
35566The following table provides a complete list of all currently defined
35567@var{command}s and their corresponding response @var{data}.
79a6e687 35568@xref{File-I/O Remote Protocol Extension}, for details about the File
9c16f35a 35569I/O extension of the remote protocol.
ee2d5c50 35570
b8ff78ce
JB
35571Each packet's description has a template showing the packet's overall
35572syntax, followed by an explanation of the packet's meaning. We
35573include spaces in some of the templates for clarity; these are not
35574part of the packet's syntax. No @value{GDBN} packet uses spaces to
35575separate its components. For example, a template like @samp{foo
35576@var{bar} @var{baz}} describes a packet beginning with the three ASCII
35577bytes @samp{foo}, followed by a @var{bar}, followed directly by a
3f94c067 35578@var{baz}. @value{GDBN} does not transmit a space character between the
b8ff78ce
JB
35579@samp{foo} and the @var{bar}, or between the @var{bar} and the
35580@var{baz}.
35581
b90a069a
SL
35582@cindex @var{thread-id}, in remote protocol
35583@anchor{thread-id syntax}
35584Several packets and replies include a @var{thread-id} field to identify
35585a thread. Normally these are positive numbers with a target-specific
35586interpretation, formatted as big-endian hex strings. A @var{thread-id}
35587can also be a literal @samp{-1} to indicate all threads, or @samp{0} to
35588pick any thread.
35589
35590In addition, the remote protocol supports a multiprocess feature in
35591which the @var{thread-id} syntax is extended to optionally include both
35592process and thread ID fields, as @samp{p@var{pid}.@var{tid}}.
35593The @var{pid} (process) and @var{tid} (thread) components each have the
35594format described above: a positive number with target-specific
35595interpretation formatted as a big-endian hex string, literal @samp{-1}
35596to indicate all processes or threads (respectively), or @samp{0} to
35597indicate an arbitrary process or thread. Specifying just a process, as
35598@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an
35599error to specify all processes but a specific thread, such as
35600@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used
35601for those packets and replies explicitly documented to include a process
35602ID, rather than a @var{thread-id}.
35603
35604The multiprocess @var{thread-id} syntax extensions are only used if both
35605@value{GDBN} and the stub report support for the @samp{multiprocess}
35606feature using @samp{qSupported}. @xref{multiprocess extensions}, for
35607more information.
35608
8ffe2530
JB
35609Note that all packet forms beginning with an upper- or lower-case
35610letter, other than those described here, are reserved for future use.
35611
b8ff78ce 35612Here are the packet descriptions.
ee2d5c50 35613
b8ff78ce 35614@table @samp
ee2d5c50 35615
b8ff78ce
JB
35616@item !
35617@cindex @samp{!} packet
2d717e4f 35618@anchor{extended mode}
8e04817f
AC
35619Enable extended mode. In extended mode, the remote server is made
35620persistent. The @samp{R} packet is used to restart the program being
35621debugged.
ee2d5c50
AC
35622
35623Reply:
35624@table @samp
35625@item OK
8e04817f 35626The remote target both supports and has enabled extended mode.
ee2d5c50 35627@end table
c906108c 35628
b8ff78ce
JB
35629@item ?
35630@cindex @samp{?} packet
ee2d5c50 35631Indicate the reason the target halted. The reply is the same as for
8b23ecc4
SL
35632step and continue. This packet has a special interpretation when the
35633target is in non-stop mode; see @ref{Remote Non-Stop}.
c906108c 35634
ee2d5c50
AC
35635Reply:
35636@xref{Stop Reply Packets}, for the reply specifications.
35637
b8ff78ce
JB
35638@item A @var{arglen},@var{argnum},@var{arg},@dots{}
35639@cindex @samp{A} packet
35640Initialized @code{argv[]} array passed into program. @var{arglen}
35641specifies the number of bytes in the hex encoded byte stream
35642@var{arg}. See @code{gdbserver} for more details.
ee2d5c50
AC
35643
35644Reply:
35645@table @samp
35646@item OK
b8ff78ce
JB
35647The arguments were set.
35648@item E @var{NN}
35649An error occurred.
ee2d5c50
AC
35650@end table
35651
b8ff78ce
JB
35652@item b @var{baud}
35653@cindex @samp{b} packet
35654(Don't use this packet; its behavior is not well-defined.)
ee2d5c50
AC
35655Change the serial line speed to @var{baud}.
35656
35657JTC: @emph{When does the transport layer state change? When it's
35658received, or after the ACK is transmitted. In either case, there are
35659problems if the command or the acknowledgment packet is dropped.}
35660
35661Stan: @emph{If people really wanted to add something like this, and get
35662it working for the first time, they ought to modify ser-unix.c to send
35663some kind of out-of-band message to a specially-setup stub and have the
35664switch happen "in between" packets, so that from remote protocol's point
35665of view, nothing actually happened.}
35666
b8ff78ce
JB
35667@item B @var{addr},@var{mode}
35668@cindex @samp{B} packet
8e04817f 35669Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
2f870471
AC
35670breakpoint at @var{addr}.
35671
b8ff78ce 35672Don't use this packet. Use the @samp{Z} and @samp{z} packets instead
2f870471 35673(@pxref{insert breakpoint or watchpoint packet}).
c906108c 35674
bacec72f 35675@cindex @samp{bc} packet
0d772ac9
MS
35676@anchor{bc}
35677@item bc
bacec72f
MS
35678Backward continue. Execute the target system in reverse. No parameter.
35679@xref{Reverse Execution}, for more information.
35680
35681Reply:
35682@xref{Stop Reply Packets}, for the reply specifications.
35683
bacec72f 35684@cindex @samp{bs} packet
0d772ac9
MS
35685@anchor{bs}
35686@item bs
bacec72f
MS
35687Backward single step. Execute one instruction in reverse. No parameter.
35688@xref{Reverse Execution}, for more information.
35689
35690Reply:
35691@xref{Stop Reply Packets}, for the reply specifications.
35692
4f553f88 35693@item c @r{[}@var{addr}@r{]}
b8ff78ce
JB
35694@cindex @samp{c} packet
35695Continue. @var{addr} is address to resume. If @var{addr} is omitted,
35696resume at current address.
c906108c 35697
393eab54
PA
35698This packet is deprecated for multi-threading support. @xref{vCont
35699packet}.
35700
ee2d5c50
AC
35701Reply:
35702@xref{Stop Reply Packets}, for the reply specifications.
35703
4f553f88 35704@item C @var{sig}@r{[};@var{addr}@r{]}
b8ff78ce 35705@cindex @samp{C} packet
8e04817f 35706Continue with signal @var{sig} (hex signal number). If
b8ff78ce 35707@samp{;@var{addr}} is omitted, resume at same address.
c906108c 35708
393eab54
PA
35709This packet is deprecated for multi-threading support. @xref{vCont
35710packet}.
35711
ee2d5c50
AC
35712Reply:
35713@xref{Stop Reply Packets}, for the reply specifications.
c906108c 35714
b8ff78ce
JB
35715@item d
35716@cindex @samp{d} packet
ee2d5c50
AC
35717Toggle debug flag.
35718
b8ff78ce
JB
35719Don't use this packet; instead, define a general set packet
35720(@pxref{General Query Packets}).
ee2d5c50 35721
b8ff78ce 35722@item D
b90a069a 35723@itemx D;@var{pid}
b8ff78ce 35724@cindex @samp{D} packet
b90a069a
SL
35725The first form of the packet is used to detach @value{GDBN} from the
35726remote system. It is sent to the remote target
07f31aa6 35727before @value{GDBN} disconnects via the @code{detach} command.
ee2d5c50 35728
b90a069a
SL
35729The second form, including a process ID, is used when multiprocess
35730protocol extensions are enabled (@pxref{multiprocess extensions}), to
35731detach only a specific process. The @var{pid} is specified as a
35732big-endian hex string.
35733
ee2d5c50
AC
35734Reply:
35735@table @samp
10fac096
NW
35736@item OK
35737for success
b8ff78ce 35738@item E @var{NN}
10fac096 35739for an error
ee2d5c50 35740@end table
c906108c 35741
b8ff78ce
JB
35742@item F @var{RC},@var{EE},@var{CF};@var{XX}
35743@cindex @samp{F} packet
35744A reply from @value{GDBN} to an @samp{F} packet sent by the target.
35745This is part of the File-I/O protocol extension. @xref{File-I/O
79a6e687 35746Remote Protocol Extension}, for the specification.
ee2d5c50 35747
b8ff78ce 35748@item g
ee2d5c50 35749@anchor{read registers packet}
b8ff78ce 35750@cindex @samp{g} packet
ee2d5c50
AC
35751Read general registers.
35752
35753Reply:
35754@table @samp
35755@item @var{XX@dots{}}
8e04817f
AC
35756Each byte of register data is described by two hex digits. The bytes
35757with the register are transmitted in target byte order. The size of
b8ff78ce 35758each register and their position within the @samp{g} packet are
4a9bb1df
UW
35759determined by the @value{GDBN} internal gdbarch functions
35760@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The
b8ff78ce 35761specification of several standard @samp{g} packets is specified below.
ad196637
PA
35762
35763When reading registers from a trace frame (@pxref{Analyze Collected
35764Data,,Using the Collected Data}), the stub may also return a string of
35765literal @samp{x}'s in place of the register data digits, to indicate
35766that the corresponding register has not been collected, thus its value
35767is unavailable. For example, for an architecture with 4 registers of
357684 bytes each, the following reply indicates to @value{GDBN} that
35769registers 0 and 2 have not been collected, while registers 1 and 3
35770have been collected, and both have zero value:
35771
35772@smallexample
35773-> @code{g}
35774<- @code{xxxxxxxx00000000xxxxxxxx00000000}
35775@end smallexample
35776
b8ff78ce 35777@item E @var{NN}
ee2d5c50
AC
35778for an error.
35779@end table
c906108c 35780
b8ff78ce
JB
35781@item G @var{XX@dots{}}
35782@cindex @samp{G} packet
35783Write general registers. @xref{read registers packet}, for a
35784description of the @var{XX@dots{}} data.
ee2d5c50
AC
35785
35786Reply:
35787@table @samp
35788@item OK
35789for success
b8ff78ce 35790@item E @var{NN}
ee2d5c50
AC
35791for an error
35792@end table
35793
393eab54 35794@item H @var{op} @var{thread-id}
b8ff78ce 35795@cindex @samp{H} packet
8e04817f 35796Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
393eab54
PA
35797@samp{G}, et.al.). @var{op} depends on the operation to be performed:
35798it should be @samp{c} for step and continue operations (note that this
35799is deprecated, supporting the @samp{vCont} command is a better
35800option), @samp{g} for other operations. The thread designator
35801@var{thread-id} has the format and interpretation described in
35802@ref{thread-id syntax}.
ee2d5c50
AC
35803
35804Reply:
35805@table @samp
35806@item OK
35807for success
b8ff78ce 35808@item E @var{NN}
ee2d5c50
AC
35809for an error
35810@end table
c906108c 35811
8e04817f
AC
35812@c FIXME: JTC:
35813@c 'H': How restrictive (or permissive) is the thread model. If a
35814@c thread is selected and stopped, are other threads allowed
35815@c to continue to execute? As I mentioned above, I think the
35816@c semantics of each command when a thread is selected must be
35817@c described. For example:
35818@c
35819@c 'g': If the stub supports threads and a specific thread is
35820@c selected, returns the register block from that thread;
35821@c otherwise returns current registers.
35822@c
35823@c 'G' If the stub supports threads and a specific thread is
35824@c selected, sets the registers of the register block of
35825@c that thread; otherwise sets current registers.
c906108c 35826
b8ff78ce 35827@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
ee2d5c50 35828@anchor{cycle step packet}
b8ff78ce
JB
35829@cindex @samp{i} packet
35830Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is
8e04817f
AC
35831present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
35832step starting at that address.
c906108c 35833
b8ff78ce
JB
35834@item I
35835@cindex @samp{I} packet
35836Signal, then cycle step. @xref{step with signal packet}. @xref{cycle
35837step packet}.
ee2d5c50 35838
b8ff78ce
JB
35839@item k
35840@cindex @samp{k} packet
35841Kill request.
c906108c 35842
ac282366 35843FIXME: @emph{There is no description of how to operate when a specific
ee2d5c50
AC
35844thread context has been selected (i.e.@: does 'k' kill only that
35845thread?)}.
c906108c 35846
b8ff78ce
JB
35847@item m @var{addr},@var{length}
35848@cindex @samp{m} packet
8e04817f 35849Read @var{length} bytes of memory starting at address @var{addr}.
fb031cdf
JB
35850Note that @var{addr} may not be aligned to any particular boundary.
35851
35852The stub need not use any particular size or alignment when gathering
35853data from memory for the response; even if @var{addr} is word-aligned
35854and @var{length} is a multiple of the word size, the stub is free to
35855use byte accesses, or not. For this reason, this packet may not be
35856suitable for accessing memory-mapped I/O devices.
c43c5473
JB
35857@cindex alignment of remote memory accesses
35858@cindex size of remote memory accesses
35859@cindex memory, alignment and size of remote accesses
c906108c 35860
ee2d5c50
AC
35861Reply:
35862@table @samp
35863@item @var{XX@dots{}}
599b237a 35864Memory contents; each byte is transmitted as a two-digit hexadecimal
b8ff78ce
JB
35865number. The reply may contain fewer bytes than requested if the
35866server was able to read only part of the region of memory.
35867@item E @var{NN}
ee2d5c50
AC
35868@var{NN} is errno
35869@end table
35870
b8ff78ce
JB
35871@item M @var{addr},@var{length}:@var{XX@dots{}}
35872@cindex @samp{M} packet
8e04817f 35873Write @var{length} bytes of memory starting at address @var{addr}.
b8ff78ce 35874@var{XX@dots{}} is the data; each byte is transmitted as a two-digit
599b237a 35875hexadecimal number.
ee2d5c50
AC
35876
35877Reply:
35878@table @samp
35879@item OK
35880for success
b8ff78ce 35881@item E @var{NN}
8e04817f
AC
35882for an error (this includes the case where only part of the data was
35883written).
ee2d5c50 35884@end table
c906108c 35885
b8ff78ce
JB
35886@item p @var{n}
35887@cindex @samp{p} packet
35888Read the value of register @var{n}; @var{n} is in hex.
2e868123
AC
35889@xref{read registers packet}, for a description of how the returned
35890register value is encoded.
ee2d5c50
AC
35891
35892Reply:
35893@table @samp
2e868123
AC
35894@item @var{XX@dots{}}
35895the register's value
b8ff78ce 35896@item E @var{NN}
2e868123
AC
35897for an error
35898@item
35899Indicating an unrecognized @var{query}.
ee2d5c50
AC
35900@end table
35901
b8ff78ce 35902@item P @var{n@dots{}}=@var{r@dots{}}
ee2d5c50 35903@anchor{write register packet}
b8ff78ce
JB
35904@cindex @samp{P} packet
35905Write register @var{n@dots{}} with value @var{r@dots{}}. The register
599b237a 35906number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex
8e04817f 35907digits for each byte in the register (target byte order).
c906108c 35908
ee2d5c50
AC
35909Reply:
35910@table @samp
35911@item OK
35912for success
b8ff78ce 35913@item E @var{NN}
ee2d5c50
AC
35914for an error
35915@end table
35916
5f3bebba
JB
35917@item q @var{name} @var{params}@dots{}
35918@itemx Q @var{name} @var{params}@dots{}
b8ff78ce 35919@cindex @samp{q} packet
b8ff78ce 35920@cindex @samp{Q} packet
5f3bebba
JB
35921General query (@samp{q}) and set (@samp{Q}). These packets are
35922described fully in @ref{General Query Packets}.
c906108c 35923
b8ff78ce
JB
35924@item r
35925@cindex @samp{r} packet
8e04817f 35926Reset the entire system.
c906108c 35927
b8ff78ce 35928Don't use this packet; use the @samp{R} packet instead.
ee2d5c50 35929
b8ff78ce
JB
35930@item R @var{XX}
35931@cindex @samp{R} packet
8e04817f 35932Restart the program being debugged. @var{XX}, while needed, is ignored.
2d717e4f 35933This packet is only available in extended mode (@pxref{extended mode}).
ee2d5c50 35934
8e04817f 35935The @samp{R} packet has no reply.
ee2d5c50 35936
4f553f88 35937@item s @r{[}@var{addr}@r{]}
b8ff78ce
JB
35938@cindex @samp{s} packet
35939Single step. @var{addr} is the address at which to resume. If
35940@var{addr} is omitted, resume at same address.
c906108c 35941
393eab54
PA
35942This packet is deprecated for multi-threading support. @xref{vCont
35943packet}.
35944
ee2d5c50
AC
35945Reply:
35946@xref{Stop Reply Packets}, for the reply specifications.
35947
4f553f88 35948@item S @var{sig}@r{[};@var{addr}@r{]}
ee2d5c50 35949@anchor{step with signal packet}
b8ff78ce
JB
35950@cindex @samp{S} packet
35951Step with signal. This is analogous to the @samp{C} packet, but
35952requests a single-step, rather than a normal resumption of execution.
c906108c 35953
393eab54
PA
35954This packet is deprecated for multi-threading support. @xref{vCont
35955packet}.
35956
ee2d5c50
AC
35957Reply:
35958@xref{Stop Reply Packets}, for the reply specifications.
35959
b8ff78ce
JB
35960@item t @var{addr}:@var{PP},@var{MM}
35961@cindex @samp{t} packet
8e04817f 35962Search backwards starting at address @var{addr} for a match with pattern
ee2d5c50
AC
35963@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes.
35964@var{addr} must be at least 3 digits.
c906108c 35965
b90a069a 35966@item T @var{thread-id}
b8ff78ce 35967@cindex @samp{T} packet
b90a069a 35968Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}.
c906108c 35969
ee2d5c50
AC
35970Reply:
35971@table @samp
35972@item OK
35973thread is still alive
b8ff78ce 35974@item E @var{NN}
ee2d5c50
AC
35975thread is dead
35976@end table
35977
b8ff78ce
JB
35978@item v
35979Packets starting with @samp{v} are identified by a multi-letter name,
35980up to the first @samp{;} or @samp{?} (or the end of the packet).
86d30acc 35981
2d717e4f
DJ
35982@item vAttach;@var{pid}
35983@cindex @samp{vAttach} packet
8b23ecc4
SL
35984Attach to a new process with the specified process ID @var{pid}.
35985The process ID is a
35986hexadecimal integer identifying the process. In all-stop mode, all
35987threads in the attached process are stopped; in non-stop mode, it may be
35988attached without being stopped if that is supported by the target.
35989
35990@c In non-stop mode, on a successful vAttach, the stub should set the
35991@c current thread to a thread of the newly-attached process. After
35992@c attaching, GDB queries for the attached process's thread ID with qC.
35993@c Also note that, from a user perspective, whether or not the
35994@c target is stopped on attach in non-stop mode depends on whether you
35995@c use the foreground or background version of the attach command, not
35996@c on what vAttach does; GDB does the right thing with respect to either
35997@c stopping or restarting threads.
2d717e4f
DJ
35998
35999This packet is only available in extended mode (@pxref{extended mode}).
36000
36001Reply:
36002@table @samp
36003@item E @var{nn}
36004for an error
36005@item @r{Any stop packet}
8b23ecc4
SL
36006for success in all-stop mode (@pxref{Stop Reply Packets})
36007@item OK
36008for success in non-stop mode (@pxref{Remote Non-Stop})
2d717e4f
DJ
36009@end table
36010
b90a069a 36011@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{}
b8ff78ce 36012@cindex @samp{vCont} packet
393eab54 36013@anchor{vCont packet}
b8ff78ce 36014Resume the inferior, specifying different actions for each thread.
b90a069a 36015If an action is specified with no @var{thread-id}, then it is applied to any
86d30acc 36016threads that don't have a specific action specified; if no default action is
8b23ecc4
SL
36017specified then other threads should remain stopped in all-stop mode and
36018in their current state in non-stop mode.
36019Specifying multiple
86d30acc 36020default actions is an error; specifying no actions is also an error.
b90a069a
SL
36021Thread IDs are specified using the syntax described in @ref{thread-id syntax}.
36022
36023Currently supported actions are:
86d30acc 36024
b8ff78ce 36025@table @samp
86d30acc
DJ
36026@item c
36027Continue.
b8ff78ce 36028@item C @var{sig}
8b23ecc4 36029Continue with signal @var{sig}. The signal @var{sig} should be two hex digits.
86d30acc
DJ
36030@item s
36031Step.
b8ff78ce 36032@item S @var{sig}
8b23ecc4
SL
36033Step with signal @var{sig}. The signal @var{sig} should be two hex digits.
36034@item t
36035Stop.
86d30acc
DJ
36036@end table
36037
8b23ecc4
SL
36038The optional argument @var{addr} normally associated with the
36039@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is
b8ff78ce 36040not supported in @samp{vCont}.
86d30acc 36041
08a0efd0
PA
36042The @samp{t} action is only relevant in non-stop mode
36043(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise.
8b23ecc4
SL
36044A stop reply should be generated for any affected thread not already stopped.
36045When a thread is stopped by means of a @samp{t} action,
36046the corresponding stop reply should indicate that the thread has stopped with
36047signal @samp{0}, regardless of whether the target uses some other signal
36048as an implementation detail.
36049
4220b2f8
TS
36050The stub must support @samp{vCont} if it reports support for
36051multiprocess extensions (@pxref{multiprocess extensions}). Note that in
36052this case @samp{vCont} actions can be specified to apply to all threads
36053in a process by using the @samp{p@var{pid}.-1} form of the
36054@var{thread-id}.
36055
86d30acc
DJ
36056Reply:
36057@xref{Stop Reply Packets}, for the reply specifications.
36058
b8ff78ce
JB
36059@item vCont?
36060@cindex @samp{vCont?} packet
d3e8051b 36061Request a list of actions supported by the @samp{vCont} packet.
86d30acc
DJ
36062
36063Reply:
36064@table @samp
b8ff78ce
JB
36065@item vCont@r{[};@var{action}@dots{}@r{]}
36066The @samp{vCont} packet is supported. Each @var{action} is a supported
36067command in the @samp{vCont} packet.
86d30acc 36068@item
b8ff78ce 36069The @samp{vCont} packet is not supported.
86d30acc 36070@end table
ee2d5c50 36071
a6b151f1
DJ
36072@item vFile:@var{operation}:@var{parameter}@dots{}
36073@cindex @samp{vFile} packet
36074Perform a file operation on the target system. For details,
36075see @ref{Host I/O Packets}.
36076
68437a39
DJ
36077@item vFlashErase:@var{addr},@var{length}
36078@cindex @samp{vFlashErase} packet
36079Direct the stub to erase @var{length} bytes of flash starting at
36080@var{addr}. The region may enclose any number of flash blocks, but
36081its start and end must fall on block boundaries, as indicated by the
79a6e687
BW
36082flash block size appearing in the memory map (@pxref{Memory Map
36083Format}). @value{GDBN} groups flash memory programming operations
68437a39
DJ
36084together, and sends a @samp{vFlashDone} request after each group; the
36085stub is allowed to delay erase operation until the @samp{vFlashDone}
36086packet is received.
36087
36088Reply:
36089@table @samp
36090@item OK
36091for success
36092@item E @var{NN}
36093for an error
36094@end table
36095
36096@item vFlashWrite:@var{addr}:@var{XX@dots{}}
36097@cindex @samp{vFlashWrite} packet
36098Direct the stub to write data to flash address @var{addr}. The data
36099is passed in binary form using the same encoding as for the @samp{X}
36100packet (@pxref{Binary Data}). The memory ranges specified by
36101@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
36102not overlap, and must appear in order of increasing addresses
36103(although @samp{vFlashErase} packets for higher addresses may already
36104have been received; the ordering is guaranteed only between
36105@samp{vFlashWrite} packets). If a packet writes to an address that was
36106neither erased by a preceding @samp{vFlashErase} packet nor by some other
36107target-specific method, the results are unpredictable.
36108
36109
36110Reply:
36111@table @samp
36112@item OK
36113for success
36114@item E.memtype
36115for vFlashWrite addressing non-flash memory
36116@item E @var{NN}
36117for an error
36118@end table
36119
36120@item vFlashDone
36121@cindex @samp{vFlashDone} packet
36122Indicate to the stub that flash programming operation is finished.
36123The stub is permitted to delay or batch the effects of a group of
36124@samp{vFlashErase} and @samp{vFlashWrite} packets until a
36125@samp{vFlashDone} packet is received. The contents of the affected
36126regions of flash memory are unpredictable until the @samp{vFlashDone}
36127request is completed.
36128
b90a069a
SL
36129@item vKill;@var{pid}
36130@cindex @samp{vKill} packet
36131Kill the process with the specified process ID. @var{pid} is a
36132hexadecimal integer identifying the process. This packet is used in
36133preference to @samp{k} when multiprocess protocol extensions are
36134supported; see @ref{multiprocess extensions}.
36135
36136Reply:
36137@table @samp
36138@item E @var{nn}
36139for an error
36140@item OK
36141for success
36142@end table
36143
2d717e4f
DJ
36144@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{}
36145@cindex @samp{vRun} packet
36146Run the program @var{filename}, passing it each @var{argument} on its
36147command line. The file and arguments are hex-encoded strings. If
36148@var{filename} is an empty string, the stub may use a default program
36149(e.g.@: the last program run). The program is created in the stopped
9b562ab8 36150state.
2d717e4f 36151
8b23ecc4
SL
36152@c FIXME: What about non-stop mode?
36153
2d717e4f
DJ
36154This packet is only available in extended mode (@pxref{extended mode}).
36155
36156Reply:
36157@table @samp
36158@item E @var{nn}
36159for an error
36160@item @r{Any stop packet}
36161for success (@pxref{Stop Reply Packets})
36162@end table
36163
8b23ecc4 36164@item vStopped
8b23ecc4 36165@cindex @samp{vStopped} packet
8dbe8ece 36166@xref{Notification Packets}.
8b23ecc4 36167
b8ff78ce 36168@item X @var{addr},@var{length}:@var{XX@dots{}}
9a6253be 36169@anchor{X packet}
b8ff78ce
JB
36170@cindex @samp{X} packet
36171Write data to memory, where the data is transmitted in binary.
36172@var{addr} is address, @var{length} is number of bytes,
0876f84a 36173@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}).
c906108c 36174
ee2d5c50
AC
36175Reply:
36176@table @samp
36177@item OK
36178for success
b8ff78ce 36179@item E @var{NN}
ee2d5c50
AC
36180for an error
36181@end table
36182
a1dcb23a
DJ
36183@item z @var{type},@var{addr},@var{kind}
36184@itemx Z @var{type},@var{addr},@var{kind}
2f870471 36185@anchor{insert breakpoint or watchpoint packet}
b8ff78ce
JB
36186@cindex @samp{z} packet
36187@cindex @samp{Z} packets
36188Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
a1dcb23a 36189watchpoint starting at address @var{address} of kind @var{kind}.
ee2d5c50 36190
2f870471
AC
36191Each breakpoint and watchpoint packet @var{type} is documented
36192separately.
36193
512217c7
AC
36194@emph{Implementation notes: A remote target shall return an empty string
36195for an unrecognized breakpoint or watchpoint packet @var{type}. A
36196remote target shall support either both or neither of a given
b8ff78ce 36197@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To
2f870471
AC
36198avoid potential problems with duplicate packets, the operations should
36199be implemented in an idempotent way.}
36200
a1dcb23a 36201@item z0,@var{addr},@var{kind}
d3ce09f5 36202@itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]}
b8ff78ce
JB
36203@cindex @samp{z0} packet
36204@cindex @samp{Z0} packet
36205Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address
a1dcb23a 36206@var{addr} of type @var{kind}.
2f870471
AC
36207
36208A memory breakpoint is implemented by replacing the instruction at
36209@var{addr} with a software breakpoint or trap instruction. The
a1dcb23a
DJ
36210@var{kind} is target-specific and typically indicates the size of
36211the breakpoint in bytes that should be inserted. E.g., the @sc{arm}
36212and @sc{mips} can insert either a 2 or 4 byte breakpoint. Some
36213architectures have additional meanings for @var{kind};
83364271
LM
36214@var{cond_list} is an optional list of conditional expressions in bytecode
36215form that should be evaluated on the target's side. These are the
36216conditions that should be taken into consideration when deciding if
36217the breakpoint trigger should be reported back to @var{GDBN}.
36218
36219The @var{cond_list} parameter is comprised of a series of expressions,
36220concatenated without separators. Each expression has the following form:
36221
36222@table @samp
36223
36224@item X @var{len},@var{expr}
36225@var{len} is the length of the bytecode expression and @var{expr} is the
36226actual conditional expression in bytecode form.
36227
36228@end table
36229
d3ce09f5
SS
36230The optional @var{cmd_list} parameter introduces commands that may be
36231run on the target, rather than being reported back to @value{GDBN}.
36232The parameter starts with a numeric flag @var{persist}; if the flag is
36233nonzero, then the breakpoint may remain active and the commands
36234continue to be run even when @value{GDBN} disconnects from the target.
36235Following this flag is a series of expressions concatenated with no
36236separators. Each expression has the following form:
36237
36238@table @samp
36239
36240@item X @var{len},@var{expr}
36241@var{len} is the length of the bytecode expression and @var{expr} is the
36242actual conditional expression in bytecode form.
36243
36244@end table
36245
a1dcb23a 36246see @ref{Architecture-Specific Protocol Details}.
c906108c 36247
2f870471
AC
36248@emph{Implementation note: It is possible for a target to copy or move
36249code that contains memory breakpoints (e.g., when implementing
36250overlays). The behavior of this packet, in the presence of such a
36251target, is not defined.}
c906108c 36252
ee2d5c50
AC
36253Reply:
36254@table @samp
2f870471
AC
36255@item OK
36256success
36257@item
36258not supported
b8ff78ce 36259@item E @var{NN}
ee2d5c50 36260for an error
2f870471
AC
36261@end table
36262
a1dcb23a 36263@item z1,@var{addr},@var{kind}
83364271 36264@itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}
b8ff78ce
JB
36265@cindex @samp{z1} packet
36266@cindex @samp{Z1} packet
36267Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
a1dcb23a 36268address @var{addr}.
2f870471
AC
36269
36270A hardware breakpoint is implemented using a mechanism that is not
a1dcb23a 36271dependant on being able to modify the target's memory. @var{kind}
83364271 36272and @var{cond_list} have the same meaning as in @samp{Z0} packets.
2f870471
AC
36273
36274@emph{Implementation note: A hardware breakpoint is not affected by code
36275movement.}
36276
36277Reply:
36278@table @samp
ee2d5c50 36279@item OK
2f870471
AC
36280success
36281@item
36282not supported
b8ff78ce 36283@item E @var{NN}
2f870471
AC
36284for an error
36285@end table
36286
a1dcb23a
DJ
36287@item z2,@var{addr},@var{kind}
36288@itemx Z2,@var{addr},@var{kind}
b8ff78ce
JB
36289@cindex @samp{z2} packet
36290@cindex @samp{Z2} packet
a1dcb23a
DJ
36291Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}.
36292@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
36293
36294Reply:
36295@table @samp
36296@item OK
36297success
36298@item
36299not supported
b8ff78ce 36300@item E @var{NN}
2f870471
AC
36301for an error
36302@end table
36303
a1dcb23a
DJ
36304@item z3,@var{addr},@var{kind}
36305@itemx Z3,@var{addr},@var{kind}
b8ff78ce
JB
36306@cindex @samp{z3} packet
36307@cindex @samp{Z3} packet
a1dcb23a
DJ
36308Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}.
36309@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
36310
36311Reply:
36312@table @samp
36313@item OK
36314success
36315@item
36316not supported
b8ff78ce 36317@item E @var{NN}
2f870471
AC
36318for an error
36319@end table
36320
a1dcb23a
DJ
36321@item z4,@var{addr},@var{kind}
36322@itemx Z4,@var{addr},@var{kind}
b8ff78ce
JB
36323@cindex @samp{z4} packet
36324@cindex @samp{Z4} packet
a1dcb23a
DJ
36325Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}.
36326@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
36327
36328Reply:
36329@table @samp
36330@item OK
36331success
36332@item
36333not supported
b8ff78ce 36334@item E @var{NN}
2f870471 36335for an error
ee2d5c50
AC
36336@end table
36337
36338@end table
c906108c 36339
ee2d5c50
AC
36340@node Stop Reply Packets
36341@section Stop Reply Packets
36342@cindex stop reply packets
c906108c 36343
8b23ecc4
SL
36344The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont},
36345@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can
36346receive any of the below as a reply. Except for @samp{?}
36347and @samp{vStopped}, that reply is only returned
b8ff78ce 36348when the target halts. In the below the exact meaning of @dfn{signal
89be2091
DJ
36349number} is defined by the header @file{include/gdb/signals.h} in the
36350@value{GDBN} source code.
c906108c 36351
b8ff78ce
JB
36352As in the description of request packets, we include spaces in the
36353reply templates for clarity; these are not part of the reply packet's
36354syntax. No @value{GDBN} stop reply packet uses spaces to separate its
36355components.
c906108c 36356
b8ff78ce 36357@table @samp
ee2d5c50 36358
b8ff78ce 36359@item S @var{AA}
599b237a 36360The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
36361number). This is equivalent to a @samp{T} response with no
36362@var{n}:@var{r} pairs.
c906108c 36363
b8ff78ce
JB
36364@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
36365@cindex @samp{T} packet reply
599b237a 36366The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
36367number). This is equivalent to an @samp{S} response, except that the
36368@samp{@var{n}:@var{r}} pairs can carry values of important registers
36369and other information directly in the stop reply packet, reducing
36370round-trip latency. Single-step and breakpoint traps are reported
36371this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows:
cfa9d6d9
DJ
36372
36373@itemize @bullet
b8ff78ce 36374@item
599b237a 36375If @var{n} is a hexadecimal number, it is a register number, and the
b8ff78ce
JB
36376corresponding @var{r} gives that register's value. @var{r} is a
36377series of bytes in target byte order, with each byte given by a
36378two-digit hex number.
cfa9d6d9 36379
b8ff78ce 36380@item
b90a069a
SL
36381If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of
36382the stopped thread, as specified in @ref{thread-id syntax}.
cfa9d6d9 36383
dc146f7c
VP
36384@item
36385If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of
36386the core on which the stop event was detected.
36387
b8ff78ce 36388@item
cfa9d6d9
DJ
36389If @var{n} is a recognized @dfn{stop reason}, it describes a more
36390specific event that stopped the target. The currently defined stop
36391reasons are listed below. @var{aa} should be @samp{05}, the trap
36392signal. At most one stop reason should be present.
36393
b8ff78ce
JB
36394@item
36395Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
36396and go on to the next; this allows us to extend the protocol in the
36397future.
cfa9d6d9
DJ
36398@end itemize
36399
36400The currently defined stop reasons are:
36401
36402@table @samp
36403@item watch
36404@itemx rwatch
36405@itemx awatch
36406The packet indicates a watchpoint hit, and @var{r} is the data address, in
36407hex.
36408
36409@cindex shared library events, remote reply
36410@item library
36411The packet indicates that the loaded libraries have changed.
36412@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new
36413list of loaded libraries. @var{r} is ignored.
bacec72f
MS
36414
36415@cindex replay log events, remote reply
36416@item replaylog
36417The packet indicates that the target cannot continue replaying
36418logged execution events, because it has reached the end (or the
36419beginning when executing backward) of the log. The value of @var{r}
36420will be either @samp{begin} or @samp{end}. @xref{Reverse Execution},
36421for more information.
cfa9d6d9 36422@end table
ee2d5c50 36423
b8ff78ce 36424@item W @var{AA}
b90a069a 36425@itemx W @var{AA} ; process:@var{pid}
8e04817f 36426The process exited, and @var{AA} is the exit status. This is only
ee2d5c50
AC
36427applicable to certain targets.
36428
b90a069a
SL
36429The second form of the response, including the process ID of the exited
36430process, can be used only when @value{GDBN} has reported support for
36431multiprocess protocol extensions; see @ref{multiprocess extensions}.
36432The @var{pid} is formatted as a big-endian hex string.
36433
b8ff78ce 36434@item X @var{AA}
b90a069a 36435@itemx X @var{AA} ; process:@var{pid}
8e04817f 36436The process terminated with signal @var{AA}.
c906108c 36437
b90a069a
SL
36438The second form of the response, including the process ID of the
36439terminated process, can be used only when @value{GDBN} has reported
36440support for multiprocess protocol extensions; see @ref{multiprocess
36441extensions}. The @var{pid} is formatted as a big-endian hex string.
36442
b8ff78ce
JB
36443@item O @var{XX}@dots{}
36444@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
36445written as the program's console output. This can happen at any time
36446while the program is running and the debugger should continue to wait
8b23ecc4 36447for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode.
0ce1b118 36448
b8ff78ce 36449@item F @var{call-id},@var{parameter}@dots{}
0ce1b118
CV
36450@var{call-id} is the identifier which says which host system call should
36451be called. This is just the name of the function. Translation into the
36452correct system call is only applicable as it's defined in @value{GDBN}.
79a6e687 36453@xref{File-I/O Remote Protocol Extension}, for a list of implemented
0ce1b118
CV
36454system calls.
36455
b8ff78ce
JB
36456@samp{@var{parameter}@dots{}} is a list of parameters as defined for
36457this very system call.
0ce1b118 36458
b8ff78ce
JB
36459The target replies with this packet when it expects @value{GDBN} to
36460call a host system call on behalf of the target. @value{GDBN} replies
36461with an appropriate @samp{F} packet and keeps up waiting for the next
36462reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S}
79a6e687
BW
36463or @samp{s} action is expected to be continued. @xref{File-I/O Remote
36464Protocol Extension}, for more details.
0ce1b118 36465
ee2d5c50
AC
36466@end table
36467
36468@node General Query Packets
36469@section General Query Packets
9c16f35a 36470@cindex remote query requests
c906108c 36471
5f3bebba
JB
36472Packets starting with @samp{q} are @dfn{general query packets};
36473packets starting with @samp{Q} are @dfn{general set packets}. General
36474query and set packets are a semi-unified form for retrieving and
36475sending information to and from the stub.
36476
36477The initial letter of a query or set packet is followed by a name
36478indicating what sort of thing the packet applies to. For example,
36479@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol
36480definitions with the stub. These packet names follow some
36481conventions:
36482
36483@itemize @bullet
36484@item
36485The name must not contain commas, colons or semicolons.
36486@item
36487Most @value{GDBN} query and set packets have a leading upper case
36488letter.
36489@item
36490The names of custom vendor packets should use a company prefix, in
36491lower case, followed by a period. For example, packets designed at
36492the Acme Corporation might begin with @samp{qacme.foo} (for querying
36493foos) or @samp{Qacme.bar} (for setting bars).
36494@end itemize
36495
aa56d27a
JB
36496The name of a query or set packet should be separated from any
36497parameters by a @samp{:}; the parameters themselves should be
36498separated by @samp{,} or @samp{;}. Stubs must be careful to match the
369af7bd
DJ
36499full packet name, and check for a separator or the end of the packet,
36500in case two packet names share a common prefix. New packets should not begin
36501with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL}
36502packets predate these conventions, and have arguments without any terminator
36503for the packet name; we suspect they are in widespread use in places that
36504are difficult to upgrade. The @samp{qC} packet has no arguments, but some
36505existing stubs (e.g.@: RedBoot) are known to not check for the end of the
36506packet.}.
c906108c 36507
b8ff78ce
JB
36508Like the descriptions of the other packets, each description here
36509has a template showing the packet's overall syntax, followed by an
36510explanation of the packet's meaning. We include spaces in some of the
36511templates for clarity; these are not part of the packet's syntax. No
36512@value{GDBN} packet uses spaces to separate its components.
36513
5f3bebba
JB
36514Here are the currently defined query and set packets:
36515
b8ff78ce 36516@table @samp
c906108c 36517
d1feda86 36518@item QAgent:1
af4238e5 36519@itemx QAgent:0
d1feda86
YQ
36520Turn on or off the agent as a helper to perform some debugging operations
36521delegated from @value{GDBN} (@pxref{Control Agent}).
36522
d914c394
SS
36523@item QAllow:@var{op}:@var{val}@dots{}
36524@cindex @samp{QAllow} packet
36525Specify which operations @value{GDBN} expects to request of the
36526target, as a semicolon-separated list of operation name and value
36527pairs. Possible values for @var{op} include @samp{WriteReg},
36528@samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace},
36529@samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0,
36530indicating that @value{GDBN} will not request the operation, or 1,
36531indicating that it may. (The target can then use this to set up its
36532own internals optimally, for instance if the debugger never expects to
36533insert breakpoints, it may not need to install its own trap handler.)
36534
b8ff78ce 36535@item qC
9c16f35a 36536@cindex current thread, remote request
b8ff78ce 36537@cindex @samp{qC} packet
b90a069a 36538Return the current thread ID.
ee2d5c50
AC
36539
36540Reply:
36541@table @samp
b90a069a
SL
36542@item QC @var{thread-id}
36543Where @var{thread-id} is a thread ID as documented in
36544@ref{thread-id syntax}.
b8ff78ce 36545@item @r{(anything else)}
b90a069a 36546Any other reply implies the old thread ID.
ee2d5c50
AC
36547@end table
36548
b8ff78ce 36549@item qCRC:@var{addr},@var{length}
ff2587ec 36550@cindex CRC of memory block, remote request
b8ff78ce 36551@cindex @samp{qCRC} packet
99e008fe
EZ
36552Compute the CRC checksum of a block of memory using CRC-32 defined in
36553IEEE 802.3. The CRC is computed byte at a time, taking the most
36554significant bit of each byte first. The initial pattern code
36555@code{0xffffffff} is used to ensure leading zeros affect the CRC.
36556
36557@emph{Note:} This is the same CRC used in validating separate debug
36558files (@pxref{Separate Debug Files, , Debugging Information in Separate
36559Files}). However the algorithm is slightly different. When validating
36560separate debug files, the CRC is computed taking the @emph{least}
36561significant bit of each byte first, and the final result is inverted to
36562detect trailing zeros.
36563
ff2587ec
WZ
36564Reply:
36565@table @samp
b8ff78ce 36566@item E @var{NN}
ff2587ec 36567An error (such as memory fault)
b8ff78ce
JB
36568@item C @var{crc32}
36569The specified memory region's checksum is @var{crc32}.
ff2587ec
WZ
36570@end table
36571
03583c20
UW
36572@item QDisableRandomization:@var{value}
36573@cindex disable address space randomization, remote request
36574@cindex @samp{QDisableRandomization} packet
36575Some target operating systems will randomize the virtual address space
36576of the inferior process as a security feature, but provide a feature
36577to disable such randomization, e.g.@: to allow for a more deterministic
36578debugging experience. On such systems, this packet with a @var{value}
36579of 1 directs the target to disable address space randomization for
36580processes subsequently started via @samp{vRun} packets, while a packet
36581with a @var{value} of 0 tells the target to enable address space
36582randomization.
36583
36584This packet is only available in extended mode (@pxref{extended mode}).
36585
36586Reply:
36587@table @samp
36588@item OK
36589The request succeeded.
36590
36591@item E @var{nn}
36592An error occurred. @var{nn} are hex digits.
36593
36594@item
36595An empty reply indicates that @samp{QDisableRandomization} is not supported
36596by the stub.
36597@end table
36598
36599This packet is not probed by default; the remote stub must request it,
36600by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36601This should only be done on targets that actually support disabling
36602address space randomization.
36603
b8ff78ce
JB
36604@item qfThreadInfo
36605@itemx qsThreadInfo
9c16f35a 36606@cindex list active threads, remote request
b8ff78ce
JB
36607@cindex @samp{qfThreadInfo} packet
36608@cindex @samp{qsThreadInfo} packet
b90a069a 36609Obtain a list of all active thread IDs from the target (OS). Since there
8e04817f
AC
36610may be too many active threads to fit into one reply packet, this query
36611works iteratively: it may require more than one query/reply sequence to
36612obtain the entire list of threads. The first query of the sequence will
b8ff78ce
JB
36613be the @samp{qfThreadInfo} query; subsequent queries in the
36614sequence will be the @samp{qsThreadInfo} query.
ee2d5c50 36615
b8ff78ce 36616NOTE: This packet replaces the @samp{qL} query (see below).
ee2d5c50
AC
36617
36618Reply:
36619@table @samp
b90a069a
SL
36620@item m @var{thread-id}
36621A single thread ID
36622@item m @var{thread-id},@var{thread-id}@dots{}
36623a comma-separated list of thread IDs
b8ff78ce
JB
36624@item l
36625(lower case letter @samp{L}) denotes end of list.
ee2d5c50
AC
36626@end table
36627
36628In response to each query, the target will reply with a list of one or
b90a069a 36629more thread IDs, separated by commas.
e1aac25b 36630@value{GDBN} will respond to each reply with a request for more thread
b8ff78ce 36631ids (using the @samp{qs} form of the query), until the target responds
501994c0 36632with @samp{l} (lower-case ell, for @dfn{last}).
b90a069a
SL
36633Refer to @ref{thread-id syntax}, for the format of the @var{thread-id}
36634fields.
c906108c 36635
b8ff78ce 36636@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
ff2587ec 36637@cindex get thread-local storage address, remote request
b8ff78ce 36638@cindex @samp{qGetTLSAddr} packet
ff2587ec
WZ
36639Fetch the address associated with thread local storage specified
36640by @var{thread-id}, @var{offset}, and @var{lm}.
36641
b90a069a
SL
36642@var{thread-id} is the thread ID associated with the
36643thread for which to fetch the TLS address. @xref{thread-id syntax}.
ff2587ec
WZ
36644
36645@var{offset} is the (big endian, hex encoded) offset associated with the
36646thread local variable. (This offset is obtained from the debug
36647information associated with the variable.)
36648
db2e3e2e 36649@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the
7a9dd1b2 36650load module associated with the thread local storage. For example,
ff2587ec
WZ
36651a @sc{gnu}/Linux system will pass the link map address of the shared
36652object associated with the thread local storage under consideration.
36653Other operating environments may choose to represent the load module
36654differently, so the precise meaning of this parameter will vary.
ee2d5c50
AC
36655
36656Reply:
b8ff78ce
JB
36657@table @samp
36658@item @var{XX}@dots{}
ff2587ec
WZ
36659Hex encoded (big endian) bytes representing the address of the thread
36660local storage requested.
36661
b8ff78ce
JB
36662@item E @var{nn}
36663An error occurred. @var{nn} are hex digits.
ff2587ec 36664
b8ff78ce
JB
36665@item
36666An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
ee2d5c50
AC
36667@end table
36668
711e434b
PM
36669@item qGetTIBAddr:@var{thread-id}
36670@cindex get thread information block address
36671@cindex @samp{qGetTIBAddr} packet
36672Fetch address of the Windows OS specific Thread Information Block.
36673
36674@var{thread-id} is the thread ID associated with the thread.
36675
36676Reply:
36677@table @samp
36678@item @var{XX}@dots{}
36679Hex encoded (big endian) bytes representing the linear address of the
36680thread information block.
36681
36682@item E @var{nn}
36683An error occured. This means that either the thread was not found, or the
36684address could not be retrieved.
36685
36686@item
36687An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub.
36688@end table
36689
b8ff78ce 36690@item qL @var{startflag} @var{threadcount} @var{nextthread}
8e04817f
AC
36691Obtain thread information from RTOS. Where: @var{startflag} (one hex
36692digit) is one to indicate the first query and zero to indicate a
36693subsequent query; @var{threadcount} (two hex digits) is the maximum
36694number of threads the response packet can contain; and @var{nextthread}
36695(eight hex digits), for subsequent queries (@var{startflag} is zero), is
36696returned in the response as @var{argthread}.
ee2d5c50 36697
b8ff78ce 36698Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
ee2d5c50
AC
36699
36700Reply:
36701@table @samp
b8ff78ce 36702@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
8e04817f
AC
36703Where: @var{count} (two hex digits) is the number of threads being
36704returned; @var{done} (one hex digit) is zero to indicate more threads
36705and one indicates no further threads; @var{argthreadid} (eight hex
b8ff78ce 36706digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
ee2d5c50 36707is a sequence of thread IDs from the target. @var{threadid} (eight hex
8e04817f 36708digits). See @code{remote.c:parse_threadlist_response()}.
ee2d5c50 36709@end table
c906108c 36710
b8ff78ce 36711@item qOffsets
9c16f35a 36712@cindex section offsets, remote request
b8ff78ce 36713@cindex @samp{qOffsets} packet
31d99776
DJ
36714Get section offsets that the target used when relocating the downloaded
36715image.
c906108c 36716
ee2d5c50
AC
36717Reply:
36718@table @samp
31d99776
DJ
36719@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]}
36720Relocate the @code{Text} section by @var{xxx} from its original address.
36721Relocate the @code{Data} section by @var{yyy} from its original address.
36722If the object file format provides segment information (e.g.@: @sc{elf}
36723@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire
36724segments by the supplied offsets.
36725
36726@emph{Note: while a @code{Bss} offset may be included in the response,
36727@value{GDBN} ignores this and instead applies the @code{Data} offset
36728to the @code{Bss} section.}
36729
36730@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]}
36731Relocate the first segment of the object file, which conventionally
36732contains program code, to a starting address of @var{xxx}. If
36733@samp{DataSeg} is specified, relocate the second segment, which
36734conventionally contains modifiable data, to a starting address of
36735@var{yyy}. @value{GDBN} will report an error if the object file
36736does not contain segment information, or does not contain at least
36737as many segments as mentioned in the reply. Extra segments are
36738kept at fixed offsets relative to the last relocated segment.
ee2d5c50
AC
36739@end table
36740
b90a069a 36741@item qP @var{mode} @var{thread-id}
9c16f35a 36742@cindex thread information, remote request
b8ff78ce 36743@cindex @samp{qP} packet
b90a069a
SL
36744Returns information on @var{thread-id}. Where: @var{mode} is a hex
36745encoded 32 bit mode; @var{thread-id} is a thread ID
36746(@pxref{thread-id syntax}).
ee2d5c50 36747
aa56d27a
JB
36748Don't use this packet; use the @samp{qThreadExtraInfo} query instead
36749(see below).
36750
b8ff78ce 36751Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
c906108c 36752
8b23ecc4 36753@item QNonStop:1
687e43a4 36754@itemx QNonStop:0
8b23ecc4
SL
36755@cindex non-stop mode, remote request
36756@cindex @samp{QNonStop} packet
36757@anchor{QNonStop}
36758Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode.
36759@xref{Remote Non-Stop}, for more information.
36760
36761Reply:
36762@table @samp
36763@item OK
36764The request succeeded.
36765
36766@item E @var{nn}
36767An error occurred. @var{nn} are hex digits.
36768
36769@item
36770An empty reply indicates that @samp{QNonStop} is not supported by
36771the stub.
36772@end table
36773
36774This packet is not probed by default; the remote stub must request it,
36775by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36776Use of this packet is controlled by the @code{set non-stop} command;
36777@pxref{Non-Stop Mode}.
36778
89be2091
DJ
36779@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
36780@cindex pass signals to inferior, remote request
36781@cindex @samp{QPassSignals} packet
23181151 36782@anchor{QPassSignals}
89be2091
DJ
36783Each listed @var{signal} should be passed directly to the inferior process.
36784Signals are numbered identically to continue packets and stop replies
36785(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
36786strictly greater than the previous item. These signals do not need to stop
36787the inferior, or be reported to @value{GDBN}. All other signals should be
36788reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not
36789combine; any earlier @samp{QPassSignals} list is completely replaced by the
36790new list. This packet improves performance when using @samp{handle
36791@var{signal} nostop noprint pass}.
36792
36793Reply:
36794@table @samp
36795@item OK
36796The request succeeded.
36797
36798@item E @var{nn}
36799An error occurred. @var{nn} are hex digits.
36800
36801@item
36802An empty reply indicates that @samp{QPassSignals} is not supported by
36803the stub.
36804@end table
36805
36806Use of this packet is controlled by the @code{set remote pass-signals}
79a6e687 36807command (@pxref{Remote Configuration, set remote pass-signals}).
89be2091
DJ
36808This packet is not probed by default; the remote stub must request it,
36809by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36810
9b224c5e
PA
36811@item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
36812@cindex signals the inferior may see, remote request
36813@cindex @samp{QProgramSignals} packet
36814@anchor{QProgramSignals}
36815Each listed @var{signal} may be delivered to the inferior process.
36816Others should be silently discarded.
36817
36818In some cases, the remote stub may need to decide whether to deliver a
36819signal to the program or not without @value{GDBN} involvement. One
36820example of that is while detaching --- the program's threads may have
36821stopped for signals that haven't yet had a chance of being reported to
36822@value{GDBN}, and so the remote stub can use the signal list specified
36823by this packet to know whether to deliver or ignore those pending
36824signals.
36825
36826This does not influence whether to deliver a signal as requested by a
36827resumption packet (@pxref{vCont packet}).
36828
36829Signals are numbered identically to continue packets and stop replies
36830(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
36831strictly greater than the previous item. Multiple
36832@samp{QProgramSignals} packets do not combine; any earlier
36833@samp{QProgramSignals} list is completely replaced by the new list.
36834
36835Reply:
36836@table @samp
36837@item OK
36838The request succeeded.
36839
36840@item E @var{nn}
36841An error occurred. @var{nn} are hex digits.
36842
36843@item
36844An empty reply indicates that @samp{QProgramSignals} is not supported
36845by the stub.
36846@end table
36847
36848Use of this packet is controlled by the @code{set remote program-signals}
36849command (@pxref{Remote Configuration, set remote program-signals}).
36850This packet is not probed by default; the remote stub must request it,
36851by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36852
b8ff78ce 36853@item qRcmd,@var{command}
ff2587ec 36854@cindex execute remote command, remote request
b8ff78ce 36855@cindex @samp{qRcmd} packet
ff2587ec 36856@var{command} (hex encoded) is passed to the local interpreter for
b8ff78ce
JB
36857execution. Invalid commands should be reported using the output
36858string. Before the final result packet, the target may also respond
36859with a number of intermediate @samp{O@var{output}} console output
36860packets. @emph{Implementors should note that providing access to a
36861stubs's interpreter may have security implications}.
fa93a9d8 36862
ff2587ec
WZ
36863Reply:
36864@table @samp
36865@item OK
36866A command response with no output.
36867@item @var{OUTPUT}
36868A command response with the hex encoded output string @var{OUTPUT}.
b8ff78ce 36869@item E @var{NN}
ff2587ec 36870Indicate a badly formed request.
b8ff78ce
JB
36871@item
36872An empty reply indicates that @samp{qRcmd} is not recognized.
ff2587ec 36873@end table
fa93a9d8 36874
aa56d27a
JB
36875(Note that the @code{qRcmd} packet's name is separated from the
36876command by a @samp{,}, not a @samp{:}, contrary to the naming
36877conventions above. Please don't use this packet as a model for new
36878packets.)
36879
08388c79
DE
36880@item qSearch:memory:@var{address};@var{length};@var{search-pattern}
36881@cindex searching memory, in remote debugging
36882@cindex @samp{qSearch:memory} packet
36883@anchor{qSearch memory}
36884Search @var{length} bytes at @var{address} for @var{search-pattern}.
36885@var{address} and @var{length} are encoded in hex.
36886@var{search-pattern} is a sequence of bytes, hex encoded.
36887
36888Reply:
36889@table @samp
36890@item 0
36891The pattern was not found.
36892@item 1,address
36893The pattern was found at @var{address}.
36894@item E @var{NN}
36895A badly formed request or an error was encountered while searching memory.
36896@item
36897An empty reply indicates that @samp{qSearch:memory} is not recognized.
36898@end table
36899
a6f3e723
SL
36900@item QStartNoAckMode
36901@cindex @samp{QStartNoAckMode} packet
36902@anchor{QStartNoAckMode}
36903Request that the remote stub disable the normal @samp{+}/@samp{-}
36904protocol acknowledgments (@pxref{Packet Acknowledgment}).
36905
36906Reply:
36907@table @samp
36908@item OK
36909The stub has switched to no-acknowledgment mode.
36910@value{GDBN} acknowledges this reponse,
36911but neither the stub nor @value{GDBN} shall send or expect further
36912@samp{+}/@samp{-} acknowledgments in the current connection.
36913@item
36914An empty reply indicates that the stub does not support no-acknowledgment mode.
36915@end table
36916
be2a5f71
DJ
36917@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]}
36918@cindex supported packets, remote query
36919@cindex features of the remote protocol
36920@cindex @samp{qSupported} packet
0876f84a 36921@anchor{qSupported}
be2a5f71
DJ
36922Tell the remote stub about features supported by @value{GDBN}, and
36923query the stub for features it supports. This packet allows
36924@value{GDBN} and the remote stub to take advantage of each others'
36925features. @samp{qSupported} also consolidates multiple feature probes
36926at startup, to improve @value{GDBN} performance---a single larger
36927packet performs better than multiple smaller probe packets on
36928high-latency links. Some features may enable behavior which must not
36929be on by default, e.g.@: because it would confuse older clients or
36930stubs. Other features may describe packets which could be
36931automatically probed for, but are not. These features must be
36932reported before @value{GDBN} will use them. This ``default
36933unsupported'' behavior is not appropriate for all packets, but it
36934helps to keep the initial connection time under control with new
36935versions of @value{GDBN} which support increasing numbers of packets.
36936
36937Reply:
36938@table @samp
36939@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{}
36940The stub supports or does not support each returned @var{stubfeature},
36941depending on the form of each @var{stubfeature} (see below for the
36942possible forms).
36943@item
36944An empty reply indicates that @samp{qSupported} is not recognized,
36945or that no features needed to be reported to @value{GDBN}.
36946@end table
36947
36948The allowed forms for each feature (either a @var{gdbfeature} in the
36949@samp{qSupported} packet, or a @var{stubfeature} in the response)
36950are:
36951
36952@table @samp
36953@item @var{name}=@var{value}
36954The remote protocol feature @var{name} is supported, and associated
36955with the specified @var{value}. The format of @var{value} depends
36956on the feature, but it must not include a semicolon.
36957@item @var{name}+
36958The remote protocol feature @var{name} is supported, and does not
36959need an associated value.
36960@item @var{name}-
36961The remote protocol feature @var{name} is not supported.
36962@item @var{name}?
36963The remote protocol feature @var{name} may be supported, and
36964@value{GDBN} should auto-detect support in some other way when it is
36965needed. This form will not be used for @var{gdbfeature} notifications,
36966but may be used for @var{stubfeature} responses.
36967@end table
36968
36969Whenever the stub receives a @samp{qSupported} request, the
36970supplied set of @value{GDBN} features should override any previous
36971request. This allows @value{GDBN} to put the stub in a known
36972state, even if the stub had previously been communicating with
36973a different version of @value{GDBN}.
36974
b90a069a
SL
36975The following values of @var{gdbfeature} (for the packet sent by @value{GDBN})
36976are defined:
36977
36978@table @samp
36979@item multiprocess
36980This feature indicates whether @value{GDBN} supports multiprocess
36981extensions to the remote protocol. @value{GDBN} does not use such
36982extensions unless the stub also reports that it supports them by
36983including @samp{multiprocess+} in its @samp{qSupported} reply.
36984@xref{multiprocess extensions}, for details.
c8d5aac9
L
36985
36986@item xmlRegisters
36987This feature indicates that @value{GDBN} supports the XML target
36988description. If the stub sees @samp{xmlRegisters=} with target
36989specific strings separated by a comma, it will report register
36990description.
dde08ee1
PA
36991
36992@item qRelocInsn
36993This feature indicates whether @value{GDBN} supports the
36994@samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate
36995instruction reply packet}).
b90a069a
SL
36996@end table
36997
36998Stubs should ignore any unknown values for
be2a5f71
DJ
36999@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported}
37000packet supports receiving packets of unlimited length (earlier
b90a069a 37001versions of @value{GDBN} may reject overly long responses). Additional values
be2a5f71
DJ
37002for @var{gdbfeature} may be defined in the future to let the stub take
37003advantage of new features in @value{GDBN}, e.g.@: incompatible
b90a069a
SL
37004improvements in the remote protocol---the @samp{multiprocess} feature is
37005an example of such a feature. The stub's reply should be independent
be2a5f71
DJ
37006of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN}
37007describes all the features it supports, and then the stub replies with
37008all the features it supports.
37009
37010Similarly, @value{GDBN} will silently ignore unrecognized stub feature
37011responses, as long as each response uses one of the standard forms.
37012
37013Some features are flags. A stub which supports a flag feature
37014should respond with a @samp{+} form response. Other features
37015require values, and the stub should respond with an @samp{=}
37016form response.
37017
37018Each feature has a default value, which @value{GDBN} will use if
37019@samp{qSupported} is not available or if the feature is not mentioned
37020in the @samp{qSupported} response. The default values are fixed; a
37021stub is free to omit any feature responses that match the defaults.
37022
37023Not all features can be probed, but for those which can, the probing
37024mechanism is useful: in some cases, a stub's internal
37025architecture may not allow the protocol layer to know some information
37026about the underlying target in advance. This is especially common in
37027stubs which may be configured for multiple targets.
37028
37029These are the currently defined stub features and their properties:
37030
cfa9d6d9 37031@multitable @columnfractions 0.35 0.2 0.12 0.2
be2a5f71
DJ
37032@c NOTE: The first row should be @headitem, but we do not yet require
37033@c a new enough version of Texinfo (4.7) to use @headitem.
0876f84a 37034@item Feature Name
be2a5f71
DJ
37035@tab Value Required
37036@tab Default
37037@tab Probe Allowed
37038
37039@item @samp{PacketSize}
37040@tab Yes
37041@tab @samp{-}
37042@tab No
37043
0876f84a
DJ
37044@item @samp{qXfer:auxv:read}
37045@tab No
37046@tab @samp{-}
37047@tab Yes
37048
23181151
DJ
37049@item @samp{qXfer:features:read}
37050@tab No
37051@tab @samp{-}
37052@tab Yes
37053
cfa9d6d9
DJ
37054@item @samp{qXfer:libraries:read}
37055@tab No
37056@tab @samp{-}
37057@tab Yes
37058
68437a39
DJ
37059@item @samp{qXfer:memory-map:read}
37060@tab No
37061@tab @samp{-}
37062@tab Yes
37063
0fb4aa4b
PA
37064@item @samp{qXfer:sdata:read}
37065@tab No
37066@tab @samp{-}
37067@tab Yes
37068
0e7f50da
UW
37069@item @samp{qXfer:spu:read}
37070@tab No
37071@tab @samp{-}
37072@tab Yes
37073
37074@item @samp{qXfer:spu:write}
37075@tab No
37076@tab @samp{-}
37077@tab Yes
37078
4aa995e1
PA
37079@item @samp{qXfer:siginfo:read}
37080@tab No
37081@tab @samp{-}
37082@tab Yes
37083
37084@item @samp{qXfer:siginfo:write}
37085@tab No
37086@tab @samp{-}
37087@tab Yes
37088
dc146f7c
VP
37089@item @samp{qXfer:threads:read}
37090@tab No
37091@tab @samp{-}
37092@tab Yes
37093
b3b9301e
PA
37094@item @samp{qXfer:traceframe-info:read}
37095@tab No
37096@tab @samp{-}
37097@tab Yes
37098
169081d0
TG
37099@item @samp{qXfer:uib:read}
37100@tab No
37101@tab @samp{-}
37102@tab Yes
37103
78d85199
YQ
37104@item @samp{qXfer:fdpic:read}
37105@tab No
37106@tab @samp{-}
37107@tab Yes
dc146f7c 37108
8b23ecc4
SL
37109@item @samp{QNonStop}
37110@tab No
37111@tab @samp{-}
37112@tab Yes
37113
89be2091
DJ
37114@item @samp{QPassSignals}
37115@tab No
37116@tab @samp{-}
37117@tab Yes
37118
a6f3e723
SL
37119@item @samp{QStartNoAckMode}
37120@tab No
37121@tab @samp{-}
37122@tab Yes
37123
b90a069a
SL
37124@item @samp{multiprocess}
37125@tab No
37126@tab @samp{-}
37127@tab No
37128
83364271
LM
37129@item @samp{ConditionalBreakpoints}
37130@tab No
37131@tab @samp{-}
37132@tab No
37133
782b2b07
SS
37134@item @samp{ConditionalTracepoints}
37135@tab No
37136@tab @samp{-}
37137@tab No
37138
0d772ac9
MS
37139@item @samp{ReverseContinue}
37140@tab No
2f8132f3 37141@tab @samp{-}
0d772ac9
MS
37142@tab No
37143
37144@item @samp{ReverseStep}
37145@tab No
2f8132f3 37146@tab @samp{-}
0d772ac9
MS
37147@tab No
37148
409873ef
SS
37149@item @samp{TracepointSource}
37150@tab No
37151@tab @samp{-}
37152@tab No
37153
d1feda86
YQ
37154@item @samp{QAgent}
37155@tab No
37156@tab @samp{-}
37157@tab No
37158
d914c394
SS
37159@item @samp{QAllow}
37160@tab No
37161@tab @samp{-}
37162@tab No
37163
03583c20
UW
37164@item @samp{QDisableRandomization}
37165@tab No
37166@tab @samp{-}
37167@tab No
37168
d248b706
KY
37169@item @samp{EnableDisableTracepoints}
37170@tab No
37171@tab @samp{-}
37172@tab No
37173
3065dfb6
SS
37174@item @samp{tracenz}
37175@tab No
37176@tab @samp{-}
37177@tab No
37178
d3ce09f5
SS
37179@item @samp{BreakpointCommands}
37180@tab No
37181@tab @samp{-}
37182@tab No
37183
be2a5f71
DJ
37184@end multitable
37185
37186These are the currently defined stub features, in more detail:
37187
37188@table @samp
37189@cindex packet size, remote protocol
37190@item PacketSize=@var{bytes}
37191The remote stub can accept packets up to at least @var{bytes} in
37192length. @value{GDBN} will send packets up to this size for bulk
37193transfers, and will never send larger packets. This is a limit on the
37194data characters in the packet, including the frame and checksum.
37195There is no trailing NUL byte in a remote protocol packet; if the stub
37196stores packets in a NUL-terminated format, it should allow an extra
37197byte in its buffer for the NUL. If this stub feature is not supported,
37198@value{GDBN} guesses based on the size of the @samp{g} packet response.
37199
0876f84a
DJ
37200@item qXfer:auxv:read
37201The remote stub understands the @samp{qXfer:auxv:read} packet
37202(@pxref{qXfer auxiliary vector read}).
37203
23181151
DJ
37204@item qXfer:features:read
37205The remote stub understands the @samp{qXfer:features:read} packet
37206(@pxref{qXfer target description read}).
37207
cfa9d6d9
DJ
37208@item qXfer:libraries:read
37209The remote stub understands the @samp{qXfer:libraries:read} packet
37210(@pxref{qXfer library list read}).
37211
2268b414
JK
37212@item qXfer:libraries-svr4:read
37213The remote stub understands the @samp{qXfer:libraries-svr4:read} packet
37214(@pxref{qXfer svr4 library list read}).
37215
23181151
DJ
37216@item qXfer:memory-map:read
37217The remote stub understands the @samp{qXfer:memory-map:read} packet
37218(@pxref{qXfer memory map read}).
37219
0fb4aa4b
PA
37220@item qXfer:sdata:read
37221The remote stub understands the @samp{qXfer:sdata:read} packet
37222(@pxref{qXfer sdata read}).
37223
0e7f50da
UW
37224@item qXfer:spu:read
37225The remote stub understands the @samp{qXfer:spu:read} packet
37226(@pxref{qXfer spu read}).
37227
37228@item qXfer:spu:write
37229The remote stub understands the @samp{qXfer:spu:write} packet
37230(@pxref{qXfer spu write}).
37231
4aa995e1
PA
37232@item qXfer:siginfo:read
37233The remote stub understands the @samp{qXfer:siginfo:read} packet
37234(@pxref{qXfer siginfo read}).
37235
37236@item qXfer:siginfo:write
37237The remote stub understands the @samp{qXfer:siginfo:write} packet
37238(@pxref{qXfer siginfo write}).
37239
dc146f7c
VP
37240@item qXfer:threads:read
37241The remote stub understands the @samp{qXfer:threads:read} packet
37242(@pxref{qXfer threads read}).
37243
b3b9301e
PA
37244@item qXfer:traceframe-info:read
37245The remote stub understands the @samp{qXfer:traceframe-info:read}
37246packet (@pxref{qXfer traceframe info read}).
37247
169081d0
TG
37248@item qXfer:uib:read
37249The remote stub understands the @samp{qXfer:uib:read}
37250packet (@pxref{qXfer unwind info block}).
37251
78d85199
YQ
37252@item qXfer:fdpic:read
37253The remote stub understands the @samp{qXfer:fdpic:read}
37254packet (@pxref{qXfer fdpic loadmap read}).
37255
8b23ecc4
SL
37256@item QNonStop
37257The remote stub understands the @samp{QNonStop} packet
37258(@pxref{QNonStop}).
37259
23181151
DJ
37260@item QPassSignals
37261The remote stub understands the @samp{QPassSignals} packet
37262(@pxref{QPassSignals}).
37263
a6f3e723
SL
37264@item QStartNoAckMode
37265The remote stub understands the @samp{QStartNoAckMode} packet and
37266prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}.
37267
b90a069a
SL
37268@item multiprocess
37269@anchor{multiprocess extensions}
37270@cindex multiprocess extensions, in remote protocol
37271The remote stub understands the multiprocess extensions to the remote
37272protocol syntax. The multiprocess extensions affect the syntax of
37273thread IDs in both packets and replies (@pxref{thread-id syntax}), and
37274add process IDs to the @samp{D} packet and @samp{W} and @samp{X}
37275replies. Note that reporting this feature indicates support for the
37276syntactic extensions only, not that the stub necessarily supports
37277debugging of more than one process at a time. The stub must not use
37278multiprocess extensions in packet replies unless @value{GDBN} has also
37279indicated it supports them in its @samp{qSupported} request.
37280
07e059b5
VP
37281@item qXfer:osdata:read
37282The remote stub understands the @samp{qXfer:osdata:read} packet
37283((@pxref{qXfer osdata read}).
37284
83364271
LM
37285@item ConditionalBreakpoints
37286The target accepts and implements evaluation of conditional expressions
37287defined for breakpoints. The target will only report breakpoint triggers
37288when such conditions are true (@pxref{Conditions, ,Break Conditions}).
37289
782b2b07
SS
37290@item ConditionalTracepoints
37291The remote stub accepts and implements conditional expressions defined
37292for tracepoints (@pxref{Tracepoint Conditions}).
37293
0d772ac9
MS
37294@item ReverseContinue
37295The remote stub accepts and implements the reverse continue packet
37296(@pxref{bc}).
37297
37298@item ReverseStep
37299The remote stub accepts and implements the reverse step packet
37300(@pxref{bs}).
37301
409873ef
SS
37302@item TracepointSource
37303The remote stub understands the @samp{QTDPsrc} packet that supplies
37304the source form of tracepoint definitions.
37305
d1feda86
YQ
37306@item QAgent
37307The remote stub understands the @samp{QAgent} packet.
37308
d914c394
SS
37309@item QAllow
37310The remote stub understands the @samp{QAllow} packet.
37311
03583c20
UW
37312@item QDisableRandomization
37313The remote stub understands the @samp{QDisableRandomization} packet.
37314
0fb4aa4b
PA
37315@item StaticTracepoint
37316@cindex static tracepoints, in remote protocol
37317The remote stub supports static tracepoints.
37318
1e4d1764
YQ
37319@item InstallInTrace
37320@anchor{install tracepoint in tracing}
37321The remote stub supports installing tracepoint in tracing.
37322
d248b706
KY
37323@item EnableDisableTracepoints
37324The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and
37325@samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints
37326to be enabled and disabled while a trace experiment is running.
37327
3065dfb6
SS
37328@item tracenz
37329@cindex string tracing, in remote protocol
37330The remote stub supports the @samp{tracenz} bytecode for collecting strings.
37331See @ref{Bytecode Descriptions} for details about the bytecode.
37332
d3ce09f5
SS
37333@item BreakpointCommands
37334@cindex breakpoint commands, in remote protocol
37335The remote stub supports running a breakpoint's command list itself,
37336rather than reporting the hit to @value{GDBN}.
37337
be2a5f71
DJ
37338@end table
37339
b8ff78ce 37340@item qSymbol::
ff2587ec 37341@cindex symbol lookup, remote request
b8ff78ce 37342@cindex @samp{qSymbol} packet
ff2587ec
WZ
37343Notify the target that @value{GDBN} is prepared to serve symbol lookup
37344requests. Accept requests from the target for the values of symbols.
fa93a9d8
JB
37345
37346Reply:
ff2587ec 37347@table @samp
b8ff78ce 37348@item OK
ff2587ec 37349The target does not need to look up any (more) symbols.
b8ff78ce 37350@item qSymbol:@var{sym_name}
ff2587ec
WZ
37351The target requests the value of symbol @var{sym_name} (hex encoded).
37352@value{GDBN} may provide the value by using the
b8ff78ce
JB
37353@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
37354below.
ff2587ec 37355@end table
83761cbd 37356
b8ff78ce 37357@item qSymbol:@var{sym_value}:@var{sym_name}
ff2587ec
WZ
37358Set the value of @var{sym_name} to @var{sym_value}.
37359
37360@var{sym_name} (hex encoded) is the name of a symbol whose value the
37361target has previously requested.
37362
37363@var{sym_value} (hex) is the value for symbol @var{sym_name}. If
37364@value{GDBN} cannot supply a value for @var{sym_name}, then this field
37365will be empty.
37366
37367Reply:
37368@table @samp
b8ff78ce 37369@item OK
ff2587ec 37370The target does not need to look up any (more) symbols.
b8ff78ce 37371@item qSymbol:@var{sym_name}
ff2587ec
WZ
37372The target requests the value of a new symbol @var{sym_name} (hex
37373encoded). @value{GDBN} will continue to supply the values of symbols
37374(if available), until the target ceases to request them.
fa93a9d8 37375@end table
0abb7bc7 37376
00bf0b85 37377@item qTBuffer
687e43a4
TT
37378@itemx QTBuffer
37379@itemx QTDisconnected
d5551862 37380@itemx QTDP
409873ef 37381@itemx QTDPsrc
d5551862 37382@itemx QTDV
00bf0b85
SS
37383@itemx qTfP
37384@itemx qTfV
9d29849a 37385@itemx QTFrame
405f8e94
SS
37386@itemx qTMinFTPILen
37387
9d29849a
JB
37388@xref{Tracepoint Packets}.
37389
b90a069a 37390@item qThreadExtraInfo,@var{thread-id}
ff2587ec 37391@cindex thread attributes info, remote request
b8ff78ce
JB
37392@cindex @samp{qThreadExtraInfo} packet
37393Obtain a printable string description of a thread's attributes from
b90a069a
SL
37394the target OS. @var{thread-id} is a thread ID;
37395see @ref{thread-id syntax}. This
b8ff78ce
JB
37396string may contain anything that the target OS thinks is interesting
37397for @value{GDBN} to tell the user about the thread. The string is
37398displayed in @value{GDBN}'s @code{info threads} display. Some
37399examples of possible thread extra info strings are @samp{Runnable}, or
37400@samp{Blocked on Mutex}.
ff2587ec
WZ
37401
37402Reply:
37403@table @samp
b8ff78ce
JB
37404@item @var{XX}@dots{}
37405Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
37406comprising the printable string containing the extra information about
37407the thread's attributes.
ff2587ec 37408@end table
814e32d7 37409
aa56d27a
JB
37410(Note that the @code{qThreadExtraInfo} packet's name is separated from
37411the command by a @samp{,}, not a @samp{:}, contrary to the naming
37412conventions above. Please don't use this packet as a model for new
37413packets.)
37414
f196051f 37415@item QTNotes
687e43a4
TT
37416@itemx qTP
37417@itemx QTSave
37418@itemx qTsP
37419@itemx qTsV
d5551862 37420@itemx QTStart
9d29849a 37421@itemx QTStop
d248b706
KY
37422@itemx QTEnable
37423@itemx QTDisable
9d29849a
JB
37424@itemx QTinit
37425@itemx QTro
37426@itemx qTStatus
d5551862 37427@itemx qTV
0fb4aa4b
PA
37428@itemx qTfSTM
37429@itemx qTsSTM
37430@itemx qTSTMat
9d29849a
JB
37431@xref{Tracepoint Packets}.
37432
0876f84a
DJ
37433@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
37434@cindex read special object, remote request
37435@cindex @samp{qXfer} packet
68437a39 37436@anchor{qXfer read}
0876f84a
DJ
37437Read uninterpreted bytes from the target's special data area
37438identified by the keyword @var{object}. Request @var{length} bytes
37439starting at @var{offset} bytes into the data. The content and
0e7f50da 37440encoding of @var{annex} is specific to @var{object}; it can supply
0876f84a
DJ
37441additional details about what data to access.
37442
37443Here are the specific requests of this form defined so far. All
37444@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply
37445formats, listed below.
37446
37447@table @samp
37448@item qXfer:auxv:read::@var{offset},@var{length}
37449@anchor{qXfer auxiliary vector read}
37450Access the target's @dfn{auxiliary vector}. @xref{OS Information,
427c3a89 37451auxiliary vector}. Note @var{annex} must be empty.
0876f84a
DJ
37452
37453This packet is not probed by default; the remote stub must request it,
89be2091 37454by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
0876f84a 37455
23181151
DJ
37456@item qXfer:features:read:@var{annex}:@var{offset},@var{length}
37457@anchor{qXfer target description read}
37458Access the @dfn{target description}. @xref{Target Descriptions}. The
37459annex specifies which XML document to access. The main description is
37460always loaded from the @samp{target.xml} annex.
37461
37462This packet is not probed by default; the remote stub must request it,
37463by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37464
cfa9d6d9
DJ
37465@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length}
37466@anchor{qXfer library list read}
37467Access the target's list of loaded libraries. @xref{Library List Format}.
37468The annex part of the generic @samp{qXfer} packet must be empty
37469(@pxref{qXfer read}).
37470
37471Targets which maintain a list of libraries in the program's memory do
37472not need to implement this packet; it is designed for platforms where
37473the operating system manages the list of loaded libraries.
37474
37475This packet is not probed by default; the remote stub must request it,
37476by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37477
2268b414
JK
37478@item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length}
37479@anchor{qXfer svr4 library list read}
37480Access the target's list of loaded libraries when the target is an SVR4
37481platform. @xref{Library List Format for SVR4 Targets}. The annex part
37482of the generic @samp{qXfer} packet must be empty (@pxref{qXfer read}).
37483
37484This packet is optional for better performance on SVR4 targets.
37485@value{GDBN} uses memory read packets to read the SVR4 library list otherwise.
37486
37487This packet is not probed by default; the remote stub must request it,
37488by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37489
68437a39
DJ
37490@item qXfer:memory-map:read::@var{offset},@var{length}
37491@anchor{qXfer memory map read}
79a6e687 37492Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The
68437a39
DJ
37493annex part of the generic @samp{qXfer} packet must be empty
37494(@pxref{qXfer read}).
37495
0e7f50da
UW
37496This packet is not probed by default; the remote stub must request it,
37497by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37498
0fb4aa4b
PA
37499@item qXfer:sdata:read::@var{offset},@var{length}
37500@anchor{qXfer sdata read}
37501
37502Read contents of the extra collected static tracepoint marker
37503information. The annex part of the generic @samp{qXfer} packet must
37504be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint
37505Action Lists}.
37506
37507This packet is not probed by default; the remote stub must request it,
37508by supplying an appropriate @samp{qSupported} response
37509(@pxref{qSupported}).
37510
4aa995e1
PA
37511@item qXfer:siginfo:read::@var{offset},@var{length}
37512@anchor{qXfer siginfo read}
37513Read contents of the extra signal information on the target
37514system. The annex part of the generic @samp{qXfer} packet must be
37515empty (@pxref{qXfer read}).
37516
37517This packet is not probed by default; the remote stub must request it,
37518by supplying an appropriate @samp{qSupported} response
37519(@pxref{qSupported}).
37520
0e7f50da
UW
37521@item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
37522@anchor{qXfer spu read}
37523Read contents of an @code{spufs} file on the target system. The
37524annex specifies which file to read; it must be of the form
37525@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
37526in the target process, and @var{name} identifes the @code{spufs} file
37527in that context to be accessed.
37528
68437a39 37529This packet is not probed by default; the remote stub must request it,
07e059b5
VP
37530by supplying an appropriate @samp{qSupported} response
37531(@pxref{qSupported}).
37532
dc146f7c
VP
37533@item qXfer:threads:read::@var{offset},@var{length}
37534@anchor{qXfer threads read}
37535Access the list of threads on target. @xref{Thread List Format}. The
37536annex part of the generic @samp{qXfer} packet must be empty
37537(@pxref{qXfer read}).
37538
37539This packet is not probed by default; the remote stub must request it,
37540by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37541
b3b9301e
PA
37542@item qXfer:traceframe-info:read::@var{offset},@var{length}
37543@anchor{qXfer traceframe info read}
37544
37545Return a description of the current traceframe's contents.
37546@xref{Traceframe Info Format}. The annex part of the generic
37547@samp{qXfer} packet must be empty (@pxref{qXfer read}).
37548
37549This packet is not probed by default; the remote stub must request it,
37550by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37551
169081d0
TG
37552@item qXfer:uib:read:@var{pc}:@var{offset},@var{length}
37553@anchor{qXfer unwind info block}
37554
37555Return the unwind information block for @var{pc}. This packet is used
37556on OpenVMS/ia64 to ask the kernel unwind information.
37557
37558This packet is not probed by default.
37559
78d85199
YQ
37560@item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length}
37561@anchor{qXfer fdpic loadmap read}
37562Read contents of @code{loadmap}s on the target system. The
37563annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap},
37564executable @code{loadmap} or interpreter @code{loadmap} to read.
37565
37566This packet is not probed by default; the remote stub must request it,
37567by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37568
07e059b5
VP
37569@item qXfer:osdata:read::@var{offset},@var{length}
37570@anchor{qXfer osdata read}
37571Access the target's @dfn{operating system information}.
37572@xref{Operating System Information}.
37573
68437a39
DJ
37574@end table
37575
0876f84a
DJ
37576Reply:
37577@table @samp
37578@item m @var{data}
37579Data @var{data} (@pxref{Binary Data}) has been read from the
37580target. There may be more data at a higher address (although
37581it is permitted to return @samp{m} even for the last valid
37582block of data, as long as at least one byte of data was read).
37583@var{data} may have fewer bytes than the @var{length} in the
37584request.
37585
37586@item l @var{data}
37587Data @var{data} (@pxref{Binary Data}) has been read from the target.
37588There is no more data to be read. @var{data} may have fewer bytes
37589than the @var{length} in the request.
37590
37591@item l
37592The @var{offset} in the request is at the end of the data.
37593There is no more data to be read.
37594
37595@item E00
37596The request was malformed, or @var{annex} was invalid.
37597
37598@item E @var{nn}
37599The offset was invalid, or there was an error encountered reading the data.
37600@var{nn} is a hex-encoded @code{errno} value.
37601
37602@item
37603An empty reply indicates the @var{object} string was not recognized by
37604the stub, or that the object does not support reading.
37605@end table
37606
37607@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
37608@cindex write data into object, remote request
4aa995e1 37609@anchor{qXfer write}
0876f84a
DJ
37610Write uninterpreted bytes into the target's special data area
37611identified by the keyword @var{object}, starting at @var{offset} bytes
0e7f50da 37612into the data. @var{data}@dots{} is the binary-encoded data
0876f84a 37613(@pxref{Binary Data}) to be written. The content and encoding of @var{annex}
0e7f50da 37614is specific to @var{object}; it can supply additional details about what data
0876f84a
DJ
37615to access.
37616
0e7f50da
UW
37617Here are the specific requests of this form defined so far. All
37618@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply
37619formats, listed below.
37620
37621@table @samp
4aa995e1
PA
37622@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{}
37623@anchor{qXfer siginfo write}
37624Write @var{data} to the extra signal information on the target system.
37625The annex part of the generic @samp{qXfer} packet must be
37626empty (@pxref{qXfer write}).
37627
37628This packet is not probed by default; the remote stub must request it,
37629by supplying an appropriate @samp{qSupported} response
37630(@pxref{qSupported}).
37631
84fcdf95 37632@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
0e7f50da
UW
37633@anchor{qXfer spu write}
37634Write @var{data} to an @code{spufs} file on the target system. The
37635annex specifies which file to write; it must be of the form
37636@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
37637in the target process, and @var{name} identifes the @code{spufs} file
37638in that context to be accessed.
37639
37640This packet is not probed by default; the remote stub must request it,
37641by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37642@end table
0876f84a
DJ
37643
37644Reply:
37645@table @samp
37646@item @var{nn}
37647@var{nn} (hex encoded) is the number of bytes written.
37648This may be fewer bytes than supplied in the request.
37649
37650@item E00
37651The request was malformed, or @var{annex} was invalid.
37652
37653@item E @var{nn}
37654The offset was invalid, or there was an error encountered writing the data.
37655@var{nn} is a hex-encoded @code{errno} value.
37656
37657@item
37658An empty reply indicates the @var{object} string was not
37659recognized by the stub, or that the object does not support writing.
37660@end table
37661
37662@item qXfer:@var{object}:@var{operation}:@dots{}
37663Requests of this form may be added in the future. When a stub does
37664not recognize the @var{object} keyword, or its support for
37665@var{object} does not recognize the @var{operation} keyword, the stub
37666must respond with an empty packet.
37667
0b16c5cf
PA
37668@item qAttached:@var{pid}
37669@cindex query attached, remote request
37670@cindex @samp{qAttached} packet
37671Return an indication of whether the remote server attached to an
37672existing process or created a new process. When the multiprocess
37673protocol extensions are supported (@pxref{multiprocess extensions}),
37674@var{pid} is an integer in hexadecimal format identifying the target
37675process. Otherwise, @value{GDBN} will omit the @var{pid} field and
37676the query packet will be simplified as @samp{qAttached}.
37677
37678This query is used, for example, to know whether the remote process
37679should be detached or killed when a @value{GDBN} session is ended with
37680the @code{quit} command.
37681
37682Reply:
37683@table @samp
37684@item 1
37685The remote server attached to an existing process.
37686@item 0
37687The remote server created a new process.
37688@item E @var{NN}
37689A badly formed request or an error was encountered.
37690@end table
37691
ee2d5c50
AC
37692@end table
37693
a1dcb23a
DJ
37694@node Architecture-Specific Protocol Details
37695@section Architecture-Specific Protocol Details
37696
37697This section describes how the remote protocol is applied to specific
37698target architectures. Also see @ref{Standard Target Features}, for
37699details of XML target descriptions for each architecture.
37700
02b67415
MR
37701@menu
37702* ARM-Specific Protocol Details::
37703* MIPS-Specific Protocol Details::
37704@end menu
37705
37706@node ARM-Specific Protocol Details
37707@subsection @acronym{ARM}-specific Protocol Details
37708
37709@menu
37710* ARM Breakpoint Kinds::
37711@end menu
a1dcb23a 37712
02b67415
MR
37713@node ARM Breakpoint Kinds
37714@subsubsection @acronym{ARM} Breakpoint Kinds
37715@cindex breakpoint kinds, @acronym{ARM}
a1dcb23a
DJ
37716
37717These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
37718
37719@table @r
37720
37721@item 2
3772216-bit Thumb mode breakpoint.
37723
37724@item 3
3772532-bit Thumb mode (Thumb-2) breakpoint.
37726
37727@item 4
02b67415 3772832-bit @acronym{ARM} mode breakpoint.
a1dcb23a
DJ
37729
37730@end table
37731
02b67415
MR
37732@node MIPS-Specific Protocol Details
37733@subsection @acronym{MIPS}-specific Protocol Details
37734
37735@menu
37736* MIPS Register packet Format::
4cc0665f 37737* MIPS Breakpoint Kinds::
02b67415 37738@end menu
a1dcb23a 37739
02b67415
MR
37740@node MIPS Register packet Format
37741@subsubsection @acronym{MIPS} Register Packet Format
eb17f351 37742@cindex register packet format, @acronym{MIPS}
eb12ee30 37743
b8ff78ce 37744The following @code{g}/@code{G} packets have previously been defined.
ee2d5c50
AC
37745In the below, some thirty-two bit registers are transferred as
37746sixty-four bits. Those registers should be zero/sign extended (which?)
599b237a
BW
37747to fill the space allocated. Register bytes are transferred in target
37748byte order. The two nibbles within a register byte are transferred
02b67415 37749most-significant -- least-significant.
eb12ee30 37750
ee2d5c50 37751@table @r
eb12ee30 37752
8e04817f 37753@item MIPS32
599b237a 37754All registers are transferred as thirty-two bit quantities in the order:
8e04817f
AC
3775532 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
37756registers; fsr; fir; fp.
eb12ee30 37757
8e04817f 37758@item MIPS64
599b237a 37759All registers are transferred as sixty-four bit quantities (including
8e04817f
AC
37760thirty-two bit registers such as @code{sr}). The ordering is the same
37761as @code{MIPS32}.
eb12ee30 37762
ee2d5c50
AC
37763@end table
37764
4cc0665f
MR
37765@node MIPS Breakpoint Kinds
37766@subsubsection @acronym{MIPS} Breakpoint Kinds
37767@cindex breakpoint kinds, @acronym{MIPS}
37768
37769These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
37770
37771@table @r
37772
37773@item 2
3777416-bit @acronym{MIPS16} mode breakpoint.
37775
37776@item 3
3777716-bit @acronym{microMIPS} mode breakpoint.
37778
37779@item 4
3778032-bit standard @acronym{MIPS} mode breakpoint.
37781
37782@item 5
3778332-bit @acronym{microMIPS} mode breakpoint.
37784
37785@end table
37786
9d29849a
JB
37787@node Tracepoint Packets
37788@section Tracepoint Packets
37789@cindex tracepoint packets
37790@cindex packets, tracepoint
37791
37792Here we describe the packets @value{GDBN} uses to implement
37793tracepoints (@pxref{Tracepoints}).
37794
37795@table @samp
37796
7a697b8d 37797@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]}
c614397c 37798@cindex @samp{QTDP} packet
9d29849a
JB
37799Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena}
37800is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then
37801the tracepoint is disabled. @var{step} is the tracepoint's step
7a697b8d
SS
37802count, and @var{pass} is its pass count. If an @samp{F} is present,
37803then the tracepoint is to be a fast tracepoint, and the @var{flen} is
37804the number of bytes that the target should copy elsewhere to make room
37805for the tracepoint. If an @samp{X} is present, it introduces a
37806tracepoint condition, which consists of a hexadecimal length, followed
37807by a comma and hex-encoded bytes, in a manner similar to action
37808encodings as described below. If the trailing @samp{-} is present,
37809further @samp{QTDP} packets will follow to specify this tracepoint's
37810actions.
9d29849a
JB
37811
37812Replies:
37813@table @samp
37814@item OK
37815The packet was understood and carried out.
dde08ee1
PA
37816@item qRelocInsn
37817@xref{Tracepoint Packets,,Relocate instruction reply packet}.
9d29849a
JB
37818@item
37819The packet was not recognized.
37820@end table
37821
37822@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]}
37823Define actions to be taken when a tracepoint is hit. @var{n} and
37824@var{addr} must be the same as in the initial @samp{QTDP} packet for
37825this tracepoint. This packet may only be sent immediately after
37826another @samp{QTDP} packet that ended with a @samp{-}. If the
37827trailing @samp{-} is present, further @samp{QTDP} packets will follow,
37828specifying more actions for this tracepoint.
37829
37830In the series of action packets for a given tracepoint, at most one
37831can have an @samp{S} before its first @var{action}. If such a packet
37832is sent, it and the following packets define ``while-stepping''
37833actions. Any prior packets define ordinary actions --- that is, those
37834taken when the tracepoint is first hit. If no action packet has an
37835@samp{S}, then all the packets in the series specify ordinary
37836tracepoint actions.
37837
37838The @samp{@var{action}@dots{}} portion of the packet is a series of
37839actions, concatenated without separators. Each action has one of the
37840following forms:
37841
37842@table @samp
37843
37844@item R @var{mask}
37845Collect the registers whose bits are set in @var{mask}. @var{mask} is
599b237a 37846a hexadecimal number whose @var{i}'th bit is set if register number
9d29849a
JB
37847@var{i} should be collected. (The least significant bit is numbered
37848zero.) Note that @var{mask} may be any number of digits long; it may
37849not fit in a 32-bit word.
37850
37851@item M @var{basereg},@var{offset},@var{len}
37852Collect @var{len} bytes of memory starting at the address in register
37853number @var{basereg}, plus @var{offset}. If @var{basereg} is
37854@samp{-1}, then the range has a fixed address: @var{offset} is the
37855address of the lowest byte to collect. The @var{basereg},
599b237a 37856@var{offset}, and @var{len} parameters are all unsigned hexadecimal
9d29849a
JB
37857values (the @samp{-1} value for @var{basereg} is a special case).
37858
37859@item X @var{len},@var{expr}
37860Evaluate @var{expr}, whose length is @var{len}, and collect memory as
37861it directs. @var{expr} is an agent expression, as described in
37862@ref{Agent Expressions}. Each byte of the expression is encoded as a
37863two-digit hex number in the packet; @var{len} is the number of bytes
37864in the expression (and thus one-half the number of hex digits in the
37865packet).
37866
37867@end table
37868
37869Any number of actions may be packed together in a single @samp{QTDP}
37870packet, as long as the packet does not exceed the maximum packet
c1947b85
JB
37871length (400 bytes, for many stubs). There may be only one @samp{R}
37872action per tracepoint, and it must precede any @samp{M} or @samp{X}
37873actions. Any registers referred to by @samp{M} and @samp{X} actions
37874must be collected by a preceding @samp{R} action. (The
37875``while-stepping'' actions are treated as if they were attached to a
37876separate tracepoint, as far as these restrictions are concerned.)
9d29849a
JB
37877
37878Replies:
37879@table @samp
37880@item OK
37881The packet was understood and carried out.
dde08ee1
PA
37882@item qRelocInsn
37883@xref{Tracepoint Packets,,Relocate instruction reply packet}.
9d29849a
JB
37884@item
37885The packet was not recognized.
37886@end table
37887
409873ef
SS
37888@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes}
37889@cindex @samp{QTDPsrc} packet
37890Specify a source string of tracepoint @var{n} at address @var{addr}.
37891This is useful to get accurate reproduction of the tracepoints
37892originally downloaded at the beginning of the trace run. @var{type}
37893is the name of the tracepoint part, such as @samp{cond} for the
37894tracepoint's conditional expression (see below for a list of types), while
37895@var{bytes} is the string, encoded in hexadecimal.
37896
37897@var{start} is the offset of the @var{bytes} within the overall source
37898string, while @var{slen} is the total length of the source string.
37899This is intended for handling source strings that are longer than will
37900fit in a single packet.
37901@c Add detailed example when this info is moved into a dedicated
37902@c tracepoint descriptions section.
37903
37904The available string types are @samp{at} for the location,
37905@samp{cond} for the conditional, and @samp{cmd} for an action command.
37906@value{GDBN} sends a separate packet for each command in the action
37907list, in the same order in which the commands are stored in the list.
37908
37909The target does not need to do anything with source strings except
37910report them back as part of the replies to the @samp{qTfP}/@samp{qTsP}
37911query packets.
37912
37913Although this packet is optional, and @value{GDBN} will only send it
37914if the target replies with @samp{TracepointSource} @xref{General
37915Query Packets}, it makes both disconnected tracing and trace files
37916much easier to use. Otherwise the user must be careful that the
37917tracepoints in effect while looking at trace frames are identical to
37918the ones in effect during the trace run; even a small discrepancy
37919could cause @samp{tdump} not to work, or a particular trace frame not
37920be found.
37921
f61e138d
SS
37922@item QTDV:@var{n}:@var{value}
37923@cindex define trace state variable, remote request
37924@cindex @samp{QTDV} packet
37925Create a new trace state variable, number @var{n}, with an initial
37926value of @var{value}, which is a 64-bit signed integer. Both @var{n}
37927and @var{value} are encoded as hexadecimal values. @value{GDBN} has
37928the option of not using this packet for initial values of zero; the
37929target should simply create the trace state variables as they are
37930mentioned in expressions.
37931
9d29849a 37932@item QTFrame:@var{n}
c614397c 37933@cindex @samp{QTFrame} packet
9d29849a
JB
37934Select the @var{n}'th tracepoint frame from the buffer, and use the
37935register and memory contents recorded there to answer subsequent
37936request packets from @value{GDBN}.
37937
37938A successful reply from the stub indicates that the stub has found the
37939requested frame. The response is a series of parts, concatenated
37940without separators, describing the frame we selected. Each part has
37941one of the following forms:
37942
37943@table @samp
37944@item F @var{f}
37945The selected frame is number @var{n} in the trace frame buffer;
599b237a 37946@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there
9d29849a
JB
37947was no frame matching the criteria in the request packet.
37948
37949@item T @var{t}
37950The selected trace frame records a hit of tracepoint number @var{t};
599b237a 37951@var{t} is a hexadecimal number.
9d29849a
JB
37952
37953@end table
37954
37955@item QTFrame:pc:@var{addr}
37956Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37957currently selected frame whose PC is @var{addr};
599b237a 37958@var{addr} is a hexadecimal number.
9d29849a
JB
37959
37960@item QTFrame:tdp:@var{t}
37961Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37962currently selected frame that is a hit of tracepoint @var{t}; @var{t}
599b237a 37963is a hexadecimal number.
9d29849a
JB
37964
37965@item QTFrame:range:@var{start}:@var{end}
37966Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37967currently selected frame whose PC is between @var{start} (inclusive)
081dfbf7 37968and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal
9d29849a
JB
37969numbers.
37970
37971@item QTFrame:outside:@var{start}:@var{end}
37972Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first
081dfbf7 37973frame @emph{outside} the given range of addresses (exclusive).
9d29849a 37974
405f8e94 37975@item qTMinFTPILen
c614397c 37976@cindex @samp{qTMinFTPILen} packet
405f8e94
SS
37977This packet requests the minimum length of instruction at which a fast
37978tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on
37979the 32-bit x86 architecture, it is possible to use a 4-byte jump, but
37980it depends on the target system being able to create trampolines in
37981the first 64K of memory, which might or might not be possible for that
37982system. So the reply to this packet will be 4 if it is able to
37983arrange for that.
37984
37985Replies:
37986
37987@table @samp
37988@item 0
37989The minimum instruction length is currently unknown.
37990@item @var{length}
37991The minimum instruction length is @var{length}, where @var{length} is greater
37992or equal to 1. @var{length} is a hexadecimal number. A reply of 1 means
37993that a fast tracepoint may be placed on any instruction regardless of size.
37994@item E
37995An error has occurred.
37996@item
37997An empty reply indicates that the request is not supported by the stub.
37998@end table
37999
9d29849a 38000@item QTStart
c614397c 38001@cindex @samp{QTStart} packet
dde08ee1
PA
38002Begin the tracepoint experiment. Begin collecting data from
38003tracepoint hits in the trace frame buffer. This packet supports the
38004@samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate
38005instruction reply packet}).
9d29849a
JB
38006
38007@item QTStop
c614397c 38008@cindex @samp{QTStop} packet
9d29849a
JB
38009End the tracepoint experiment. Stop collecting trace frames.
38010
d248b706
KY
38011@item QTEnable:@var{n}:@var{addr}
38012@anchor{QTEnable}
c614397c 38013@cindex @samp{QTEnable} packet
d248b706
KY
38014Enable tracepoint @var{n} at address @var{addr} in a started tracepoint
38015experiment. If the tracepoint was previously disabled, then collection
38016of data from it will resume.
38017
38018@item QTDisable:@var{n}:@var{addr}
38019@anchor{QTDisable}
c614397c 38020@cindex @samp{QTDisable} packet
d248b706
KY
38021Disable tracepoint @var{n} at address @var{addr} in a started tracepoint
38022experiment. No more data will be collected from the tracepoint unless
38023@samp{QTEnable:@var{n}:@var{addr}} is subsequently issued.
38024
9d29849a 38025@item QTinit
c614397c 38026@cindex @samp{QTinit} packet
9d29849a
JB
38027Clear the table of tracepoints, and empty the trace frame buffer.
38028
38029@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{}
c614397c 38030@cindex @samp{QTro} packet
9d29849a
JB
38031Establish the given ranges of memory as ``transparent''. The stub
38032will answer requests for these ranges from memory's current contents,
38033if they were not collected as part of the tracepoint hit.
38034
38035@value{GDBN} uses this to mark read-only regions of memory, like those
38036containing program code. Since these areas never change, they should
38037still have the same contents they did when the tracepoint was hit, so
38038there's no reason for the stub to refuse to provide their contents.
38039
d5551862 38040@item QTDisconnected:@var{value}
c614397c 38041@cindex @samp{QTDisconnected} packet
d5551862
SS
38042Set the choice to what to do with the tracing run when @value{GDBN}
38043disconnects from the target. A @var{value} of 1 directs the target to
38044continue the tracing run, while 0 tells the target to stop tracing if
38045@value{GDBN} is no longer in the picture.
38046
9d29849a 38047@item qTStatus
c614397c 38048@cindex @samp{qTStatus} packet
9d29849a
JB
38049Ask the stub if there is a trace experiment running right now.
38050
4daf5ac0
SS
38051The reply has the form:
38052
38053@table @samp
38054
38055@item T@var{running}@r{[};@var{field}@r{]}@dots{}
38056@var{running} is a single digit @code{1} if the trace is presently
38057running, or @code{0} if not. It is followed by semicolon-separated
38058optional fields that an agent may use to report additional status.
38059
38060@end table
38061
38062If the trace is not running, the agent may report any of several
38063explanations as one of the optional fields:
38064
38065@table @samp
38066
38067@item tnotrun:0
38068No trace has been run yet.
38069
f196051f
SS
38070@item tstop[:@var{text}]:0
38071The trace was stopped by a user-originated stop command. The optional
38072@var{text} field is a user-supplied string supplied as part of the
38073stop command (for instance, an explanation of why the trace was
38074stopped manually). It is hex-encoded.
4daf5ac0
SS
38075
38076@item tfull:0
38077The trace stopped because the trace buffer filled up.
38078
38079@item tdisconnected:0
38080The trace stopped because @value{GDBN} disconnected from the target.
38081
38082@item tpasscount:@var{tpnum}
38083The trace stopped because tracepoint @var{tpnum} exceeded its pass count.
38084
6c28cbf2
SS
38085@item terror:@var{text}:@var{tpnum}
38086The trace stopped because tracepoint @var{tpnum} had an error. The
38087string @var{text} is available to describe the nature of the error
38088(for instance, a divide by zero in the condition expression).
99b5e152 38089@var{text} is hex encoded.
6c28cbf2 38090
4daf5ac0
SS
38091@item tunknown:0
38092The trace stopped for some other reason.
38093
38094@end table
38095
33da3f1c
SS
38096Additional optional fields supply statistical and other information.
38097Although not required, they are extremely useful for users monitoring
38098the progress of a trace run. If a trace has stopped, and these
38099numbers are reported, they must reflect the state of the just-stopped
38100trace.
4daf5ac0 38101
9d29849a 38102@table @samp
4daf5ac0
SS
38103
38104@item tframes:@var{n}
38105The number of trace frames in the buffer.
38106
38107@item tcreated:@var{n}
38108The total number of trace frames created during the run. This may
38109be larger than the trace frame count, if the buffer is circular.
38110
38111@item tsize:@var{n}
38112The total size of the trace buffer, in bytes.
38113
38114@item tfree:@var{n}
38115The number of bytes still unused in the buffer.
38116
33da3f1c
SS
38117@item circular:@var{n}
38118The value of the circular trace buffer flag. @code{1} means that the
38119trace buffer is circular and old trace frames will be discarded if
38120necessary to make room, @code{0} means that the trace buffer is linear
38121and may fill up.
38122
38123@item disconn:@var{n}
38124The value of the disconnected tracing flag. @code{1} means that
38125tracing will continue after @value{GDBN} disconnects, @code{0} means
38126that the trace run will stop.
38127
9d29849a
JB
38128@end table
38129
f196051f
SS
38130@item qTP:@var{tp}:@var{addr}
38131@cindex tracepoint status, remote request
38132@cindex @samp{qTP} packet
38133Ask the stub for the current state of tracepoint number @var{tp} at
38134address @var{addr}.
38135
38136Replies:
38137@table @samp
38138@item V@var{hits}:@var{usage}
38139The tracepoint has been hit @var{hits} times so far during the trace
38140run, and accounts for @var{usage} in the trace buffer. Note that
38141@code{while-stepping} steps are not counted as separate hits, but the
38142steps' space consumption is added into the usage number.
38143
38144@end table
38145
f61e138d
SS
38146@item qTV:@var{var}
38147@cindex trace state variable value, remote request
38148@cindex @samp{qTV} packet
38149Ask the stub for the value of the trace state variable number @var{var}.
38150
38151Replies:
38152@table @samp
38153@item V@var{value}
38154The value of the variable is @var{value}. This will be the current
38155value of the variable if the user is examining a running target, or a
38156saved value if the variable was collected in the trace frame that the
38157user is looking at. Note that multiple requests may result in
38158different reply values, such as when requesting values while the
38159program is running.
38160
38161@item U
38162The value of the variable is unknown. This would occur, for example,
38163if the user is examining a trace frame in which the requested variable
38164was not collected.
9d29849a
JB
38165@end table
38166
d5551862 38167@item qTfP
c614397c 38168@cindex @samp{qTfP} packet
d5551862 38169@itemx qTsP
c614397c 38170@cindex @samp{qTsP} packet
d5551862
SS
38171These packets request data about tracepoints that are being used by
38172the target. @value{GDBN} sends @code{qTfP} to get the first piece
38173of data, and multiple @code{qTsP} to get additional pieces. Replies
38174to these packets generally take the form of the @code{QTDP} packets
38175that define tracepoints. (FIXME add detailed syntax)
38176
00bf0b85 38177@item qTfV
c614397c 38178@cindex @samp{qTfV} packet
00bf0b85 38179@itemx qTsV
c614397c 38180@cindex @samp{qTsV} packet
00bf0b85
SS
38181These packets request data about trace state variables that are on the
38182target. @value{GDBN} sends @code{qTfV} to get the first vari of data,
38183and multiple @code{qTsV} to get additional variables. Replies to
38184these packets follow the syntax of the @code{QTDV} packets that define
38185trace state variables.
38186
0fb4aa4b
PA
38187@item qTfSTM
38188@itemx qTsSTM
16bdd41f
YQ
38189@anchor{qTfSTM}
38190@anchor{qTsSTM}
c614397c
YQ
38191@cindex @samp{qTfSTM} packet
38192@cindex @samp{qTsSTM} packet
0fb4aa4b
PA
38193These packets request data about static tracepoint markers that exist
38194in the target program. @value{GDBN} sends @code{qTfSTM} to get the
38195first piece of data, and multiple @code{qTsSTM} to get additional
38196pieces. Replies to these packets take the following form:
38197
38198Reply:
38199@table @samp
38200@item m @var{address}:@var{id}:@var{extra}
38201A single marker
38202@item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{}
38203a comma-separated list of markers
38204@item l
38205(lower case letter @samp{L}) denotes end of list.
38206@item E @var{nn}
38207An error occurred. @var{nn} are hex digits.
38208@item
38209An empty reply indicates that the request is not supported by the
38210stub.
38211@end table
38212
38213@var{address} is encoded in hex.
38214@var{id} and @var{extra} are strings encoded in hex.
38215
38216In response to each query, the target will reply with a list of one or
38217more markers, separated by commas. @value{GDBN} will respond to each
38218reply with a request for more markers (using the @samp{qs} form of the
38219query), until the target responds with @samp{l} (lower-case ell, for
38220@dfn{last}).
38221
38222@item qTSTMat:@var{address}
16bdd41f 38223@anchor{qTSTMat}
c614397c 38224@cindex @samp{qTSTMat} packet
0fb4aa4b
PA
38225This packets requests data about static tracepoint markers in the
38226target program at @var{address}. Replies to this packet follow the
38227syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static
38228tracepoint markers.
38229
00bf0b85 38230@item QTSave:@var{filename}
c614397c 38231@cindex @samp{QTSave} packet
00bf0b85
SS
38232This packet directs the target to save trace data to the file name
38233@var{filename} in the target's filesystem. @var{filename} is encoded
38234as a hex string; the interpretation of the file name (relative vs
38235absolute, wild cards, etc) is up to the target.
38236
38237@item qTBuffer:@var{offset},@var{len}
c614397c 38238@cindex @samp{qTBuffer} packet
00bf0b85
SS
38239Return up to @var{len} bytes of the current contents of trace buffer,
38240starting at @var{offset}. The trace buffer is treated as if it were
38241a contiguous collection of traceframes, as per the trace file format.
38242The reply consists as many hex-encoded bytes as the target can deliver
38243in a packet; it is not an error to return fewer than were asked for.
38244A reply consisting of just @code{l} indicates that no bytes are
38245available.
38246
4daf5ac0
SS
38247@item QTBuffer:circular:@var{value}
38248This packet directs the target to use a circular trace buffer if
38249@var{value} is 1, or a linear buffer if the value is 0.
38250
f196051f 38251@item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{}
c614397c 38252@cindex @samp{QTNotes} packet
f196051f
SS
38253This packet adds optional textual notes to the trace run. Allowable
38254types include @code{user}, @code{notes}, and @code{tstop}, the
38255@var{text} fields are arbitrary strings, hex-encoded.
38256
f61e138d 38257@end table
9d29849a 38258
dde08ee1
PA
38259@subsection Relocate instruction reply packet
38260When installing fast tracepoints in memory, the target may need to
38261relocate the instruction currently at the tracepoint address to a
38262different address in memory. For most instructions, a simple copy is
38263enough, but, for example, call instructions that implicitly push the
38264return address on the stack, and relative branches or other
38265PC-relative instructions require offset adjustment, so that the effect
38266of executing the instruction at a different address is the same as if
38267it had executed in the original location.
38268
38269In response to several of the tracepoint packets, the target may also
38270respond with a number of intermediate @samp{qRelocInsn} request
38271packets before the final result packet, to have @value{GDBN} handle
38272this relocation operation. If a packet supports this mechanism, its
38273documentation will explicitly say so. See for example the above
38274descriptions for the @samp{QTStart} and @samp{QTDP} packets. The
38275format of the request is:
38276
38277@table @samp
38278@item qRelocInsn:@var{from};@var{to}
38279
38280This requests @value{GDBN} to copy instruction at address @var{from}
38281to address @var{to}, possibly adjusted so that executing the
38282instruction at @var{to} has the same effect as executing it at
38283@var{from}. @value{GDBN} writes the adjusted instruction to target
38284memory starting at @var{to}.
38285@end table
38286
38287Replies:
38288@table @samp
38289@item qRelocInsn:@var{adjusted_size}
38290Informs the stub the relocation is complete. @var{adjusted_size} is
38291the length in bytes of resulting relocated instruction sequence.
38292@item E @var{NN}
38293A badly formed request was detected, or an error was encountered while
38294relocating the instruction.
38295@end table
38296
a6b151f1
DJ
38297@node Host I/O Packets
38298@section Host I/O Packets
38299@cindex Host I/O, remote protocol
38300@cindex file transfer, remote protocol
38301
38302The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O
38303operations on the far side of a remote link. For example, Host I/O is
38304used to upload and download files to a remote target with its own
38305filesystem. Host I/O uses the same constant values and data structure
38306layout as the target-initiated File-I/O protocol. However, the
38307Host I/O packets are structured differently. The target-initiated
38308protocol relies on target memory to store parameters and buffers.
38309Host I/O requests are initiated by @value{GDBN}, and the
38310target's memory is not involved. @xref{File-I/O Remote Protocol
38311Extension}, for more details on the target-initiated protocol.
38312
38313The Host I/O request packets all encode a single operation along with
38314its arguments. They have this format:
38315
38316@table @samp
38317
38318@item vFile:@var{operation}: @var{parameter}@dots{}
38319@var{operation} is the name of the particular request; the target
38320should compare the entire packet name up to the second colon when checking
38321for a supported operation. The format of @var{parameter} depends on
38322the operation. Numbers are always passed in hexadecimal. Negative
38323numbers have an explicit minus sign (i.e.@: two's complement is not
38324used). Strings (e.g.@: filenames) are encoded as a series of
38325hexadecimal bytes. The last argument to a system call may be a
38326buffer of escaped binary data (@pxref{Binary Data}).
38327
38328@end table
38329
38330The valid responses to Host I/O packets are:
38331
38332@table @samp
38333
38334@item F @var{result} [, @var{errno}] [; @var{attachment}]
38335@var{result} is the integer value returned by this operation, usually
38336non-negative for success and -1 for errors. If an error has occured,
38337@var{errno} will be included in the result. @var{errno} will have a
38338value defined by the File-I/O protocol (@pxref{Errno Values}). For
38339operations which return data, @var{attachment} supplies the data as a
38340binary buffer. Binary buffers in response packets are escaped in the
38341normal way (@pxref{Binary Data}). See the individual packet
38342documentation for the interpretation of @var{result} and
38343@var{attachment}.
38344
38345@item
38346An empty response indicates that this operation is not recognized.
38347
38348@end table
38349
38350These are the supported Host I/O operations:
38351
38352@table @samp
38353@item vFile:open: @var{pathname}, @var{flags}, @var{mode}
38354Open a file at @var{pathname} and return a file descriptor for it, or
38355return -1 if an error occurs. @var{pathname} is a string,
38356@var{flags} is an integer indicating a mask of open flags
38357(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask
38358of mode bits to use if the file is created (@pxref{mode_t Values}).
c1c25a1a 38359@xref{open}, for details of the open flags and mode values.
a6b151f1
DJ
38360
38361@item vFile:close: @var{fd}
38362Close the open file corresponding to @var{fd} and return 0, or
38363-1 if an error occurs.
38364
38365@item vFile:pread: @var{fd}, @var{count}, @var{offset}
38366Read data from the open file corresponding to @var{fd}. Up to
38367@var{count} bytes will be read from the file, starting at @var{offset}
38368relative to the start of the file. The target may read fewer bytes;
38369common reasons include packet size limits and an end-of-file
38370condition. The number of bytes read is returned. Zero should only be
38371returned for a successful read at the end of the file, or if
38372@var{count} was zero.
38373
38374The data read should be returned as a binary attachment on success.
38375If zero bytes were read, the response should include an empty binary
38376attachment (i.e.@: a trailing semicolon). The return value is the
38377number of target bytes read; the binary attachment may be longer if
38378some characters were escaped.
38379
38380@item vFile:pwrite: @var{fd}, @var{offset}, @var{data}
38381Write @var{data} (a binary buffer) to the open file corresponding
38382to @var{fd}. Start the write at @var{offset} from the start of the
38383file. Unlike many @code{write} system calls, there is no
38384separate @var{count} argument; the length of @var{data} in the
38385packet is used. @samp{vFile:write} returns the number of bytes written,
38386which may be shorter than the length of @var{data}, or -1 if an
38387error occurred.
38388
38389@item vFile:unlink: @var{pathname}
38390Delete the file at @var{pathname} on the target. Return 0,
38391or -1 if an error occurs. @var{pathname} is a string.
38392
b9e7b9c3
UW
38393@item vFile:readlink: @var{filename}
38394Read value of symbolic link @var{filename} on the target. Return
38395the number of bytes read, or -1 if an error occurs.
38396
38397The data read should be returned as a binary attachment on success.
38398If zero bytes were read, the response should include an empty binary
38399attachment (i.e.@: a trailing semicolon). The return value is the
38400number of target bytes read; the binary attachment may be longer if
38401some characters were escaped.
38402
a6b151f1
DJ
38403@end table
38404
9a6253be
KB
38405@node Interrupts
38406@section Interrupts
38407@cindex interrupts (remote protocol)
38408
38409When a program on the remote target is running, @value{GDBN} may
9a7071a8
JB
38410attempt to interrupt it by sending a @samp{Ctrl-C}, @code{BREAK} or
38411a @code{BREAK} followed by @code{g},
38412control of which is specified via @value{GDBN}'s @samp{interrupt-sequence}.
9a6253be
KB
38413
38414The precise meaning of @code{BREAK} is defined by the transport
8775bb90
MS
38415mechanism and may, in fact, be undefined. @value{GDBN} does not
38416currently define a @code{BREAK} mechanism for any of the network
38417interfaces except for TCP, in which case @value{GDBN} sends the
38418@code{telnet} BREAK sequence.
9a6253be
KB
38419
38420@samp{Ctrl-C}, on the other hand, is defined and implemented for all
38421transport mechanisms. It is represented by sending the single byte
38422@code{0x03} without any of the usual packet overhead described in
38423the Overview section (@pxref{Overview}). When a @code{0x03} byte is
38424transmitted as part of a packet, it is considered to be packet data
38425and does @emph{not} represent an interrupt. E.g., an @samp{X} packet
0876f84a 38426(@pxref{X packet}), used for binary downloads, may include an unescaped
9a6253be
KB
38427@code{0x03} as part of its packet.
38428
9a7071a8
JB
38429@code{BREAK} followed by @code{g} is also known as Magic SysRq g.
38430When Linux kernel receives this sequence from serial port,
38431it stops execution and connects to gdb.
38432
9a6253be
KB
38433Stubs are not required to recognize these interrupt mechanisms and the
38434precise meaning associated with receipt of the interrupt is
8b23ecc4
SL
38435implementation defined. If the target supports debugging of multiple
38436threads and/or processes, it should attempt to interrupt all
38437currently-executing threads and processes.
38438If the stub is successful at interrupting the
38439running program, it should send one of the stop
38440reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result
38441of successfully stopping the program in all-stop mode, and a stop reply
38442for each stopped thread in non-stop mode.
38443Interrupts received while the
38444program is stopped are discarded.
38445
38446@node Notification Packets
38447@section Notification Packets
38448@cindex notification packets
38449@cindex packets, notification
38450
38451The @value{GDBN} remote serial protocol includes @dfn{notifications},
38452packets that require no acknowledgment. Both the GDB and the stub
38453may send notifications (although the only notifications defined at
38454present are sent by the stub). Notifications carry information
38455without incurring the round-trip latency of an acknowledgment, and so
38456are useful for low-impact communications where occasional packet loss
38457is not a problem.
38458
38459A notification packet has the form @samp{% @var{data} #
38460@var{checksum}}, where @var{data} is the content of the notification,
38461and @var{checksum} is a checksum of @var{data}, computed and formatted
38462as for ordinary @value{GDBN} packets. A notification's @var{data}
38463never contains @samp{$}, @samp{%} or @samp{#} characters. Upon
38464receiving a notification, the recipient sends no @samp{+} or @samp{-}
38465to acknowledge the notification's receipt or to report its corruption.
38466
38467Every notification's @var{data} begins with a name, which contains no
38468colon characters, followed by a colon character.
38469
38470Recipients should silently ignore corrupted notifications and
38471notifications they do not understand. Recipients should restart
38472timeout periods on receipt of a well-formed notification, whether or
38473not they understand it.
38474
38475Senders should only send the notifications described here when this
38476protocol description specifies that they are permitted. In the
38477future, we may extend the protocol to permit existing notifications in
38478new contexts; this rule helps older senders avoid confusing newer
38479recipients.
38480
38481(Older versions of @value{GDBN} ignore bytes received until they see
38482the @samp{$} byte that begins an ordinary packet, so new stubs may
38483transmit notifications without fear of confusing older clients. There
38484are no notifications defined for @value{GDBN} to send at the moment, but we
38485assume that most older stubs would ignore them, as well.)
38486
8dbe8ece 38487Each notification is comprised of three parts:
8b23ecc4 38488@table @samp
8dbe8ece
YQ
38489@item @var{name}:@var{event}
38490The notification packet is sent by the side that initiates the
38491exchange (currently, only the stub does that), with @var{event}
38492carrying the specific information about the notification.
38493@var{name} is the name of the notification.
38494@item @var{ack}
38495The acknowledge sent by the other side, usually @value{GDBN}, to
38496acknowledge the exchange and request the event.
38497@end table
38498
38499The purpose of an asynchronous notification mechanism is to report to
38500@value{GDBN} that something interesting happened in the remote stub.
38501
38502The remote stub may send notification @var{name}:@var{event}
38503at any time, but @value{GDBN} acknowledges the notification when
38504appropriate. The notification event is pending before @value{GDBN}
38505acknowledges. Only one notification at a time may be pending; if
38506additional events occur before @value{GDBN} has acknowledged the
38507previous notification, they must be queued by the stub for later
38508synchronous transmission in response to @var{ack} packets from
38509@value{GDBN}. Because the notification mechanism is unreliable,
38510the stub is permitted to resend a notification if it believes
38511@value{GDBN} may not have received it.
38512
38513Specifically, notifications may appear when @value{GDBN} is not
38514otherwise reading input from the stub, or when @value{GDBN} is
38515expecting to read a normal synchronous response or a
38516@samp{+}/@samp{-} acknowledgment to a packet it has sent.
38517Notification packets are distinct from any other communication from
38518the stub so there is no ambiguity.
38519
38520After receiving a notification, @value{GDBN} shall acknowledge it by
38521sending a @var{ack} packet as a regular, synchronous request to the
38522stub. Such acknowledgment is not required to happen immediately, as
38523@value{GDBN} is permitted to send other, unrelated packets to the
38524stub first, which the stub should process normally.
38525
38526Upon receiving a @var{ack} packet, if the stub has other queued
38527events to report to @value{GDBN}, it shall respond by sending a
38528normal @var{event}. @value{GDBN} shall then send another @var{ack}
38529packet to solicit further responses; again, it is permitted to send
38530other, unrelated packets as well which the stub should process
38531normally.
38532
38533If the stub receives a @var{ack} packet and there are no additional
38534@var{event} to report, the stub shall return an @samp{OK} response.
38535At this point, @value{GDBN} has finished processing a notification
38536and the stub has completed sending any queued events. @value{GDBN}
38537won't accept any new notifications until the final @samp{OK} is
38538received . If further notification events occur, the stub shall send
38539a new notification, @value{GDBN} shall accept the notification, and
38540the process shall be repeated.
38541
38542The process of asynchronous notification can be illustrated by the
38543following example:
38544@smallexample
38545<- @code{%%Stop:T0505:98e7ffbf;04:4ce6ffbf;08:b1b6e54c;thread:p7526.7526;core:0;}
38546@code{...}
38547-> @code{vStopped}
38548<- @code{T0505:68f37db7;04:40f37db7;08:63850408;thread:p7526.7528;core:0;}
38549-> @code{vStopped}
38550<- @code{T0505:68e3fdb6;04:40e3fdb6;08:63850408;thread:p7526.7529;core:0;}
38551-> @code{vStopped}
38552<- @code{OK}
38553@end smallexample
38554
38555The following notifications are defined:
38556@multitable @columnfractions 0.12 0.12 0.38 0.38
38557
38558@item Notification
38559@tab Ack
38560@tab Event
38561@tab Description
38562
38563@item Stop
38564@tab vStopped
38565@tab @var{reply}. The @var{reply} has the form of a stop reply, as
8b23ecc4
SL
38566described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop},
38567for information on how these notifications are acknowledged by
38568@value{GDBN}.
8dbe8ece
YQ
38569@tab Report an asynchronous stop event in non-stop mode.
38570
38571@end multitable
8b23ecc4
SL
38572
38573@node Remote Non-Stop
38574@section Remote Protocol Support for Non-Stop Mode
38575
38576@value{GDBN}'s remote protocol supports non-stop debugging of
38577multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub
38578supports non-stop mode, it should report that to @value{GDBN} by including
38579@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}).
38580
38581@value{GDBN} typically sends a @samp{QNonStop} packet only when
38582establishing a new connection with the stub. Entering non-stop mode
38583does not alter the state of any currently-running threads, but targets
38584must stop all threads in any already-attached processes when entering
38585all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to
38586probe the target state after a mode change.
38587
38588In non-stop mode, when an attached process encounters an event that
38589would otherwise be reported with a stop reply, it uses the
38590asynchronous notification mechanism (@pxref{Notification Packets}) to
38591inform @value{GDBN}. In contrast to all-stop mode, where all threads
38592in all processes are stopped when a stop reply is sent, in non-stop
38593mode only the thread reporting the stop event is stopped. That is,
38594when reporting a @samp{S} or @samp{T} response to indicate completion
38595of a step operation, hitting a breakpoint, or a fault, only the
38596affected thread is stopped; any other still-running threads continue
38597to run. When reporting a @samp{W} or @samp{X} response, all running
38598threads belonging to other attached processes continue to run.
38599
8b23ecc4
SL
38600In non-stop mode, the target shall respond to the @samp{?} packet as
38601follows. First, any incomplete stop reply notification/@samp{vStopped}
38602sequence in progress is abandoned. The target must begin a new
38603sequence reporting stop events for all stopped threads, whether or not
38604it has previously reported those events to @value{GDBN}. The first
38605stop reply is sent as a synchronous reply to the @samp{?} packet, and
38606subsequent stop replies are sent as responses to @samp{vStopped} packets
38607using the mechanism described above. The target must not send
38608asynchronous stop reply notifications until the sequence is complete.
38609If all threads are running when the target receives the @samp{?} packet,
38610or if the target is not attached to any process, it shall respond
38611@samp{OK}.
9a6253be 38612
a6f3e723
SL
38613@node Packet Acknowledgment
38614@section Packet Acknowledgment
38615
38616@cindex acknowledgment, for @value{GDBN} remote
38617@cindex packet acknowledgment, for @value{GDBN} remote
38618By default, when either the host or the target machine receives a packet,
38619the first response expected is an acknowledgment: either @samp{+} (to indicate
38620the package was received correctly) or @samp{-} (to request retransmission).
38621This mechanism allows the @value{GDBN} remote protocol to operate over
38622unreliable transport mechanisms, such as a serial line.
38623
38624In cases where the transport mechanism is itself reliable (such as a pipe or
38625TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant.
38626It may be desirable to disable them in that case to reduce communication
38627overhead, or for other reasons. This can be accomplished by means of the
38628@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}.
38629
38630When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or
38631expect @samp{+}/@samp{-} protocol acknowledgments. The packet
38632and response format still includes the normal checksum, as described in
38633@ref{Overview}, but the checksum may be ignored by the receiver.
38634
38635If the stub supports @samp{QStartNoAckMode} and prefers to operate in
38636no-acknowledgment mode, it should report that to @value{GDBN}
38637by including @samp{QStartNoAckMode+} in its response to @samp{qSupported};
38638@pxref{qSupported}.
38639If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been
38640disabled via the @code{set remote noack-packet off} command
38641(@pxref{Remote Configuration}),
38642@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub.
38643Only then may the stub actually turn off packet acknowledgments.
38644@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK}
38645response, which can be safely ignored by the stub.
38646
38647Note that @code{set remote noack-packet} command only affects negotiation
38648between @value{GDBN} and the stub when subsequent connections are made;
38649it does not affect the protocol acknowledgment state for any current
38650connection.
38651Since @samp{+}/@samp{-} acknowledgments are enabled by default when a
38652new connection is established,
38653there is also no protocol request to re-enable the acknowledgments
38654for the current connection, once disabled.
38655
ee2d5c50
AC
38656@node Examples
38657@section Examples
eb12ee30 38658
8e04817f
AC
38659Example sequence of a target being re-started. Notice how the restart
38660does not get any direct output:
eb12ee30 38661
474c8240 38662@smallexample
d2c6833e
AC
38663-> @code{R00}
38664<- @code{+}
8e04817f 38665@emph{target restarts}
d2c6833e 38666-> @code{?}
8e04817f 38667<- @code{+}
d2c6833e
AC
38668<- @code{T001:1234123412341234}
38669-> @code{+}
474c8240 38670@end smallexample
eb12ee30 38671
8e04817f 38672Example sequence of a target being stepped by a single instruction:
eb12ee30 38673
474c8240 38674@smallexample
d2c6833e 38675-> @code{G1445@dots{}}
8e04817f 38676<- @code{+}
d2c6833e
AC
38677-> @code{s}
38678<- @code{+}
38679@emph{time passes}
38680<- @code{T001:1234123412341234}
8e04817f 38681-> @code{+}
d2c6833e 38682-> @code{g}
8e04817f 38683<- @code{+}
d2c6833e
AC
38684<- @code{1455@dots{}}
38685-> @code{+}
474c8240 38686@end smallexample
eb12ee30 38687
79a6e687
BW
38688@node File-I/O Remote Protocol Extension
38689@section File-I/O Remote Protocol Extension
0ce1b118
CV
38690@cindex File-I/O remote protocol extension
38691
38692@menu
38693* File-I/O Overview::
79a6e687
BW
38694* Protocol Basics::
38695* The F Request Packet::
38696* The F Reply Packet::
38697* The Ctrl-C Message::
0ce1b118 38698* Console I/O::
79a6e687 38699* List of Supported Calls::
db2e3e2e 38700* Protocol-specific Representation of Datatypes::
0ce1b118
CV
38701* Constants::
38702* File-I/O Examples::
38703@end menu
38704
38705@node File-I/O Overview
38706@subsection File-I/O Overview
38707@cindex file-i/o overview
38708
9c16f35a 38709The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the
fc320d37 38710target to use the host's file system and console I/O to perform various
0ce1b118 38711system calls. System calls on the target system are translated into a
fc320d37
SL
38712remote protocol packet to the host system, which then performs the needed
38713actions and returns a response packet to the target system.
0ce1b118
CV
38714This simulates file system operations even on targets that lack file systems.
38715
fc320d37
SL
38716The protocol is defined to be independent of both the host and target systems.
38717It uses its own internal representation of datatypes and values. Both
0ce1b118 38718@value{GDBN} and the target's @value{GDBN} stub are responsible for
fc320d37
SL
38719translating the system-dependent value representations into the internal
38720protocol representations when data is transmitted.
0ce1b118 38721
fc320d37
SL
38722The communication is synchronous. A system call is possible only when
38723@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S}
38724or @samp{s} packets. While @value{GDBN} handles the request for a system call,
0ce1b118 38725the target is stopped to allow deterministic access to the target's
fc320d37
SL
38726memory. Therefore File-I/O is not interruptible by target signals. On
38727the other hand, it is possible to interrupt File-I/O by a user interrupt
c8aa23ab 38728(@samp{Ctrl-C}) within @value{GDBN}.
0ce1b118
CV
38729
38730The target's request to perform a host system call does not finish
38731the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
38732after finishing the system call, the target returns to continuing the
38733previous activity (continue, step). No additional continue or step
38734request from @value{GDBN} is required.
38735
38736@smallexample
f7dc1244 38737(@value{GDBP}) continue
0ce1b118
CV
38738 <- target requests 'system call X'
38739 target is stopped, @value{GDBN} executes system call
3f94c067
BW
38740 -> @value{GDBN} returns result
38741 ... target continues, @value{GDBN} returns to wait for the target
0ce1b118
CV
38742 <- target hits breakpoint and sends a Txx packet
38743@end smallexample
38744
fc320d37
SL
38745The protocol only supports I/O on the console and to regular files on
38746the host file system. Character or block special devices, pipes,
38747named pipes, sockets or any other communication method on the host
0ce1b118
CV
38748system are not supported by this protocol.
38749
8b23ecc4
SL
38750File I/O is not supported in non-stop mode.
38751
79a6e687
BW
38752@node Protocol Basics
38753@subsection Protocol Basics
0ce1b118
CV
38754@cindex protocol basics, file-i/o
38755
fc320d37
SL
38756The File-I/O protocol uses the @code{F} packet as the request as well
38757as reply packet. Since a File-I/O system call can only occur when
38758@value{GDBN} is waiting for a response from the continuing or stepping target,
38759the File-I/O request is a reply that @value{GDBN} has to expect as a result
38760of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
0ce1b118
CV
38761This @code{F} packet contains all information needed to allow @value{GDBN}
38762to call the appropriate host system call:
38763
38764@itemize @bullet
b383017d 38765@item
0ce1b118
CV
38766A unique identifier for the requested system call.
38767
38768@item
38769All parameters to the system call. Pointers are given as addresses
38770in the target memory address space. Pointers to strings are given as
b383017d 38771pointer/length pair. Numerical values are given as they are.
db2e3e2e 38772Numerical control flags are given in a protocol-specific representation.
0ce1b118
CV
38773
38774@end itemize
38775
fc320d37 38776At this point, @value{GDBN} has to perform the following actions.
0ce1b118
CV
38777
38778@itemize @bullet
b383017d 38779@item
fc320d37
SL
38780If the parameters include pointer values to data needed as input to a
38781system call, @value{GDBN} requests this data from the target with a
0ce1b118
CV
38782standard @code{m} packet request. This additional communication has to be
38783expected by the target implementation and is handled as any other @code{m}
38784packet.
38785
38786@item
38787@value{GDBN} translates all value from protocol representation to host
38788representation as needed. Datatypes are coerced into the host types.
38789
38790@item
fc320d37 38791@value{GDBN} calls the system call.
0ce1b118
CV
38792
38793@item
38794It then coerces datatypes back to protocol representation.
38795
38796@item
fc320d37
SL
38797If the system call is expected to return data in buffer space specified
38798by pointer parameters to the call, the data is transmitted to the
0ce1b118
CV
38799target using a @code{M} or @code{X} packet. This packet has to be expected
38800by the target implementation and is handled as any other @code{M} or @code{X}
38801packet.
38802
38803@end itemize
38804
38805Eventually @value{GDBN} replies with another @code{F} packet which contains all
38806necessary information for the target to continue. This at least contains
38807
38808@itemize @bullet
38809@item
38810Return value.
38811
38812@item
38813@code{errno}, if has been changed by the system call.
38814
38815@item
38816``Ctrl-C'' flag.
38817
38818@end itemize
38819
38820After having done the needed type and value coercion, the target continues
38821the latest continue or step action.
38822
79a6e687
BW
38823@node The F Request Packet
38824@subsection The @code{F} Request Packet
0ce1b118
CV
38825@cindex file-i/o request packet
38826@cindex @code{F} request packet
38827
38828The @code{F} request packet has the following format:
38829
38830@table @samp
fc320d37 38831@item F@var{call-id},@var{parameter@dots{}}
0ce1b118
CV
38832
38833@var{call-id} is the identifier to indicate the host system call to be called.
38834This is just the name of the function.
38835
fc320d37
SL
38836@var{parameter@dots{}} are the parameters to the system call.
38837Parameters are hexadecimal integer values, either the actual values in case
38838of scalar datatypes, pointers to target buffer space in case of compound
38839datatypes and unspecified memory areas, or pointer/length pairs in case
38840of string parameters. These are appended to the @var{call-id} as a
38841comma-delimited list. All values are transmitted in ASCII
38842string representation, pointer/length pairs separated by a slash.
0ce1b118 38843
b383017d 38844@end table
0ce1b118 38845
fc320d37 38846
0ce1b118 38847
79a6e687
BW
38848@node The F Reply Packet
38849@subsection The @code{F} Reply Packet
0ce1b118
CV
38850@cindex file-i/o reply packet
38851@cindex @code{F} reply packet
38852
38853The @code{F} reply packet has the following format:
38854
38855@table @samp
38856
d3bdde98 38857@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment}
0ce1b118
CV
38858
38859@var{retcode} is the return code of the system call as hexadecimal value.
38860
db2e3e2e
BW
38861@var{errno} is the @code{errno} set by the call, in protocol-specific
38862representation.
0ce1b118
CV
38863This parameter can be omitted if the call was successful.
38864
fc320d37
SL
38865@var{Ctrl-C flag} is only sent if the user requested a break. In this
38866case, @var{errno} must be sent as well, even if the call was successful.
38867The @var{Ctrl-C flag} itself consists of the character @samp{C}:
0ce1b118
CV
38868
38869@smallexample
38870F0,0,C
38871@end smallexample
38872
38873@noindent
fc320d37 38874or, if the call was interrupted before the host call has been performed:
0ce1b118
CV
38875
38876@smallexample
38877F-1,4,C
38878@end smallexample
38879
38880@noindent
db2e3e2e 38881assuming 4 is the protocol-specific representation of @code{EINTR}.
0ce1b118
CV
38882
38883@end table
38884
0ce1b118 38885
79a6e687
BW
38886@node The Ctrl-C Message
38887@subsection The @samp{Ctrl-C} Message
0ce1b118
CV
38888@cindex ctrl-c message, in file-i/o protocol
38889
c8aa23ab 38890If the @samp{Ctrl-C} flag is set in the @value{GDBN}
79a6e687 38891reply packet (@pxref{The F Reply Packet}),
fc320d37 38892the target should behave as if it had
0ce1b118 38893gotten a break message. The meaning for the target is ``system call
fc320d37 38894interrupted by @code{SIGINT}''. Consequentially, the target should actually stop
0ce1b118 38895(as with a break message) and return to @value{GDBN} with a @code{T02}
c8aa23ab 38896packet.
fc320d37
SL
38897
38898It's important for the target to know in which
38899state the system call was interrupted. There are two possible cases:
0ce1b118
CV
38900
38901@itemize @bullet
38902@item
38903The system call hasn't been performed on the host yet.
38904
38905@item
38906The system call on the host has been finished.
38907
38908@end itemize
38909
38910These two states can be distinguished by the target by the value of the
38911returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
38912call hasn't been performed. This is equivalent to the @code{EINTR} handling
38913on POSIX systems. In any other case, the target may presume that the
fc320d37 38914system call has been finished --- successfully or not --- and should behave
0ce1b118
CV
38915as if the break message arrived right after the system call.
38916
fc320d37 38917@value{GDBN} must behave reliably. If the system call has not been called
0ce1b118
CV
38918yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
38919@code{errno} in the packet. If the system call on the host has been finished
fc320d37
SL
38920before the user requests a break, the full action must be finished by
38921@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary.
38922The @code{F} packet may only be sent when either nothing has happened
0ce1b118
CV
38923or the full action has been completed.
38924
38925@node Console I/O
38926@subsection Console I/O
38927@cindex console i/o as part of file-i/o
38928
d3e8051b 38929By default and if not explicitly closed by the target system, the file
0ce1b118
CV
38930descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
38931on the @value{GDBN} console is handled as any other file output operation
38932(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
38933by @value{GDBN} so that after the target read request from file descriptor
389340 all following typing is buffered until either one of the following
38935conditions is met:
38936
38937@itemize @bullet
38938@item
c8aa23ab 38939The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the
0ce1b118
CV
38940@code{read}
38941system call is treated as finished.
38942
38943@item
7f9087cb 38944The user presses @key{RET}. This is treated as end of input with a trailing
fc320d37 38945newline.
0ce1b118
CV
38946
38947@item
c8aa23ab
EZ
38948The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing
38949character (neither newline nor @samp{Ctrl-D}) is appended to the input.
0ce1b118
CV
38950
38951@end itemize
38952
fc320d37
SL
38953If the user has typed more characters than fit in the buffer given to
38954the @code{read} call, the trailing characters are buffered in @value{GDBN} until
38955either another @code{read(0, @dots{})} is requested by the target, or debugging
38956is stopped at the user's request.
0ce1b118 38957
0ce1b118 38958
79a6e687
BW
38959@node List of Supported Calls
38960@subsection List of Supported Calls
0ce1b118
CV
38961@cindex list of supported file-i/o calls
38962
38963@menu
38964* open::
38965* close::
38966* read::
38967* write::
38968* lseek::
38969* rename::
38970* unlink::
38971* stat/fstat::
38972* gettimeofday::
38973* isatty::
38974* system::
38975@end menu
38976
38977@node open
38978@unnumberedsubsubsec open
38979@cindex open, file-i/o system call
38980
fc320d37
SL
38981@table @asis
38982@item Synopsis:
0ce1b118 38983@smallexample
0ce1b118
CV
38984int open(const char *pathname, int flags);
38985int open(const char *pathname, int flags, mode_t mode);
0ce1b118
CV
38986@end smallexample
38987
fc320d37
SL
38988@item Request:
38989@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}}
38990
0ce1b118 38991@noindent
fc320d37 38992@var{flags} is the bitwise @code{OR} of the following values:
0ce1b118
CV
38993
38994@table @code
b383017d 38995@item O_CREAT
0ce1b118
CV
38996If the file does not exist it will be created. The host
38997rules apply as far as file ownership and time stamps
38998are concerned.
38999
b383017d 39000@item O_EXCL
fc320d37 39001When used with @code{O_CREAT}, if the file already exists it is
0ce1b118
CV
39002an error and open() fails.
39003
b383017d 39004@item O_TRUNC
0ce1b118 39005If the file already exists and the open mode allows
fc320d37
SL
39006writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be
39007truncated to zero length.
0ce1b118 39008
b383017d 39009@item O_APPEND
0ce1b118
CV
39010The file is opened in append mode.
39011
b383017d 39012@item O_RDONLY
0ce1b118
CV
39013The file is opened for reading only.
39014
b383017d 39015@item O_WRONLY
0ce1b118
CV
39016The file is opened for writing only.
39017
b383017d 39018@item O_RDWR
0ce1b118 39019The file is opened for reading and writing.
fc320d37 39020@end table
0ce1b118
CV
39021
39022@noindent
fc320d37 39023Other bits are silently ignored.
0ce1b118 39024
0ce1b118
CV
39025
39026@noindent
fc320d37 39027@var{mode} is the bitwise @code{OR} of the following values:
0ce1b118
CV
39028
39029@table @code
b383017d 39030@item S_IRUSR
0ce1b118
CV
39031User has read permission.
39032
b383017d 39033@item S_IWUSR
0ce1b118
CV
39034User has write permission.
39035
b383017d 39036@item S_IRGRP
0ce1b118
CV
39037Group has read permission.
39038
b383017d 39039@item S_IWGRP
0ce1b118
CV
39040Group has write permission.
39041
b383017d 39042@item S_IROTH
0ce1b118
CV
39043Others have read permission.
39044
b383017d 39045@item S_IWOTH
0ce1b118 39046Others have write permission.
fc320d37 39047@end table
0ce1b118
CV
39048
39049@noindent
fc320d37 39050Other bits are silently ignored.
0ce1b118 39051
0ce1b118 39052
fc320d37
SL
39053@item Return value:
39054@code{open} returns the new file descriptor or -1 if an error
39055occurred.
0ce1b118 39056
fc320d37 39057@item Errors:
0ce1b118
CV
39058
39059@table @code
b383017d 39060@item EEXIST
fc320d37 39061@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used.
0ce1b118 39062
b383017d 39063@item EISDIR
fc320d37 39064@var{pathname} refers to a directory.
0ce1b118 39065
b383017d 39066@item EACCES
0ce1b118
CV
39067The requested access is not allowed.
39068
39069@item ENAMETOOLONG
fc320d37 39070@var{pathname} was too long.
0ce1b118 39071
b383017d 39072@item ENOENT
fc320d37 39073A directory component in @var{pathname} does not exist.
0ce1b118 39074
b383017d 39075@item ENODEV
fc320d37 39076@var{pathname} refers to a device, pipe, named pipe or socket.
0ce1b118 39077
b383017d 39078@item EROFS
fc320d37 39079@var{pathname} refers to a file on a read-only filesystem and
0ce1b118
CV
39080write access was requested.
39081
b383017d 39082@item EFAULT
fc320d37 39083@var{pathname} is an invalid pointer value.
0ce1b118 39084
b383017d 39085@item ENOSPC
0ce1b118
CV
39086No space on device to create the file.
39087
b383017d 39088@item EMFILE
0ce1b118
CV
39089The process already has the maximum number of files open.
39090
b383017d 39091@item ENFILE
0ce1b118
CV
39092The limit on the total number of files open on the system
39093has been reached.
39094
b383017d 39095@item EINTR
0ce1b118
CV
39096The call was interrupted by the user.
39097@end table
39098
fc320d37
SL
39099@end table
39100
0ce1b118
CV
39101@node close
39102@unnumberedsubsubsec close
39103@cindex close, file-i/o system call
39104
fc320d37
SL
39105@table @asis
39106@item Synopsis:
0ce1b118 39107@smallexample
0ce1b118 39108int close(int fd);
fc320d37 39109@end smallexample
0ce1b118 39110
fc320d37
SL
39111@item Request:
39112@samp{Fclose,@var{fd}}
0ce1b118 39113
fc320d37
SL
39114@item Return value:
39115@code{close} returns zero on success, or -1 if an error occurred.
0ce1b118 39116
fc320d37 39117@item Errors:
0ce1b118
CV
39118
39119@table @code
b383017d 39120@item EBADF
fc320d37 39121@var{fd} isn't a valid open file descriptor.
0ce1b118 39122
b383017d 39123@item EINTR
0ce1b118
CV
39124The call was interrupted by the user.
39125@end table
39126
fc320d37
SL
39127@end table
39128
0ce1b118
CV
39129@node read
39130@unnumberedsubsubsec read
39131@cindex read, file-i/o system call
39132
fc320d37
SL
39133@table @asis
39134@item Synopsis:
0ce1b118 39135@smallexample
0ce1b118 39136int read(int fd, void *buf, unsigned int count);
fc320d37 39137@end smallexample
0ce1b118 39138
fc320d37
SL
39139@item Request:
39140@samp{Fread,@var{fd},@var{bufptr},@var{count}}
0ce1b118 39141
fc320d37 39142@item Return value:
0ce1b118
CV
39143On success, the number of bytes read is returned.
39144Zero indicates end of file. If count is zero, read
b383017d 39145returns zero as well. On error, -1 is returned.
0ce1b118 39146
fc320d37 39147@item Errors:
0ce1b118
CV
39148
39149@table @code
b383017d 39150@item EBADF
fc320d37 39151@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
39152reading.
39153
b383017d 39154@item EFAULT
fc320d37 39155@var{bufptr} is an invalid pointer value.
0ce1b118 39156
b383017d 39157@item EINTR
0ce1b118
CV
39158The call was interrupted by the user.
39159@end table
39160
fc320d37
SL
39161@end table
39162
0ce1b118
CV
39163@node write
39164@unnumberedsubsubsec write
39165@cindex write, file-i/o system call
39166
fc320d37
SL
39167@table @asis
39168@item Synopsis:
0ce1b118 39169@smallexample
0ce1b118 39170int write(int fd, const void *buf, unsigned int count);
fc320d37 39171@end smallexample
0ce1b118 39172
fc320d37
SL
39173@item Request:
39174@samp{Fwrite,@var{fd},@var{bufptr},@var{count}}
0ce1b118 39175
fc320d37 39176@item Return value:
0ce1b118
CV
39177On success, the number of bytes written are returned.
39178Zero indicates nothing was written. On error, -1
39179is returned.
39180
fc320d37 39181@item Errors:
0ce1b118
CV
39182
39183@table @code
b383017d 39184@item EBADF
fc320d37 39185@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
39186writing.
39187
b383017d 39188@item EFAULT
fc320d37 39189@var{bufptr} is an invalid pointer value.
0ce1b118 39190
b383017d 39191@item EFBIG
0ce1b118 39192An attempt was made to write a file that exceeds the
db2e3e2e 39193host-specific maximum file size allowed.
0ce1b118 39194
b383017d 39195@item ENOSPC
0ce1b118
CV
39196No space on device to write the data.
39197
b383017d 39198@item EINTR
0ce1b118
CV
39199The call was interrupted by the user.
39200@end table
39201
fc320d37
SL
39202@end table
39203
0ce1b118
CV
39204@node lseek
39205@unnumberedsubsubsec lseek
39206@cindex lseek, file-i/o system call
39207
fc320d37
SL
39208@table @asis
39209@item Synopsis:
0ce1b118 39210@smallexample
0ce1b118 39211long lseek (int fd, long offset, int flag);
0ce1b118
CV
39212@end smallexample
39213
fc320d37
SL
39214@item Request:
39215@samp{Flseek,@var{fd},@var{offset},@var{flag}}
39216
39217@var{flag} is one of:
0ce1b118
CV
39218
39219@table @code
b383017d 39220@item SEEK_SET
fc320d37 39221The offset is set to @var{offset} bytes.
0ce1b118 39222
b383017d 39223@item SEEK_CUR
fc320d37 39224The offset is set to its current location plus @var{offset}
0ce1b118
CV
39225bytes.
39226
b383017d 39227@item SEEK_END
fc320d37 39228The offset is set to the size of the file plus @var{offset}
0ce1b118
CV
39229bytes.
39230@end table
39231
fc320d37 39232@item Return value:
0ce1b118
CV
39233On success, the resulting unsigned offset in bytes from
39234the beginning of the file is returned. Otherwise, a
39235value of -1 is returned.
39236
fc320d37 39237@item Errors:
0ce1b118
CV
39238
39239@table @code
b383017d 39240@item EBADF
fc320d37 39241@var{fd} is not a valid open file descriptor.
0ce1b118 39242
b383017d 39243@item ESPIPE
fc320d37 39244@var{fd} is associated with the @value{GDBN} console.
0ce1b118 39245
b383017d 39246@item EINVAL
fc320d37 39247@var{flag} is not a proper value.
0ce1b118 39248
b383017d 39249@item EINTR
0ce1b118
CV
39250The call was interrupted by the user.
39251@end table
39252
fc320d37
SL
39253@end table
39254
0ce1b118
CV
39255@node rename
39256@unnumberedsubsubsec rename
39257@cindex rename, file-i/o system call
39258
fc320d37
SL
39259@table @asis
39260@item Synopsis:
0ce1b118 39261@smallexample
0ce1b118 39262int rename(const char *oldpath, const char *newpath);
fc320d37 39263@end smallexample
0ce1b118 39264
fc320d37
SL
39265@item Request:
39266@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}}
0ce1b118 39267
fc320d37 39268@item Return value:
0ce1b118
CV
39269On success, zero is returned. On error, -1 is returned.
39270
fc320d37 39271@item Errors:
0ce1b118
CV
39272
39273@table @code
b383017d 39274@item EISDIR
fc320d37 39275@var{newpath} is an existing directory, but @var{oldpath} is not a
0ce1b118
CV
39276directory.
39277
b383017d 39278@item EEXIST
fc320d37 39279@var{newpath} is a non-empty directory.
0ce1b118 39280
b383017d 39281@item EBUSY
fc320d37 39282@var{oldpath} or @var{newpath} is a directory that is in use by some
0ce1b118
CV
39283process.
39284
b383017d 39285@item EINVAL
0ce1b118
CV
39286An attempt was made to make a directory a subdirectory
39287of itself.
39288
b383017d 39289@item ENOTDIR
fc320d37
SL
39290A component used as a directory in @var{oldpath} or new
39291path is not a directory. Or @var{oldpath} is a directory
39292and @var{newpath} exists but is not a directory.
0ce1b118 39293
b383017d 39294@item EFAULT
fc320d37 39295@var{oldpathptr} or @var{newpathptr} are invalid pointer values.
0ce1b118 39296
b383017d 39297@item EACCES
0ce1b118
CV
39298No access to the file or the path of the file.
39299
39300@item ENAMETOOLONG
b383017d 39301
fc320d37 39302@var{oldpath} or @var{newpath} was too long.
0ce1b118 39303
b383017d 39304@item ENOENT
fc320d37 39305A directory component in @var{oldpath} or @var{newpath} does not exist.
0ce1b118 39306
b383017d 39307@item EROFS
0ce1b118
CV
39308The file is on a read-only filesystem.
39309
b383017d 39310@item ENOSPC
0ce1b118
CV
39311The device containing the file has no room for the new
39312directory entry.
39313
b383017d 39314@item EINTR
0ce1b118
CV
39315The call was interrupted by the user.
39316@end table
39317
fc320d37
SL
39318@end table
39319
0ce1b118
CV
39320@node unlink
39321@unnumberedsubsubsec unlink
39322@cindex unlink, file-i/o system call
39323
fc320d37
SL
39324@table @asis
39325@item Synopsis:
0ce1b118 39326@smallexample
0ce1b118 39327int unlink(const char *pathname);
fc320d37 39328@end smallexample
0ce1b118 39329
fc320d37
SL
39330@item Request:
39331@samp{Funlink,@var{pathnameptr}/@var{len}}
0ce1b118 39332
fc320d37 39333@item Return value:
0ce1b118
CV
39334On success, zero is returned. On error, -1 is returned.
39335
fc320d37 39336@item Errors:
0ce1b118
CV
39337
39338@table @code
b383017d 39339@item EACCES
0ce1b118
CV
39340No access to the file or the path of the file.
39341
b383017d 39342@item EPERM
0ce1b118
CV
39343The system does not allow unlinking of directories.
39344
b383017d 39345@item EBUSY
fc320d37 39346The file @var{pathname} cannot be unlinked because it's
0ce1b118
CV
39347being used by another process.
39348
b383017d 39349@item EFAULT
fc320d37 39350@var{pathnameptr} is an invalid pointer value.
0ce1b118
CV
39351
39352@item ENAMETOOLONG
fc320d37 39353@var{pathname} was too long.
0ce1b118 39354
b383017d 39355@item ENOENT
fc320d37 39356A directory component in @var{pathname} does not exist.
0ce1b118 39357
b383017d 39358@item ENOTDIR
0ce1b118
CV
39359A component of the path is not a directory.
39360
b383017d 39361@item EROFS
0ce1b118
CV
39362The file is on a read-only filesystem.
39363
b383017d 39364@item EINTR
0ce1b118
CV
39365The call was interrupted by the user.
39366@end table
39367
fc320d37
SL
39368@end table
39369
0ce1b118
CV
39370@node stat/fstat
39371@unnumberedsubsubsec stat/fstat
39372@cindex fstat, file-i/o system call
39373@cindex stat, file-i/o system call
39374
fc320d37
SL
39375@table @asis
39376@item Synopsis:
0ce1b118 39377@smallexample
0ce1b118
CV
39378int stat(const char *pathname, struct stat *buf);
39379int fstat(int fd, struct stat *buf);
fc320d37 39380@end smallexample
0ce1b118 39381
fc320d37
SL
39382@item Request:
39383@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@*
39384@samp{Ffstat,@var{fd},@var{bufptr}}
0ce1b118 39385
fc320d37 39386@item Return value:
0ce1b118
CV
39387On success, zero is returned. On error, -1 is returned.
39388
fc320d37 39389@item Errors:
0ce1b118
CV
39390
39391@table @code
b383017d 39392@item EBADF
fc320d37 39393@var{fd} is not a valid open file.
0ce1b118 39394
b383017d 39395@item ENOENT
fc320d37 39396A directory component in @var{pathname} does not exist or the
0ce1b118
CV
39397path is an empty string.
39398
b383017d 39399@item ENOTDIR
0ce1b118
CV
39400A component of the path is not a directory.
39401
b383017d 39402@item EFAULT
fc320d37 39403@var{pathnameptr} is an invalid pointer value.
0ce1b118 39404
b383017d 39405@item EACCES
0ce1b118
CV
39406No access to the file or the path of the file.
39407
39408@item ENAMETOOLONG
fc320d37 39409@var{pathname} was too long.
0ce1b118 39410
b383017d 39411@item EINTR
0ce1b118
CV
39412The call was interrupted by the user.
39413@end table
39414
fc320d37
SL
39415@end table
39416
0ce1b118
CV
39417@node gettimeofday
39418@unnumberedsubsubsec gettimeofday
39419@cindex gettimeofday, file-i/o system call
39420
fc320d37
SL
39421@table @asis
39422@item Synopsis:
0ce1b118 39423@smallexample
0ce1b118 39424int gettimeofday(struct timeval *tv, void *tz);
fc320d37 39425@end smallexample
0ce1b118 39426
fc320d37
SL
39427@item Request:
39428@samp{Fgettimeofday,@var{tvptr},@var{tzptr}}
0ce1b118 39429
fc320d37 39430@item Return value:
0ce1b118
CV
39431On success, 0 is returned, -1 otherwise.
39432
fc320d37 39433@item Errors:
0ce1b118
CV
39434
39435@table @code
b383017d 39436@item EINVAL
fc320d37 39437@var{tz} is a non-NULL pointer.
0ce1b118 39438
b383017d 39439@item EFAULT
fc320d37
SL
39440@var{tvptr} and/or @var{tzptr} is an invalid pointer value.
39441@end table
39442
0ce1b118
CV
39443@end table
39444
39445@node isatty
39446@unnumberedsubsubsec isatty
39447@cindex isatty, file-i/o system call
39448
fc320d37
SL
39449@table @asis
39450@item Synopsis:
0ce1b118 39451@smallexample
0ce1b118 39452int isatty(int fd);
fc320d37 39453@end smallexample
0ce1b118 39454
fc320d37
SL
39455@item Request:
39456@samp{Fisatty,@var{fd}}
0ce1b118 39457
fc320d37
SL
39458@item Return value:
39459Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise.
0ce1b118 39460
fc320d37 39461@item Errors:
0ce1b118
CV
39462
39463@table @code
b383017d 39464@item EINTR
0ce1b118
CV
39465The call was interrupted by the user.
39466@end table
39467
fc320d37
SL
39468@end table
39469
39470Note that the @code{isatty} call is treated as a special case: it returns
394711 to the target if the file descriptor is attached
39472to the @value{GDBN} console, 0 otherwise. Implementing through system calls
39473would require implementing @code{ioctl} and would be more complex than
39474needed.
39475
39476
0ce1b118
CV
39477@node system
39478@unnumberedsubsubsec system
39479@cindex system, file-i/o system call
39480
fc320d37
SL
39481@table @asis
39482@item Synopsis:
0ce1b118 39483@smallexample
0ce1b118 39484int system(const char *command);
fc320d37 39485@end smallexample
0ce1b118 39486
fc320d37
SL
39487@item Request:
39488@samp{Fsystem,@var{commandptr}/@var{len}}
0ce1b118 39489
fc320d37 39490@item Return value:
5600ea19
NS
39491If @var{len} is zero, the return value indicates whether a shell is
39492available. A zero return value indicates a shell is not available.
39493For non-zero @var{len}, the value returned is -1 on error and the
39494return status of the command otherwise. Only the exit status of the
39495command is returned, which is extracted from the host's @code{system}
39496return value by calling @code{WEXITSTATUS(retval)}. In case
39497@file{/bin/sh} could not be executed, 127 is returned.
0ce1b118 39498
fc320d37 39499@item Errors:
0ce1b118
CV
39500
39501@table @code
b383017d 39502@item EINTR
0ce1b118
CV
39503The call was interrupted by the user.
39504@end table
39505
fc320d37
SL
39506@end table
39507
39508@value{GDBN} takes over the full task of calling the necessary host calls
39509to perform the @code{system} call. The return value of @code{system} on
39510the host is simplified before it's returned
39511to the target. Any termination signal information from the child process
39512is discarded, and the return value consists
39513entirely of the exit status of the called command.
39514
39515Due to security concerns, the @code{system} call is by default refused
39516by @value{GDBN}. The user has to allow this call explicitly with the
39517@code{set remote system-call-allowed 1} command.
39518
39519@table @code
39520@item set remote system-call-allowed
39521@kindex set remote system-call-allowed
39522Control whether to allow the @code{system} calls in the File I/O
39523protocol for the remote target. The default is zero (disabled).
39524
39525@item show remote system-call-allowed
39526@kindex show remote system-call-allowed
39527Show whether the @code{system} calls are allowed in the File I/O
39528protocol.
39529@end table
39530
db2e3e2e
BW
39531@node Protocol-specific Representation of Datatypes
39532@subsection Protocol-specific Representation of Datatypes
39533@cindex protocol-specific representation of datatypes, in file-i/o protocol
0ce1b118
CV
39534
39535@menu
79a6e687
BW
39536* Integral Datatypes::
39537* Pointer Values::
39538* Memory Transfer::
0ce1b118
CV
39539* struct stat::
39540* struct timeval::
39541@end menu
39542
79a6e687
BW
39543@node Integral Datatypes
39544@unnumberedsubsubsec Integral Datatypes
0ce1b118
CV
39545@cindex integral datatypes, in file-i/o protocol
39546
fc320d37
SL
39547The integral datatypes used in the system calls are @code{int},
39548@code{unsigned int}, @code{long}, @code{unsigned long},
39549@code{mode_t}, and @code{time_t}.
0ce1b118 39550
fc320d37 39551@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
0ce1b118
CV
39552implemented as 32 bit values in this protocol.
39553
fc320d37 39554@code{long} and @code{unsigned long} are implemented as 64 bit types.
b383017d 39555
0ce1b118
CV
39556@xref{Limits}, for corresponding MIN and MAX values (similar to those
39557in @file{limits.h}) to allow range checking on host and target.
39558
39559@code{time_t} datatypes are defined as seconds since the Epoch.
39560
39561All integral datatypes transferred as part of a memory read or write of a
39562structured datatype e.g.@: a @code{struct stat} have to be given in big endian
39563byte order.
39564
79a6e687
BW
39565@node Pointer Values
39566@unnumberedsubsubsec Pointer Values
0ce1b118
CV
39567@cindex pointer values, in file-i/o protocol
39568
39569Pointers to target data are transmitted as they are. An exception
39570is made for pointers to buffers for which the length isn't
39571transmitted as part of the function call, namely strings. Strings
39572are transmitted as a pointer/length pair, both as hex values, e.g.@:
39573
39574@smallexample
39575@code{1aaf/12}
39576@end smallexample
39577
39578@noindent
39579which is a pointer to data of length 18 bytes at position 0x1aaf.
39580The length is defined as the full string length in bytes, including
fc320d37
SL
39581the trailing null byte. For example, the string @code{"hello world"}
39582at address 0x123456 is transmitted as
0ce1b118
CV
39583
39584@smallexample
fc320d37 39585@code{123456/d}
0ce1b118
CV
39586@end smallexample
39587
79a6e687
BW
39588@node Memory Transfer
39589@unnumberedsubsubsec Memory Transfer
fc320d37
SL
39590@cindex memory transfer, in file-i/o protocol
39591
39592Structured data which is transferred using a memory read or write (for
db2e3e2e 39593example, a @code{struct stat}) is expected to be in a protocol-specific format
fc320d37
SL
39594with all scalar multibyte datatypes being big endian. Translation to
39595this representation needs to be done both by the target before the @code{F}
39596packet is sent, and by @value{GDBN} before
39597it transfers memory to the target. Transferred pointers to structured
39598data should point to the already-coerced data at any time.
0ce1b118 39599
0ce1b118
CV
39600
39601@node struct stat
39602@unnumberedsubsubsec struct stat
39603@cindex struct stat, in file-i/o protocol
39604
fc320d37
SL
39605The buffer of type @code{struct stat} used by the target and @value{GDBN}
39606is defined as follows:
0ce1b118
CV
39607
39608@smallexample
39609struct stat @{
39610 unsigned int st_dev; /* device */
39611 unsigned int st_ino; /* inode */
39612 mode_t st_mode; /* protection */
39613 unsigned int st_nlink; /* number of hard links */
39614 unsigned int st_uid; /* user ID of owner */
39615 unsigned int st_gid; /* group ID of owner */
39616 unsigned int st_rdev; /* device type (if inode device) */
39617 unsigned long st_size; /* total size, in bytes */
39618 unsigned long st_blksize; /* blocksize for filesystem I/O */
39619 unsigned long st_blocks; /* number of blocks allocated */
39620 time_t st_atime; /* time of last access */
39621 time_t st_mtime; /* time of last modification */
39622 time_t st_ctime; /* time of last change */
39623@};
39624@end smallexample
39625
fc320d37 39626The integral datatypes conform to the definitions given in the
79a6e687 39627appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
39628structure is of size 64 bytes.
39629
39630The values of several fields have a restricted meaning and/or
39631range of values.
39632
fc320d37 39633@table @code
0ce1b118 39634
fc320d37
SL
39635@item st_dev
39636A value of 0 represents a file, 1 the console.
0ce1b118 39637
fc320d37
SL
39638@item st_ino
39639No valid meaning for the target. Transmitted unchanged.
0ce1b118 39640
fc320d37
SL
39641@item st_mode
39642Valid mode bits are described in @ref{Constants}. Any other
39643bits have currently no meaning for the target.
0ce1b118 39644
fc320d37
SL
39645@item st_uid
39646@itemx st_gid
39647@itemx st_rdev
39648No valid meaning for the target. Transmitted unchanged.
0ce1b118 39649
fc320d37
SL
39650@item st_atime
39651@itemx st_mtime
39652@itemx st_ctime
39653These values have a host and file system dependent
39654accuracy. Especially on Windows hosts, the file system may not
39655support exact timing values.
39656@end table
0ce1b118 39657
fc320d37
SL
39658The target gets a @code{struct stat} of the above representation and is
39659responsible for coercing it to the target representation before
0ce1b118
CV
39660continuing.
39661
fc320d37
SL
39662Note that due to size differences between the host, target, and protocol
39663representations of @code{struct stat} members, these members could eventually
0ce1b118
CV
39664get truncated on the target.
39665
39666@node struct timeval
39667@unnumberedsubsubsec struct timeval
39668@cindex struct timeval, in file-i/o protocol
39669
fc320d37 39670The buffer of type @code{struct timeval} used by the File-I/O protocol
0ce1b118
CV
39671is defined as follows:
39672
39673@smallexample
b383017d 39674struct timeval @{
0ce1b118
CV
39675 time_t tv_sec; /* second */
39676 long tv_usec; /* microsecond */
39677@};
39678@end smallexample
39679
fc320d37 39680The integral datatypes conform to the definitions given in the
79a6e687 39681appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
39682structure is of size 8 bytes.
39683
39684@node Constants
39685@subsection Constants
39686@cindex constants, in file-i/o protocol
39687
39688The following values are used for the constants inside of the
fc320d37 39689protocol. @value{GDBN} and target are responsible for translating these
0ce1b118
CV
39690values before and after the call as needed.
39691
39692@menu
79a6e687
BW
39693* Open Flags::
39694* mode_t Values::
39695* Errno Values::
39696* Lseek Flags::
0ce1b118
CV
39697* Limits::
39698@end menu
39699
79a6e687
BW
39700@node Open Flags
39701@unnumberedsubsubsec Open Flags
0ce1b118
CV
39702@cindex open flags, in file-i/o protocol
39703
39704All values are given in hexadecimal representation.
39705
39706@smallexample
39707 O_RDONLY 0x0
39708 O_WRONLY 0x1
39709 O_RDWR 0x2
39710 O_APPEND 0x8
39711 O_CREAT 0x200
39712 O_TRUNC 0x400
39713 O_EXCL 0x800
39714@end smallexample
39715
79a6e687
BW
39716@node mode_t Values
39717@unnumberedsubsubsec mode_t Values
0ce1b118
CV
39718@cindex mode_t values, in file-i/o protocol
39719
39720All values are given in octal representation.
39721
39722@smallexample
39723 S_IFREG 0100000
39724 S_IFDIR 040000
39725 S_IRUSR 0400
39726 S_IWUSR 0200
39727 S_IXUSR 0100
39728 S_IRGRP 040
39729 S_IWGRP 020
39730 S_IXGRP 010
39731 S_IROTH 04
39732 S_IWOTH 02
39733 S_IXOTH 01
39734@end smallexample
39735
79a6e687
BW
39736@node Errno Values
39737@unnumberedsubsubsec Errno Values
0ce1b118
CV
39738@cindex errno values, in file-i/o protocol
39739
39740All values are given in decimal representation.
39741
39742@smallexample
39743 EPERM 1
39744 ENOENT 2
39745 EINTR 4
39746 EBADF 9
39747 EACCES 13
39748 EFAULT 14
39749 EBUSY 16
39750 EEXIST 17
39751 ENODEV 19
39752 ENOTDIR 20
39753 EISDIR 21
39754 EINVAL 22
39755 ENFILE 23
39756 EMFILE 24
39757 EFBIG 27
39758 ENOSPC 28
39759 ESPIPE 29
39760 EROFS 30
39761 ENAMETOOLONG 91
39762 EUNKNOWN 9999
39763@end smallexample
39764
fc320d37 39765 @code{EUNKNOWN} is used as a fallback error value if a host system returns
0ce1b118
CV
39766 any error value not in the list of supported error numbers.
39767
79a6e687
BW
39768@node Lseek Flags
39769@unnumberedsubsubsec Lseek Flags
0ce1b118
CV
39770@cindex lseek flags, in file-i/o protocol
39771
39772@smallexample
39773 SEEK_SET 0
39774 SEEK_CUR 1
39775 SEEK_END 2
39776@end smallexample
39777
39778@node Limits
39779@unnumberedsubsubsec Limits
39780@cindex limits, in file-i/o protocol
39781
39782All values are given in decimal representation.
39783
39784@smallexample
39785 INT_MIN -2147483648
39786 INT_MAX 2147483647
39787 UINT_MAX 4294967295
39788 LONG_MIN -9223372036854775808
39789 LONG_MAX 9223372036854775807
39790 ULONG_MAX 18446744073709551615
39791@end smallexample
39792
39793@node File-I/O Examples
39794@subsection File-I/O Examples
39795@cindex file-i/o examples
39796
39797Example sequence of a write call, file descriptor 3, buffer is at target
39798address 0x1234, 6 bytes should be written:
39799
39800@smallexample
39801<- @code{Fwrite,3,1234,6}
39802@emph{request memory read from target}
39803-> @code{m1234,6}
39804<- XXXXXX
39805@emph{return "6 bytes written"}
39806-> @code{F6}
39807@end smallexample
39808
39809Example sequence of a read call, file descriptor 3, buffer is at target
39810address 0x1234, 6 bytes should be read:
39811
39812@smallexample
39813<- @code{Fread,3,1234,6}
39814@emph{request memory write to target}
39815-> @code{X1234,6:XXXXXX}
39816@emph{return "6 bytes read"}
39817-> @code{F6}
39818@end smallexample
39819
39820Example sequence of a read call, call fails on the host due to invalid
fc320d37 39821file descriptor (@code{EBADF}):
0ce1b118
CV
39822
39823@smallexample
39824<- @code{Fread,3,1234,6}
39825-> @code{F-1,9}
39826@end smallexample
39827
c8aa23ab 39828Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on
0ce1b118
CV
39829host is called:
39830
39831@smallexample
39832<- @code{Fread,3,1234,6}
39833-> @code{F-1,4,C}
39834<- @code{T02}
39835@end smallexample
39836
c8aa23ab 39837Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on
0ce1b118
CV
39838host is called:
39839
39840@smallexample
39841<- @code{Fread,3,1234,6}
39842-> @code{X1234,6:XXXXXX}
39843<- @code{T02}
39844@end smallexample
39845
cfa9d6d9
DJ
39846@node Library List Format
39847@section Library List Format
39848@cindex library list format, remote protocol
39849
39850On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the
39851same process as your application to manage libraries. In this case,
39852@value{GDBN} can use the loader's symbol table and normal memory
39853operations to maintain a list of shared libraries. On other
39854platforms, the operating system manages loaded libraries.
39855@value{GDBN} can not retrieve the list of currently loaded libraries
39856through memory operations, so it uses the @samp{qXfer:libraries:read}
39857packet (@pxref{qXfer library list read}) instead. The remote stub
39858queries the target's operating system and reports which libraries
39859are loaded.
39860
39861The @samp{qXfer:libraries:read} packet returns an XML document which
39862lists loaded libraries and their offsets. Each library has an
1fddbabb
PA
39863associated name and one or more segment or section base addresses,
39864which report where the library was loaded in memory.
39865
39866For the common case of libraries that are fully linked binaries, the
39867library should have a list of segments. If the target supports
39868dynamic linking of a relocatable object file, its library XML element
39869should instead include a list of allocated sections. The segment or
39870section bases are start addresses, not relocation offsets; they do not
39871depend on the library's link-time base addresses.
cfa9d6d9 39872
9cceb671
DJ
39873@value{GDBN} must be linked with the Expat library to support XML
39874library lists. @xref{Expat}.
39875
cfa9d6d9
DJ
39876A simple memory map, with one loaded library relocated by a single
39877offset, looks like this:
39878
39879@smallexample
39880<library-list>
39881 <library name="/lib/libc.so.6">
39882 <segment address="0x10000000"/>
39883 </library>
39884</library-list>
39885@end smallexample
39886
1fddbabb
PA
39887Another simple memory map, with one loaded library with three
39888allocated sections (.text, .data, .bss), looks like this:
39889
39890@smallexample
39891<library-list>
39892 <library name="sharedlib.o">
39893 <section address="0x10000000"/>
39894 <section address="0x20000000"/>
39895 <section address="0x30000000"/>
39896 </library>
39897</library-list>
39898@end smallexample
39899
cfa9d6d9
DJ
39900The format of a library list is described by this DTD:
39901
39902@smallexample
39903<!-- library-list: Root element with versioning -->
39904<!ELEMENT library-list (library)*>
39905<!ATTLIST library-list version CDATA #FIXED "1.0">
1fddbabb 39906<!ELEMENT library (segment*, section*)>
cfa9d6d9
DJ
39907<!ATTLIST library name CDATA #REQUIRED>
39908<!ELEMENT segment EMPTY>
39909<!ATTLIST segment address CDATA #REQUIRED>
1fddbabb
PA
39910<!ELEMENT section EMPTY>
39911<!ATTLIST section address CDATA #REQUIRED>
cfa9d6d9
DJ
39912@end smallexample
39913
1fddbabb
PA
39914In addition, segments and section descriptors cannot be mixed within a
39915single library element, and you must supply at least one segment or
39916section for each library.
39917
2268b414
JK
39918@node Library List Format for SVR4 Targets
39919@section Library List Format for SVR4 Targets
39920@cindex library list format, remote protocol
39921
39922On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader
39923(e.g.@: @file{ld.so}) and normal memory operations to maintain a list of
39924shared libraries. Still a special library list provided by this packet is
39925more efficient for the @value{GDBN} remote protocol.
39926
39927The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists
39928loaded libraries and their SVR4 linker parameters. For each library on SVR4
39929target, the following parameters are reported:
39930
39931@itemize @minus
39932@item
39933@code{name}, the absolute file name from the @code{l_name} field of
39934@code{struct link_map}.
39935@item
39936@code{lm} with address of @code{struct link_map} used for TLS
39937(Thread Local Storage) access.
39938@item
39939@code{l_addr}, the displacement as read from the field @code{l_addr} of
39940@code{struct link_map}. For prelinked libraries this is not an absolute
39941memory address. It is a displacement of absolute memory address against
39942address the file was prelinked to during the library load.
39943@item
39944@code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment
39945@end itemize
39946
39947Additionally the single @code{main-lm} attribute specifies address of
39948@code{struct link_map} used for the main executable. This parameter is used
39949for TLS access and its presence is optional.
39950
39951@value{GDBN} must be linked with the Expat library to support XML
39952SVR4 library lists. @xref{Expat}.
39953
39954A simple memory map, with two loaded libraries (which do not use prelink),
39955looks like this:
39956
39957@smallexample
39958<library-list-svr4 version="1.0" main-lm="0xe4f8f8">
39959 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000"
39960 l_ld="0xe4eefc"/>
39961 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000"
39962 l_ld="0x152350"/>
39963</library-list-svr>
39964@end smallexample
39965
39966The format of an SVR4 library list is described by this DTD:
39967
39968@smallexample
39969<!-- library-list-svr4: Root element with versioning -->
39970<!ELEMENT library-list-svr4 (library)*>
39971<!ATTLIST library-list-svr4 version CDATA #FIXED "1.0">
39972<!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED>
39973<!ELEMENT library EMPTY>
39974<!ATTLIST library name CDATA #REQUIRED>
39975<!ATTLIST library lm CDATA #REQUIRED>
39976<!ATTLIST library l_addr CDATA #REQUIRED>
39977<!ATTLIST library l_ld CDATA #REQUIRED>
39978@end smallexample
39979
79a6e687
BW
39980@node Memory Map Format
39981@section Memory Map Format
68437a39
DJ
39982@cindex memory map format
39983
39984To be able to write into flash memory, @value{GDBN} needs to obtain a
39985memory map from the target. This section describes the format of the
39986memory map.
39987
39988The memory map is obtained using the @samp{qXfer:memory-map:read}
39989(@pxref{qXfer memory map read}) packet and is an XML document that
9cceb671
DJ
39990lists memory regions.
39991
39992@value{GDBN} must be linked with the Expat library to support XML
39993memory maps. @xref{Expat}.
39994
39995The top-level structure of the document is shown below:
68437a39
DJ
39996
39997@smallexample
39998<?xml version="1.0"?>
39999<!DOCTYPE memory-map
40000 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
40001 "http://sourceware.org/gdb/gdb-memory-map.dtd">
40002<memory-map>
40003 region...
40004</memory-map>
40005@end smallexample
40006
40007Each region can be either:
40008
40009@itemize
40010
40011@item
40012A region of RAM starting at @var{addr} and extending for @var{length}
40013bytes from there:
40014
40015@smallexample
40016<memory type="ram" start="@var{addr}" length="@var{length}"/>
40017@end smallexample
40018
40019
40020@item
40021A region of read-only memory:
40022
40023@smallexample
40024<memory type="rom" start="@var{addr}" length="@var{length}"/>
40025@end smallexample
40026
40027
40028@item
40029A region of flash memory, with erasure blocks @var{blocksize}
40030bytes in length:
40031
40032@smallexample
40033<memory type="flash" start="@var{addr}" length="@var{length}">
40034 <property name="blocksize">@var{blocksize}</property>
40035</memory>
40036@end smallexample
40037
40038@end itemize
40039
40040Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
40041by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
40042packets to write to addresses in such ranges.
40043
40044The formal DTD for memory map format is given below:
40045
40046@smallexample
40047<!-- ................................................... -->
40048<!-- Memory Map XML DTD ................................ -->
40049<!-- File: memory-map.dtd .............................. -->
40050<!-- .................................... .............. -->
40051<!-- memory-map.dtd -->
40052<!-- memory-map: Root element with versioning -->
40053<!ELEMENT memory-map (memory | property)>
40054<!ATTLIST memory-map version CDATA #FIXED "1.0.0">
40055<!ELEMENT memory (property)>
40056<!-- memory: Specifies a memory region,
40057 and its type, or device. -->
40058<!ATTLIST memory type CDATA #REQUIRED
40059 start CDATA #REQUIRED
40060 length CDATA #REQUIRED
40061 device CDATA #IMPLIED>
40062<!-- property: Generic attribute tag -->
40063<!ELEMENT property (#PCDATA | property)*>
40064<!ATTLIST property name CDATA #REQUIRED>
40065@end smallexample
40066
dc146f7c
VP
40067@node Thread List Format
40068@section Thread List Format
40069@cindex thread list format
40070
40071To efficiently update the list of threads and their attributes,
40072@value{GDBN} issues the @samp{qXfer:threads:read} packet
40073(@pxref{qXfer threads read}) and obtains the XML document with
40074the following structure:
40075
40076@smallexample
40077<?xml version="1.0"?>
40078<threads>
40079 <thread id="id" core="0">
40080 ... description ...
40081 </thread>
40082</threads>
40083@end smallexample
40084
40085Each @samp{thread} element must have the @samp{id} attribute that
40086identifies the thread (@pxref{thread-id syntax}). The
40087@samp{core} attribute, if present, specifies which processor core
40088the thread was last executing on. The content of the of @samp{thread}
40089element is interpreted as human-readable auxilliary information.
40090
b3b9301e
PA
40091@node Traceframe Info Format
40092@section Traceframe Info Format
40093@cindex traceframe info format
40094
40095To be able to know which objects in the inferior can be examined when
40096inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of
40097memory ranges, registers and trace state variables that have been
40098collected in a traceframe.
40099
40100This list is obtained using the @samp{qXfer:traceframe-info:read}
40101(@pxref{qXfer traceframe info read}) packet and is an XML document.
40102
40103@value{GDBN} must be linked with the Expat library to support XML
40104traceframe info discovery. @xref{Expat}.
40105
40106The top-level structure of the document is shown below:
40107
40108@smallexample
40109<?xml version="1.0"?>
40110<!DOCTYPE traceframe-info
40111 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
40112 "http://sourceware.org/gdb/gdb-traceframe-info.dtd">
40113<traceframe-info>
40114 block...
40115</traceframe-info>
40116@end smallexample
40117
40118Each traceframe block can be either:
40119
40120@itemize
40121
40122@item
40123A region of collected memory starting at @var{addr} and extending for
40124@var{length} bytes from there:
40125
40126@smallexample
40127<memory start="@var{addr}" length="@var{length}"/>
40128@end smallexample
40129
40130@end itemize
40131
40132The formal DTD for the traceframe info format is given below:
40133
40134@smallexample
40135<!ELEMENT traceframe-info (memory)* >
40136<!ATTLIST traceframe-info version CDATA #FIXED "1.0">
40137
40138<!ELEMENT memory EMPTY>
40139<!ATTLIST memory start CDATA #REQUIRED
40140 length CDATA #REQUIRED>
40141@end smallexample
40142
f418dd93
DJ
40143@include agentexpr.texi
40144
23181151
DJ
40145@node Target Descriptions
40146@appendix Target Descriptions
40147@cindex target descriptions
40148
23181151
DJ
40149One of the challenges of using @value{GDBN} to debug embedded systems
40150is that there are so many minor variants of each processor
40151architecture in use. It is common practice for vendors to start with
eb17f351 40152a standard processor core --- ARM, PowerPC, or @acronym{MIPS}, for example ---
23181151
DJ
40153and then make changes to adapt it to a particular market niche. Some
40154architectures have hundreds of variants, available from dozens of
40155vendors. This leads to a number of problems:
40156
40157@itemize @bullet
40158@item
40159With so many different customized processors, it is difficult for
40160the @value{GDBN} maintainers to keep up with the changes.
40161@item
40162Since individual variants may have short lifetimes or limited
40163audiences, it may not be worthwhile to carry information about every
40164variant in the @value{GDBN} source tree.
40165@item
40166When @value{GDBN} does support the architecture of the embedded system
40167at hand, the task of finding the correct architecture name to give the
40168@command{set architecture} command can be error-prone.
40169@end itemize
40170
40171To address these problems, the @value{GDBN} remote protocol allows a
40172target system to not only identify itself to @value{GDBN}, but to
40173actually describe its own features. This lets @value{GDBN} support
40174processor variants it has never seen before --- to the extent that the
40175descriptions are accurate, and that @value{GDBN} understands them.
40176
9cceb671
DJ
40177@value{GDBN} must be linked with the Expat library to support XML
40178target descriptions. @xref{Expat}.
123dc839 40179
23181151
DJ
40180@menu
40181* Retrieving Descriptions:: How descriptions are fetched from a target.
40182* Target Description Format:: The contents of a target description.
123dc839
DJ
40183* Predefined Target Types:: Standard types available for target
40184 descriptions.
40185* Standard Target Features:: Features @value{GDBN} knows about.
23181151
DJ
40186@end menu
40187
40188@node Retrieving Descriptions
40189@section Retrieving Descriptions
40190
40191Target descriptions can be read from the target automatically, or
40192specified by the user manually. The default behavior is to read the
40193description from the target. @value{GDBN} retrieves it via the remote
40194protocol using @samp{qXfer} requests (@pxref{General Query Packets,
40195qXfer}). The @var{annex} in the @samp{qXfer} packet will be
40196@samp{target.xml}. The contents of the @samp{target.xml} annex are an
40197XML document, of the form described in @ref{Target Description
40198Format}.
40199
40200Alternatively, you can specify a file to read for the target description.
40201If a file is set, the target will not be queried. The commands to
40202specify a file are:
40203
40204@table @code
40205@cindex set tdesc filename
40206@item set tdesc filename @var{path}
40207Read the target description from @var{path}.
40208
40209@cindex unset tdesc filename
40210@item unset tdesc filename
40211Do not read the XML target description from a file. @value{GDBN}
40212will use the description supplied by the current target.
40213
40214@cindex show tdesc filename
40215@item show tdesc filename
40216Show the filename to read for a target description, if any.
40217@end table
40218
40219
40220@node Target Description Format
40221@section Target Description Format
40222@cindex target descriptions, XML format
40223
40224A target description annex is an @uref{http://www.w3.org/XML/, XML}
40225document which complies with the Document Type Definition provided in
40226the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This
40227means you can use generally available tools like @command{xmllint} to
40228check that your feature descriptions are well-formed and valid.
40229However, to help people unfamiliar with XML write descriptions for
40230their targets, we also describe the grammar here.
40231
123dc839
DJ
40232Target descriptions can identify the architecture of the remote target
40233and (for some architectures) provide information about custom register
08d16641
PA
40234sets. They can also identify the OS ABI of the remote target.
40235@value{GDBN} can use this information to autoconfigure for your
123dc839 40236target, or to warn you if you connect to an unsupported target.
23181151
DJ
40237
40238Here is a simple target description:
40239
123dc839 40240@smallexample
1780a0ed 40241<target version="1.0">
23181151
DJ
40242 <architecture>i386:x86-64</architecture>
40243</target>
123dc839 40244@end smallexample
23181151
DJ
40245
40246@noindent
40247This minimal description only says that the target uses
40248the x86-64 architecture.
40249
123dc839
DJ
40250A target description has the following overall form, with [ ] marking
40251optional elements and @dots{} marking repeatable elements. The elements
40252are explained further below.
23181151 40253
123dc839 40254@smallexample
23181151
DJ
40255<?xml version="1.0"?>
40256<!DOCTYPE target SYSTEM "gdb-target.dtd">
1780a0ed 40257<target version="1.0">
123dc839 40258 @r{[}@var{architecture}@r{]}
08d16641 40259 @r{[}@var{osabi}@r{]}
e35359c5 40260 @r{[}@var{compatible}@r{]}
123dc839 40261 @r{[}@var{feature}@dots{}@r{]}
23181151 40262</target>
123dc839 40263@end smallexample
23181151
DJ
40264
40265@noindent
40266The description is generally insensitive to whitespace and line
40267breaks, under the usual common-sense rules. The XML version
40268declaration and document type declaration can generally be omitted
40269(@value{GDBN} does not require them), but specifying them may be
1780a0ed
DJ
40270useful for XML validation tools. The @samp{version} attribute for
40271@samp{<target>} may also be omitted, but we recommend
40272including it; if future versions of @value{GDBN} use an incompatible
40273revision of @file{gdb-target.dtd}, they will detect and report
40274the version mismatch.
23181151 40275
108546a0
DJ
40276@subsection Inclusion
40277@cindex target descriptions, inclusion
40278@cindex XInclude
40279@ifnotinfo
40280@cindex <xi:include>
40281@end ifnotinfo
40282
40283It can sometimes be valuable to split a target description up into
40284several different annexes, either for organizational purposes, or to
40285share files between different possible target descriptions. You can
40286divide a description into multiple files by replacing any element of
40287the target description with an inclusion directive of the form:
40288
123dc839 40289@smallexample
108546a0 40290<xi:include href="@var{document}"/>
123dc839 40291@end smallexample
108546a0
DJ
40292
40293@noindent
40294When @value{GDBN} encounters an element of this form, it will retrieve
40295the named XML @var{document}, and replace the inclusion directive with
40296the contents of that document. If the current description was read
40297using @samp{qXfer}, then so will be the included document;
40298@var{document} will be interpreted as the name of an annex. If the
40299current description was read from a file, @value{GDBN} will look for
40300@var{document} as a file in the same directory where it found the
40301original description.
40302
123dc839
DJ
40303@subsection Architecture
40304@cindex <architecture>
40305
40306An @samp{<architecture>} element has this form:
40307
40308@smallexample
40309 <architecture>@var{arch}</architecture>
40310@end smallexample
40311
e35359c5
UW
40312@var{arch} is one of the architectures from the set accepted by
40313@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
123dc839 40314
08d16641
PA
40315@subsection OS ABI
40316@cindex @code{<osabi>}
40317
40318This optional field was introduced in @value{GDBN} version 7.0.
40319Previous versions of @value{GDBN} ignore it.
40320
40321An @samp{<osabi>} element has this form:
40322
40323@smallexample
40324 <osabi>@var{abi-name}</osabi>
40325@end smallexample
40326
40327@var{abi-name} is an OS ABI name from the same selection accepted by
40328@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}).
40329
e35359c5
UW
40330@subsection Compatible Architecture
40331@cindex @code{<compatible>}
40332
40333This optional field was introduced in @value{GDBN} version 7.0.
40334Previous versions of @value{GDBN} ignore it.
40335
40336A @samp{<compatible>} element has this form:
40337
40338@smallexample
40339 <compatible>@var{arch}</compatible>
40340@end smallexample
40341
40342@var{arch} is one of the architectures from the set accepted by
40343@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
40344
40345A @samp{<compatible>} element is used to specify that the target
40346is able to run binaries in some other than the main target architecture
40347given by the @samp{<architecture>} element. For example, on the
40348Cell Broadband Engine, the main architecture is @code{powerpc:common}
40349or @code{powerpc:common64}, but the system is able to run binaries
40350in the @code{spu} architecture as well. The way to describe this
40351capability with @samp{<compatible>} is as follows:
40352
40353@smallexample
40354 <architecture>powerpc:common</architecture>
40355 <compatible>spu</compatible>
40356@end smallexample
40357
123dc839
DJ
40358@subsection Features
40359@cindex <feature>
40360
40361Each @samp{<feature>} describes some logical portion of the target
40362system. Features are currently used to describe available CPU
40363registers and the types of their contents. A @samp{<feature>} element
40364has this form:
40365
40366@smallexample
40367<feature name="@var{name}">
40368 @r{[}@var{type}@dots{}@r{]}
40369 @var{reg}@dots{}
40370</feature>
40371@end smallexample
40372
40373@noindent
40374Each feature's name should be unique within the description. The name
40375of a feature does not matter unless @value{GDBN} has some special
40376knowledge of the contents of that feature; if it does, the feature
40377should have its standard name. @xref{Standard Target Features}.
40378
40379@subsection Types
40380
40381Any register's value is a collection of bits which @value{GDBN} must
40382interpret. The default interpretation is a two's complement integer,
40383but other types can be requested by name in the register description.
40384Some predefined types are provided by @value{GDBN} (@pxref{Predefined
40385Target Types}), and the description can define additional composite types.
40386
40387Each type element must have an @samp{id} attribute, which gives
40388a unique (within the containing @samp{<feature>}) name to the type.
40389Types must be defined before they are used.
40390
40391@cindex <vector>
40392Some targets offer vector registers, which can be treated as arrays
40393of scalar elements. These types are written as @samp{<vector>} elements,
40394specifying the array element type, @var{type}, and the number of elements,
40395@var{count}:
40396
40397@smallexample
40398<vector id="@var{id}" type="@var{type}" count="@var{count}"/>
40399@end smallexample
40400
40401@cindex <union>
40402If a register's value is usefully viewed in multiple ways, define it
40403with a union type containing the useful representations. The
40404@samp{<union>} element contains one or more @samp{<field>} elements,
40405each of which has a @var{name} and a @var{type}:
40406
40407@smallexample
40408<union id="@var{id}">
40409 <field name="@var{name}" type="@var{type}"/>
40410 @dots{}
40411</union>
40412@end smallexample
40413
f5dff777
DJ
40414@cindex <struct>
40415If a register's value is composed from several separate values, define
40416it with a structure type. There are two forms of the @samp{<struct>}
40417element; a @samp{<struct>} element must either contain only bitfields
40418or contain no bitfields. If the structure contains only bitfields,
40419its total size in bytes must be specified, each bitfield must have an
40420explicit start and end, and bitfields are automatically assigned an
40421integer type. The field's @var{start} should be less than or
40422equal to its @var{end}, and zero represents the least significant bit.
40423
40424@smallexample
40425<struct id="@var{id}" size="@var{size}">
40426 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
40427 @dots{}
40428</struct>
40429@end smallexample
40430
40431If the structure contains no bitfields, then each field has an
40432explicit type, and no implicit padding is added.
40433
40434@smallexample
40435<struct id="@var{id}">
40436 <field name="@var{name}" type="@var{type}"/>
40437 @dots{}
40438</struct>
40439@end smallexample
40440
40441@cindex <flags>
40442If a register's value is a series of single-bit flags, define it with
40443a flags type. The @samp{<flags>} element has an explicit @var{size}
40444and contains one or more @samp{<field>} elements. Each field has a
40445@var{name}, a @var{start}, and an @var{end}. Only single-bit flags
40446are supported.
40447
40448@smallexample
40449<flags id="@var{id}" size="@var{size}">
40450 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
40451 @dots{}
40452</flags>
40453@end smallexample
40454
123dc839
DJ
40455@subsection Registers
40456@cindex <reg>
40457
40458Each register is represented as an element with this form:
40459
40460@smallexample
40461<reg name="@var{name}"
40462 bitsize="@var{size}"
40463 @r{[}regnum="@var{num}"@r{]}
40464 @r{[}save-restore="@var{save-restore}"@r{]}
40465 @r{[}type="@var{type}"@r{]}
40466 @r{[}group="@var{group}"@r{]}/>
40467@end smallexample
40468
40469@noindent
40470The components are as follows:
40471
40472@table @var
40473
40474@item name
40475The register's name; it must be unique within the target description.
40476
40477@item bitsize
40478The register's size, in bits.
40479
40480@item regnum
40481The register's number. If omitted, a register's number is one greater
40482than that of the previous register (either in the current feature or in
177b42fe 40483a preceding feature); the first register in the target description
123dc839
DJ
40484defaults to zero. This register number is used to read or write
40485the register; e.g.@: it is used in the remote @code{p} and @code{P}
40486packets, and registers appear in the @code{g} and @code{G} packets
40487in order of increasing register number.
40488
40489@item save-restore
40490Whether the register should be preserved across inferior function
40491calls; this must be either @code{yes} or @code{no}. The default is
40492@code{yes}, which is appropriate for most registers except for
40493some system control registers; this is not related to the target's
40494ABI.
40495
40496@item type
40497The type of the register. @var{type} may be a predefined type, a type
40498defined in the current feature, or one of the special types @code{int}
40499and @code{float}. @code{int} is an integer type of the correct size
40500for @var{bitsize}, and @code{float} is a floating point type (in the
40501architecture's normal floating point format) of the correct size for
40502@var{bitsize}. The default is @code{int}.
40503
40504@item group
40505The register group to which this register belongs. @var{group} must
40506be either @code{general}, @code{float}, or @code{vector}. If no
40507@var{group} is specified, @value{GDBN} will not display the register
40508in @code{info registers}.
40509
40510@end table
40511
40512@node Predefined Target Types
40513@section Predefined Target Types
40514@cindex target descriptions, predefined types
40515
40516Type definitions in the self-description can build up composite types
40517from basic building blocks, but can not define fundamental types. Instead,
40518standard identifiers are provided by @value{GDBN} for the fundamental
40519types. The currently supported types are:
40520
40521@table @code
40522
40523@item int8
40524@itemx int16
40525@itemx int32
40526@itemx int64
7cc46491 40527@itemx int128
123dc839
DJ
40528Signed integer types holding the specified number of bits.
40529
40530@item uint8
40531@itemx uint16
40532@itemx uint32
40533@itemx uint64
7cc46491 40534@itemx uint128
123dc839
DJ
40535Unsigned integer types holding the specified number of bits.
40536
40537@item code_ptr
40538@itemx data_ptr
40539Pointers to unspecified code and data. The program counter and
40540any dedicated return address register may be marked as code
40541pointers; printing a code pointer converts it into a symbolic
40542address. The stack pointer and any dedicated address registers
40543may be marked as data pointers.
40544
6e3bbd1a
PB
40545@item ieee_single
40546Single precision IEEE floating point.
40547
40548@item ieee_double
40549Double precision IEEE floating point.
40550
123dc839
DJ
40551@item arm_fpa_ext
40552The 12-byte extended precision format used by ARM FPA registers.
40553
075b51b7
L
40554@item i387_ext
40555The 10-byte extended precision format used by x87 registers.
40556
40557@item i386_eflags
4055832bit @sc{eflags} register used by x86.
40559
40560@item i386_mxcsr
4056132bit @sc{mxcsr} register used by x86.
40562
123dc839
DJ
40563@end table
40564
40565@node Standard Target Features
40566@section Standard Target Features
40567@cindex target descriptions, standard features
40568
40569A target description must contain either no registers or all the
40570target's registers. If the description contains no registers, then
40571@value{GDBN} will assume a default register layout, selected based on
40572the architecture. If the description contains any registers, the
40573default layout will not be used; the standard registers must be
40574described in the target description, in such a way that @value{GDBN}
40575can recognize them.
40576
40577This is accomplished by giving specific names to feature elements
40578which contain standard registers. @value{GDBN} will look for features
40579with those names and verify that they contain the expected registers;
40580if any known feature is missing required registers, or if any required
40581feature is missing, @value{GDBN} will reject the target
40582description. You can add additional registers to any of the
40583standard features --- @value{GDBN} will display them just as if
40584they were added to an unrecognized feature.
40585
40586This section lists the known features and their expected contents.
40587Sample XML documents for these features are included in the
40588@value{GDBN} source tree, in the directory @file{gdb/features}.
40589
40590Names recognized by @value{GDBN} should include the name of the
40591company or organization which selected the name, and the overall
40592architecture to which the feature applies; so e.g.@: the feature
40593containing ARM core registers is named @samp{org.gnu.gdb.arm.core}.
40594
ff6f572f
DJ
40595The names of registers are not case sensitive for the purpose
40596of recognizing standard features, but @value{GDBN} will only display
40597registers using the capitalization used in the description.
40598
e9c17194
VP
40599@menu
40600* ARM Features::
3bb8d5c3 40601* i386 Features::
1e26b4f8 40602* MIPS Features::
e9c17194 40603* M68K Features::
1e26b4f8 40604* PowerPC Features::
224bbe49 40605* TIC6x Features::
e9c17194
VP
40606@end menu
40607
40608
40609@node ARM Features
123dc839
DJ
40610@subsection ARM Features
40611@cindex target descriptions, ARM features
40612
9779414d
DJ
40613The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile
40614ARM targets.
123dc839
DJ
40615It should contain registers @samp{r0} through @samp{r13}, @samp{sp},
40616@samp{lr}, @samp{pc}, and @samp{cpsr}.
40617
9779414d
DJ
40618For M-profile targets (e.g. Cortex-M3), the @samp{org.gnu.gdb.arm.core}
40619feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain
40620registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc},
40621and @samp{xpsr}.
40622
123dc839
DJ
40623The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it
40624should contain registers @samp{f0} through @samp{f7} and @samp{fps}.
40625
ff6f572f
DJ
40626The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present,
40627it should contain at least registers @samp{wR0} through @samp{wR15} and
40628@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon},
40629@samp{wCSSF}, and @samp{wCASF} registers are optional.
23181151 40630
58d6951d
DJ
40631The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it
40632should contain at least registers @samp{d0} through @samp{d15}. If
40633they are present, @samp{d16} through @samp{d31} should also be included.
40634@value{GDBN} will synthesize the single-precision registers from
40635halves of the double-precision registers.
40636
40637The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not
40638need to contain registers; it instructs @value{GDBN} to display the
40639VFP double-precision registers as vectors and to synthesize the
40640quad-precision registers from pairs of double-precision registers.
40641If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also
40642be present and include 32 double-precision registers.
40643
3bb8d5c3
L
40644@node i386 Features
40645@subsection i386 Features
40646@cindex target descriptions, i386 features
40647
40648The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64
40649targets. It should describe the following registers:
40650
40651@itemize @minus
40652@item
40653@samp{eax} through @samp{edi} plus @samp{eip} for i386
40654@item
40655@samp{rax} through @samp{r15} plus @samp{rip} for amd64
40656@item
40657@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es},
40658@samp{fs}, @samp{gs}
40659@item
40660@samp{st0} through @samp{st7}
40661@item
40662@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff},
40663@samp{foseg}, @samp{fooff} and @samp{fop}
40664@end itemize
40665
40666The register sets may be different, depending on the target.
40667
3a13a53b 40668The @samp{org.gnu.gdb.i386.sse} feature is optional. It should
3bb8d5c3
L
40669describe registers:
40670
40671@itemize @minus
40672@item
40673@samp{xmm0} through @samp{xmm7} for i386
40674@item
40675@samp{xmm0} through @samp{xmm15} for amd64
40676@item
40677@samp{mxcsr}
40678@end itemize
40679
3a13a53b
L
40680The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the
40681@samp{org.gnu.gdb.i386.sse} feature. It should
f68eb612
L
40682describe the upper 128 bits of @sc{ymm} registers:
40683
40684@itemize @minus
40685@item
40686@samp{ymm0h} through @samp{ymm7h} for i386
40687@item
40688@samp{ymm0h} through @samp{ymm15h} for amd64
f68eb612
L
40689@end itemize
40690
3bb8d5c3
L
40691The @samp{org.gnu.gdb.i386.linux} feature is optional. It should
40692describe a single register, @samp{orig_eax}.
40693
1e26b4f8 40694@node MIPS Features
eb17f351
EZ
40695@subsection @acronym{MIPS} Features
40696@cindex target descriptions, @acronym{MIPS} features
f8b73d13 40697
eb17f351 40698The @samp{org.gnu.gdb.mips.cpu} feature is required for @acronym{MIPS} targets.
f8b73d13
DJ
40699It should contain registers @samp{r0} through @samp{r31}, @samp{lo},
40700@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending
40701on the target.
40702
40703The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should
40704contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause}
40705registers. They may be 32-bit or 64-bit depending on the target.
40706
40707The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though
40708it may be optional in a future version of @value{GDBN}. It should
40709contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and
40710@samp{fir}. They may be 32-bit or 64-bit depending on the target.
40711
1faeff08
MR
40712The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should
40713contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through
40714@samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should
40715be 32-bit and the rest may be 32-bit or 64-bit depending on the target.
40716
822b6570
DJ
40717The @samp{org.gnu.gdb.mips.linux} feature is optional. It should
40718contain a single register, @samp{restart}, which is used by the
40719Linux kernel to control restartable syscalls.
40720
e9c17194
VP
40721@node M68K Features
40722@subsection M68K Features
40723@cindex target descriptions, M68K features
40724
40725@table @code
40726@item @samp{org.gnu.gdb.m68k.core}
40727@itemx @samp{org.gnu.gdb.coldfire.core}
40728@itemx @samp{org.gnu.gdb.fido.core}
40729One of those features must be always present.
249e1128 40730The feature that is present determines which flavor of m68k is
e9c17194
VP
40731used. The feature that is present should contain registers
40732@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp},
40733@samp{sp}, @samp{ps} and @samp{pc}.
40734
40735@item @samp{org.gnu.gdb.coldfire.fp}
40736This feature is optional. If present, it should contain registers
40737@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
40738@samp{fpiaddr}.
40739@end table
40740
1e26b4f8 40741@node PowerPC Features
7cc46491
DJ
40742@subsection PowerPC Features
40743@cindex target descriptions, PowerPC features
40744
40745The @samp{org.gnu.gdb.power.core} feature is required for PowerPC
40746targets. It should contain registers @samp{r0} through @samp{r31},
40747@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and
40748@samp{xer}. They may be 32-bit or 64-bit depending on the target.
40749
40750The @samp{org.gnu.gdb.power.fpu} feature is optional. It should
40751contain registers @samp{f0} through @samp{f31} and @samp{fpscr}.
40752
40753The @samp{org.gnu.gdb.power.altivec} feature is optional. It should
40754contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
40755and @samp{vrsave}.
40756
677c5bb1
LM
40757The @samp{org.gnu.gdb.power.vsx} feature is optional. It should
40758contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN}
40759will combine these registers with the floating point registers
40760(@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0}
aeac0ff9 40761through @samp{vr31}) to present the 128-bit wide registers @samp{vs0}
677c5bb1
LM
40762through @samp{vs63}, the set of vector registers for POWER7.
40763
7cc46491
DJ
40764The @samp{org.gnu.gdb.power.spe} feature is optional. It should
40765contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
40766@samp{spefscr}. SPE targets should provide 32-bit registers in
40767@samp{org.gnu.gdb.power.core} and provide the upper halves in
40768@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine
40769these to present registers @samp{ev0} through @samp{ev31} to the
40770user.
40771
224bbe49
YQ
40772@node TIC6x Features
40773@subsection TMS320C6x Features
40774@cindex target descriptions, TIC6x features
40775@cindex target descriptions, TMS320C6x features
40776The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x
40777targets. It should contain registers @samp{A0} through @samp{A15},
40778registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}.
40779
40780The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should
40781contain registers @samp{A16} through @samp{A31} and @samp{B16}
40782through @samp{B31}.
40783
40784The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should
40785contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}.
40786
07e059b5
VP
40787@node Operating System Information
40788@appendix Operating System Information
40789@cindex operating system information
40790
40791@menu
40792* Process list::
40793@end menu
40794
40795Users of @value{GDBN} often wish to obtain information about the state of
40796the operating system running on the target---for example the list of
40797processes, or the list of open files. This section describes the
40798mechanism that makes it possible. This mechanism is similar to the
40799target features mechanism (@pxref{Target Descriptions}), but focuses
40800on a different aspect of target.
40801
40802Operating system information is retrived from the target via the
40803remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata
40804read}). The object name in the request should be @samp{osdata}, and
40805the @var{annex} identifies the data to be fetched.
40806
40807@node Process list
40808@appendixsection Process list
40809@cindex operating system information, process list
40810
40811When requesting the process list, the @var{annex} field in the
40812@samp{qXfer} request should be @samp{processes}. The returned data is
40813an XML document. The formal syntax of this document is defined in
40814@file{gdb/features/osdata.dtd}.
40815
40816An example document is:
40817
40818@smallexample
40819<?xml version="1.0"?>
40820<!DOCTYPE target SYSTEM "osdata.dtd">
40821<osdata type="processes">
40822 <item>
40823 <column name="pid">1</column>
40824 <column name="user">root</column>
40825 <column name="command">/sbin/init</column>
dc146f7c 40826 <column name="cores">1,2,3</column>
07e059b5
VP
40827 </item>
40828</osdata>
40829@end smallexample
40830
40831Each item should include a column whose name is @samp{pid}. The value
40832of that column should identify the process on the target. The
40833@samp{user} and @samp{command} columns are optional, and will be
dc146f7c
VP
40834displayed by @value{GDBN}. The @samp{cores} column, if present,
40835should contain a comma-separated list of cores that this process
40836is running on. Target may provide additional columns,
07e059b5
VP
40837which @value{GDBN} currently ignores.
40838
05c8c3f5
TT
40839@node Trace File Format
40840@appendix Trace File Format
40841@cindex trace file format
40842
40843The trace file comes in three parts: a header, a textual description
40844section, and a trace frame section with binary data.
40845
40846The header has the form @code{\x7fTRACE0\n}. The first byte is
40847@code{0x7f} so as to indicate that the file contains binary data,
40848while the @code{0} is a version number that may have different values
40849in the future.
40850
40851The description section consists of multiple lines of @sc{ascii} text
40852separated by newline characters (@code{0xa}). The lines may include a
40853variety of optional descriptive or context-setting information, such
40854as tracepoint definitions or register set size. @value{GDBN} will
40855ignore any line that it does not recognize. An empty line marks the end
40856of this section.
40857
40858@c FIXME add some specific types of data
40859
40860The trace frame section consists of a number of consecutive frames.
40861Each frame begins with a two-byte tracepoint number, followed by a
40862four-byte size giving the amount of data in the frame. The data in
40863the frame consists of a number of blocks, each introduced by a
40864character indicating its type (at least register, memory, and trace
40865state variable). The data in this section is raw binary, not a
40866hexadecimal or other encoding; its endianness matches the target's
40867endianness.
40868
40869@c FIXME bi-arch may require endianness/arch info in description section
40870
40871@table @code
40872@item R @var{bytes}
40873Register block. The number and ordering of bytes matches that of a
40874@code{g} packet in the remote protocol. Note that these are the
40875actual bytes, in target order and @value{GDBN} register order, not a
40876hexadecimal encoding.
40877
40878@item M @var{address} @var{length} @var{bytes}...
40879Memory block. This is a contiguous block of memory, at the 8-byte
40880address @var{address}, with a 2-byte length @var{length}, followed by
40881@var{length} bytes.
40882
40883@item V @var{number} @var{value}
40884Trace state variable block. This records the 8-byte signed value
40885@var{value} of trace state variable numbered @var{number}.
40886
40887@end table
40888
40889Future enhancements of the trace file format may include additional types
40890of blocks.
40891
90476074
TT
40892@node Index Section Format
40893@appendix @code{.gdb_index} section format
40894@cindex .gdb_index section format
40895@cindex index section format
40896
40897This section documents the index section that is created by @code{save
40898gdb-index} (@pxref{Index Files}). The index section is
40899DWARF-specific; some knowledge of DWARF is assumed in this
40900description.
40901
40902The mapped index file format is designed to be directly
40903@code{mmap}able on any architecture. In most cases, a datum is
40904represented using a little-endian 32-bit integer value, called an
40905@code{offset_type}. Big endian machines must byte-swap the values
40906before using them. Exceptions to this rule are noted. The data is
40907laid out such that alignment is always respected.
40908
40909A mapped index consists of several areas, laid out in order.
40910
40911@enumerate
40912@item
40913The file header. This is a sequence of values, of @code{offset_type}
40914unless otherwise noted:
40915
40916@enumerate
40917@item
b6ba681c 40918The version number, currently 7. Versions 1, 2 and 3 are obsolete.
481860b3 40919Version 4 uses a different hashing function from versions 5 and 6.
b6ba681c
TT
40920Version 6 includes symbols for inlined functions, whereas versions 4
40921and 5 do not. Version 7 adds attributes to the CU indices in the
40922symbol table. @value{GDBN} will only read version 4, 5, or 6 indices
e615022a 40923by specifying @code{set use-deprecated-index-sections on}.
90476074
TT
40924
40925@item
40926The offset, from the start of the file, of the CU list.
40927
40928@item
40929The offset, from the start of the file, of the types CU list. Note
40930that this area can be empty, in which case this offset will be equal
40931to the next offset.
40932
40933@item
40934The offset, from the start of the file, of the address area.
40935
40936@item
40937The offset, from the start of the file, of the symbol table.
40938
40939@item
40940The offset, from the start of the file, of the constant pool.
40941@end enumerate
40942
40943@item
40944The CU list. This is a sequence of pairs of 64-bit little-endian
40945values, sorted by the CU offset. The first element in each pair is
40946the offset of a CU in the @code{.debug_info} section. The second
40947element in each pair is the length of that CU. References to a CU
40948elsewhere in the map are done using a CU index, which is just the
409490-based index into this table. Note that if there are type CUs, then
40950conceptually CUs and type CUs form a single list for the purposes of
40951CU indices.
40952
40953@item
40954The types CU list. This is a sequence of triplets of 64-bit
40955little-endian values. In a triplet, the first value is the CU offset,
40956the second value is the type offset in the CU, and the third value is
40957the type signature. The types CU list is not sorted.
40958
40959@item
40960The address area. The address area consists of a sequence of address
40961entries. Each address entry has three elements:
40962
40963@enumerate
40964@item
40965The low address. This is a 64-bit little-endian value.
40966
40967@item
40968The high address. This is a 64-bit little-endian value. Like
40969@code{DW_AT_high_pc}, the value is one byte beyond the end.
40970
40971@item
40972The CU index. This is an @code{offset_type} value.
40973@end enumerate
40974
40975@item
40976The symbol table. This is an open-addressed hash table. The size of
40977the hash table is always a power of 2.
40978
40979Each slot in the hash table consists of a pair of @code{offset_type}
40980values. The first value is the offset of the symbol's name in the
40981constant pool. The second value is the offset of the CU vector in the
40982constant pool.
40983
40984If both values are 0, then this slot in the hash table is empty. This
40985is ok because while 0 is a valid constant pool index, it cannot be a
40986valid index for both a string and a CU vector.
40987
40988The hash value for a table entry is computed by applying an
40989iterative hash function to the symbol's name. Starting with an
40990initial value of @code{r = 0}, each (unsigned) character @samp{c} in
559a7a62
JK
40991the string is incorporated into the hash using the formula depending on the
40992index version:
40993
40994@table @asis
40995@item Version 4
40996The formula is @code{r = r * 67 + c - 113}.
40997
156942c7 40998@item Versions 5 to 7
559a7a62
JK
40999The formula is @code{r = r * 67 + tolower (c) - 113}.
41000@end table
41001
41002The terminating @samp{\0} is not incorporated into the hash.
90476074
TT
41003
41004The step size used in the hash table is computed via
41005@code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash
41006value, and @samp{size} is the size of the hash table. The step size
41007is used to find the next candidate slot when handling a hash
41008collision.
41009
41010The names of C@t{++} symbols in the hash table are canonicalized. We
41011don't currently have a simple description of the canonicalization
41012algorithm; if you intend to create new index sections, you must read
41013the code.
41014
41015@item
41016The constant pool. This is simply a bunch of bytes. It is organized
41017so that alignment is correct: CU vectors are stored first, followed by
41018strings.
41019
41020A CU vector in the constant pool is a sequence of @code{offset_type}
41021values. The first value is the number of CU indices in the vector.
156942c7
DE
41022Each subsequent value is the index and symbol attributes of a CU in
41023the CU list. This element in the hash table is used to indicate which
41024CUs define the symbol and how the symbol is used.
41025See below for the format of each CU index+attributes entry.
90476074
TT
41026
41027A string in the constant pool is zero-terminated.
41028@end enumerate
41029
156942c7
DE
41030Attributes were added to CU index values in @code{.gdb_index} version 7.
41031If a symbol has multiple uses within a CU then there is one
41032CU index+attributes value for each use.
41033
41034The format of each CU index+attributes entry is as follows
41035(bit 0 = LSB):
41036
41037@table @asis
41038
41039@item Bits 0-23
41040This is the index of the CU in the CU list.
41041@item Bits 24-27
41042These bits are reserved for future purposes and must be zero.
41043@item Bits 28-30
41044The kind of the symbol in the CU.
41045
41046@table @asis
41047@item 0
41048This value is reserved and should not be used.
41049By reserving zero the full @code{offset_type} value is backwards compatible
41050with previous versions of the index.
41051@item 1
41052The symbol is a type.
41053@item 2
41054The symbol is a variable or an enum value.
41055@item 3
41056The symbol is a function.
41057@item 4
41058Any other kind of symbol.
41059@item 5,6,7
41060These values are reserved.
41061@end table
41062
41063@item Bit 31
41064This bit is zero if the value is global and one if it is static.
41065
41066The determination of whether a symbol is global or static is complicated.
41067The authorative reference is the file @file{dwarf2read.c} in
41068@value{GDBN} sources.
41069
41070@end table
41071
41072This pseudo-code describes the computation of a symbol's kind and
41073global/static attributes in the index.
41074
41075@smallexample
41076is_external = get_attribute (die, DW_AT_external);
41077language = get_attribute (cu_die, DW_AT_language);
41078switch (die->tag)
41079 @{
41080 case DW_TAG_typedef:
41081 case DW_TAG_base_type:
41082 case DW_TAG_subrange_type:
41083 kind = TYPE;
41084 is_static = 1;
41085 break;
41086 case DW_TAG_enumerator:
41087 kind = VARIABLE;
41088 is_static = (language != CPLUS && language != JAVA);
41089 break;
41090 case DW_TAG_subprogram:
41091 kind = FUNCTION;
41092 is_static = ! (is_external || language == ADA);
41093 break;
41094 case DW_TAG_constant:
41095 kind = VARIABLE;
41096 is_static = ! is_external;
41097 break;
41098 case DW_TAG_variable:
41099 kind = VARIABLE;
41100 is_static = ! is_external;
41101 break;
41102 case DW_TAG_namespace:
41103 kind = TYPE;
41104 is_static = 0;
41105 break;
41106 case DW_TAG_class_type:
41107 case DW_TAG_interface_type:
41108 case DW_TAG_structure_type:
41109 case DW_TAG_union_type:
41110 case DW_TAG_enumeration_type:
41111 kind = TYPE;
41112 is_static = (language != CPLUS && language != JAVA);
41113 break;
41114 default:
41115 assert (0);
41116 @}
41117@end smallexample
41118
aab4e0ec 41119@include gpl.texi
eb12ee30 41120
e4c0cfae
SS
41121@node GNU Free Documentation License
41122@appendix GNU Free Documentation License
6826cf00
EZ
41123@include fdl.texi
41124
00595b5e
EZ
41125@node Concept Index
41126@unnumbered Concept Index
c906108c
SS
41127
41128@printindex cp
41129
00595b5e
EZ
41130@node Command and Variable Index
41131@unnumbered Command, Variable, and Function Index
41132
41133@printindex fn
41134
c906108c 41135@tex
984359d2 41136% I think something like @@colophon should be in texinfo. In the
c906108c
SS
41137% meantime:
41138\long\def\colophon{\hbox to0pt{}\vfill
41139\centerline{The body of this manual is set in}
41140\centerline{\fontname\tenrm,}
41141\centerline{with headings in {\bf\fontname\tenbf}}
41142\centerline{and examples in {\tt\fontname\tentt}.}
41143\centerline{{\it\fontname\tenit\/},}
41144\centerline{{\bf\fontname\tenbf}, and}
41145\centerline{{\sl\fontname\tensl\/}}
41146\centerline{are used for emphasis.}\vfill}
41147\page\colophon
984359d2 41148% Blame: doc@@cygnus.com, 1991.
c906108c
SS
41149@end tex
41150
c906108c 41151@bye
This page took 6.958689 seconds and 4 git commands to generate.