Add missing file from my previous commit.
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
CommitLineData
c906108c 1\input texinfo @c -*-texinfo-*-
c02a867d 2@c Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
9d2897ad 3@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
c906108c
SS
4@c Free Software Foundation, Inc.
5@c
5d161b24 6@c %**start of header
c906108c
SS
7@c makeinfo ignores cmds prev to setfilename, so its arg cannot make use
8@c of @set vars. However, you can override filename with makeinfo -o.
9@setfilename gdb.info
10@c
11@include gdb-cfg.texi
12@c
c906108c 13@settitle Debugging with @value{GDBN}
c906108c
SS
14@setchapternewpage odd
15@c %**end of header
16
17@iftex
18@c @smallbook
19@c @cropmarks
20@end iftex
21
22@finalout
23@syncodeindex ky cp
89c73ade 24@syncodeindex tp cp
c906108c 25
41afff9a 26@c readline appendices use @vindex, @findex and @ftable,
48e934c6 27@c annotate.texi and gdbmi use @findex.
c906108c 28@syncodeindex vr cp
41afff9a 29@syncodeindex fn cp
c906108c
SS
30
31@c !!set GDB manual's edition---not the same as GDB version!
9fe8321b 32@c This is updated by GNU Press.
e9c75b65 33@set EDITION Ninth
c906108c 34
87885426
FN
35@c !!set GDB edit command default editor
36@set EDITOR /bin/ex
c906108c 37
6c0e9fb3 38@c THIS MANUAL REQUIRES TEXINFO 4.0 OR LATER.
c906108c 39
c906108c 40@c This is a dir.info fragment to support semi-automated addition of
6d2ebf8b 41@c manuals to an info tree.
03727ca6 42@dircategory Software development
96a2c332 43@direntry
03727ca6 44* Gdb: (gdb). The GNU debugger.
96a2c332
SS
45@end direntry
46
a67ec3f4
JM
47@copying
48Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
9d2897ad 491998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
a67ec3f4 50Free Software Foundation, Inc.
c906108c 51
e9c75b65
EZ
52Permission is granted to copy, distribute and/or modify this document
53under the terms of the GNU Free Documentation License, Version 1.1 or
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@*
6d2ebf8b 100ISBN 1-882114-77-9 @*
e9c75b65 101
a67ec3f4 102@insertcopying
3fb6a982
JB
103@page
104This edition of the GDB manual is dedicated to the memory of Fred
105Fish. Fred was a long-standing contributor to GDB and to Free
106software in general. We will miss him.
c906108c
SS
107@end titlepage
108@page
109
6c0e9fb3 110@ifnottex
6d2ebf8b
SS
111@node Top, Summary, (dir), (dir)
112
c906108c
SS
113@top Debugging with @value{GDBN}
114
115This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
116
c16158bc
JM
117This is the @value{EDITION} Edition, for @value{GDBN}
118@ifset VERSION_PACKAGE
119@value{VERSION_PACKAGE}
120@end ifset
121Version @value{GDBVN}.
c906108c 122
9d2897ad 123Copyright (C) 1988-2010 Free Software Foundation, Inc.
6d2ebf8b 124
3fb6a982
JB
125This edition of the GDB manual is dedicated to the memory of Fred
126Fish. Fred was a long-standing contributor to GDB and to Free
127software in general. We will miss him.
128
6d2ebf8b
SS
129@menu
130* Summary:: Summary of @value{GDBN}
131* Sample Session:: A sample @value{GDBN} session
132
133* Invocation:: Getting in and out of @value{GDBN}
134* Commands:: @value{GDBN} commands
135* Running:: Running programs under @value{GDBN}
136* Stopping:: Stopping and continuing
bacec72f 137* Reverse Execution:: Running programs backward
a2311334 138* Process Record and Replay:: Recording inferior's execution and replaying it
6d2ebf8b
SS
139* Stack:: Examining the stack
140* Source:: Examining source files
141* Data:: Examining data
edb3359d 142* Optimized Code:: Debugging optimized code
e2e0bcd1 143* Macros:: Preprocessor Macros
b37052ae 144* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 145* Overlays:: Debugging programs that use overlays
6d2ebf8b
SS
146
147* Languages:: Using @value{GDBN} with different languages
148
149* Symbols:: Examining the symbol table
150* Altering:: Altering execution
151* GDB Files:: @value{GDBN} files
152* Targets:: Specifying a debugging target
6b2f586d 153* Remote Debugging:: Debugging remote programs
6d2ebf8b
SS
154* Configurations:: Configuration-specific information
155* Controlling GDB:: Controlling @value{GDBN}
d57a3c85 156* Extending GDB:: Extending @value{GDBN}
21c294e6 157* Interpreters:: Command Interpreters
c8f4133a 158* TUI:: @value{GDBN} Text User Interface
6d2ebf8b 159* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
7162c0ca 160* GDB/MI:: @value{GDBN}'s Machine Interface.
c8f4133a 161* Annotations:: @value{GDBN}'s annotation interface.
4efc6507 162* JIT Interface:: Using the JIT debugging interface.
6d2ebf8b
SS
163
164* GDB Bugs:: Reporting bugs in @value{GDBN}
6d2ebf8b
SS
165
166* Command Line Editing:: Command Line Editing
167* Using History Interactively:: Using History Interactively
0869d01b 168* Formatting Documentation:: How to format and print @value{GDBN} documentation
6d2ebf8b 169* Installing GDB:: Installing GDB
eb12ee30 170* Maintenance Commands:: Maintenance Commands
e0ce93ac 171* Remote Protocol:: GDB Remote Serial Protocol
f418dd93 172* Agent Expressions:: The GDB Agent Expression Mechanism
23181151
DJ
173* Target Descriptions:: How targets can describe themselves to
174 @value{GDBN}
07e059b5
VP
175* Operating System Information:: Getting additional information from
176 the operating system
00bf0b85 177* Trace File Format:: GDB trace file format
aab4e0ec
AC
178* Copying:: GNU General Public License says
179 how you can copy and share GDB
6826cf00 180* GNU Free Documentation License:: The license for this documentation
6d2ebf8b
SS
181* Index:: Index
182@end menu
183
6c0e9fb3 184@end ifnottex
c906108c 185
449f3b6c 186@contents
449f3b6c 187
6d2ebf8b 188@node Summary
c906108c
SS
189@unnumbered Summary of @value{GDBN}
190
191The purpose of a debugger such as @value{GDBN} is to allow you to see what is
192going on ``inside'' another program while it executes---or what another
193program was doing at the moment it crashed.
194
195@value{GDBN} can do four main kinds of things (plus other things in support of
196these) to help you catch bugs in the act:
197
198@itemize @bullet
199@item
200Start your program, specifying anything that might affect its behavior.
201
202@item
203Make your program stop on specified conditions.
204
205@item
206Examine what has happened, when your program has stopped.
207
208@item
209Change things in your program, so you can experiment with correcting the
210effects of one bug and go on to learn about another.
211@end itemize
212
49efadf5 213You can use @value{GDBN} to debug programs written in C and C@t{++}.
79a6e687 214For more information, see @ref{Supported Languages,,Supported Languages}.
c906108c
SS
215For more information, see @ref{C,,C and C++}.
216
cce74817 217@cindex Modula-2
e632838e
AC
218Support for Modula-2 is partial. For information on Modula-2, see
219@ref{Modula-2,,Modula-2}.
c906108c 220
cce74817
JM
221@cindex Pascal
222Debugging Pascal programs which use sets, subranges, file variables, or
223nested functions does not currently work. @value{GDBN} does not support
224entering expressions, printing values, or similar features using Pascal
225syntax.
c906108c 226
c906108c
SS
227@cindex Fortran
228@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 229it may be necessary to refer to some variables with a trailing
cce74817 230underscore.
c906108c 231
b37303ee
AF
232@value{GDBN} can be used to debug programs written in Objective-C,
233using either the Apple/NeXT or the GNU Objective-C runtime.
234
c906108c
SS
235@menu
236* Free Software:: Freely redistributable software
237* Contributors:: Contributors to GDB
238@end menu
239
6d2ebf8b 240@node Free Software
79a6e687 241@unnumberedsec Free Software
c906108c 242
5d161b24 243@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
c906108c
SS
244General Public License
245(GPL). The GPL gives you the freedom to copy or adapt a licensed
246program---but every person getting a copy also gets with it the
247freedom to modify that copy (which means that they must get access to
248the source code), and the freedom to distribute further copies.
249Typical software companies use copyrights to limit your freedoms; the
250Free Software Foundation uses the GPL to preserve these freedoms.
251
252Fundamentally, the General Public License is a license which says that
253you have these freedoms and that you cannot take these freedoms away
254from anyone else.
255
2666264b 256@unnumberedsec Free Software Needs Free Documentation
959acfd1
EZ
257
258The biggest deficiency in the free software community today is not in
259the software---it is the lack of good free documentation that we can
260include with the free software. Many of our most important
261programs do not come with free reference manuals and free introductory
262texts. Documentation is an essential part of any software package;
263when an important free software package does not come with a free
264manual and a free tutorial, that is a major gap. We have many such
265gaps today.
266
267Consider Perl, for instance. The tutorial manuals that people
268normally use are non-free. How did this come about? Because the
269authors of those manuals published them with restrictive terms---no
270copying, no modification, source files not available---which exclude
271them from the free software world.
272
273That wasn't the first time this sort of thing happened, and it was far
274from the last. Many times we have heard a GNU user eagerly describe a
275manual that he is writing, his intended contribution to the community,
276only to learn that he had ruined everything by signing a publication
277contract to make it non-free.
278
279Free documentation, like free software, is a matter of freedom, not
280price. The problem with the non-free manual is not that publishers
281charge a price for printed copies---that in itself is fine. (The Free
282Software Foundation sells printed copies of manuals, too.) The
283problem is the restrictions on the use of the manual. Free manuals
284are available in source code form, and give you permission to copy and
285modify. Non-free manuals do not allow this.
286
287The criteria of freedom for a free manual are roughly the same as for
288free software. Redistribution (including the normal kinds of
289commercial redistribution) must be permitted, so that the manual can
290accompany every copy of the program, both on-line and on paper.
291
292Permission for modification of the technical content is crucial too.
293When people modify the software, adding or changing features, if they
294are conscientious they will change the manual too---so they can
295provide accurate and clear documentation for the modified program. A
296manual that leaves you no choice but to write a new manual to document
297a changed version of the program is not really available to our
298community.
299
300Some kinds of limits on the way modification is handled are
301acceptable. For example, requirements to preserve the original
302author's copyright notice, the distribution terms, or the list of
303authors, are ok. It is also no problem to require modified versions
304to include notice that they were modified. Even entire sections that
305may not be deleted or changed are acceptable, as long as they deal
306with nontechnical topics (like this one). These kinds of restrictions
307are acceptable because they don't obstruct the community's normal use
308of the manual.
309
310However, it must be possible to modify all the @emph{technical}
311content of the manual, and then distribute the result in all the usual
312media, through all the usual channels. Otherwise, the restrictions
313obstruct the use of the manual, it is not free, and we need another
314manual to replace it.
315
316Please spread the word about this issue. Our community continues to
317lose manuals to proprietary publishing. If we spread the word that
318free software needs free reference manuals and free tutorials, perhaps
319the next person who wants to contribute by writing documentation will
320realize, before it is too late, that only free manuals contribute to
321the free software community.
322
323If you are writing documentation, please insist on publishing it under
324the GNU Free Documentation License or another free documentation
325license. Remember that this decision requires your approval---you
326don't have to let the publisher decide. Some commercial publishers
327will use a free license if you insist, but they will not propose the
328option; it is up to you to raise the issue and say firmly that this is
329what you want. If the publisher you are dealing with refuses, please
330try other publishers. If you're not sure whether a proposed license
42584a72 331is free, write to @email{licensing@@gnu.org}.
959acfd1
EZ
332
333You can encourage commercial publishers to sell more free, copylefted
334manuals and tutorials by buying them, and particularly by buying
335copies from the publishers that paid for their writing or for major
336improvements. Meanwhile, try to avoid buying non-free documentation
337at all. Check the distribution terms of a manual before you buy it,
338and insist that whoever seeks your business must respect your freedom.
72c9928d
EZ
339Check the history of the book, and try to reward the publishers that
340have paid or pay the authors to work on it.
959acfd1
EZ
341
342The Free Software Foundation maintains a list of free documentation
343published by other publishers, at
344@url{http://www.fsf.org/doc/other-free-books.html}.
345
6d2ebf8b 346@node Contributors
96a2c332
SS
347@unnumberedsec Contributors to @value{GDBN}
348
349Richard Stallman was the original author of @value{GDBN}, and of many
350other @sc{gnu} programs. Many others have contributed to its
351development. This section attempts to credit major contributors. One
352of the virtues of free software is that everyone is free to contribute
353to it; with regret, we cannot actually acknowledge everyone here. The
354file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
355blow-by-blow account.
356
357Changes much prior to version 2.0 are lost in the mists of time.
358
359@quotation
360@emph{Plea:} Additions to this section are particularly welcome. If you
361or your friends (or enemies, to be evenhanded) have been unfairly
362omitted from this list, we would like to add your names!
363@end quotation
364
365So that they may not regard their many labors as thankless, we
366particularly thank those who shepherded @value{GDBN} through major
367releases:
7ba3cf9c 368Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0);
c906108c
SS
369Jim Blandy (release 4.18);
370Jason Molenda (release 4.17);
371Stan Shebs (release 4.14);
372Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
373Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
374John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
375Jim Kingdon (releases 3.5, 3.4, and 3.3);
376and Randy Smith (releases 3.2, 3.1, and 3.0).
377
378Richard Stallman, assisted at various times by Peter TerMaat, Chris
379Hanson, and Richard Mlynarik, handled releases through 2.8.
380
b37052ae
EZ
381Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
382in @value{GDBN}, with significant additional contributions from Per
383Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
384demangler. Early work on C@t{++} was by Peter TerMaat (who also did
385much general update work leading to release 3.0).
c906108c 386
b37052ae 387@value{GDBN} uses the BFD subroutine library to examine multiple
c906108c
SS
388object-file formats; BFD was a joint project of David V.
389Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
390
391David Johnson wrote the original COFF support; Pace Willison did
392the original support for encapsulated COFF.
393
0179ffac 394Brent Benson of Harris Computer Systems contributed DWARF 2 support.
c906108c
SS
395
396Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
397Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
398support.
399Jean-Daniel Fekete contributed Sun 386i support.
400Chris Hanson improved the HP9000 support.
401Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
402David Johnson contributed Encore Umax support.
403Jyrki Kuoppala contributed Altos 3068 support.
404Jeff Law contributed HP PA and SOM support.
405Keith Packard contributed NS32K support.
406Doug Rabson contributed Acorn Risc Machine support.
407Bob Rusk contributed Harris Nighthawk CX-UX support.
408Chris Smith contributed Convex support (and Fortran debugging).
409Jonathan Stone contributed Pyramid support.
410Michael Tiemann contributed SPARC support.
411Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
412Pace Willison contributed Intel 386 support.
413Jay Vosburgh contributed Symmetry support.
a37295f9 414Marko Mlinar contributed OpenRISC 1000 support.
c906108c 415
1104b9e7 416Andreas Schwab contributed M68K @sc{gnu}/Linux support.
c906108c
SS
417
418Rich Schaefer and Peter Schauer helped with support of SunOS shared
419libraries.
420
421Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
422about several machine instruction sets.
423
424Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
425remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
426contributed remote debugging modules for the i960, VxWorks, A29K UDI,
427and RDI targets, respectively.
428
429Brian Fox is the author of the readline libraries providing
430command-line editing and command history.
431
7a292a7a
SS
432Andrew Beers of SUNY Buffalo wrote the language-switching code, the
433Modula-2 support, and contributed the Languages chapter of this manual.
c906108c 434
5d161b24 435Fred Fish wrote most of the support for Unix System Vr4.
b37052ae 436He also enhanced the command-completion support to cover C@t{++} overloaded
c906108c 437symbols.
c906108c 438
f24c5e49
KI
439Hitachi America (now Renesas America), Ltd. sponsored the support for
440H8/300, H8/500, and Super-H processors.
c906108c
SS
441
442NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
443
f24c5e49
KI
444Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D
445processors.
c906108c
SS
446
447Toshiba sponsored the support for the TX39 Mips processor.
448
449Matsushita sponsored the support for the MN10200 and MN10300 processors.
450
96a2c332 451Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
452
453Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
454watchpoints.
455
456Michael Snyder added support for tracepoints.
457
458Stu Grossman wrote gdbserver.
459
460Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 461nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
462
463The following people at the Hewlett-Packard Company contributed
464support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
b37052ae 465(narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
d0d5df6f
AC
466compiler, and the Text User Interface (nee Terminal User Interface):
467Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann,
468Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase
469provided HP-specific information in this manual.
c906108c 470
b37052ae
EZ
471DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
472Robert Hoehne made significant contributions to the DJGPP port.
473
96a2c332
SS
474Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
475development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
476fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
477Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
478Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
479Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
480Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
481addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
482JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
483Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
484Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
485Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
486Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
487Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
488Zuhn have made contributions both large and small.
c906108c 489
ffed4509
AC
490Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for
491Cygnus Solutions, implemented the original @sc{gdb/mi} interface.
492
e2e0bcd1
JB
493Jim Blandy added support for preprocessor macros, while working for Red
494Hat.
c906108c 495
a9967aef
AC
496Andrew Cagney designed @value{GDBN}'s architecture vector. Many
497people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick
498Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei
499Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason
500Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped
501with the migration of old architectures to this new framework.
502
c5e30d01
AC
503Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s
504unwinder framework, this consisting of a fresh new design featuring
505frame IDs, independent frame sniffers, and the sentinel frame. Mark
506Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the
507libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and
db2e3e2e 508trad unwinders. The architecture-specific changes, each involving a
c5e30d01
AC
509complete rewrite of the architecture's frame code, were carried out by
510Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane
511Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel
512Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei
513Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich
514Weigand.
515
ca3bf3bd
DJ
516Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from
517Tensilica, Inc.@: contributed support for Xtensa processors. Others
518who have worked on the Xtensa port of @value{GDBN} in the past include
519Steve Tjiang, John Newlin, and Scott Foehner.
520
08be9d71
ME
521Michael Eager and staff of Xilinx, Inc., contributed support for the
522Xilinx MicroBlaze architecture.
523
6d2ebf8b 524@node Sample Session
c906108c
SS
525@chapter A Sample @value{GDBN} Session
526
527You can use this manual at your leisure to read all about @value{GDBN}.
528However, a handful of commands are enough to get started using the
529debugger. This chapter illustrates those commands.
530
531@iftex
532In this sample session, we emphasize user input like this: @b{input},
533to make it easier to pick out from the surrounding output.
534@end iftex
535
536@c FIXME: this example may not be appropriate for some configs, where
537@c FIXME...primary interest is in remote use.
538
539One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
540processor) exhibits the following bug: sometimes, when we change its
541quote strings from the default, the commands used to capture one macro
542definition within another stop working. In the following short @code{m4}
543session, we define a macro @code{foo} which expands to @code{0000}; we
544then use the @code{m4} built-in @code{defn} to define @code{bar} as the
545same thing. However, when we change the open quote string to
546@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
547procedure fails to define a new synonym @code{baz}:
548
549@smallexample
550$ @b{cd gnu/m4}
551$ @b{./m4}
552@b{define(foo,0000)}
553
554@b{foo}
5550000
556@b{define(bar,defn(`foo'))}
557
558@b{bar}
5590000
560@b{changequote(<QUOTE>,<UNQUOTE>)}
561
562@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
563@b{baz}
c8aa23ab 564@b{Ctrl-d}
c906108c
SS
565m4: End of input: 0: fatal error: EOF in string
566@end smallexample
567
568@noindent
569Let us use @value{GDBN} to try to see what is going on.
570
c906108c
SS
571@smallexample
572$ @b{@value{GDBP} m4}
573@c FIXME: this falsifies the exact text played out, to permit smallbook
574@c FIXME... format to come out better.
575@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 576 of it under certain conditions; type "show copying" to see
c906108c 577 the conditions.
5d161b24 578There is absolutely no warranty for @value{GDBN}; type "show warranty"
c906108c
SS
579 for details.
580
581@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
582(@value{GDBP})
583@end smallexample
c906108c
SS
584
585@noindent
586@value{GDBN} reads only enough symbol data to know where to find the
587rest when needed; as a result, the first prompt comes up very quickly.
588We now tell @value{GDBN} to use a narrower display width than usual, so
589that examples fit in this manual.
590
591@smallexample
592(@value{GDBP}) @b{set width 70}
593@end smallexample
594
595@noindent
596We need to see how the @code{m4} built-in @code{changequote} works.
597Having looked at the source, we know the relevant subroutine is
598@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
599@code{break} command.
600
601@smallexample
602(@value{GDBP}) @b{break m4_changequote}
603Breakpoint 1 at 0x62f4: file builtin.c, line 879.
604@end smallexample
605
606@noindent
607Using the @code{run} command, we start @code{m4} running under @value{GDBN}
608control; as long as control does not reach the @code{m4_changequote}
609subroutine, the program runs as usual:
610
611@smallexample
612(@value{GDBP}) @b{run}
613Starting program: /work/Editorial/gdb/gnu/m4/m4
614@b{define(foo,0000)}
615
616@b{foo}
6170000
618@end smallexample
619
620@noindent
621To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
622suspends execution of @code{m4}, displaying information about the
623context where it stops.
624
625@smallexample
626@b{changequote(<QUOTE>,<UNQUOTE>)}
627
5d161b24 628Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
629 at builtin.c:879
630879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
631@end smallexample
632
633@noindent
634Now we use the command @code{n} (@code{next}) to advance execution to
635the next line of the current function.
636
637@smallexample
638(@value{GDBP}) @b{n}
639882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
640 : nil,
641@end smallexample
642
643@noindent
644@code{set_quotes} looks like a promising subroutine. We can go into it
645by using the command @code{s} (@code{step}) instead of @code{next}.
646@code{step} goes to the next line to be executed in @emph{any}
647subroutine, so it steps into @code{set_quotes}.
648
649@smallexample
650(@value{GDBP}) @b{s}
651set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
652 at input.c:530
653530 if (lquote != def_lquote)
654@end smallexample
655
656@noindent
657The display that shows the subroutine where @code{m4} is now
658suspended (and its arguments) is called a stack frame display. It
659shows a summary of the stack. We can use the @code{backtrace}
660command (which can also be spelled @code{bt}), to see where we are
661in the stack as a whole: the @code{backtrace} command displays a
662stack frame for each active subroutine.
663
664@smallexample
665(@value{GDBP}) @b{bt}
666#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
667 at input.c:530
5d161b24 668#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
669 at builtin.c:882
670#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
671#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
672 at macro.c:71
673#4 0x79dc in expand_input () at macro.c:40
674#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
675@end smallexample
676
677@noindent
678We step through a few more lines to see what happens. The first two
679times, we can use @samp{s}; the next two times we use @code{n} to avoid
680falling into the @code{xstrdup} subroutine.
681
682@smallexample
683(@value{GDBP}) @b{s}
6840x3b5c 532 if (rquote != def_rquote)
685(@value{GDBP}) @b{s}
6860x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
687def_lquote : xstrdup(lq);
688(@value{GDBP}) @b{n}
689536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
690 : xstrdup(rq);
691(@value{GDBP}) @b{n}
692538 len_lquote = strlen(rquote);
693@end smallexample
694
695@noindent
696The last line displayed looks a little odd; we can examine the variables
697@code{lquote} and @code{rquote} to see if they are in fact the new left
698and right quotes we specified. We use the command @code{p}
699(@code{print}) to see their values.
700
701@smallexample
702(@value{GDBP}) @b{p lquote}
703$1 = 0x35d40 "<QUOTE>"
704(@value{GDBP}) @b{p rquote}
705$2 = 0x35d50 "<UNQUOTE>"
706@end smallexample
707
708@noindent
709@code{lquote} and @code{rquote} are indeed the new left and right quotes.
710To look at some context, we can display ten lines of source
711surrounding the current line with the @code{l} (@code{list}) command.
712
713@smallexample
714(@value{GDBP}) @b{l}
715533 xfree(rquote);
716534
717535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
718 : xstrdup (lq);
719536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
720 : xstrdup (rq);
721537
722538 len_lquote = strlen(rquote);
723539 len_rquote = strlen(lquote);
724540 @}
725541
726542 void
727@end smallexample
728
729@noindent
730Let us step past the two lines that set @code{len_lquote} and
731@code{len_rquote}, and then examine the values of those variables.
732
733@smallexample
734(@value{GDBP}) @b{n}
735539 len_rquote = strlen(lquote);
736(@value{GDBP}) @b{n}
737540 @}
738(@value{GDBP}) @b{p len_lquote}
739$3 = 9
740(@value{GDBP}) @b{p len_rquote}
741$4 = 7
742@end smallexample
743
744@noindent
745That certainly looks wrong, assuming @code{len_lquote} and
746@code{len_rquote} are meant to be the lengths of @code{lquote} and
747@code{rquote} respectively. We can set them to better values using
748the @code{p} command, since it can print the value of
749any expression---and that expression can include subroutine calls and
750assignments.
751
752@smallexample
753(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
754$5 = 7
755(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
756$6 = 9
757@end smallexample
758
759@noindent
760Is that enough to fix the problem of using the new quotes with the
761@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
762executing with the @code{c} (@code{continue}) command, and then try the
763example that caused trouble initially:
764
765@smallexample
766(@value{GDBP}) @b{c}
767Continuing.
768
769@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
770
771baz
7720000
773@end smallexample
774
775@noindent
776Success! The new quotes now work just as well as the default ones. The
777problem seems to have been just the two typos defining the wrong
778lengths. We allow @code{m4} exit by giving it an EOF as input:
779
780@smallexample
c8aa23ab 781@b{Ctrl-d}
c906108c
SS
782Program exited normally.
783@end smallexample
784
785@noindent
786The message @samp{Program exited normally.} is from @value{GDBN}; it
787indicates @code{m4} has finished executing. We can end our @value{GDBN}
788session with the @value{GDBN} @code{quit} command.
789
790@smallexample
791(@value{GDBP}) @b{quit}
792@end smallexample
c906108c 793
6d2ebf8b 794@node Invocation
c906108c
SS
795@chapter Getting In and Out of @value{GDBN}
796
797This chapter discusses how to start @value{GDBN}, and how to get out of it.
5d161b24 798The essentials are:
c906108c 799@itemize @bullet
5d161b24 800@item
53a5351d 801type @samp{@value{GDBP}} to start @value{GDBN}.
5d161b24 802@item
c8aa23ab 803type @kbd{quit} or @kbd{Ctrl-d} to exit.
c906108c
SS
804@end itemize
805
806@menu
807* Invoking GDB:: How to start @value{GDBN}
808* Quitting GDB:: How to quit @value{GDBN}
809* Shell Commands:: How to use shell commands inside @value{GDBN}
79a6e687 810* Logging Output:: How to log @value{GDBN}'s output to a file
c906108c
SS
811@end menu
812
6d2ebf8b 813@node Invoking GDB
c906108c
SS
814@section Invoking @value{GDBN}
815
c906108c
SS
816Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
817@value{GDBN} reads commands from the terminal until you tell it to exit.
818
819You can also run @code{@value{GDBP}} with a variety of arguments and options,
820to specify more of your debugging environment at the outset.
821
c906108c
SS
822The command-line options described here are designed
823to cover a variety of situations; in some environments, some of these
5d161b24 824options may effectively be unavailable.
c906108c
SS
825
826The most usual way to start @value{GDBN} is with one argument,
827specifying an executable program:
828
474c8240 829@smallexample
c906108c 830@value{GDBP} @var{program}
474c8240 831@end smallexample
c906108c 832
c906108c
SS
833@noindent
834You can also start with both an executable program and a core file
835specified:
836
474c8240 837@smallexample
c906108c 838@value{GDBP} @var{program} @var{core}
474c8240 839@end smallexample
c906108c
SS
840
841You can, instead, specify a process ID as a second argument, if you want
842to debug a running process:
843
474c8240 844@smallexample
c906108c 845@value{GDBP} @var{program} 1234
474c8240 846@end smallexample
c906108c
SS
847
848@noindent
849would attach @value{GDBN} to process @code{1234} (unless you also have a file
850named @file{1234}; @value{GDBN} does check for a core file first).
851
c906108c 852Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
853complete operating system; when you use @value{GDBN} as a remote
854debugger attached to a bare board, there may not be any notion of
855``process'', and there is often no way to get a core dump. @value{GDBN}
856will warn you if it is unable to attach or to read core dumps.
c906108c 857
aa26fa3a
TT
858You can optionally have @code{@value{GDBP}} pass any arguments after the
859executable file to the inferior using @code{--args}. This option stops
860option processing.
474c8240 861@smallexample
3f94c067 862@value{GDBP} --args gcc -O2 -c foo.c
474c8240 863@end smallexample
aa26fa3a
TT
864This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
865@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
866
96a2c332 867You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
868@value{GDBN}'s non-warranty, by specifying @code{-silent}:
869
870@smallexample
871@value{GDBP} -silent
872@end smallexample
873
874@noindent
875You can further control how @value{GDBN} starts up by using command-line
876options. @value{GDBN} itself can remind you of the options available.
877
878@noindent
879Type
880
474c8240 881@smallexample
c906108c 882@value{GDBP} -help
474c8240 883@end smallexample
c906108c
SS
884
885@noindent
886to display all available options and briefly describe their use
887(@samp{@value{GDBP} -h} is a shorter equivalent).
888
889All options and command line arguments you give are processed
890in sequential order. The order makes a difference when the
891@samp{-x} option is used.
892
893
894@menu
c906108c
SS
895* File Options:: Choosing files
896* Mode Options:: Choosing modes
6fc08d32 897* Startup:: What @value{GDBN} does during startup
c906108c
SS
898@end menu
899
6d2ebf8b 900@node File Options
79a6e687 901@subsection Choosing Files
c906108c 902
2df3850c 903When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
904specifying an executable file and core file (or process ID). This is
905the same as if the arguments were specified by the @samp{-se} and
d52fb0e9 906@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the
19837790
MS
907first argument that does not have an associated option flag as
908equivalent to the @samp{-se} option followed by that argument; and the
909second argument that does not have an associated option flag, if any, as
910equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
911If the second argument begins with a decimal digit, @value{GDBN} will
912first attempt to attach to it as a process, and if that fails, attempt
913to open it as a corefile. If you have a corefile whose name begins with
b383017d 914a digit, you can prevent @value{GDBN} from treating it as a pid by
c1468174 915prefixing it with @file{./}, e.g.@: @file{./12345}.
7a292a7a
SS
916
917If @value{GDBN} has not been configured to included core file support,
918such as for most embedded targets, then it will complain about a second
919argument and ignore it.
c906108c
SS
920
921Many options have both long and short forms; both are shown in the
922following list. @value{GDBN} also recognizes the long forms if you truncate
923them, so long as enough of the option is present to be unambiguous.
924(If you prefer, you can flag option arguments with @samp{--} rather
925than @samp{-}, though we illustrate the more usual convention.)
926
d700128c
EZ
927@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
928@c way, both those who look for -foo and --foo in the index, will find
929@c it.
930
c906108c
SS
931@table @code
932@item -symbols @var{file}
933@itemx -s @var{file}
d700128c
EZ
934@cindex @code{--symbols}
935@cindex @code{-s}
c906108c
SS
936Read symbol table from file @var{file}.
937
938@item -exec @var{file}
939@itemx -e @var{file}
d700128c
EZ
940@cindex @code{--exec}
941@cindex @code{-e}
7a292a7a
SS
942Use file @var{file} as the executable file to execute when appropriate,
943and for examining pure data in conjunction with a core dump.
c906108c
SS
944
945@item -se @var{file}
d700128c 946@cindex @code{--se}
c906108c
SS
947Read symbol table from file @var{file} and use it as the executable
948file.
949
c906108c
SS
950@item -core @var{file}
951@itemx -c @var{file}
d700128c
EZ
952@cindex @code{--core}
953@cindex @code{-c}
b383017d 954Use file @var{file} as a core dump to examine.
c906108c 955
19837790
MS
956@item -pid @var{number}
957@itemx -p @var{number}
958@cindex @code{--pid}
959@cindex @code{-p}
960Connect to process ID @var{number}, as with the @code{attach} command.
c906108c
SS
961
962@item -command @var{file}
963@itemx -x @var{file}
d700128c
EZ
964@cindex @code{--command}
965@cindex @code{-x}
95433b34
JB
966Execute commands from file @var{file}. The contents of this file is
967evaluated exactly as the @code{source} command would.
8150ff9c 968@xref{Command Files,, Command files}.
c906108c 969
8a5a3c82
AS
970@item -eval-command @var{command}
971@itemx -ex @var{command}
972@cindex @code{--eval-command}
973@cindex @code{-ex}
974Execute a single @value{GDBN} command.
975
976This option may be used multiple times to call multiple commands. It may
977also be interleaved with @samp{-command} as required.
978
979@smallexample
980@value{GDBP} -ex 'target sim' -ex 'load' \
981 -x setbreakpoints -ex 'run' a.out
982@end smallexample
983
c906108c
SS
984@item -directory @var{directory}
985@itemx -d @var{directory}
d700128c
EZ
986@cindex @code{--directory}
987@cindex @code{-d}
4b505b12 988Add @var{directory} to the path to search for source and script files.
c906108c 989
c906108c
SS
990@item -r
991@itemx -readnow
d700128c
EZ
992@cindex @code{--readnow}
993@cindex @code{-r}
c906108c
SS
994Read each symbol file's entire symbol table immediately, rather than
995the default, which is to read it incrementally as it is needed.
996This makes startup slower, but makes future operations faster.
53a5351d 997
c906108c
SS
998@end table
999
6d2ebf8b 1000@node Mode Options
79a6e687 1001@subsection Choosing Modes
c906108c
SS
1002
1003You can run @value{GDBN} in various alternative modes---for example, in
1004batch mode or quiet mode.
1005
1006@table @code
1007@item -nx
1008@itemx -n
d700128c
EZ
1009@cindex @code{--nx}
1010@cindex @code{-n}
96565e91 1011Do not execute commands found in any initialization files. Normally,
2df3850c
JM
1012@value{GDBN} executes the commands in these files after all the command
1013options and arguments have been processed. @xref{Command Files,,Command
79a6e687 1014Files}.
c906108c
SS
1015
1016@item -quiet
d700128c 1017@itemx -silent
c906108c 1018@itemx -q
d700128c
EZ
1019@cindex @code{--quiet}
1020@cindex @code{--silent}
1021@cindex @code{-q}
c906108c
SS
1022``Quiet''. Do not print the introductory and copyright messages. These
1023messages are also suppressed in batch mode.
1024
1025@item -batch
d700128c 1026@cindex @code{--batch}
c906108c
SS
1027Run in batch mode. Exit with status @code{0} after processing all the
1028command files specified with @samp{-x} (and all commands from
1029initialization files, if not inhibited with @samp{-n}). Exit with
1030nonzero status if an error occurs in executing the @value{GDBN} commands
7c953934
TT
1031in the command files. Batch mode also disables pagination;
1032@pxref{Screen Size} and acts as if @kbd{set confirm off} were in
1033effect (@pxref{Messages/Warnings}).
c906108c 1034
2df3850c
JM
1035Batch mode may be useful for running @value{GDBN} as a filter, for
1036example to download and run a program on another computer; in order to
1037make this more useful, the message
c906108c 1038
474c8240 1039@smallexample
c906108c 1040Program exited normally.
474c8240 1041@end smallexample
c906108c
SS
1042
1043@noindent
2df3850c
JM
1044(which is ordinarily issued whenever a program running under
1045@value{GDBN} control terminates) is not issued when running in batch
1046mode.
1047
1a088d06
AS
1048@item -batch-silent
1049@cindex @code{--batch-silent}
1050Run in batch mode exactly like @samp{-batch}, but totally silently. All
1051@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
1052unaffected). This is much quieter than @samp{-silent} and would be useless
1053for an interactive session.
1054
1055This is particularly useful when using targets that give @samp{Loading section}
1056messages, for example.
1057
1058Note that targets that give their output via @value{GDBN}, as opposed to
1059writing directly to @code{stdout}, will also be made silent.
1060
4b0ad762
AS
1061@item -return-child-result
1062@cindex @code{--return-child-result}
1063The return code from @value{GDBN} will be the return code from the child
1064process (the process being debugged), with the following exceptions:
1065
1066@itemize @bullet
1067@item
1068@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an
1069internal error. In this case the exit code is the same as it would have been
1070without @samp{-return-child-result}.
1071@item
1072The user quits with an explicit value. E.g., @samp{quit 1}.
1073@item
1074The child process never runs, or is not allowed to terminate, in which case
1075the exit code will be -1.
1076@end itemize
1077
1078This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
1079when @value{GDBN} is being used as a remote program loader or simulator
1080interface.
1081
2df3850c
JM
1082@item -nowindows
1083@itemx -nw
d700128c
EZ
1084@cindex @code{--nowindows}
1085@cindex @code{-nw}
2df3850c 1086``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 1087(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
1088interface. If no GUI is available, this option has no effect.
1089
1090@item -windows
1091@itemx -w
d700128c
EZ
1092@cindex @code{--windows}
1093@cindex @code{-w}
2df3850c
JM
1094If @value{GDBN} includes a GUI, then this option requires it to be
1095used if possible.
c906108c
SS
1096
1097@item -cd @var{directory}
d700128c 1098@cindex @code{--cd}
c906108c
SS
1099Run @value{GDBN} using @var{directory} as its working directory,
1100instead of the current directory.
1101
c906108c
SS
1102@item -fullname
1103@itemx -f
d700128c
EZ
1104@cindex @code{--fullname}
1105@cindex @code{-f}
7a292a7a
SS
1106@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1107subprocess. It tells @value{GDBN} to output the full file name and line
1108number in a standard, recognizable fashion each time a stack frame is
1109displayed (which includes each time your program stops). This
1110recognizable format looks like two @samp{\032} characters, followed by
1111the file name, line number and character position separated by colons,
1112and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1113@samp{\032} characters as a signal to display the source code for the
1114frame.
c906108c 1115
d700128c
EZ
1116@item -epoch
1117@cindex @code{--epoch}
1118The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1119@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1120routines so as to allow Epoch to display values of expressions in a
1121separate window.
1122
1123@item -annotate @var{level}
1124@cindex @code{--annotate}
1125This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1126effect is identical to using @samp{set annotate @var{level}}
086432e2
AC
1127(@pxref{Annotations}). The annotation @var{level} controls how much
1128information @value{GDBN} prints together with its prompt, values of
1129expressions, source lines, and other types of output. Level 0 is the
1130normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1131@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1132that control @value{GDBN}, and level 2 has been deprecated.
1133
265eeb58 1134The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2 1135(@pxref{GDB/MI}).
d700128c 1136
aa26fa3a
TT
1137@item --args
1138@cindex @code{--args}
1139Change interpretation of command line so that arguments following the
1140executable file are passed as command line arguments to the inferior.
1141This option stops option processing.
1142
2df3850c
JM
1143@item -baud @var{bps}
1144@itemx -b @var{bps}
d700128c
EZ
1145@cindex @code{--baud}
1146@cindex @code{-b}
c906108c
SS
1147Set the line speed (baud rate or bits per second) of any serial
1148interface used by @value{GDBN} for remote debugging.
c906108c 1149
f47b1503
AS
1150@item -l @var{timeout}
1151@cindex @code{-l}
1152Set the timeout (in seconds) of any communication used by @value{GDBN}
1153for remote debugging.
1154
c906108c 1155@item -tty @var{device}
d700128c
EZ
1156@itemx -t @var{device}
1157@cindex @code{--tty}
1158@cindex @code{-t}
c906108c
SS
1159Run using @var{device} for your program's standard input and output.
1160@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1161
53a5351d 1162@c resolve the situation of these eventually
c4555f82
SC
1163@item -tui
1164@cindex @code{--tui}
d0d5df6f
AC
1165Activate the @dfn{Text User Interface} when starting. The Text User
1166Interface manages several text windows on the terminal, showing
1167source, assembly, registers and @value{GDBN} command outputs
1168(@pxref{TUI, ,@value{GDBN} Text User Interface}). Alternatively, the
1169Text User Interface can be enabled by invoking the program
46ba6afa 1170@samp{@value{GDBTUI}}. Do not use this option if you run @value{GDBN} from
d0d5df6f 1171Emacs (@pxref{Emacs, ,Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1172
1173@c @item -xdb
d700128c 1174@c @cindex @code{--xdb}
53a5351d
JM
1175@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1176@c For information, see the file @file{xdb_trans.html}, which is usually
1177@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1178@c systems.
1179
d700128c
EZ
1180@item -interpreter @var{interp}
1181@cindex @code{--interpreter}
1182Use the interpreter @var{interp} for interface with the controlling
1183program or device. This option is meant to be set by programs which
94bbb2c0 1184communicate with @value{GDBN} using it as a back end.
21c294e6 1185@xref{Interpreters, , Command Interpreters}.
94bbb2c0 1186
da0f9dcd 1187@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
2fcf52f0 1188@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
6b5e8c01 1189The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The
6c74ac8b
AC
1190previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1191selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1192@sc{gdb/mi} interfaces are no longer supported.
d700128c
EZ
1193
1194@item -write
1195@cindex @code{--write}
1196Open the executable and core files for both reading and writing. This
1197is equivalent to the @samp{set write on} command inside @value{GDBN}
1198(@pxref{Patching}).
1199
1200@item -statistics
1201@cindex @code{--statistics}
1202This option causes @value{GDBN} to print statistics about time and
1203memory usage after it completes each command and returns to the prompt.
1204
1205@item -version
1206@cindex @code{--version}
1207This option causes @value{GDBN} to print its version number and
1208no-warranty blurb, and exit.
1209
c906108c
SS
1210@end table
1211
6fc08d32 1212@node Startup
79a6e687 1213@subsection What @value{GDBN} Does During Startup
6fc08d32
EZ
1214@cindex @value{GDBN} startup
1215
1216Here's the description of what @value{GDBN} does during session startup:
1217
1218@enumerate
1219@item
1220Sets up the command interpreter as specified by the command line
1221(@pxref{Mode Options, interpreter}).
1222
1223@item
1224@cindex init file
098b41a6
JG
1225Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was
1226used when building @value{GDBN}; @pxref{System-wide configuration,
1227 ,System-wide configuration and settings}) and executes all the commands in
1228that file.
1229
1230@item
1231Reads the init file (if any) in your home directory@footnote{On
6fc08d32
EZ
1232DOS/Windows systems, the home directory is the one pointed to by the
1233@code{HOME} environment variable.} and executes all the commands in
1234that file.
1235
1236@item
1237Processes command line options and operands.
1238
1239@item
1240Reads and executes the commands from init file (if any) in the current
119b882a
EZ
1241working directory. This is only done if the current directory is
1242different from your home directory. Thus, you can have more than one
1243init file, one generic in your home directory, and another, specific
1244to the program you are debugging, in the directory where you invoke
6fc08d32
EZ
1245@value{GDBN}.
1246
1247@item
1248Reads command files specified by the @samp{-x} option. @xref{Command
1249Files}, for more details about @value{GDBN} command files.
1250
1251@item
1252Reads the command history recorded in the @dfn{history file}.
d620b259 1253@xref{Command History}, for more details about the command history and the
6fc08d32
EZ
1254files where @value{GDBN} records it.
1255@end enumerate
1256
1257Init files use the same syntax as @dfn{command files} (@pxref{Command
1258Files}) and are processed by @value{GDBN} in the same way. The init
1259file in your home directory can set options (such as @samp{set
1260complaints}) that affect subsequent processing of command line options
1261and operands. Init files are not executed if you use the @samp{-nx}
79a6e687 1262option (@pxref{Mode Options, ,Choosing Modes}).
6fc08d32 1263
098b41a6
JG
1264To display the list of init files loaded by gdb at startup, you
1265can use @kbd{gdb --help}.
1266
6fc08d32
EZ
1267@cindex init file name
1268@cindex @file{.gdbinit}
119b882a 1269@cindex @file{gdb.ini}
8807d78b 1270The @value{GDBN} init files are normally called @file{.gdbinit}.
119b882a
EZ
1271The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to
1272the limitations of file names imposed by DOS filesystems. The Windows
1273ports of @value{GDBN} use the standard name, but if they find a
1274@file{gdb.ini} file, they warn you about that and suggest to rename
1275the file to the standard name.
1276
6fc08d32 1277
6d2ebf8b 1278@node Quitting GDB
c906108c
SS
1279@section Quitting @value{GDBN}
1280@cindex exiting @value{GDBN}
1281@cindex leaving @value{GDBN}
1282
1283@table @code
1284@kindex quit @r{[}@var{expression}@r{]}
41afff9a 1285@kindex q @r{(@code{quit})}
96a2c332
SS
1286@item quit @r{[}@var{expression}@r{]}
1287@itemx q
1288To exit @value{GDBN}, use the @code{quit} command (abbreviated
c8aa23ab 1289@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you
96a2c332
SS
1290do not supply @var{expression}, @value{GDBN} will terminate normally;
1291otherwise it will terminate using the result of @var{expression} as the
1292error code.
c906108c
SS
1293@end table
1294
1295@cindex interrupt
c8aa23ab 1296An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather
c906108c
SS
1297terminates the action of any @value{GDBN} command that is in progress and
1298returns to @value{GDBN} command level. It is safe to type the interrupt
1299character at any time because @value{GDBN} does not allow it to take effect
1300until a time when it is safe.
1301
c906108c
SS
1302If you have been using @value{GDBN} to control an attached process or
1303device, you can release it with the @code{detach} command
79a6e687 1304(@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 1305
6d2ebf8b 1306@node Shell Commands
79a6e687 1307@section Shell Commands
c906108c
SS
1308
1309If you need to execute occasional shell commands during your
1310debugging session, there is no need to leave or suspend @value{GDBN}; you can
1311just use the @code{shell} command.
1312
1313@table @code
1314@kindex shell
1315@cindex shell escape
1316@item shell @var{command string}
1317Invoke a standard shell to execute @var{command string}.
c906108c 1318If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1319shell to run. Otherwise @value{GDBN} uses the default shell
1320(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1321@end table
1322
1323The utility @code{make} is often needed in development environments.
1324You do not have to use the @code{shell} command for this purpose in
1325@value{GDBN}:
1326
1327@table @code
1328@kindex make
1329@cindex calling make
1330@item make @var{make-args}
1331Execute the @code{make} program with the specified
1332arguments. This is equivalent to @samp{shell make @var{make-args}}.
1333@end table
1334
79a6e687
BW
1335@node Logging Output
1336@section Logging Output
0fac0b41 1337@cindex logging @value{GDBN} output
9c16f35a 1338@cindex save @value{GDBN} output to a file
0fac0b41
DJ
1339
1340You may want to save the output of @value{GDBN} commands to a file.
1341There are several commands to control @value{GDBN}'s logging.
1342
1343@table @code
1344@kindex set logging
1345@item set logging on
1346Enable logging.
1347@item set logging off
1348Disable logging.
9c16f35a 1349@cindex logging file name
0fac0b41
DJ
1350@item set logging file @var{file}
1351Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1352@item set logging overwrite [on|off]
1353By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1354you want @code{set logging on} to overwrite the logfile instead.
1355@item set logging redirect [on|off]
1356By default, @value{GDBN} output will go to both the terminal and the logfile.
1357Set @code{redirect} if you want output to go only to the log file.
1358@kindex show logging
1359@item show logging
1360Show the current values of the logging settings.
1361@end table
1362
6d2ebf8b 1363@node Commands
c906108c
SS
1364@chapter @value{GDBN} Commands
1365
1366You can abbreviate a @value{GDBN} command to the first few letters of the command
1367name, if that abbreviation is unambiguous; and you can repeat certain
1368@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1369key to get @value{GDBN} to fill out the rest of a word in a command (or to
1370show you the alternatives available, if there is more than one possibility).
1371
1372@menu
1373* Command Syntax:: How to give commands to @value{GDBN}
1374* Completion:: Command completion
1375* Help:: How to ask @value{GDBN} for help
1376@end menu
1377
6d2ebf8b 1378@node Command Syntax
79a6e687 1379@section Command Syntax
c906108c
SS
1380
1381A @value{GDBN} command is a single line of input. There is no limit on
1382how long it can be. It starts with a command name, which is followed by
1383arguments whose meaning depends on the command name. For example, the
1384command @code{step} accepts an argument which is the number of times to
1385step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1386with no arguments. Some commands do not allow any arguments.
c906108c
SS
1387
1388@cindex abbreviation
1389@value{GDBN} command names may always be truncated if that abbreviation is
1390unambiguous. Other possible command abbreviations are listed in the
1391documentation for individual commands. In some cases, even ambiguous
1392abbreviations are allowed; for example, @code{s} is specially defined as
1393equivalent to @code{step} even though there are other commands whose
1394names start with @code{s}. You can test abbreviations by using them as
1395arguments to the @code{help} command.
1396
1397@cindex repeating commands
41afff9a 1398@kindex RET @r{(repeat last command)}
c906108c 1399A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1400repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1401will not repeat this way; these are commands whose unintentional
1402repetition might cause trouble and which you are unlikely to want to
c45da7e6
EZ
1403repeat. User-defined commands can disable this feature; see
1404@ref{Define, dont-repeat}.
c906108c
SS
1405
1406The @code{list} and @code{x} commands, when you repeat them with
1407@key{RET}, construct new arguments rather than repeating
1408exactly as typed. This permits easy scanning of source or memory.
1409
1410@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1411output, in a way similar to the common utility @code{more}
79a6e687 1412(@pxref{Screen Size,,Screen Size}). Since it is easy to press one
c906108c
SS
1413@key{RET} too many in this situation, @value{GDBN} disables command
1414repetition after any command that generates this sort of display.
1415
41afff9a 1416@kindex # @r{(a comment)}
c906108c
SS
1417@cindex comment
1418Any text from a @kbd{#} to the end of the line is a comment; it does
1419nothing. This is useful mainly in command files (@pxref{Command
79a6e687 1420Files,,Command Files}).
c906108c 1421
88118b3a 1422@cindex repeating command sequences
c8aa23ab
EZ
1423@kindex Ctrl-o @r{(operate-and-get-next)}
1424The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of
7f9087cb 1425commands. This command accepts the current line, like @key{RET}, and
88118b3a
TT
1426then fetches the next line relative to the current line from the history
1427for editing.
1428
6d2ebf8b 1429@node Completion
79a6e687 1430@section Command Completion
c906108c
SS
1431
1432@cindex completion
1433@cindex word completion
1434@value{GDBN} can fill in the rest of a word in a command for you, if there is
1435only one possibility; it can also show you what the valid possibilities
1436are for the next word in a command, at any time. This works for @value{GDBN}
1437commands, @value{GDBN} subcommands, and the names of symbols in your program.
1438
1439Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1440of a word. If there is only one possibility, @value{GDBN} fills in the
1441word, and waits for you to finish the command (or press @key{RET} to
1442enter it). For example, if you type
1443
1444@c FIXME "@key" does not distinguish its argument sufficiently to permit
1445@c complete accuracy in these examples; space introduced for clarity.
1446@c If texinfo enhancements make it unnecessary, it would be nice to
1447@c replace " @key" by "@key" in the following...
474c8240 1448@smallexample
c906108c 1449(@value{GDBP}) info bre @key{TAB}
474c8240 1450@end smallexample
c906108c
SS
1451
1452@noindent
1453@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1454the only @code{info} subcommand beginning with @samp{bre}:
1455
474c8240 1456@smallexample
c906108c 1457(@value{GDBP}) info breakpoints
474c8240 1458@end smallexample
c906108c
SS
1459
1460@noindent
1461You can either press @key{RET} at this point, to run the @code{info
1462breakpoints} command, or backspace and enter something else, if
1463@samp{breakpoints} does not look like the command you expected. (If you
1464were sure you wanted @code{info breakpoints} in the first place, you
1465might as well just type @key{RET} immediately after @samp{info bre},
1466to exploit command abbreviations rather than command completion).
1467
1468If there is more than one possibility for the next word when you press
1469@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1470characters and try again, or just press @key{TAB} a second time;
1471@value{GDBN} displays all the possible completions for that word. For
1472example, you might want to set a breakpoint on a subroutine whose name
1473begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1474just sounds the bell. Typing @key{TAB} again displays all the
1475function names in your program that begin with those characters, for
1476example:
1477
474c8240 1478@smallexample
c906108c
SS
1479(@value{GDBP}) b make_ @key{TAB}
1480@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1481make_a_section_from_file make_environ
1482make_abs_section make_function_type
1483make_blockvector make_pointer_type
1484make_cleanup make_reference_type
c906108c
SS
1485make_command make_symbol_completion_list
1486(@value{GDBP}) b make_
474c8240 1487@end smallexample
c906108c
SS
1488
1489@noindent
1490After displaying the available possibilities, @value{GDBN} copies your
1491partial input (@samp{b make_} in the example) so you can finish the
1492command.
1493
1494If you just want to see the list of alternatives in the first place, you
b37052ae 1495can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1496means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1497key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1498one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1499
1500@cindex quotes in commands
1501@cindex completion of quoted strings
1502Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1503parentheses or other characters that @value{GDBN} normally excludes from
1504its notion of a word. To permit word completion to work in this
1505situation, you may enclose words in @code{'} (single quote marks) in
1506@value{GDBN} commands.
c906108c 1507
c906108c 1508The most likely situation where you might need this is in typing the
b37052ae
EZ
1509name of a C@t{++} function. This is because C@t{++} allows function
1510overloading (multiple definitions of the same function, distinguished
1511by argument type). For example, when you want to set a breakpoint you
1512may need to distinguish whether you mean the version of @code{name}
1513that takes an @code{int} parameter, @code{name(int)}, or the version
1514that takes a @code{float} parameter, @code{name(float)}. To use the
1515word-completion facilities in this situation, type a single quote
1516@code{'} at the beginning of the function name. This alerts
1517@value{GDBN} that it may need to consider more information than usual
1518when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c 1519
474c8240 1520@smallexample
96a2c332 1521(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1522bubble(double,double) bubble(int,int)
1523(@value{GDBP}) b 'bubble(
474c8240 1524@end smallexample
c906108c
SS
1525
1526In some cases, @value{GDBN} can tell that completing a name requires using
1527quotes. When this happens, @value{GDBN} inserts the quote for you (while
1528completing as much as it can) if you do not type the quote in the first
1529place:
1530
474c8240 1531@smallexample
c906108c
SS
1532(@value{GDBP}) b bub @key{TAB}
1533@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1534(@value{GDBP}) b 'bubble(
474c8240 1535@end smallexample
c906108c
SS
1536
1537@noindent
1538In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1539you have not yet started typing the argument list when you ask for
1540completion on an overloaded symbol.
1541
79a6e687
BW
1542For more information about overloaded functions, see @ref{C Plus Plus
1543Expressions, ,C@t{++} Expressions}. You can use the command @code{set
c906108c 1544overload-resolution off} to disable overload resolution;
79a6e687 1545see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}.
c906108c 1546
65d12d83
TT
1547@cindex completion of structure field names
1548@cindex structure field name completion
1549@cindex completion of union field names
1550@cindex union field name completion
1551When completing in an expression which looks up a field in a
1552structure, @value{GDBN} also tries@footnote{The completer can be
1553confused by certain kinds of invalid expressions. Also, it only
1554examines the static type of the expression, not the dynamic type.} to
1555limit completions to the field names available in the type of the
1556left-hand-side:
1557
1558@smallexample
1559(@value{GDBP}) p gdb_stdout.@kbd{M-?}
1560magic to_delete to_fputs to_put to_rewind
1561to_data to_flush to_isatty to_read to_write
1562@end smallexample
1563
1564@noindent
1565This is because the @code{gdb_stdout} is a variable of the type
1566@code{struct ui_file} that is defined in @value{GDBN} sources as
1567follows:
1568
1569@smallexample
1570struct ui_file
1571@{
1572 int *magic;
1573 ui_file_flush_ftype *to_flush;
1574 ui_file_write_ftype *to_write;
1575 ui_file_fputs_ftype *to_fputs;
1576 ui_file_read_ftype *to_read;
1577 ui_file_delete_ftype *to_delete;
1578 ui_file_isatty_ftype *to_isatty;
1579 ui_file_rewind_ftype *to_rewind;
1580 ui_file_put_ftype *to_put;
1581 void *to_data;
1582@}
1583@end smallexample
1584
c906108c 1585
6d2ebf8b 1586@node Help
79a6e687 1587@section Getting Help
c906108c
SS
1588@cindex online documentation
1589@kindex help
1590
5d161b24 1591You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1592using the command @code{help}.
1593
1594@table @code
41afff9a 1595@kindex h @r{(@code{help})}
c906108c
SS
1596@item help
1597@itemx h
1598You can use @code{help} (abbreviated @code{h}) with no arguments to
1599display a short list of named classes of commands:
1600
1601@smallexample
1602(@value{GDBP}) help
1603List of classes of commands:
1604
2df3850c 1605aliases -- Aliases of other commands
c906108c 1606breakpoints -- Making program stop at certain points
2df3850c 1607data -- Examining data
c906108c 1608files -- Specifying and examining files
2df3850c
JM
1609internals -- Maintenance commands
1610obscure -- Obscure features
1611running -- Running the program
1612stack -- Examining the stack
c906108c
SS
1613status -- Status inquiries
1614support -- Support facilities
12c27660 1615tracepoints -- Tracing of program execution without
96a2c332 1616 stopping the program
c906108c 1617user-defined -- User-defined commands
c906108c 1618
5d161b24 1619Type "help" followed by a class name for a list of
c906108c 1620commands in that class.
5d161b24 1621Type "help" followed by command name for full
c906108c
SS
1622documentation.
1623Command name abbreviations are allowed if unambiguous.
1624(@value{GDBP})
1625@end smallexample
96a2c332 1626@c the above line break eliminates huge line overfull...
c906108c
SS
1627
1628@item help @var{class}
1629Using one of the general help classes as an argument, you can get a
1630list of the individual commands in that class. For example, here is the
1631help display for the class @code{status}:
1632
1633@smallexample
1634(@value{GDBP}) help status
1635Status inquiries.
1636
1637List of commands:
1638
1639@c Line break in "show" line falsifies real output, but needed
1640@c to fit in smallbook page size.
2df3850c 1641info -- Generic command for showing things
12c27660 1642 about the program being debugged
2df3850c 1643show -- Generic command for showing things
12c27660 1644 about the debugger
c906108c 1645
5d161b24 1646Type "help" followed by command name for full
c906108c
SS
1647documentation.
1648Command name abbreviations are allowed if unambiguous.
1649(@value{GDBP})
1650@end smallexample
1651
1652@item help @var{command}
1653With a command name as @code{help} argument, @value{GDBN} displays a
1654short paragraph on how to use that command.
1655
6837a0a2
DB
1656@kindex apropos
1657@item apropos @var{args}
09d4efe1 1658The @code{apropos} command searches through all of the @value{GDBN}
6837a0a2 1659commands, and their documentation, for the regular expression specified in
99e008fe 1660@var{args}. It prints out all matches found. For example:
6837a0a2
DB
1661
1662@smallexample
1663apropos reload
1664@end smallexample
1665
b37052ae
EZ
1666@noindent
1667results in:
6837a0a2
DB
1668
1669@smallexample
6d2ebf8b
SS
1670@c @group
1671set symbol-reloading -- Set dynamic symbol table reloading
12c27660 1672 multiple times in one run
6d2ebf8b 1673show symbol-reloading -- Show dynamic symbol table reloading
12c27660 1674 multiple times in one run
6d2ebf8b 1675@c @end group
6837a0a2
DB
1676@end smallexample
1677
c906108c
SS
1678@kindex complete
1679@item complete @var{args}
1680The @code{complete @var{args}} command lists all the possible completions
1681for the beginning of a command. Use @var{args} to specify the beginning of the
1682command you want completed. For example:
1683
1684@smallexample
1685complete i
1686@end smallexample
1687
1688@noindent results in:
1689
1690@smallexample
1691@group
2df3850c
JM
1692if
1693ignore
c906108c
SS
1694info
1695inspect
c906108c
SS
1696@end group
1697@end smallexample
1698
1699@noindent This is intended for use by @sc{gnu} Emacs.
1700@end table
1701
1702In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1703and @code{show} to inquire about the state of your program, or the state
1704of @value{GDBN} itself. Each command supports many topics of inquiry; this
1705manual introduces each of them in the appropriate context. The listings
1706under @code{info} and under @code{show} in the Index point to
1707all the sub-commands. @xref{Index}.
1708
1709@c @group
1710@table @code
1711@kindex info
41afff9a 1712@kindex i @r{(@code{info})}
c906108c
SS
1713@item info
1714This command (abbreviated @code{i}) is for describing the state of your
cda4ce5a 1715program. For example, you can show the arguments passed to a function
c906108c
SS
1716with @code{info args}, list the registers currently in use with @code{info
1717registers}, or list the breakpoints you have set with @code{info breakpoints}.
1718You can get a complete list of the @code{info} sub-commands with
1719@w{@code{help info}}.
1720
1721@kindex set
1722@item set
5d161b24 1723You can assign the result of an expression to an environment variable with
c906108c
SS
1724@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1725@code{set prompt $}.
1726
1727@kindex show
1728@item show
5d161b24 1729In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1730@value{GDBN} itself.
1731You can change most of the things you can @code{show}, by using the
1732related command @code{set}; for example, you can control what number
1733system is used for displays with @code{set radix}, or simply inquire
1734which is currently in use with @code{show radix}.
1735
1736@kindex info set
1737To display all the settable parameters and their current
1738values, you can use @code{show} with no arguments; you may also use
1739@code{info set}. Both commands produce the same display.
1740@c FIXME: "info set" violates the rule that "info" is for state of
1741@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1742@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1743@end table
1744@c @end group
1745
1746Here are three miscellaneous @code{show} subcommands, all of which are
1747exceptional in lacking corresponding @code{set} commands:
1748
1749@table @code
1750@kindex show version
9c16f35a 1751@cindex @value{GDBN} version number
c906108c
SS
1752@item show version
1753Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1754information in @value{GDBN} bug-reports. If multiple versions of
1755@value{GDBN} are in use at your site, you may need to determine which
1756version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1757commands are introduced, and old ones may wither away. Also, many
1758system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1759variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1760The version number is the same as the one announced when you start
1761@value{GDBN}.
c906108c
SS
1762
1763@kindex show copying
09d4efe1 1764@kindex info copying
9c16f35a 1765@cindex display @value{GDBN} copyright
c906108c 1766@item show copying
09d4efe1 1767@itemx info copying
c906108c
SS
1768Display information about permission for copying @value{GDBN}.
1769
1770@kindex show warranty
09d4efe1 1771@kindex info warranty
c906108c 1772@item show warranty
09d4efe1 1773@itemx info warranty
2df3850c 1774Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1775if your version of @value{GDBN} comes with one.
2df3850c 1776
c906108c
SS
1777@end table
1778
6d2ebf8b 1779@node Running
c906108c
SS
1780@chapter Running Programs Under @value{GDBN}
1781
1782When you run a program under @value{GDBN}, you must first generate
1783debugging information when you compile it.
7a292a7a
SS
1784
1785You may start @value{GDBN} with its arguments, if any, in an environment
1786of your choice. If you are doing native debugging, you may redirect
1787your program's input and output, debug an already running process, or
1788kill a child process.
c906108c
SS
1789
1790@menu
1791* Compilation:: Compiling for debugging
1792* Starting:: Starting your program
c906108c
SS
1793* Arguments:: Your program's arguments
1794* Environment:: Your program's environment
c906108c
SS
1795
1796* Working Directory:: Your program's working directory
1797* Input/Output:: Your program's input and output
1798* Attach:: Debugging an already-running process
1799* Kill Process:: Killing the child process
c906108c 1800
6c95b8df 1801* Inferiors and Programs:: Debugging multiple inferiors and programs
c906108c 1802* Threads:: Debugging programs with multiple threads
6c95b8df 1803* Forks:: Debugging forks
5c95884b 1804* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later
c906108c
SS
1805@end menu
1806
6d2ebf8b 1807@node Compilation
79a6e687 1808@section Compiling for Debugging
c906108c
SS
1809
1810In order to debug a program effectively, you need to generate
1811debugging information when you compile it. This debugging information
1812is stored in the object file; it describes the data type of each
1813variable or function and the correspondence between source line numbers
1814and addresses in the executable code.
1815
1816To request debugging information, specify the @samp{-g} option when you run
1817the compiler.
1818
514c4d71 1819Programs that are to be shipped to your customers are compiled with
edb3359d 1820optimizations, using the @samp{-O} compiler option. However, some
514c4d71
EZ
1821compilers are unable to handle the @samp{-g} and @samp{-O} options
1822together. Using those compilers, you cannot generate optimized
c906108c
SS
1823executables containing debugging information.
1824
514c4d71 1825@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or
53a5351d
JM
1826without @samp{-O}, making it possible to debug optimized code. We
1827recommend that you @emph{always} use @samp{-g} whenever you compile a
1828program. You may think your program is correct, but there is no sense
edb3359d 1829in pushing your luck. For more information, see @ref{Optimized Code}.
c906108c
SS
1830
1831Older versions of the @sc{gnu} C compiler permitted a variant option
1832@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1833format; if your @sc{gnu} C compiler has this option, do not use it.
1834
514c4d71
EZ
1835@value{GDBN} knows about preprocessor macros and can show you their
1836expansion (@pxref{Macros}). Most compilers do not include information
1837about preprocessor macros in the debugging information if you specify
1838the @option{-g} flag alone, because this information is rather large.
1839Version 3.1 and later of @value{NGCC}, the @sc{gnu} C compiler,
1840provides macro information if you specify the options
1841@option{-gdwarf-2} and @option{-g3}; the former option requests
1842debugging information in the Dwarf 2 format, and the latter requests
1843``extra information''. In the future, we hope to find more compact
1844ways to represent macro information, so that it can be included with
1845@option{-g} alone.
1846
c906108c 1847@need 2000
6d2ebf8b 1848@node Starting
79a6e687 1849@section Starting your Program
c906108c
SS
1850@cindex starting
1851@cindex running
1852
1853@table @code
1854@kindex run
41afff9a 1855@kindex r @r{(@code{run})}
c906108c
SS
1856@item run
1857@itemx r
7a292a7a
SS
1858Use the @code{run} command to start your program under @value{GDBN}.
1859You must first specify the program name (except on VxWorks) with an
1860argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1861@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
79a6e687 1862(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
1863
1864@end table
1865
c906108c
SS
1866If you are running your program in an execution environment that
1867supports processes, @code{run} creates an inferior process and makes
8edfe269
DJ
1868that process run your program. In some environments without processes,
1869@code{run} jumps to the start of your program. Other targets,
1870like @samp{remote}, are always running. If you get an error
1871message like this one:
1872
1873@smallexample
1874The "remote" target does not support "run".
1875Try "help target" or "continue".
1876@end smallexample
1877
1878@noindent
1879then use @code{continue} to run your program. You may need @code{load}
1880first (@pxref{load}).
c906108c
SS
1881
1882The execution of a program is affected by certain information it
1883receives from its superior. @value{GDBN} provides ways to specify this
1884information, which you must do @emph{before} starting your program. (You
1885can change it after starting your program, but such changes only affect
1886your program the next time you start it.) This information may be
1887divided into four categories:
1888
1889@table @asis
1890@item The @emph{arguments.}
1891Specify the arguments to give your program as the arguments of the
1892@code{run} command. If a shell is available on your target, the shell
1893is used to pass the arguments, so that you may use normal conventions
1894(such as wildcard expansion or variable substitution) in describing
1895the arguments.
1896In Unix systems, you can control which shell is used with the
1897@code{SHELL} environment variable.
79a6e687 1898@xref{Arguments, ,Your Program's Arguments}.
c906108c
SS
1899
1900@item The @emph{environment.}
1901Your program normally inherits its environment from @value{GDBN}, but you can
1902use the @value{GDBN} commands @code{set environment} and @code{unset
1903environment} to change parts of the environment that affect
79a6e687 1904your program. @xref{Environment, ,Your Program's Environment}.
c906108c
SS
1905
1906@item The @emph{working directory.}
1907Your program inherits its working directory from @value{GDBN}. You can set
1908the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
79a6e687 1909@xref{Working Directory, ,Your Program's Working Directory}.
c906108c
SS
1910
1911@item The @emph{standard input and output.}
1912Your program normally uses the same device for standard input and
1913standard output as @value{GDBN} is using. You can redirect input and output
1914in the @code{run} command line, or you can use the @code{tty} command to
1915set a different device for your program.
79a6e687 1916@xref{Input/Output, ,Your Program's Input and Output}.
c906108c
SS
1917
1918@cindex pipes
1919@emph{Warning:} While input and output redirection work, you cannot use
1920pipes to pass the output of the program you are debugging to another
1921program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1922wrong program.
1923@end table
c906108c
SS
1924
1925When you issue the @code{run} command, your program begins to execute
79a6e687 1926immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion
c906108c
SS
1927of how to arrange for your program to stop. Once your program has
1928stopped, you may call functions in your program, using the @code{print}
1929or @code{call} commands. @xref{Data, ,Examining Data}.
1930
1931If the modification time of your symbol file has changed since the last
1932time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1933table, and reads it again. When it does this, @value{GDBN} tries to retain
1934your current breakpoints.
1935
4e8b0763
JB
1936@table @code
1937@kindex start
1938@item start
1939@cindex run to main procedure
1940The name of the main procedure can vary from language to language.
1941With C or C@t{++}, the main procedure name is always @code{main}, but
1942other languages such as Ada do not require a specific name for their
1943main procedure. The debugger provides a convenient way to start the
1944execution of the program and to stop at the beginning of the main
1945procedure, depending on the language used.
1946
1947The @samp{start} command does the equivalent of setting a temporary
1948breakpoint at the beginning of the main procedure and then invoking
1949the @samp{run} command.
1950
f018e82f
EZ
1951@cindex elaboration phase
1952Some programs contain an @dfn{elaboration} phase where some startup code is
1953executed before the main procedure is called. This depends on the
1954languages used to write your program. In C@t{++}, for instance,
4e8b0763
JB
1955constructors for static and global objects are executed before
1956@code{main} is called. It is therefore possible that the debugger stops
1957before reaching the main procedure. However, the temporary breakpoint
1958will remain to halt execution.
1959
1960Specify the arguments to give to your program as arguments to the
1961@samp{start} command. These arguments will be given verbatim to the
1962underlying @samp{run} command. Note that the same arguments will be
1963reused if no argument is provided during subsequent calls to
1964@samp{start} or @samp{run}.
1965
1966It is sometimes necessary to debug the program during elaboration. In
1967these cases, using the @code{start} command would stop the execution of
1968your program too late, as the program would have already completed the
1969elaboration phase. Under these circumstances, insert breakpoints in your
1970elaboration code before running your program.
ccd213ac
DJ
1971
1972@kindex set exec-wrapper
1973@item set exec-wrapper @var{wrapper}
1974@itemx show exec-wrapper
1975@itemx unset exec-wrapper
1976When @samp{exec-wrapper} is set, the specified wrapper is used to
1977launch programs for debugging. @value{GDBN} starts your program
1978with a shell command of the form @kbd{exec @var{wrapper}
1979@var{program}}. Quoting is added to @var{program} and its
1980arguments, but not to @var{wrapper}, so you should add quotes if
1981appropriate for your shell. The wrapper runs until it executes
1982your program, and then @value{GDBN} takes control.
1983
1984You can use any program that eventually calls @code{execve} with
1985its arguments as a wrapper. Several standard Unix utilities do
1986this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
1987with @code{exec "$@@"} will also work.
1988
1989For example, you can use @code{env} to pass an environment variable to
1990the debugged program, without setting the variable in your shell's
1991environment:
1992
1993@smallexample
1994(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so'
1995(@value{GDBP}) run
1996@end smallexample
1997
1998This command is available when debugging locally on most targets, excluding
1999@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
2000
10568435
JK
2001@kindex set disable-randomization
2002@item set disable-randomization
2003@itemx set disable-randomization on
2004This option (enabled by default in @value{GDBN}) will turn off the native
2005randomization of the virtual address space of the started program. This option
2006is useful for multiple debugging sessions to make the execution better
2007reproducible and memory addresses reusable across debugging sessions.
2008
2009This feature is implemented only on @sc{gnu}/Linux. You can get the same
2010behavior using
2011
2012@smallexample
2013(@value{GDBP}) set exec-wrapper setarch `uname -m` -R
2014@end smallexample
2015
2016@item set disable-randomization off
2017Leave the behavior of the started executable unchanged. Some bugs rear their
2018ugly heads only when the program is loaded at certain addresses. If your bug
2019disappears when you run the program under @value{GDBN}, that might be because
2020@value{GDBN} by default disables the address randomization on platforms, such
2021as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set
2022disable-randomization off} to try to reproduce such elusive bugs.
2023
2024The virtual address space randomization is implemented only on @sc{gnu}/Linux.
2025It protects the programs against some kinds of security attacks. In these
2026cases the attacker needs to know the exact location of a concrete executable
2027code. Randomizing its location makes it impossible to inject jumps misusing
2028a code at its expected addresses.
2029
2030Prelinking shared libraries provides a startup performance advantage but it
2031makes addresses in these libraries predictable for privileged processes by
2032having just unprivileged access at the target system. Reading the shared
2033library binary gives enough information for assembling the malicious code
2034misusing it. Still even a prelinked shared library can get loaded at a new
2035random address just requiring the regular relocation process during the
2036startup. Shared libraries not already prelinked are always loaded at
2037a randomly chosen address.
2038
2039Position independent executables (PIE) contain position independent code
2040similar to the shared libraries and therefore such executables get loaded at
2041a randomly chosen address upon startup. PIE executables always load even
2042already prelinked shared libraries at a random address. You can build such
2043executable using @command{gcc -fPIE -pie}.
2044
2045Heap (malloc storage), stack and custom mmap areas are always placed randomly
2046(as long as the randomization is enabled).
2047
2048@item show disable-randomization
2049Show the current setting of the explicit disable of the native randomization of
2050the virtual address space of the started program.
2051
4e8b0763
JB
2052@end table
2053
6d2ebf8b 2054@node Arguments
79a6e687 2055@section Your Program's Arguments
c906108c
SS
2056
2057@cindex arguments (to your program)
2058The arguments to your program can be specified by the arguments of the
5d161b24 2059@code{run} command.
c906108c
SS
2060They are passed to a shell, which expands wildcard characters and
2061performs redirection of I/O, and thence to your program. Your
2062@code{SHELL} environment variable (if it exists) specifies what shell
2063@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
2064the default shell (@file{/bin/sh} on Unix).
2065
2066On non-Unix systems, the program is usually invoked directly by
2067@value{GDBN}, which emulates I/O redirection via the appropriate system
2068calls, and the wildcard characters are expanded by the startup code of
2069the program, not by the shell.
c906108c
SS
2070
2071@code{run} with no arguments uses the same arguments used by the previous
2072@code{run}, or those set by the @code{set args} command.
2073
c906108c 2074@table @code
41afff9a 2075@kindex set args
c906108c
SS
2076@item set args
2077Specify the arguments to be used the next time your program is run. If
2078@code{set args} has no arguments, @code{run} executes your program
2079with no arguments. Once you have run your program with arguments,
2080using @code{set args} before the next @code{run} is the only way to run
2081it again without arguments.
2082
2083@kindex show args
2084@item show args
2085Show the arguments to give your program when it is started.
2086@end table
2087
6d2ebf8b 2088@node Environment
79a6e687 2089@section Your Program's Environment
c906108c
SS
2090
2091@cindex environment (of your program)
2092The @dfn{environment} consists of a set of environment variables and
2093their values. Environment variables conventionally record such things as
2094your user name, your home directory, your terminal type, and your search
2095path for programs to run. Usually you set up environment variables with
2096the shell and they are inherited by all the other programs you run. When
2097debugging, it can be useful to try running your program with a modified
2098environment without having to start @value{GDBN} over again.
2099
2100@table @code
2101@kindex path
2102@item path @var{directory}
2103Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
2104(the search path for executables) that will be passed to your program.
2105The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
2106You may specify several directory names, separated by whitespace or by a
2107system-dependent separator character (@samp{:} on Unix, @samp{;} on
2108MS-DOS and MS-Windows). If @var{directory} is already in the path, it
2109is moved to the front, so it is searched sooner.
c906108c
SS
2110
2111You can use the string @samp{$cwd} to refer to whatever is the current
2112working directory at the time @value{GDBN} searches the path. If you
2113use @samp{.} instead, it refers to the directory where you executed the
2114@code{path} command. @value{GDBN} replaces @samp{.} in the
2115@var{directory} argument (with the current path) before adding
2116@var{directory} to the search path.
2117@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
2118@c document that, since repeating it would be a no-op.
2119
2120@kindex show paths
2121@item show paths
2122Display the list of search paths for executables (the @code{PATH}
2123environment variable).
2124
2125@kindex show environment
2126@item show environment @r{[}@var{varname}@r{]}
2127Print the value of environment variable @var{varname} to be given to
2128your program when it starts. If you do not supply @var{varname},
2129print the names and values of all environment variables to be given to
2130your program. You can abbreviate @code{environment} as @code{env}.
2131
2132@kindex set environment
53a5351d 2133@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
2134Set environment variable @var{varname} to @var{value}. The value
2135changes for your program only, not for @value{GDBN} itself. @var{value} may
2136be any string; the values of environment variables are just strings, and
2137any interpretation is supplied by your program itself. The @var{value}
2138parameter is optional; if it is eliminated, the variable is set to a
2139null value.
2140@c "any string" here does not include leading, trailing
2141@c blanks. Gnu asks: does anyone care?
2142
2143For example, this command:
2144
474c8240 2145@smallexample
c906108c 2146set env USER = foo
474c8240 2147@end smallexample
c906108c
SS
2148
2149@noindent
d4f3574e 2150tells the debugged program, when subsequently run, that its user is named
c906108c
SS
2151@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
2152are not actually required.)
2153
2154@kindex unset environment
2155@item unset environment @var{varname}
2156Remove variable @var{varname} from the environment to be passed to your
2157program. This is different from @samp{set env @var{varname} =};
2158@code{unset environment} removes the variable from the environment,
2159rather than assigning it an empty value.
2160@end table
2161
d4f3574e
SS
2162@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
2163the shell indicated
c906108c
SS
2164by your @code{SHELL} environment variable if it exists (or
2165@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
2166that runs an initialization file---such as @file{.cshrc} for C-shell, or
2167@file{.bashrc} for BASH---any variables you set in that file affect
2168your program. You may wish to move setting of environment variables to
2169files that are only run when you sign on, such as @file{.login} or
2170@file{.profile}.
2171
6d2ebf8b 2172@node Working Directory
79a6e687 2173@section Your Program's Working Directory
c906108c
SS
2174
2175@cindex working directory (of your program)
2176Each time you start your program with @code{run}, it inherits its
2177working directory from the current working directory of @value{GDBN}.
2178The @value{GDBN} working directory is initially whatever it inherited
2179from its parent process (typically the shell), but you can specify a new
2180working directory in @value{GDBN} with the @code{cd} command.
2181
2182The @value{GDBN} working directory also serves as a default for the commands
2183that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
79a6e687 2184Specify Files}.
c906108c
SS
2185
2186@table @code
2187@kindex cd
721c2651 2188@cindex change working directory
c906108c
SS
2189@item cd @var{directory}
2190Set the @value{GDBN} working directory to @var{directory}.
2191
2192@kindex pwd
2193@item pwd
2194Print the @value{GDBN} working directory.
2195@end table
2196
60bf7e09
EZ
2197It is generally impossible to find the current working directory of
2198the process being debugged (since a program can change its directory
2199during its run). If you work on a system where @value{GDBN} is
2200configured with the @file{/proc} support, you can use the @code{info
2201proc} command (@pxref{SVR4 Process Information}) to find out the
2202current working directory of the debuggee.
2203
6d2ebf8b 2204@node Input/Output
79a6e687 2205@section Your Program's Input and Output
c906108c
SS
2206
2207@cindex redirection
2208@cindex i/o
2209@cindex terminal
2210By default, the program you run under @value{GDBN} does input and output to
5d161b24 2211the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
2212to its own terminal modes to interact with you, but it records the terminal
2213modes your program was using and switches back to them when you continue
2214running your program.
2215
2216@table @code
2217@kindex info terminal
2218@item info terminal
2219Displays information recorded by @value{GDBN} about the terminal modes your
2220program is using.
2221@end table
2222
2223You can redirect your program's input and/or output using shell
2224redirection with the @code{run} command. For example,
2225
474c8240 2226@smallexample
c906108c 2227run > outfile
474c8240 2228@end smallexample
c906108c
SS
2229
2230@noindent
2231starts your program, diverting its output to the file @file{outfile}.
2232
2233@kindex tty
2234@cindex controlling terminal
2235Another way to specify where your program should do input and output is
2236with the @code{tty} command. This command accepts a file name as
2237argument, and causes this file to be the default for future @code{run}
2238commands. It also resets the controlling terminal for the child
2239process, for future @code{run} commands. For example,
2240
474c8240 2241@smallexample
c906108c 2242tty /dev/ttyb
474c8240 2243@end smallexample
c906108c
SS
2244
2245@noindent
2246directs that processes started with subsequent @code{run} commands
2247default to do input and output on the terminal @file{/dev/ttyb} and have
2248that as their controlling terminal.
2249
2250An explicit redirection in @code{run} overrides the @code{tty} command's
2251effect on the input/output device, but not its effect on the controlling
2252terminal.
2253
2254When you use the @code{tty} command or redirect input in the @code{run}
2255command, only the input @emph{for your program} is affected. The input
3cb3b8df
BR
2256for @value{GDBN} still comes from your terminal. @code{tty} is an alias
2257for @code{set inferior-tty}.
2258
2259@cindex inferior tty
2260@cindex set inferior controlling terminal
2261You can use the @code{show inferior-tty} command to tell @value{GDBN} to
2262display the name of the terminal that will be used for future runs of your
2263program.
2264
2265@table @code
2266@item set inferior-tty /dev/ttyb
2267@kindex set inferior-tty
2268Set the tty for the program being debugged to /dev/ttyb.
2269
2270@item show inferior-tty
2271@kindex show inferior-tty
2272Show the current tty for the program being debugged.
2273@end table
c906108c 2274
6d2ebf8b 2275@node Attach
79a6e687 2276@section Debugging an Already-running Process
c906108c
SS
2277@kindex attach
2278@cindex attach
2279
2280@table @code
2281@item attach @var{process-id}
2282This command attaches to a running process---one that was started
2283outside @value{GDBN}. (@code{info files} shows your active
2284targets.) The command takes as argument a process ID. The usual way to
09d4efe1 2285find out the @var{process-id} of a Unix process is with the @code{ps} utility,
c906108c
SS
2286or with the @samp{jobs -l} shell command.
2287
2288@code{attach} does not repeat if you press @key{RET} a second time after
2289executing the command.
2290@end table
2291
2292To use @code{attach}, your program must be running in an environment
2293which supports processes; for example, @code{attach} does not work for
2294programs on bare-board targets that lack an operating system. You must
2295also have permission to send the process a signal.
2296
2297When you use @code{attach}, the debugger finds the program running in
2298the process first by looking in the current working directory, then (if
2299the program is not found) by using the source file search path
79a6e687 2300(@pxref{Source Path, ,Specifying Source Directories}). You can also use
c906108c
SS
2301the @code{file} command to load the program. @xref{Files, ,Commands to
2302Specify Files}.
2303
2304The first thing @value{GDBN} does after arranging to debug the specified
2305process is to stop it. You can examine and modify an attached process
53a5351d
JM
2306with all the @value{GDBN} commands that are ordinarily available when
2307you start processes with @code{run}. You can insert breakpoints; you
2308can step and continue; you can modify storage. If you would rather the
2309process continue running, you may use the @code{continue} command after
c906108c
SS
2310attaching @value{GDBN} to the process.
2311
2312@table @code
2313@kindex detach
2314@item detach
2315When you have finished debugging the attached process, you can use the
2316@code{detach} command to release it from @value{GDBN} control. Detaching
2317the process continues its execution. After the @code{detach} command,
2318that process and @value{GDBN} become completely independent once more, and you
2319are ready to @code{attach} another process or start one with @code{run}.
2320@code{detach} does not repeat if you press @key{RET} again after
2321executing the command.
2322@end table
2323
159fcc13
JK
2324If you exit @value{GDBN} while you have an attached process, you detach
2325that process. If you use the @code{run} command, you kill that process.
2326By default, @value{GDBN} asks for confirmation if you try to do either of these
2327things; you can control whether or not you need to confirm by using the
2328@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and
79a6e687 2329Messages}).
c906108c 2330
6d2ebf8b 2331@node Kill Process
79a6e687 2332@section Killing the Child Process
c906108c
SS
2333
2334@table @code
2335@kindex kill
2336@item kill
2337Kill the child process in which your program is running under @value{GDBN}.
2338@end table
2339
2340This command is useful if you wish to debug a core dump instead of a
2341running process. @value{GDBN} ignores any core dump file while your program
2342is running.
2343
2344On some operating systems, a program cannot be executed outside @value{GDBN}
2345while you have breakpoints set on it inside @value{GDBN}. You can use the
2346@code{kill} command in this situation to permit running your program
2347outside the debugger.
2348
2349The @code{kill} command is also useful if you wish to recompile and
2350relink your program, since on many systems it is impossible to modify an
2351executable file while it is running in a process. In this case, when you
2352next type @code{run}, @value{GDBN} notices that the file has changed, and
2353reads the symbol table again (while trying to preserve your current
2354breakpoint settings).
2355
6c95b8df
PA
2356@node Inferiors and Programs
2357@section Debugging Multiple Inferiors and Programs
b77209e0 2358
6c95b8df
PA
2359@value{GDBN} lets you run and debug multiple programs in a single
2360session. In addition, @value{GDBN} on some systems may let you run
2361several programs simultaneously (otherwise you have to exit from one
2362before starting another). In the most general case, you can have
2363multiple threads of execution in each of multiple processes, launched
2364from multiple executables.
b77209e0
PA
2365
2366@cindex inferior
2367@value{GDBN} represents the state of each program execution with an
2368object called an @dfn{inferior}. An inferior typically corresponds to
2369a process, but is more general and applies also to targets that do not
2370have processes. Inferiors may be created before a process runs, and
6c95b8df
PA
2371may be retained after a process exits. Inferiors have unique
2372identifiers that are different from process ids. Usually each
2373inferior will also have its own distinct address space, although some
2374embedded targets may have several inferiors running in different parts
2375of a single address space. Each inferior may in turn have multiple
2376threads running in it.
b77209e0 2377
6c95b8df
PA
2378To find out what inferiors exist at any moment, use @w{@code{info
2379inferiors}}:
b77209e0
PA
2380
2381@table @code
2382@kindex info inferiors
2383@item info inferiors
2384Print a list of all inferiors currently being managed by @value{GDBN}.
3a1ff0b6
PA
2385
2386@value{GDBN} displays for each inferior (in this order):
2387
2388@enumerate
2389@item
2390the inferior number assigned by @value{GDBN}
2391
2392@item
2393the target system's inferior identifier
6c95b8df
PA
2394
2395@item
2396the name of the executable the inferior is running.
2397
3a1ff0b6
PA
2398@end enumerate
2399
2400@noindent
2401An asterisk @samp{*} preceding the @value{GDBN} inferior number
2402indicates the current inferior.
2403
2404For example,
2277426b 2405@end table
3a1ff0b6
PA
2406@c end table here to get a little more width for example
2407
2408@smallexample
2409(@value{GDBP}) info inferiors
6c95b8df
PA
2410 Num Description Executable
2411 2 process 2307 hello
2412* 1 process 3401 goodbye
3a1ff0b6 2413@end smallexample
2277426b
PA
2414
2415To switch focus between inferiors, use the @code{inferior} command:
2416
2417@table @code
3a1ff0b6
PA
2418@kindex inferior @var{infno}
2419@item inferior @var{infno}
2420Make inferior number @var{infno} the current inferior. The argument
2421@var{infno} is the inferior number assigned by @value{GDBN}, as shown
2422in the first field of the @samp{info inferiors} display.
2277426b
PA
2423@end table
2424
6c95b8df
PA
2425
2426You can get multiple executables into a debugging session via the
2427@code{add-inferior} and @w{@code{clone-inferior}} commands. On some
2428systems @value{GDBN} can add inferiors to the debug session
2429automatically by following calls to @code{fork} and @code{exec}. To
2430remove inferiors from the debugging session use the
2431@w{@code{remove-inferior}} command.
2432
2433@table @code
2434@kindex add-inferior
2435@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ]
2436Adds @var{n} inferiors to be run using @var{executable} as the
2437executable. @var{n} defaults to 1. If no executable is specified,
2438the inferiors begins empty, with no program. You can still assign or
2439change the program assigned to the inferior at any time by using the
2440@code{file} command with the executable name as its argument.
2441
2442@kindex clone-inferior
2443@item clone-inferior [ -copies @var{n} ] [ @var{infno} ]
2444Adds @var{n} inferiors ready to execute the same program as inferior
2445@var{infno}. @var{n} defaults to 1. @var{infno} defaults to the
2446number of the current inferior. This is a convenient command when you
2447want to run another instance of the inferior you are debugging.
2448
2449@smallexample
2450(@value{GDBP}) info inferiors
2451 Num Description Executable
2452* 1 process 29964 helloworld
2453(@value{GDBP}) clone-inferior
2454Added inferior 2.
24551 inferiors added.
2456(@value{GDBP}) info inferiors
2457 Num Description Executable
2458 2 <null> helloworld
2459* 1 process 29964 helloworld
2460@end smallexample
2461
2462You can now simply switch focus to inferior 2 and run it.
2463
2464@kindex remove-inferior
2465@item remove-inferior @var{infno}
2466Removes the inferior @var{infno}. It is not possible to remove an
2467inferior that is running with this command. For those, use the
2468@code{kill} or @code{detach} command first.
2469
2470@end table
2471
2472To quit debugging one of the running inferiors that is not the current
2473inferior, you can either detach from it by using the @w{@code{detach
2474inferior}} command (allowing it to run independently), or kill it
2475using the @w{@code{kill inferior}} command:
2277426b
PA
2476
2477@table @code
3a1ff0b6
PA
2478@kindex detach inferior @var{infno}
2479@item detach inferior @var{infno}
2277426b 2480Detach from the inferior identified by @value{GDBN} inferior number
3a1ff0b6 2481@var{infno}, and remove it from the inferior list.
2277426b 2482
3a1ff0b6
PA
2483@kindex kill inferior @var{infno}
2484@item kill inferior @var{infno}
2277426b 2485Kill the inferior identified by @value{GDBN} inferior number
3a1ff0b6 2486@var{infno}, and remove it from the inferior list.
2277426b
PA
2487@end table
2488
6c95b8df
PA
2489After the successful completion of a command such as @code{detach},
2490@code{detach inferior}, @code{kill} or @code{kill inferior}, or after
2491a normal process exit, the inferior is still valid and listed with
2492@code{info inferiors}, ready to be restarted.
2493
2494
2277426b
PA
2495To be notified when inferiors are started or exit under @value{GDBN}'s
2496control use @w{@code{set print inferior-events}}:
b77209e0 2497
2277426b 2498@table @code
b77209e0
PA
2499@kindex set print inferior-events
2500@cindex print messages on inferior start and exit
2501@item set print inferior-events
2502@itemx set print inferior-events on
2503@itemx set print inferior-events off
2504The @code{set print inferior-events} command allows you to enable or
2505disable printing of messages when @value{GDBN} notices that new
2506inferiors have started or that inferiors have exited or have been
2507detached. By default, these messages will not be printed.
2508
2509@kindex show print inferior-events
2510@item show print inferior-events
2511Show whether messages will be printed when @value{GDBN} detects that
2512inferiors have started, exited or have been detached.
2513@end table
2514
6c95b8df
PA
2515Many commands will work the same with multiple programs as with a
2516single program: e.g., @code{print myglobal} will simply display the
2517value of @code{myglobal} in the current inferior.
2518
2519
2520Occasionaly, when debugging @value{GDBN} itself, it may be useful to
2521get more info about the relationship of inferiors, programs, address
2522spaces in a debug session. You can do that with the @w{@code{maint
2523info program-spaces}} command.
2524
2525@table @code
2526@kindex maint info program-spaces
2527@item maint info program-spaces
2528Print a list of all program spaces currently being managed by
2529@value{GDBN}.
2530
2531@value{GDBN} displays for each program space (in this order):
2532
2533@enumerate
2534@item
2535the program space number assigned by @value{GDBN}
2536
2537@item
2538the name of the executable loaded into the program space, with e.g.,
2539the @code{file} command.
2540
2541@end enumerate
2542
2543@noindent
2544An asterisk @samp{*} preceding the @value{GDBN} program space number
2545indicates the current program space.
2546
2547In addition, below each program space line, @value{GDBN} prints extra
2548information that isn't suitable to display in tabular form. For
2549example, the list of inferiors bound to the program space.
2550
2551@smallexample
2552(@value{GDBP}) maint info program-spaces
2553 Id Executable
2554 2 goodbye
2555 Bound inferiors: ID 1 (process 21561)
2556* 1 hello
2557@end smallexample
2558
2559Here we can see that no inferior is running the program @code{hello},
2560while @code{process 21561} is running the program @code{goodbye}. On
2561some targets, it is possible that multiple inferiors are bound to the
2562same program space. The most common example is that of debugging both
2563the parent and child processes of a @code{vfork} call. For example,
2564
2565@smallexample
2566(@value{GDBP}) maint info program-spaces
2567 Id Executable
2568* 1 vfork-test
2569 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045)
2570@end smallexample
2571
2572Here, both inferior 2 and inferior 1 are running in the same program
2573space as a result of inferior 1 having executed a @code{vfork} call.
2574@end table
2575
6d2ebf8b 2576@node Threads
79a6e687 2577@section Debugging Programs with Multiple Threads
c906108c
SS
2578
2579@cindex threads of execution
2580@cindex multiple threads
2581@cindex switching threads
2582In some operating systems, such as HP-UX and Solaris, a single program
2583may have more than one @dfn{thread} of execution. The precise semantics
2584of threads differ from one operating system to another, but in general
2585the threads of a single program are akin to multiple processes---except
2586that they share one address space (that is, they can all examine and
2587modify the same variables). On the other hand, each thread has its own
2588registers and execution stack, and perhaps private memory.
2589
2590@value{GDBN} provides these facilities for debugging multi-thread
2591programs:
2592
2593@itemize @bullet
2594@item automatic notification of new threads
2595@item @samp{thread @var{threadno}}, a command to switch among threads
2596@item @samp{info threads}, a command to inquire about existing threads
5d161b24 2597@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
2598a command to apply a command to a list of threads
2599@item thread-specific breakpoints
93815fbf
VP
2600@item @samp{set print thread-events}, which controls printing of
2601messages on thread start and exit.
17a37d48
PP
2602@item @samp{set libthread-db-search-path @var{path}}, which lets
2603the user specify which @code{libthread_db} to use if the default choice
2604isn't compatible with the program.
c906108c
SS
2605@end itemize
2606
c906108c
SS
2607@quotation
2608@emph{Warning:} These facilities are not yet available on every
2609@value{GDBN} configuration where the operating system supports threads.
2610If your @value{GDBN} does not support threads, these commands have no
2611effect. For example, a system without thread support shows no output
2612from @samp{info threads}, and always rejects the @code{thread} command,
2613like this:
2614
2615@smallexample
2616(@value{GDBP}) info threads
2617(@value{GDBP}) thread 1
2618Thread ID 1 not known. Use the "info threads" command to
2619see the IDs of currently known threads.
2620@end smallexample
2621@c FIXME to implementors: how hard would it be to say "sorry, this GDB
2622@c doesn't support threads"?
2623@end quotation
c906108c
SS
2624
2625@cindex focus of debugging
2626@cindex current thread
2627The @value{GDBN} thread debugging facility allows you to observe all
2628threads while your program runs---but whenever @value{GDBN} takes
2629control, one thread in particular is always the focus of debugging.
2630This thread is called the @dfn{current thread}. Debugging commands show
2631program information from the perspective of the current thread.
2632
41afff9a 2633@cindex @code{New} @var{systag} message
c906108c
SS
2634@cindex thread identifier (system)
2635@c FIXME-implementors!! It would be more helpful if the [New...] message
2636@c included GDB's numeric thread handle, so you could just go to that
2637@c thread without first checking `info threads'.
2638Whenever @value{GDBN} detects a new thread in your program, it displays
2639the target system's identification for the thread with a message in the
2640form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2641whose form varies depending on the particular system. For example, on
8807d78b 2642@sc{gnu}/Linux, you might see
c906108c 2643
474c8240 2644@smallexample
8807d78b 2645[New Thread 46912507313328 (LWP 25582)]
474c8240 2646@end smallexample
c906108c
SS
2647
2648@noindent
2649when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2650the @var{systag} is simply something like @samp{process 368}, with no
2651further qualifier.
2652
2653@c FIXME!! (1) Does the [New...] message appear even for the very first
2654@c thread of a program, or does it only appear for the
6ca652b0 2655@c second---i.e.@: when it becomes obvious we have a multithread
c906108c
SS
2656@c program?
2657@c (2) *Is* there necessarily a first thread always? Or do some
2658@c multithread systems permit starting a program with multiple
5d161b24 2659@c threads ab initio?
c906108c
SS
2660
2661@cindex thread number
2662@cindex thread identifier (GDB)
2663For debugging purposes, @value{GDBN} associates its own thread
2664number---always a single integer---with each thread in your program.
2665
2666@table @code
2667@kindex info threads
2668@item info threads
2669Display a summary of all threads currently in your
2670program. @value{GDBN} displays for each thread (in this order):
2671
2672@enumerate
09d4efe1
EZ
2673@item
2674the thread number assigned by @value{GDBN}
c906108c 2675
09d4efe1
EZ
2676@item
2677the target system's thread identifier (@var{systag})
c906108c 2678
09d4efe1
EZ
2679@item
2680the current stack frame summary for that thread
c906108c
SS
2681@end enumerate
2682
2683@noindent
2684An asterisk @samp{*} to the left of the @value{GDBN} thread number
2685indicates the current thread.
2686
5d161b24 2687For example,
c906108c
SS
2688@end table
2689@c end table here to get a little more width for example
2690
2691@smallexample
2692(@value{GDBP}) info threads
2693 3 process 35 thread 27 0x34e5 in sigpause ()
2694 2 process 35 thread 23 0x34e5 in sigpause ()
2695* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
2696 at threadtest.c:68
2697@end smallexample
53a5351d
JM
2698
2699On HP-UX systems:
c906108c 2700
4644b6e3
EZ
2701@cindex debugging multithreaded programs (on HP-UX)
2702@cindex thread identifier (GDB), on HP-UX
c906108c
SS
2703For debugging purposes, @value{GDBN} associates its own thread
2704number---a small integer assigned in thread-creation order---with each
2705thread in your program.
2706
41afff9a
EZ
2707@cindex @code{New} @var{systag} message, on HP-UX
2708@cindex thread identifier (system), on HP-UX
c906108c
SS
2709@c FIXME-implementors!! It would be more helpful if the [New...] message
2710@c included GDB's numeric thread handle, so you could just go to that
2711@c thread without first checking `info threads'.
2712Whenever @value{GDBN} detects a new thread in your program, it displays
2713both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
2714form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2715whose form varies depending on the particular system. For example, on
2716HP-UX, you see
2717
474c8240 2718@smallexample
c906108c 2719[New thread 2 (system thread 26594)]
474c8240 2720@end smallexample
c906108c
SS
2721
2722@noindent
5d161b24 2723when @value{GDBN} notices a new thread.
c906108c
SS
2724
2725@table @code
4644b6e3 2726@kindex info threads (HP-UX)
c906108c
SS
2727@item info threads
2728Display a summary of all threads currently in your
2729program. @value{GDBN} displays for each thread (in this order):
2730
2731@enumerate
2732@item the thread number assigned by @value{GDBN}
2733
2734@item the target system's thread identifier (@var{systag})
2735
2736@item the current stack frame summary for that thread
2737@end enumerate
2738
2739@noindent
2740An asterisk @samp{*} to the left of the @value{GDBN} thread number
2741indicates the current thread.
2742
5d161b24 2743For example,
c906108c
SS
2744@end table
2745@c end table here to get a little more width for example
2746
474c8240 2747@smallexample
c906108c 2748(@value{GDBP}) info threads
6d2ebf8b
SS
2749 * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") \@*
2750 at quicksort.c:137
2751 2 system thread 26606 0x7b0030d8 in __ksleep () \@*
2752 from /usr/lib/libc.2
2753 1 system thread 27905 0x7b003498 in _brk () \@*
2754 from /usr/lib/libc.2
474c8240 2755@end smallexample
c906108c 2756
c45da7e6
EZ
2757On Solaris, you can display more information about user threads with a
2758Solaris-specific command:
2759
2760@table @code
2761@item maint info sol-threads
2762@kindex maint info sol-threads
2763@cindex thread info (Solaris)
2764Display info on Solaris user threads.
2765@end table
2766
c906108c
SS
2767@table @code
2768@kindex thread @var{threadno}
2769@item thread @var{threadno}
2770Make thread number @var{threadno} the current thread. The command
2771argument @var{threadno} is the internal @value{GDBN} thread number, as
2772shown in the first field of the @samp{info threads} display.
2773@value{GDBN} responds by displaying the system identifier of the thread
2774you selected, and its current stack frame summary:
2775
2776@smallexample
2777@c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one
2778(@value{GDBP}) thread 2
c906108c 2779[Switching to process 35 thread 23]
c906108c
SS
27800x34e5 in sigpause ()
2781@end smallexample
2782
2783@noindent
2784As with the @samp{[New @dots{}]} message, the form of the text after
2785@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2786threads.
c906108c 2787
9c16f35a 2788@kindex thread apply
638ac427 2789@cindex apply command to several threads
839c27b7
EZ
2790@item thread apply [@var{threadno}] [@var{all}] @var{command}
2791The @code{thread apply} command allows you to apply the named
2792@var{command} to one or more threads. Specify the numbers of the
2793threads that you want affected with the command argument
2794@var{threadno}. It can be a single thread number, one of the numbers
2795shown in the first field of the @samp{info threads} display; or it
2796could be a range of thread numbers, as in @code{2-4}. To apply a
2797command to all threads, type @kbd{thread apply all @var{command}}.
93815fbf
VP
2798
2799@kindex set print thread-events
2800@cindex print messages on thread start and exit
2801@item set print thread-events
2802@itemx set print thread-events on
2803@itemx set print thread-events off
2804The @code{set print thread-events} command allows you to enable or
2805disable printing of messages when @value{GDBN} notices that new threads have
2806started or that threads have exited. By default, these messages will
2807be printed if detection of these events is supported by the target.
2808Note that these messages cannot be disabled on all targets.
2809
2810@kindex show print thread-events
2811@item show print thread-events
2812Show whether messages will be printed when @value{GDBN} detects that threads
2813have started and exited.
c906108c
SS
2814@end table
2815
79a6e687 2816@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for
c906108c
SS
2817more information about how @value{GDBN} behaves when you stop and start
2818programs with multiple threads.
2819
79a6e687 2820@xref{Set Watchpoints,,Setting Watchpoints}, for information about
c906108c 2821watchpoints in programs with multiple threads.
c906108c 2822
17a37d48
PP
2823@table @code
2824@kindex set libthread-db-search-path
2825@cindex search path for @code{libthread_db}
2826@item set libthread-db-search-path @r{[}@var{path}@r{]}
2827If this variable is set, @var{path} is a colon-separated list of
2828directories @value{GDBN} will use to search for @code{libthread_db}.
2829If you omit @var{path}, @samp{libthread-db-search-path} will be reset to
2830an empty list.
2831
2832On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper''
2833@code{libthread_db} library to obtain information about threads in the
2834inferior process. @value{GDBN} will use @samp{libthread-db-search-path}
2835to find @code{libthread_db}. If that fails, @value{GDBN} will continue
2836with default system shared library directories, and finally the directory
2837from which @code{libpthread} was loaded in the inferior process.
2838
2839For any @code{libthread_db} library @value{GDBN} finds in above directories,
2840@value{GDBN} attempts to initialize it with the current inferior process.
2841If this initialization fails (which could happen because of a version
2842mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN}
2843will unload @code{libthread_db}, and continue with the next directory.
2844If none of @code{libthread_db} libraries initialize successfully,
2845@value{GDBN} will issue a warning and thread debugging will be disabled.
2846
2847Setting @code{libthread-db-search-path} is currently implemented
2848only on some platforms.
2849
2850@kindex show libthread-db-search-path
2851@item show libthread-db-search-path
2852Display current libthread_db search path.
2853@end table
2854
6c95b8df
PA
2855@node Forks
2856@section Debugging Forks
c906108c
SS
2857
2858@cindex fork, debugging programs which call
2859@cindex multiple processes
2860@cindex processes, multiple
53a5351d
JM
2861On most systems, @value{GDBN} has no special support for debugging
2862programs which create additional processes using the @code{fork}
2863function. When a program forks, @value{GDBN} will continue to debug the
2864parent process and the child process will run unimpeded. If you have
2865set a breakpoint in any code which the child then executes, the child
2866will get a @code{SIGTRAP} signal which (unless it catches the signal)
2867will cause it to terminate.
c906108c
SS
2868
2869However, if you want to debug the child process there is a workaround
2870which isn't too painful. Put a call to @code{sleep} in the code which
2871the child process executes after the fork. It may be useful to sleep
2872only if a certain environment variable is set, or a certain file exists,
2873so that the delay need not occur when you don't want to run @value{GDBN}
2874on the child. While the child is sleeping, use the @code{ps} program to
2875get its process ID. Then tell @value{GDBN} (a new invocation of
2876@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 2877the child process (@pxref{Attach}). From that point on you can debug
c906108c 2878the child process just like any other process which you attached to.
c906108c 2879
b51970ac
DJ
2880On some systems, @value{GDBN} provides support for debugging programs that
2881create additional processes using the @code{fork} or @code{vfork} functions.
2882Currently, the only platforms with this feature are HP-UX (11.x and later
a6b151f1 2883only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later).
c906108c
SS
2884
2885By default, when a program forks, @value{GDBN} will continue to debug
2886the parent process and the child process will run unimpeded.
2887
2888If you want to follow the child process instead of the parent process,
2889use the command @w{@code{set follow-fork-mode}}.
2890
2891@table @code
2892@kindex set follow-fork-mode
2893@item set follow-fork-mode @var{mode}
2894Set the debugger response to a program call of @code{fork} or
2895@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
9c16f35a 2896process. The @var{mode} argument can be:
c906108c
SS
2897
2898@table @code
2899@item parent
2900The original process is debugged after a fork. The child process runs
2df3850c 2901unimpeded. This is the default.
c906108c
SS
2902
2903@item child
2904The new process is debugged after a fork. The parent process runs
2905unimpeded.
2906
c906108c
SS
2907@end table
2908
9c16f35a 2909@kindex show follow-fork-mode
c906108c 2910@item show follow-fork-mode
2df3850c 2911Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
2912@end table
2913
5c95884b
MS
2914@cindex debugging multiple processes
2915On Linux, if you want to debug both the parent and child processes, use the
2916command @w{@code{set detach-on-fork}}.
2917
2918@table @code
2919@kindex set detach-on-fork
2920@item set detach-on-fork @var{mode}
2921Tells gdb whether to detach one of the processes after a fork, or
2922retain debugger control over them both.
2923
2924@table @code
2925@item on
2926The child process (or parent process, depending on the value of
2927@code{follow-fork-mode}) will be detached and allowed to run
2928independently. This is the default.
2929
2930@item off
2931Both processes will be held under the control of @value{GDBN}.
2932One process (child or parent, depending on the value of
2933@code{follow-fork-mode}) is debugged as usual, while the other
2934is held suspended.
2935
2936@end table
2937
11310833
NR
2938@kindex show detach-on-fork
2939@item show detach-on-fork
2940Show whether detach-on-fork mode is on/off.
5c95884b
MS
2941@end table
2942
2277426b
PA
2943If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN}
2944will retain control of all forked processes (including nested forks).
2945You can list the forked processes under the control of @value{GDBN} by
2946using the @w{@code{info inferiors}} command, and switch from one fork
6c95b8df
PA
2947to another by using the @code{inferior} command (@pxref{Inferiors and
2948Programs, ,Debugging Multiple Inferiors and Programs}).
5c95884b
MS
2949
2950To quit debugging one of the forked processes, you can either detach
2277426b
PA
2951from it by using the @w{@code{detach inferior}} command (allowing it
2952to run independently), or kill it using the @w{@code{kill inferior}}
6c95b8df
PA
2953command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors
2954and Programs}.
5c95884b 2955
c906108c
SS
2956If you ask to debug a child process and a @code{vfork} is followed by an
2957@code{exec}, @value{GDBN} executes the new target up to the first
2958breakpoint in the new target. If you have a breakpoint set on
2959@code{main} in your original program, the breakpoint will also be set on
2960the child process's @code{main}.
2961
2277426b
PA
2962On some systems, when a child process is spawned by @code{vfork}, you
2963cannot debug the child or parent until an @code{exec} call completes.
c906108c
SS
2964
2965If you issue a @code{run} command to @value{GDBN} after an @code{exec}
6c95b8df
PA
2966call executes, the new target restarts. To restart the parent
2967process, use the @code{file} command with the parent executable name
2968as its argument. By default, after an @code{exec} call executes,
2969@value{GDBN} discards the symbols of the previous executable image.
2970You can change this behaviour with the @w{@code{set follow-exec-mode}}
2971command.
2972
2973@table @code
2974@kindex set follow-exec-mode
2975@item set follow-exec-mode @var{mode}
2976
2977Set debugger response to a program call of @code{exec}. An
2978@code{exec} call replaces the program image of a process.
2979
2980@code{follow-exec-mode} can be:
2981
2982@table @code
2983@item new
2984@value{GDBN} creates a new inferior and rebinds the process to this
2985new inferior. The program the process was running before the
2986@code{exec} call can be restarted afterwards by restarting the
2987original inferior.
2988
2989For example:
2990
2991@smallexample
2992(@value{GDBP}) info inferiors
2993(gdb) info inferior
2994 Id Description Executable
2995* 1 <null> prog1
2996(@value{GDBP}) run
2997process 12020 is executing new program: prog2
2998Program exited normally.
2999(@value{GDBP}) info inferiors
3000 Id Description Executable
3001* 2 <null> prog2
3002 1 <null> prog1
3003@end smallexample
3004
3005@item same
3006@value{GDBN} keeps the process bound to the same inferior. The new
3007executable image replaces the previous executable loaded in the
3008inferior. Restarting the inferior after the @code{exec} call, with
3009e.g., the @code{run} command, restarts the executable the process was
3010running after the @code{exec} call. This is the default mode.
3011
3012For example:
3013
3014@smallexample
3015(@value{GDBP}) info inferiors
3016 Id Description Executable
3017* 1 <null> prog1
3018(@value{GDBP}) run
3019process 12020 is executing new program: prog2
3020Program exited normally.
3021(@value{GDBP}) info inferiors
3022 Id Description Executable
3023* 1 <null> prog2
3024@end smallexample
3025
3026@end table
3027@end table
c906108c
SS
3028
3029You can use the @code{catch} command to make @value{GDBN} stop whenever
3030a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
79a6e687 3031Catchpoints, ,Setting Catchpoints}.
c906108c 3032
5c95884b 3033@node Checkpoint/Restart
79a6e687 3034@section Setting a @emph{Bookmark} to Return to Later
5c95884b
MS
3035
3036@cindex checkpoint
3037@cindex restart
3038@cindex bookmark
3039@cindex snapshot of a process
3040@cindex rewind program state
3041
3042On certain operating systems@footnote{Currently, only
3043@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a
3044program's state, called a @dfn{checkpoint}, and come back to it
3045later.
3046
3047Returning to a checkpoint effectively undoes everything that has
3048happened in the program since the @code{checkpoint} was saved. This
3049includes changes in memory, registers, and even (within some limits)
3050system state. Effectively, it is like going back in time to the
3051moment when the checkpoint was saved.
3052
3053Thus, if you're stepping thru a program and you think you're
3054getting close to the point where things go wrong, you can save
3055a checkpoint. Then, if you accidentally go too far and miss
3056the critical statement, instead of having to restart your program
3057from the beginning, you can just go back to the checkpoint and
3058start again from there.
3059
3060This can be especially useful if it takes a lot of time or
3061steps to reach the point where you think the bug occurs.
3062
3063To use the @code{checkpoint}/@code{restart} method of debugging:
3064
3065@table @code
3066@kindex checkpoint
3067@item checkpoint
3068Save a snapshot of the debugged program's current execution state.
3069The @code{checkpoint} command takes no arguments, but each checkpoint
3070is assigned a small integer id, similar to a breakpoint id.
3071
3072@kindex info checkpoints
3073@item info checkpoints
3074List the checkpoints that have been saved in the current debugging
3075session. For each checkpoint, the following information will be
3076listed:
3077
3078@table @code
3079@item Checkpoint ID
3080@item Process ID
3081@item Code Address
3082@item Source line, or label
3083@end table
3084
3085@kindex restart @var{checkpoint-id}
3086@item restart @var{checkpoint-id}
3087Restore the program state that was saved as checkpoint number
3088@var{checkpoint-id}. All program variables, registers, stack frames
3089etc.@: will be returned to the values that they had when the checkpoint
3090was saved. In essence, gdb will ``wind back the clock'' to the point
3091in time when the checkpoint was saved.
3092
3093Note that breakpoints, @value{GDBN} variables, command history etc.
3094are not affected by restoring a checkpoint. In general, a checkpoint
3095only restores things that reside in the program being debugged, not in
3096the debugger.
3097
b8db102d
MS
3098@kindex delete checkpoint @var{checkpoint-id}
3099@item delete checkpoint @var{checkpoint-id}
5c95884b
MS
3100Delete the previously-saved checkpoint identified by @var{checkpoint-id}.
3101
3102@end table
3103
3104Returning to a previously saved checkpoint will restore the user state
3105of the program being debugged, plus a significant subset of the system
3106(OS) state, including file pointers. It won't ``un-write'' data from
3107a file, but it will rewind the file pointer to the previous location,
3108so that the previously written data can be overwritten. For files
3109opened in read mode, the pointer will also be restored so that the
3110previously read data can be read again.
3111
3112Of course, characters that have been sent to a printer (or other
3113external device) cannot be ``snatched back'', and characters received
3114from eg.@: a serial device can be removed from internal program buffers,
3115but they cannot be ``pushed back'' into the serial pipeline, ready to
3116be received again. Similarly, the actual contents of files that have
3117been changed cannot be restored (at this time).
3118
3119However, within those constraints, you actually can ``rewind'' your
3120program to a previously saved point in time, and begin debugging it
3121again --- and you can change the course of events so as to debug a
3122different execution path this time.
3123
3124@cindex checkpoints and process id
3125Finally, there is one bit of internal program state that will be
3126different when you return to a checkpoint --- the program's process
3127id. Each checkpoint will have a unique process id (or @var{pid}),
3128and each will be different from the program's original @var{pid}.
3129If your program has saved a local copy of its process id, this could
3130potentially pose a problem.
3131
79a6e687 3132@subsection A Non-obvious Benefit of Using Checkpoints
5c95884b
MS
3133
3134On some systems such as @sc{gnu}/Linux, address space randomization
3135is performed on new processes for security reasons. This makes it
3136difficult or impossible to set a breakpoint, or watchpoint, on an
3137absolute address if you have to restart the program, since the
3138absolute location of a symbol will change from one execution to the
3139next.
3140
3141A checkpoint, however, is an @emph{identical} copy of a process.
3142Therefore if you create a checkpoint at (eg.@:) the start of main,
3143and simply return to that checkpoint instead of restarting the
3144process, you can avoid the effects of address randomization and
3145your symbols will all stay in the same place.
3146
6d2ebf8b 3147@node Stopping
c906108c
SS
3148@chapter Stopping and Continuing
3149
3150The principal purposes of using a debugger are so that you can stop your
3151program before it terminates; or so that, if your program runs into
3152trouble, you can investigate and find out why.
3153
7a292a7a
SS
3154Inside @value{GDBN}, your program may stop for any of several reasons,
3155such as a signal, a breakpoint, or reaching a new line after a
3156@value{GDBN} command such as @code{step}. You may then examine and
3157change variables, set new breakpoints or remove old ones, and then
3158continue execution. Usually, the messages shown by @value{GDBN} provide
3159ample explanation of the status of your program---but you can also
3160explicitly request this information at any time.
c906108c
SS
3161
3162@table @code
3163@kindex info program
3164@item info program
3165Display information about the status of your program: whether it is
7a292a7a 3166running or not, what process it is, and why it stopped.
c906108c
SS
3167@end table
3168
3169@menu
3170* Breakpoints:: Breakpoints, watchpoints, and catchpoints
3171* Continuing and Stepping:: Resuming execution
c906108c 3172* Signals:: Signals
c906108c 3173* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
3174@end menu
3175
6d2ebf8b 3176@node Breakpoints
79a6e687 3177@section Breakpoints, Watchpoints, and Catchpoints
c906108c
SS
3178
3179@cindex breakpoints
3180A @dfn{breakpoint} makes your program stop whenever a certain point in
3181the program is reached. For each breakpoint, you can add conditions to
3182control in finer detail whether your program stops. You can set
3183breakpoints with the @code{break} command and its variants (@pxref{Set
79a6e687 3184Breaks, ,Setting Breakpoints}), to specify the place where your program
c906108c
SS
3185should stop by line number, function name or exact address in the
3186program.
3187
09d4efe1
EZ
3188On some systems, you can set breakpoints in shared libraries before
3189the executable is run. There is a minor limitation on HP-UX systems:
3190you must wait until the executable is run in order to set breakpoints
3191in shared library routines that are not called directly by the program
3192(for example, routines that are arguments in a @code{pthread_create}
3193call).
c906108c
SS
3194
3195@cindex watchpoints
fd60e0df 3196@cindex data breakpoints
c906108c
SS
3197@cindex memory tracing
3198@cindex breakpoint on memory address
3199@cindex breakpoint on variable modification
3200A @dfn{watchpoint} is a special breakpoint that stops your program
fd60e0df 3201when the value of an expression changes. The expression may be a value
0ced0c34 3202of a variable, or it could involve values of one or more variables
fd60e0df
EZ
3203combined by operators, such as @samp{a + b}. This is sometimes called
3204@dfn{data breakpoints}. You must use a different command to set
79a6e687 3205watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside
fd60e0df
EZ
3206from that, you can manage a watchpoint like any other breakpoint: you
3207enable, disable, and delete both breakpoints and watchpoints using the
3208same commands.
c906108c
SS
3209
3210You can arrange to have values from your program displayed automatically
3211whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
79a6e687 3212Automatic Display}.
c906108c
SS
3213
3214@cindex catchpoints
3215@cindex breakpoint on events
3216A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 3217when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
3218exception or the loading of a library. As with watchpoints, you use a
3219different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
79a6e687 3220Catchpoints}), but aside from that, you can manage a catchpoint like any
c906108c 3221other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 3222@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
3223
3224@cindex breakpoint numbers
3225@cindex numbers for breakpoints
3226@value{GDBN} assigns a number to each breakpoint, watchpoint, or
3227catchpoint when you create it; these numbers are successive integers
3228starting with one. In many of the commands for controlling various
3229features of breakpoints you use the breakpoint number to say which
3230breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
3231@dfn{disabled}; if disabled, it has no effect on your program until you
3232enable it again.
3233
c5394b80
JM
3234@cindex breakpoint ranges
3235@cindex ranges of breakpoints
3236Some @value{GDBN} commands accept a range of breakpoints on which to
3237operate. A breakpoint range is either a single breakpoint number, like
3238@samp{5}, or two such numbers, in increasing order, separated by a
3239hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
d52fb0e9 3240all breakpoints in that range are operated on.
c5394b80 3241
c906108c
SS
3242@menu
3243* Set Breaks:: Setting breakpoints
3244* Set Watchpoints:: Setting watchpoints
3245* Set Catchpoints:: Setting catchpoints
3246* Delete Breaks:: Deleting breakpoints
3247* Disabling:: Disabling breakpoints
3248* Conditions:: Break conditions
3249* Break Commands:: Breakpoint command lists
d4f3574e 3250* Error in Breakpoints:: ``Cannot insert breakpoints''
79a6e687 3251* Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
c906108c
SS
3252@end menu
3253
6d2ebf8b 3254@node Set Breaks
79a6e687 3255@subsection Setting Breakpoints
c906108c 3256
5d161b24 3257@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
3258@c consider in particular declaration with/without initialization.
3259@c
3260@c FIXME 2 is there stuff on this already? break at fun start, already init?
3261
3262@kindex break
41afff9a
EZ
3263@kindex b @r{(@code{break})}
3264@vindex $bpnum@r{, convenience variable}
c906108c
SS
3265@cindex latest breakpoint
3266Breakpoints are set with the @code{break} command (abbreviated
5d161b24 3267@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 3268number of the breakpoint you've set most recently; see @ref{Convenience
79a6e687 3269Vars,, Convenience Variables}, for a discussion of what you can do with
c906108c
SS
3270convenience variables.
3271
c906108c 3272@table @code
2a25a5ba
EZ
3273@item break @var{location}
3274Set a breakpoint at the given @var{location}, which can specify a
3275function name, a line number, or an address of an instruction.
3276(@xref{Specify Location}, for a list of all the possible ways to
3277specify a @var{location}.) The breakpoint will stop your program just
3278before it executes any of the code in the specified @var{location}.
3279
c906108c 3280When using source languages that permit overloading of symbols, such as
2a25a5ba 3281C@t{++}, a function name may refer to more than one possible place to break.
6ba66d6a
JB
3282@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of
3283that situation.
c906108c 3284
45ac276d 3285It is also possible to insert a breakpoint that will stop the program
2c88c651
JB
3286only if a specific thread (@pxref{Thread-Specific Breakpoints})
3287or a specific task (@pxref{Ada Tasks}) hits that breakpoint.
45ac276d 3288
c906108c
SS
3289@item break
3290When called without any arguments, @code{break} sets a breakpoint at
3291the next instruction to be executed in the selected stack frame
3292(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
3293innermost, this makes your program stop as soon as control
3294returns to that frame. This is similar to the effect of a
3295@code{finish} command in the frame inside the selected frame---except
3296that @code{finish} does not leave an active breakpoint. If you use
3297@code{break} without an argument in the innermost frame, @value{GDBN} stops
3298the next time it reaches the current location; this may be useful
3299inside loops.
3300
3301@value{GDBN} normally ignores breakpoints when it resumes execution, until at
3302least one instruction has been executed. If it did not do this, you
3303would be unable to proceed past a breakpoint without first disabling the
3304breakpoint. This rule applies whether or not the breakpoint already
3305existed when your program stopped.
3306
3307@item break @dots{} if @var{cond}
3308Set a breakpoint with condition @var{cond}; evaluate the expression
3309@var{cond} each time the breakpoint is reached, and stop only if the
3310value is nonzero---that is, if @var{cond} evaluates as true.
3311@samp{@dots{}} stands for one of the possible arguments described
3312above (or no argument) specifying where to break. @xref{Conditions,
79a6e687 3313,Break Conditions}, for more information on breakpoint conditions.
c906108c
SS
3314
3315@kindex tbreak
3316@item tbreak @var{args}
3317Set a breakpoint enabled only for one stop. @var{args} are the
3318same as for the @code{break} command, and the breakpoint is set in the same
3319way, but the breakpoint is automatically deleted after the first time your
79a6e687 3320program stops there. @xref{Disabling, ,Disabling Breakpoints}.
c906108c 3321
c906108c 3322@kindex hbreak
ba04e063 3323@cindex hardware breakpoints
c906108c 3324@item hbreak @var{args}
d4f3574e
SS
3325Set a hardware-assisted breakpoint. @var{args} are the same as for the
3326@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
3327breakpoint requires hardware support and some target hardware may not
3328have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
3329debugging, so you can set a breakpoint at an instruction without
3330changing the instruction. This can be used with the new trap-generation
09d4efe1 3331provided by SPARClite DSU and most x86-based targets. These targets
d4f3574e
SS
3332will generate traps when a program accesses some data or instruction
3333address that is assigned to the debug registers. However the hardware
3334breakpoint registers can take a limited number of breakpoints. For
3335example, on the DSU, only two data breakpoints can be set at a time, and
3336@value{GDBN} will reject this command if more than two are used. Delete
3337or disable unused hardware breakpoints before setting new ones
79a6e687
BW
3338(@pxref{Disabling, ,Disabling Breakpoints}).
3339@xref{Conditions, ,Break Conditions}.
9c16f35a
EZ
3340For remote targets, you can restrict the number of hardware
3341breakpoints @value{GDBN} will use, see @ref{set remote
3342hardware-breakpoint-limit}.
501eef12 3343
c906108c
SS
3344@kindex thbreak
3345@item thbreak @var{args}
3346Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
3347are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 3348the same way. However, like the @code{tbreak} command,
c906108c
SS
3349the breakpoint is automatically deleted after the
3350first time your program stops there. Also, like the @code{hbreak}
5d161b24 3351command, the breakpoint requires hardware support and some target hardware
79a6e687
BW
3352may not have this support. @xref{Disabling, ,Disabling Breakpoints}.
3353See also @ref{Conditions, ,Break Conditions}.
c906108c
SS
3354
3355@kindex rbreak
3356@cindex regular expression
c45da7e6
EZ
3357@cindex breakpoints in functions matching a regexp
3358@cindex set breakpoints in many functions
c906108c 3359@item rbreak @var{regex}
c906108c 3360Set breakpoints on all functions matching the regular expression
11cf8741
JM
3361@var{regex}. This command sets an unconditional breakpoint on all
3362matches, printing a list of all breakpoints it set. Once these
3363breakpoints are set, they are treated just like the breakpoints set with
3364the @code{break} command. You can delete them, disable them, or make
3365them conditional the same way as any other breakpoint.
3366
3367The syntax of the regular expression is the standard one used with tools
3368like @file{grep}. Note that this is different from the syntax used by
3369shells, so for instance @code{foo*} matches all functions that include
3370an @code{fo} followed by zero or more @code{o}s. There is an implicit
3371@code{.*} leading and trailing the regular expression you supply, so to
3372match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 3373
f7dc1244 3374@cindex non-member C@t{++} functions, set breakpoint in
b37052ae 3375When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
3376breakpoints on overloaded functions that are not members of any special
3377classes.
c906108c 3378
f7dc1244
EZ
3379@cindex set breakpoints on all functions
3380The @code{rbreak} command can be used to set breakpoints in
3381@strong{all} the functions in a program, like this:
3382
3383@smallexample
3384(@value{GDBP}) rbreak .
3385@end smallexample
3386
c906108c
SS
3387@kindex info breakpoints
3388@cindex @code{$_} and @code{info breakpoints}
3389@item info breakpoints @r{[}@var{n}@r{]}
3390@itemx info break @r{[}@var{n}@r{]}
3391@itemx info watchpoints @r{[}@var{n}@r{]}
3392Print a table of all breakpoints, watchpoints, and catchpoints set and
45ac1734
EZ
3393not deleted. Optional argument @var{n} means print information only
3394about the specified breakpoint (or watchpoint or catchpoint). For
3395each breakpoint, following columns are printed:
c906108c
SS
3396
3397@table @emph
3398@item Breakpoint Numbers
3399@item Type
3400Breakpoint, watchpoint, or catchpoint.
3401@item Disposition
3402Whether the breakpoint is marked to be disabled or deleted when hit.
3403@item Enabled or Disabled
3404Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
b3db7447 3405that are not enabled.
c906108c 3406@item Address
fe6fbf8b 3407Where the breakpoint is in your program, as a memory address. For a
b3db7447
NR
3408pending breakpoint whose address is not yet known, this field will
3409contain @samp{<PENDING>}. Such breakpoint won't fire until a shared
3410library that has the symbol or line referred by breakpoint is loaded.
3411See below for details. A breakpoint with several locations will
3b784c4f 3412have @samp{<MULTIPLE>} in this field---see below for details.
c906108c
SS
3413@item What
3414Where the breakpoint is in the source for your program, as a file and
2650777c
JJ
3415line number. For a pending breakpoint, the original string passed to
3416the breakpoint command will be listed as it cannot be resolved until
3417the appropriate shared library is loaded in the future.
c906108c
SS
3418@end table
3419
3420@noindent
3421If a breakpoint is conditional, @code{info break} shows the condition on
3422the line following the affected breakpoint; breakpoint commands, if any,
2650777c
JJ
3423are listed after that. A pending breakpoint is allowed to have a condition
3424specified for it. The condition is not parsed for validity until a shared
3425library is loaded that allows the pending breakpoint to resolve to a
3426valid location.
c906108c
SS
3427
3428@noindent
3429@code{info break} with a breakpoint
3430number @var{n} as argument lists only that breakpoint. The
3431convenience variable @code{$_} and the default examining-address for
3432the @code{x} command are set to the address of the last breakpoint
79a6e687 3433listed (@pxref{Memory, ,Examining Memory}).
c906108c
SS
3434
3435@noindent
3436@code{info break} displays a count of the number of times the breakpoint
3437has been hit. This is especially useful in conjunction with the
3438@code{ignore} command. You can ignore a large number of breakpoint
3439hits, look at the breakpoint info to see how many times the breakpoint
3440was hit, and then run again, ignoring one less than that number. This
3441will get you quickly to the last hit of that breakpoint.
3442@end table
3443
3444@value{GDBN} allows you to set any number of breakpoints at the same place in
3445your program. There is nothing silly or meaningless about this. When
3446the breakpoints are conditional, this is even useful
79a6e687 3447(@pxref{Conditions, ,Break Conditions}).
c906108c 3448
2e9132cc
EZ
3449@cindex multiple locations, breakpoints
3450@cindex breakpoints, multiple locations
fcda367b 3451It is possible that a breakpoint corresponds to several locations
fe6fbf8b
VP
3452in your program. Examples of this situation are:
3453
3454@itemize @bullet
fe6fbf8b
VP
3455@item
3456For a C@t{++} constructor, the @value{NGCC} compiler generates several
3457instances of the function body, used in different cases.
3458
3459@item
3460For a C@t{++} template function, a given line in the function can
3461correspond to any number of instantiations.
3462
3463@item
3464For an inlined function, a given source line can correspond to
3465several places where that function is inlined.
fe6fbf8b
VP
3466@end itemize
3467
3468In all those cases, @value{GDBN} will insert a breakpoint at all
2e9132cc
EZ
3469the relevant locations@footnote{
3470As of this writing, multiple-location breakpoints work only if there's
3471line number information for all the locations. This means that they
3472will generally not work in system libraries, unless you have debug
3473info with line numbers for them.}.
fe6fbf8b 3474
3b784c4f
EZ
3475A breakpoint with multiple locations is displayed in the breakpoint
3476table using several rows---one header row, followed by one row for
3477each breakpoint location. The header row has @samp{<MULTIPLE>} in the
3478address column. The rows for individual locations contain the actual
3479addresses for locations, and show the functions to which those
3480locations belong. The number column for a location is of the form
fe6fbf8b
VP
3481@var{breakpoint-number}.@var{location-number}.
3482
3483For example:
3b784c4f 3484
fe6fbf8b
VP
3485@smallexample
3486Num Type Disp Enb Address What
34871 breakpoint keep y <MULTIPLE>
3488 stop only if i==1
3489 breakpoint already hit 1 time
34901.1 y 0x080486a2 in void foo<int>() at t.cc:8
34911.2 y 0x080486ca in void foo<double>() at t.cc:8
3492@end smallexample
3493
3494Each location can be individually enabled or disabled by passing
3495@var{breakpoint-number}.@var{location-number} as argument to the
3b784c4f
EZ
3496@code{enable} and @code{disable} commands. Note that you cannot
3497delete the individual locations from the list, you can only delete the
16bfc218 3498entire list of locations that belong to their parent breakpoint (with
3b784c4f
EZ
3499the @kbd{delete @var{num}} command, where @var{num} is the number of
3500the parent breakpoint, 1 in the above example). Disabling or enabling
3501the parent breakpoint (@pxref{Disabling}) affects all of the locations
3502that belong to that breakpoint.
fe6fbf8b 3503
2650777c 3504@cindex pending breakpoints
fe6fbf8b 3505It's quite common to have a breakpoint inside a shared library.
3b784c4f 3506Shared libraries can be loaded and unloaded explicitly,
fe6fbf8b
VP
3507and possibly repeatedly, as the program is executed. To support
3508this use case, @value{GDBN} updates breakpoint locations whenever
3509any shared library is loaded or unloaded. Typically, you would
fcda367b 3510set a breakpoint in a shared library at the beginning of your
fe6fbf8b
VP
3511debugging session, when the library is not loaded, and when the
3512symbols from the library are not available. When you try to set
3513breakpoint, @value{GDBN} will ask you if you want to set
3b784c4f 3514a so called @dfn{pending breakpoint}---breakpoint whose address
fe6fbf8b
VP
3515is not yet resolved.
3516
3517After the program is run, whenever a new shared library is loaded,
3518@value{GDBN} reevaluates all the breakpoints. When a newly loaded
3519shared library contains the symbol or line referred to by some
3520pending breakpoint, that breakpoint is resolved and becomes an
3521ordinary breakpoint. When a library is unloaded, all breakpoints
3522that refer to its symbols or source lines become pending again.
3523
3524This logic works for breakpoints with multiple locations, too. For
3525example, if you have a breakpoint in a C@t{++} template function, and
3526a newly loaded shared library has an instantiation of that template,
3527a new location is added to the list of locations for the breakpoint.
3528
3529Except for having unresolved address, pending breakpoints do not
3530differ from regular breakpoints. You can set conditions or commands,
3531enable and disable them and perform other breakpoint operations.
3532
3533@value{GDBN} provides some additional commands for controlling what
3534happens when the @samp{break} command cannot resolve breakpoint
3535address specification to an address:
dd79a6cf
JJ
3536
3537@kindex set breakpoint pending
3538@kindex show breakpoint pending
3539@table @code
3540@item set breakpoint pending auto
3541This is the default behavior. When @value{GDBN} cannot find the breakpoint
3542location, it queries you whether a pending breakpoint should be created.
3543
3544@item set breakpoint pending on
3545This indicates that an unrecognized breakpoint location should automatically
3546result in a pending breakpoint being created.
3547
3548@item set breakpoint pending off
3549This indicates that pending breakpoints are not to be created. Any
3550unrecognized breakpoint location results in an error. This setting does
3551not affect any pending breakpoints previously created.
3552
3553@item show breakpoint pending
3554Show the current behavior setting for creating pending breakpoints.
3555@end table
2650777c 3556
fe6fbf8b
VP
3557The settings above only affect the @code{break} command and its
3558variants. Once breakpoint is set, it will be automatically updated
3559as shared libraries are loaded and unloaded.
2650777c 3560
765dc015
VP
3561@cindex automatic hardware breakpoints
3562For some targets, @value{GDBN} can automatically decide if hardware or
3563software breakpoints should be used, depending on whether the
3564breakpoint address is read-only or read-write. This applies to
3565breakpoints set with the @code{break} command as well as to internal
3566breakpoints set by commands like @code{next} and @code{finish}. For
fcda367b 3567breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware
765dc015
VP
3568breakpoints.
3569
3570You can control this automatic behaviour with the following commands::
3571
3572@kindex set breakpoint auto-hw
3573@kindex show breakpoint auto-hw
3574@table @code
3575@item set breakpoint auto-hw on
3576This is the default behavior. When @value{GDBN} sets a breakpoint, it
3577will try to use the target memory map to decide if software or hardware
3578breakpoint must be used.
3579
3580@item set breakpoint auto-hw off
3581This indicates @value{GDBN} should not automatically select breakpoint
3582type. If the target provides a memory map, @value{GDBN} will warn when
3583trying to set software breakpoint at a read-only address.
3584@end table
3585
74960c60
VP
3586@value{GDBN} normally implements breakpoints by replacing the program code
3587at the breakpoint address with a special instruction, which, when
3588executed, given control to the debugger. By default, the program
3589code is so modified only when the program is resumed. As soon as
3590the program stops, @value{GDBN} restores the original instructions. This
3591behaviour guards against leaving breakpoints inserted in the
3592target should gdb abrubptly disconnect. However, with slow remote
3593targets, inserting and removing breakpoint can reduce the performance.
3594This behavior can be controlled with the following commands::
3595
3596@kindex set breakpoint always-inserted
3597@kindex show breakpoint always-inserted
3598@table @code
3599@item set breakpoint always-inserted off
33e5cbd6
PA
3600All breakpoints, including newly added by the user, are inserted in
3601the target only when the target is resumed. All breakpoints are
3602removed from the target when it stops.
74960c60
VP
3603
3604@item set breakpoint always-inserted on
3605Causes all breakpoints to be inserted in the target at all times. If
3606the user adds a new breakpoint, or changes an existing breakpoint, the
3607breakpoints in the target are updated immediately. A breakpoint is
3608removed from the target only when breakpoint itself is removed.
33e5cbd6
PA
3609
3610@cindex non-stop mode, and @code{breakpoint always-inserted}
3611@item set breakpoint always-inserted auto
3612This is the default mode. If @value{GDBN} is controlling the inferior
3613in non-stop mode (@pxref{Non-Stop Mode}), gdb behaves as if
3614@code{breakpoint always-inserted} mode is on. If @value{GDBN} is
3615controlling the inferior in all-stop mode, @value{GDBN} behaves as if
3616@code{breakpoint always-inserted} mode is off.
74960c60 3617@end table
765dc015 3618
c906108c
SS
3619@cindex negative breakpoint numbers
3620@cindex internal @value{GDBN} breakpoints
eb12ee30
AC
3621@value{GDBN} itself sometimes sets breakpoints in your program for
3622special purposes, such as proper handling of @code{longjmp} (in C
3623programs). These internal breakpoints are assigned negative numbers,
3624starting with @code{-1}; @samp{info breakpoints} does not display them.
c906108c 3625You can see these breakpoints with the @value{GDBN} maintenance command
eb12ee30 3626@samp{maint info breakpoints} (@pxref{maint info breakpoints}).
c906108c
SS
3627
3628
6d2ebf8b 3629@node Set Watchpoints
79a6e687 3630@subsection Setting Watchpoints
c906108c
SS
3631
3632@cindex setting watchpoints
c906108c
SS
3633You can use a watchpoint to stop execution whenever the value of an
3634expression changes, without having to predict a particular place where
fd60e0df
EZ
3635this may happen. (This is sometimes called a @dfn{data breakpoint}.)
3636The expression may be as simple as the value of a single variable, or
3637as complex as many variables combined by operators. Examples include:
3638
3639@itemize @bullet
3640@item
3641A reference to the value of a single variable.
3642
3643@item
3644An address cast to an appropriate data type. For example,
3645@samp{*(int *)0x12345678} will watch a 4-byte region at the specified
3646address (assuming an @code{int} occupies 4 bytes).
3647
3648@item
3649An arbitrarily complex expression, such as @samp{a*b + c/d}. The
3650expression can use any operators valid in the program's native
3651language (@pxref{Languages}).
3652@end itemize
c906108c 3653
fa4727a6
DJ
3654You can set a watchpoint on an expression even if the expression can
3655not be evaluated yet. For instance, you can set a watchpoint on
3656@samp{*global_ptr} before @samp{global_ptr} is initialized.
3657@value{GDBN} will stop when your program sets @samp{global_ptr} and
3658the expression produces a valid value. If the expression becomes
3659valid in some other way than changing a variable (e.g.@: if the memory
3660pointed to by @samp{*global_ptr} becomes readable as the result of a
3661@code{malloc} call), @value{GDBN} may not stop until the next time
3662the expression changes.
3663
82f2d802
EZ
3664@cindex software watchpoints
3665@cindex hardware watchpoints
c906108c 3666Depending on your system, watchpoints may be implemented in software or
2df3850c 3667hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
3668program and testing the variable's value each time, which is hundreds of
3669times slower than normal execution. (But this may still be worth it, to
3670catch errors where you have no clue what part of your program is the
3671culprit.)
3672
37e4754d 3673On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other
82f2d802
EZ
3674x86-based targets, @value{GDBN} includes support for hardware
3675watchpoints, which do not slow down the running of your program.
c906108c
SS
3676
3677@table @code
3678@kindex watch
d8b2a693 3679@item watch @var{expr} @r{[}thread @var{threadnum}@r{]}
fd60e0df
EZ
3680Set a watchpoint for an expression. @value{GDBN} will break when the
3681expression @var{expr} is written into by the program and its value
3682changes. The simplest (and the most popular) use of this command is
3683to watch the value of a single variable:
3684
3685@smallexample
3686(@value{GDBP}) watch foo
3687@end smallexample
c906108c 3688
d8b2a693
JB
3689If the command includes a @code{@r{[}thread @var{threadnum}@r{]}}
3690clause, @value{GDBN} breaks only when the thread identified by
3691@var{threadnum} changes the value of @var{expr}. If any other threads
3692change the value of @var{expr}, @value{GDBN} will not break. Note
3693that watchpoints restricted to a single thread in this way only work
3694with Hardware Watchpoints.
3695
c906108c 3696@kindex rwatch
d8b2a693 3697@item rwatch @var{expr} @r{[}thread @var{threadnum}@r{]}
09d4efe1
EZ
3698Set a watchpoint that will break when the value of @var{expr} is read
3699by the program.
c906108c
SS
3700
3701@kindex awatch
d8b2a693 3702@item awatch @var{expr} @r{[}thread @var{threadnum}@r{]}
09d4efe1
EZ
3703Set a watchpoint that will break when @var{expr} is either read from
3704or written into by the program.
c906108c 3705
45ac1734 3706@kindex info watchpoints @r{[}@var{n}@r{]}
c906108c
SS
3707@item info watchpoints
3708This command prints a list of watchpoints, breakpoints, and catchpoints;
09d4efe1 3709it is the same as @code{info break} (@pxref{Set Breaks}).
c906108c
SS
3710@end table
3711
3712@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
3713watchpoints execute very quickly, and the debugger reports a change in
3714value at the exact instruction where the change occurs. If @value{GDBN}
3715cannot set a hardware watchpoint, it sets a software watchpoint, which
3716executes more slowly and reports the change in value at the next
82f2d802
EZ
3717@emph{statement}, not the instruction, after the change occurs.
3718
82f2d802
EZ
3719@cindex use only software watchpoints
3720You can force @value{GDBN} to use only software watchpoints with the
3721@kbd{set can-use-hw-watchpoints 0} command. With this variable set to
3722zero, @value{GDBN} will never try to use hardware watchpoints, even if
3723the underlying system supports them. (Note that hardware-assisted
3724watchpoints that were set @emph{before} setting
3725@code{can-use-hw-watchpoints} to zero will still use the hardware
d3e8051b 3726mechanism of watching expression values.)
c906108c 3727
9c16f35a
EZ
3728@table @code
3729@item set can-use-hw-watchpoints
3730@kindex set can-use-hw-watchpoints
3731Set whether or not to use hardware watchpoints.
3732
3733@item show can-use-hw-watchpoints
3734@kindex show can-use-hw-watchpoints
3735Show the current mode of using hardware watchpoints.
3736@end table
3737
3738For remote targets, you can restrict the number of hardware
3739watchpoints @value{GDBN} will use, see @ref{set remote
3740hardware-breakpoint-limit}.
3741
c906108c
SS
3742When you issue the @code{watch} command, @value{GDBN} reports
3743
474c8240 3744@smallexample
c906108c 3745Hardware watchpoint @var{num}: @var{expr}
474c8240 3746@end smallexample
c906108c
SS
3747
3748@noindent
3749if it was able to set a hardware watchpoint.
3750
7be570e7
JM
3751Currently, the @code{awatch} and @code{rwatch} commands can only set
3752hardware watchpoints, because accesses to data that don't change the
3753value of the watched expression cannot be detected without examining
3754every instruction as it is being executed, and @value{GDBN} does not do
3755that currently. If @value{GDBN} finds that it is unable to set a
3756hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
3757will print a message like this:
3758
3759@smallexample
3760Expression cannot be implemented with read/access watchpoint.
3761@end smallexample
3762
3763Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
3764data type of the watched expression is wider than what a hardware
3765watchpoint on the target machine can handle. For example, some systems
3766can only watch regions that are up to 4 bytes wide; on such systems you
3767cannot set hardware watchpoints for an expression that yields a
3768double-precision floating-point number (which is typically 8 bytes
3769wide). As a work-around, it might be possible to break the large region
3770into a series of smaller ones and watch them with separate watchpoints.
3771
3772If you set too many hardware watchpoints, @value{GDBN} might be unable
3773to insert all of them when you resume the execution of your program.
3774Since the precise number of active watchpoints is unknown until such
3775time as the program is about to be resumed, @value{GDBN} might not be
3776able to warn you about this when you set the watchpoints, and the
3777warning will be printed only when the program is resumed:
3778
3779@smallexample
3780Hardware watchpoint @var{num}: Could not insert watchpoint
3781@end smallexample
3782
3783@noindent
3784If this happens, delete or disable some of the watchpoints.
3785
fd60e0df
EZ
3786Watching complex expressions that reference many variables can also
3787exhaust the resources available for hardware-assisted watchpoints.
3788That's because @value{GDBN} needs to watch every variable in the
3789expression with separately allocated resources.
3790
c906108c 3791If you call a function interactively using @code{print} or @code{call},
2df3850c 3792any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
3793kind of breakpoint or the call completes.
3794
7be570e7
JM
3795@value{GDBN} automatically deletes watchpoints that watch local
3796(automatic) variables, or expressions that involve such variables, when
3797they go out of scope, that is, when the execution leaves the block in
3798which these variables were defined. In particular, when the program
3799being debugged terminates, @emph{all} local variables go out of scope,
3800and so only watchpoints that watch global variables remain set. If you
3801rerun the program, you will need to set all such watchpoints again. One
3802way of doing that would be to set a code breakpoint at the entry to the
3803@code{main} function and when it breaks, set all the watchpoints.
3804
c906108c
SS
3805@cindex watchpoints and threads
3806@cindex threads and watchpoints
d983da9c
DJ
3807In multi-threaded programs, watchpoints will detect changes to the
3808watched expression from every thread.
3809
3810@quotation
3811@emph{Warning:} In multi-threaded programs, software watchpoints
53a5351d
JM
3812have only limited usefulness. If @value{GDBN} creates a software
3813watchpoint, it can only watch the value of an expression @emph{in a
3814single thread}. If you are confident that the expression can only
3815change due to the current thread's activity (and if you are also
3816confident that no other thread can become current), then you can use
3817software watchpoints as usual. However, @value{GDBN} may not notice
3818when a non-current thread's activity changes the expression. (Hardware
3819watchpoints, in contrast, watch an expression in all threads.)
c906108c 3820@end quotation
c906108c 3821
501eef12
AC
3822@xref{set remote hardware-watchpoint-limit}.
3823
6d2ebf8b 3824@node Set Catchpoints
79a6e687 3825@subsection Setting Catchpoints
d4f3574e 3826@cindex catchpoints, setting
c906108c
SS
3827@cindex exception handlers
3828@cindex event handling
3829
3830You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 3831kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
3832shared library. Use the @code{catch} command to set a catchpoint.
3833
3834@table @code
3835@kindex catch
3836@item catch @var{event}
3837Stop when @var{event} occurs. @var{event} can be any of the following:
3838@table @code
3839@item throw
4644b6e3 3840@cindex stop on C@t{++} exceptions
b37052ae 3841The throwing of a C@t{++} exception.
c906108c
SS
3842
3843@item catch
b37052ae 3844The catching of a C@t{++} exception.
c906108c 3845
8936fcda
JB
3846@item exception
3847@cindex Ada exception catching
3848@cindex catch Ada exceptions
3849An Ada exception being raised. If an exception name is specified
3850at the end of the command (eg @code{catch exception Program_Error}),
3851the debugger will stop only when this specific exception is raised.
3852Otherwise, the debugger stops execution when any Ada exception is raised.
3853
87f67dba
JB
3854When inserting an exception catchpoint on a user-defined exception whose
3855name is identical to one of the exceptions defined by the language, the
3856fully qualified name must be used as the exception name. Otherwise,
3857@value{GDBN} will assume that it should stop on the pre-defined exception
3858rather than the user-defined one. For instance, assuming an exception
3859called @code{Constraint_Error} is defined in package @code{Pck}, then
3860the command to use to catch such exceptions is @kbd{catch exception
3861Pck.Constraint_Error}.
3862
8936fcda
JB
3863@item exception unhandled
3864An exception that was raised but is not handled by the program.
3865
3866@item assert
3867A failed Ada assertion.
3868
c906108c 3869@item exec
4644b6e3 3870@cindex break on fork/exec
5ee187d7
DJ
3871A call to @code{exec}. This is currently only available for HP-UX
3872and @sc{gnu}/Linux.
c906108c 3873
a96d9b2e 3874@item syscall
ee8e71d4 3875@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{}
a96d9b2e
SDJ
3876@cindex break on a system call.
3877A call to or return from a system call, a.k.a.@: @dfn{syscall}. A
3878syscall is a mechanism for application programs to request a service
3879from the operating system (OS) or one of the OS system services.
3880@value{GDBN} can catch some or all of the syscalls issued by the
3881debuggee, and show the related information for each syscall. If no
3882argument is specified, calls to and returns from all system calls
3883will be caught.
3884
3885@var{name} can be any system call name that is valid for the
3886underlying OS. Just what syscalls are valid depends on the OS. On
3887GNU and Unix systems, you can find the full list of valid syscall
3888names on @file{/usr/include/asm/unistd.h}.
3889
3890@c For MS-Windows, the syscall names and the corresponding numbers
3891@c can be found, e.g., on this URL:
3892@c http://www.metasploit.com/users/opcode/syscalls.html
3893@c but we don't support Windows syscalls yet.
3894
3895Normally, @value{GDBN} knows in advance which syscalls are valid for
3896each OS, so you can use the @value{GDBN} command-line completion
3897facilities (@pxref{Completion,, command completion}) to list the
3898available choices.
3899
3900You may also specify the system call numerically. A syscall's
3901number is the value passed to the OS's syscall dispatcher to
3902identify the requested service. When you specify the syscall by its
3903name, @value{GDBN} uses its database of syscalls to convert the name
3904into the corresponding numeric code, but using the number directly
3905may be useful if @value{GDBN}'s database does not have the complete
3906list of syscalls on your system (e.g., because @value{GDBN} lags
3907behind the OS upgrades).
3908
3909The example below illustrates how this command works if you don't provide
3910arguments to it:
3911
3912@smallexample
3913(@value{GDBP}) catch syscall
3914Catchpoint 1 (syscall)
3915(@value{GDBP}) r
3916Starting program: /tmp/catch-syscall
3917
3918Catchpoint 1 (call to syscall 'close'), \
3919 0xffffe424 in __kernel_vsyscall ()
3920(@value{GDBP}) c
3921Continuing.
3922
3923Catchpoint 1 (returned from syscall 'close'), \
3924 0xffffe424 in __kernel_vsyscall ()
3925(@value{GDBP})
3926@end smallexample
3927
3928Here is an example of catching a system call by name:
3929
3930@smallexample
3931(@value{GDBP}) catch syscall chroot
3932Catchpoint 1 (syscall 'chroot' [61])
3933(@value{GDBP}) r
3934Starting program: /tmp/catch-syscall
3935
3936Catchpoint 1 (call to syscall 'chroot'), \
3937 0xffffe424 in __kernel_vsyscall ()
3938(@value{GDBP}) c
3939Continuing.
3940
3941Catchpoint 1 (returned from syscall 'chroot'), \
3942 0xffffe424 in __kernel_vsyscall ()
3943(@value{GDBP})
3944@end smallexample
3945
3946An example of specifying a system call numerically. In the case
3947below, the syscall number has a corresponding entry in the XML
3948file, so @value{GDBN} finds its name and prints it:
3949
3950@smallexample
3951(@value{GDBP}) catch syscall 252
3952Catchpoint 1 (syscall(s) 'exit_group')
3953(@value{GDBP}) r
3954Starting program: /tmp/catch-syscall
3955
3956Catchpoint 1 (call to syscall 'exit_group'), \
3957 0xffffe424 in __kernel_vsyscall ()
3958(@value{GDBP}) c
3959Continuing.
3960
3961Program exited normally.
3962(@value{GDBP})
3963@end smallexample
3964
3965However, there can be situations when there is no corresponding name
3966in XML file for that syscall number. In this case, @value{GDBN} prints
3967a warning message saying that it was not able to find the syscall name,
3968but the catchpoint will be set anyway. See the example below:
3969
3970@smallexample
3971(@value{GDBP}) catch syscall 764
3972warning: The number '764' does not represent a known syscall.
3973Catchpoint 2 (syscall 764)
3974(@value{GDBP})
3975@end smallexample
3976
3977If you configure @value{GDBN} using the @samp{--without-expat} option,
3978it will not be able to display syscall names. Also, if your
3979architecture does not have an XML file describing its system calls,
3980you will not be able to see the syscall names. It is important to
3981notice that these two features are used for accessing the syscall
3982name database. In either case, you will see a warning like this:
3983
3984@smallexample
3985(@value{GDBP}) catch syscall
3986warning: Could not open "syscalls/i386-linux.xml"
3987warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'.
3988GDB will not be able to display syscall names.
3989Catchpoint 1 (syscall)
3990(@value{GDBP})
3991@end smallexample
3992
3993Of course, the file name will change depending on your architecture and system.
3994
3995Still using the example above, you can also try to catch a syscall by its
3996number. In this case, you would see something like:
3997
3998@smallexample
3999(@value{GDBP}) catch syscall 252
4000Catchpoint 1 (syscall(s) 252)
4001@end smallexample
4002
4003Again, in this case @value{GDBN} would not be able to display syscall's names.
4004
c906108c 4005@item fork
5ee187d7
DJ
4006A call to @code{fork}. This is currently only available for HP-UX
4007and @sc{gnu}/Linux.
c906108c
SS
4008
4009@item vfork
5ee187d7
DJ
4010A call to @code{vfork}. This is currently only available for HP-UX
4011and @sc{gnu}/Linux.
c906108c 4012
c906108c
SS
4013@end table
4014
4015@item tcatch @var{event}
4016Set a catchpoint that is enabled only for one stop. The catchpoint is
4017automatically deleted after the first time the event is caught.
4018
4019@end table
4020
4021Use the @code{info break} command to list the current catchpoints.
4022
b37052ae 4023There are currently some limitations to C@t{++} exception handling
c906108c
SS
4024(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
4025
4026@itemize @bullet
4027@item
4028If you call a function interactively, @value{GDBN} normally returns
4029control to you when the function has finished executing. If the call
4030raises an exception, however, the call may bypass the mechanism that
4031returns control to you and cause your program either to abort or to
4032simply continue running until it hits a breakpoint, catches a signal
4033that @value{GDBN} is listening for, or exits. This is the case even if
4034you set a catchpoint for the exception; catchpoints on exceptions are
4035disabled within interactive calls.
4036
4037@item
4038You cannot raise an exception interactively.
4039
4040@item
4041You cannot install an exception handler interactively.
4042@end itemize
4043
4044@cindex raise exceptions
4045Sometimes @code{catch} is not the best way to debug exception handling:
4046if you need to know exactly where an exception is raised, it is better to
4047stop @emph{before} the exception handler is called, since that way you
4048can see the stack before any unwinding takes place. If you set a
4049breakpoint in an exception handler instead, it may not be easy to find
4050out where the exception was raised.
4051
4052To stop just before an exception handler is called, you need some
b37052ae 4053knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
4054raised by calling a library function named @code{__raise_exception}
4055which has the following ANSI C interface:
4056
474c8240 4057@smallexample
c906108c 4058 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
4059 @var{id} is the exception identifier. */
4060 void __raise_exception (void **addr, void *id);
474c8240 4061@end smallexample
c906108c
SS
4062
4063@noindent
4064To make the debugger catch all exceptions before any stack
4065unwinding takes place, set a breakpoint on @code{__raise_exception}
79a6e687 4066(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Exceptions}).
c906108c 4067
79a6e687 4068With a conditional breakpoint (@pxref{Conditions, ,Break Conditions})
c906108c
SS
4069that depends on the value of @var{id}, you can stop your program when
4070a specific exception is raised. You can use multiple conditional
4071breakpoints to stop your program when any of a number of exceptions are
4072raised.
4073
4074
6d2ebf8b 4075@node Delete Breaks
79a6e687 4076@subsection Deleting Breakpoints
c906108c
SS
4077
4078@cindex clearing breakpoints, watchpoints, catchpoints
4079@cindex deleting breakpoints, watchpoints, catchpoints
4080It is often necessary to eliminate a breakpoint, watchpoint, or
4081catchpoint once it has done its job and you no longer want your program
4082to stop there. This is called @dfn{deleting} the breakpoint. A
4083breakpoint that has been deleted no longer exists; it is forgotten.
4084
4085With the @code{clear} command you can delete breakpoints according to
4086where they are in your program. With the @code{delete} command you can
4087delete individual breakpoints, watchpoints, or catchpoints by specifying
4088their breakpoint numbers.
4089
4090It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
4091automatically ignores breakpoints on the first instruction to be executed
4092when you continue execution without changing the execution address.
4093
4094@table @code
4095@kindex clear
4096@item clear
4097Delete any breakpoints at the next instruction to be executed in the
79a6e687 4098selected stack frame (@pxref{Selection, ,Selecting a Frame}). When
c906108c
SS
4099the innermost frame is selected, this is a good way to delete a
4100breakpoint where your program just stopped.
4101
2a25a5ba
EZ
4102@item clear @var{location}
4103Delete any breakpoints set at the specified @var{location}.
4104@xref{Specify Location}, for the various forms of @var{location}; the
4105most useful ones are listed below:
4106
4107@table @code
c906108c
SS
4108@item clear @var{function}
4109@itemx clear @var{filename}:@var{function}
09d4efe1 4110Delete any breakpoints set at entry to the named @var{function}.
c906108c
SS
4111
4112@item clear @var{linenum}
4113@itemx clear @var{filename}:@var{linenum}
09d4efe1
EZ
4114Delete any breakpoints set at or within the code of the specified
4115@var{linenum} of the specified @var{filename}.
2a25a5ba 4116@end table
c906108c
SS
4117
4118@cindex delete breakpoints
4119@kindex delete
41afff9a 4120@kindex d @r{(@code{delete})}
c5394b80
JM
4121@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
4122Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
4123ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
4124breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
4125confirm off}). You can abbreviate this command as @code{d}.
4126@end table
4127
6d2ebf8b 4128@node Disabling
79a6e687 4129@subsection Disabling Breakpoints
c906108c 4130
4644b6e3 4131@cindex enable/disable a breakpoint
c906108c
SS
4132Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
4133prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
4134it had been deleted, but remembers the information on the breakpoint so
4135that you can @dfn{enable} it again later.
4136
4137You disable and enable breakpoints, watchpoints, and catchpoints with
4138the @code{enable} and @code{disable} commands, optionally specifying one
4139or more breakpoint numbers as arguments. Use @code{info break} or
4140@code{info watch} to print a list of breakpoints, watchpoints, and
4141catchpoints if you do not know which numbers to use.
4142
3b784c4f
EZ
4143Disabling and enabling a breakpoint that has multiple locations
4144affects all of its locations.
4145
c906108c
SS
4146A breakpoint, watchpoint, or catchpoint can have any of four different
4147states of enablement:
4148
4149@itemize @bullet
4150@item
4151Enabled. The breakpoint stops your program. A breakpoint set
4152with the @code{break} command starts out in this state.
4153@item
4154Disabled. The breakpoint has no effect on your program.
4155@item
4156Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 4157disabled.
c906108c
SS
4158@item
4159Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
4160immediately after it does so it is deleted permanently. A breakpoint
4161set with the @code{tbreak} command starts out in this state.
c906108c
SS
4162@end itemize
4163
4164You can use the following commands to enable or disable breakpoints,
4165watchpoints, and catchpoints:
4166
4167@table @code
c906108c 4168@kindex disable
41afff9a 4169@kindex dis @r{(@code{disable})}
c5394b80 4170@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4171Disable the specified breakpoints---or all breakpoints, if none are
4172listed. A disabled breakpoint has no effect but is not forgotten. All
4173options such as ignore-counts, conditions and commands are remembered in
4174case the breakpoint is enabled again later. You may abbreviate
4175@code{disable} as @code{dis}.
4176
c906108c 4177@kindex enable
c5394b80 4178@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4179Enable the specified breakpoints (or all defined breakpoints). They
4180become effective once again in stopping your program.
4181
c5394b80 4182@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
4183Enable the specified breakpoints temporarily. @value{GDBN} disables any
4184of these breakpoints immediately after stopping your program.
4185
c5394b80 4186@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
4187Enable the specified breakpoints to work once, then die. @value{GDBN}
4188deletes any of these breakpoints as soon as your program stops there.
09d4efe1 4189Breakpoints set by the @code{tbreak} command start out in this state.
c906108c
SS
4190@end table
4191
d4f3574e
SS
4192@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
4193@c confusing: tbreak is also initially enabled.
c906108c 4194Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
79a6e687 4195,Setting Breakpoints}), breakpoints that you set are initially enabled;
c906108c
SS
4196subsequently, they become disabled or enabled only when you use one of
4197the commands above. (The command @code{until} can set and delete a
4198breakpoint of its own, but it does not change the state of your other
4199breakpoints; see @ref{Continuing and Stepping, ,Continuing and
79a6e687 4200Stepping}.)
c906108c 4201
6d2ebf8b 4202@node Conditions
79a6e687 4203@subsection Break Conditions
c906108c
SS
4204@cindex conditional breakpoints
4205@cindex breakpoint conditions
4206
4207@c FIXME what is scope of break condition expr? Context where wanted?
5d161b24 4208@c in particular for a watchpoint?
c906108c
SS
4209The simplest sort of breakpoint breaks every time your program reaches a
4210specified place. You can also specify a @dfn{condition} for a
4211breakpoint. A condition is just a Boolean expression in your
4212programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
4213a condition evaluates the expression each time your program reaches it,
4214and your program stops only if the condition is @emph{true}.
4215
4216This is the converse of using assertions for program validation; in that
4217situation, you want to stop when the assertion is violated---that is,
4218when the condition is false. In C, if you want to test an assertion expressed
4219by the condition @var{assert}, you should set the condition
4220@samp{! @var{assert}} on the appropriate breakpoint.
4221
4222Conditions are also accepted for watchpoints; you may not need them,
4223since a watchpoint is inspecting the value of an expression anyhow---but
4224it might be simpler, say, to just set a watchpoint on a variable name,
4225and specify a condition that tests whether the new value is an interesting
4226one.
4227
4228Break conditions can have side effects, and may even call functions in
4229your program. This can be useful, for example, to activate functions
4230that log program progress, or to use your own print functions to
99e008fe 4231format special data structures. The effects are completely predictable
c906108c
SS
4232unless there is another enabled breakpoint at the same address. (In
4233that case, @value{GDBN} might see the other breakpoint first and stop your
4234program without checking the condition of this one.) Note that
d4f3574e
SS
4235breakpoint commands are usually more convenient and flexible than break
4236conditions for the
c906108c 4237purpose of performing side effects when a breakpoint is reached
79a6e687 4238(@pxref{Break Commands, ,Breakpoint Command Lists}).
c906108c
SS
4239
4240Break conditions can be specified when a breakpoint is set, by using
4241@samp{if} in the arguments to the @code{break} command. @xref{Set
79a6e687 4242Breaks, ,Setting Breakpoints}. They can also be changed at any time
c906108c 4243with the @code{condition} command.
53a5351d 4244
c906108c
SS
4245You can also use the @code{if} keyword with the @code{watch} command.
4246The @code{catch} command does not recognize the @code{if} keyword;
4247@code{condition} is the only way to impose a further condition on a
4248catchpoint.
c906108c
SS
4249
4250@table @code
4251@kindex condition
4252@item condition @var{bnum} @var{expression}
4253Specify @var{expression} as the break condition for breakpoint,
4254watchpoint, or catchpoint number @var{bnum}. After you set a condition,
4255breakpoint @var{bnum} stops your program only if the value of
4256@var{expression} is true (nonzero, in C). When you use
4257@code{condition}, @value{GDBN} checks @var{expression} immediately for
4258syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
4259referents in the context of your breakpoint. If @var{expression} uses
4260symbols not referenced in the context of the breakpoint, @value{GDBN}
4261prints an error message:
4262
474c8240 4263@smallexample
d4f3574e 4264No symbol "foo" in current context.
474c8240 4265@end smallexample
d4f3574e
SS
4266
4267@noindent
c906108c
SS
4268@value{GDBN} does
4269not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
4270command (or a command that sets a breakpoint with a condition, like
4271@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
4272
4273@item condition @var{bnum}
4274Remove the condition from breakpoint number @var{bnum}. It becomes
4275an ordinary unconditional breakpoint.
4276@end table
4277
4278@cindex ignore count (of breakpoint)
4279A special case of a breakpoint condition is to stop only when the
4280breakpoint has been reached a certain number of times. This is so
4281useful that there is a special way to do it, using the @dfn{ignore
4282count} of the breakpoint. Every breakpoint has an ignore count, which
4283is an integer. Most of the time, the ignore count is zero, and
4284therefore has no effect. But if your program reaches a breakpoint whose
4285ignore count is positive, then instead of stopping, it just decrements
4286the ignore count by one and continues. As a result, if the ignore count
4287value is @var{n}, the breakpoint does not stop the next @var{n} times
4288your program reaches it.
4289
4290@table @code
4291@kindex ignore
4292@item ignore @var{bnum} @var{count}
4293Set the ignore count of breakpoint number @var{bnum} to @var{count}.
4294The next @var{count} times the breakpoint is reached, your program's
4295execution does not stop; other than to decrement the ignore count, @value{GDBN}
4296takes no action.
4297
4298To make the breakpoint stop the next time it is reached, specify
4299a count of zero.
4300
4301When you use @code{continue} to resume execution of your program from a
4302breakpoint, you can specify an ignore count directly as an argument to
4303@code{continue}, rather than using @code{ignore}. @xref{Continuing and
79a6e687 4304Stepping,,Continuing and Stepping}.
c906108c
SS
4305
4306If a breakpoint has a positive ignore count and a condition, the
4307condition is not checked. Once the ignore count reaches zero,
4308@value{GDBN} resumes checking the condition.
4309
4310You could achieve the effect of the ignore count with a condition such
4311as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
4312is decremented each time. @xref{Convenience Vars, ,Convenience
79a6e687 4313Variables}.
c906108c
SS
4314@end table
4315
4316Ignore counts apply to breakpoints, watchpoints, and catchpoints.
4317
4318
6d2ebf8b 4319@node Break Commands
79a6e687 4320@subsection Breakpoint Command Lists
c906108c
SS
4321
4322@cindex breakpoint commands
4323You can give any breakpoint (or watchpoint or catchpoint) a series of
4324commands to execute when your program stops due to that breakpoint. For
4325example, you might want to print the values of certain expressions, or
4326enable other breakpoints.
4327
4328@table @code
4329@kindex commands
ca91424e 4330@kindex end@r{ (breakpoint commands)}
95a42b64 4331@item commands @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4332@itemx @dots{} @var{command-list} @dots{}
4333@itemx end
95a42b64 4334Specify a list of commands for the given breakpoints. The commands
c906108c
SS
4335themselves appear on the following lines. Type a line containing just
4336@code{end} to terminate the commands.
4337
4338To remove all commands from a breakpoint, type @code{commands} and
4339follow it immediately with @code{end}; that is, give no commands.
4340
95a42b64
TT
4341With no argument, @code{commands} refers to the last breakpoint,
4342watchpoint, or catchpoint set (not to the breakpoint most recently
4343encountered). If the most recent breakpoints were set with a single
4344command, then the @code{commands} will apply to all the breakpoints
4345set by that command. This applies to breakpoints set by
4346@code{rbreak}, and also breakpoints set with @code{break} that have
4347multiple locations.
c906108c
SS
4348@end table
4349
4350Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
4351disabled within a @var{command-list}.
4352
4353You can use breakpoint commands to start your program up again. Simply
4354use the @code{continue} command, or @code{step}, or any other command
4355that resumes execution.
4356
4357Any other commands in the command list, after a command that resumes
4358execution, are ignored. This is because any time you resume execution
4359(even with a simple @code{next} or @code{step}), you may encounter
4360another breakpoint---which could have its own command list, leading to
4361ambiguities about which list to execute.
4362
4363@kindex silent
4364If the first command you specify in a command list is @code{silent}, the
4365usual message about stopping at a breakpoint is not printed. This may
4366be desirable for breakpoints that are to print a specific message and
4367then continue. If none of the remaining commands print anything, you
4368see no sign that the breakpoint was reached. @code{silent} is
4369meaningful only at the beginning of a breakpoint command list.
4370
4371The commands @code{echo}, @code{output}, and @code{printf} allow you to
4372print precisely controlled output, and are often useful in silent
79a6e687 4373breakpoints. @xref{Output, ,Commands for Controlled Output}.
c906108c
SS
4374
4375For example, here is how you could use breakpoint commands to print the
4376value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
4377
474c8240 4378@smallexample
c906108c
SS
4379break foo if x>0
4380commands
4381silent
4382printf "x is %d\n",x
4383cont
4384end
474c8240 4385@end smallexample
c906108c
SS
4386
4387One application for breakpoint commands is to compensate for one bug so
4388you can test for another. Put a breakpoint just after the erroneous line
4389of code, give it a condition to detect the case in which something
4390erroneous has been done, and give it commands to assign correct values
4391to any variables that need them. End with the @code{continue} command
4392so that your program does not stop, and start with the @code{silent}
4393command so that no output is produced. Here is an example:
4394
474c8240 4395@smallexample
c906108c
SS
4396break 403
4397commands
4398silent
4399set x = y + 4
4400cont
4401end
474c8240 4402@end smallexample
c906108c 4403
c906108c 4404@c @ifclear BARETARGET
6d2ebf8b 4405@node Error in Breakpoints
d4f3574e 4406@subsection ``Cannot insert breakpoints''
c906108c 4407
fa3a767f
PA
4408If you request too many active hardware-assisted breakpoints and
4409watchpoints, you will see this error message:
d4f3574e
SS
4410
4411@c FIXME: the precise wording of this message may change; the relevant
4412@c source change is not committed yet (Sep 3, 1999).
4413@smallexample
4414Stopped; cannot insert breakpoints.
4415You may have requested too many hardware breakpoints and watchpoints.
4416@end smallexample
4417
4418@noindent
4419This message is printed when you attempt to resume the program, since
4420only then @value{GDBN} knows exactly how many hardware breakpoints and
4421watchpoints it needs to insert.
4422
4423When this message is printed, you need to disable or remove some of the
4424hardware-assisted breakpoints and watchpoints, and then continue.
4425
79a6e687 4426@node Breakpoint-related Warnings
1485d690
KB
4427@subsection ``Breakpoint address adjusted...''
4428@cindex breakpoint address adjusted
4429
4430Some processor architectures place constraints on the addresses at
4431which breakpoints may be placed. For architectures thus constrained,
4432@value{GDBN} will attempt to adjust the breakpoint's address to comply
4433with the constraints dictated by the architecture.
4434
4435One example of such an architecture is the Fujitsu FR-V. The FR-V is
4436a VLIW architecture in which a number of RISC-like instructions may be
4437bundled together for parallel execution. The FR-V architecture
4438constrains the location of a breakpoint instruction within such a
4439bundle to the instruction with the lowest address. @value{GDBN}
4440honors this constraint by adjusting a breakpoint's address to the
4441first in the bundle.
4442
4443It is not uncommon for optimized code to have bundles which contain
4444instructions from different source statements, thus it may happen that
4445a breakpoint's address will be adjusted from one source statement to
4446another. Since this adjustment may significantly alter @value{GDBN}'s
4447breakpoint related behavior from what the user expects, a warning is
4448printed when the breakpoint is first set and also when the breakpoint
4449is hit.
4450
4451A warning like the one below is printed when setting a breakpoint
4452that's been subject to address adjustment:
4453
4454@smallexample
4455warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
4456@end smallexample
4457
4458Such warnings are printed both for user settable and @value{GDBN}'s
4459internal breakpoints. If you see one of these warnings, you should
4460verify that a breakpoint set at the adjusted address will have the
4461desired affect. If not, the breakpoint in question may be removed and
b383017d 4462other breakpoints may be set which will have the desired behavior.
1485d690
KB
4463E.g., it may be sufficient to place the breakpoint at a later
4464instruction. A conditional breakpoint may also be useful in some
4465cases to prevent the breakpoint from triggering too often.
4466
4467@value{GDBN} will also issue a warning when stopping at one of these
4468adjusted breakpoints:
4469
4470@smallexample
4471warning: Breakpoint 1 address previously adjusted from 0x00010414
4472to 0x00010410.
4473@end smallexample
4474
4475When this warning is encountered, it may be too late to take remedial
4476action except in cases where the breakpoint is hit earlier or more
4477frequently than expected.
d4f3574e 4478
6d2ebf8b 4479@node Continuing and Stepping
79a6e687 4480@section Continuing and Stepping
c906108c
SS
4481
4482@cindex stepping
4483@cindex continuing
4484@cindex resuming execution
4485@dfn{Continuing} means resuming program execution until your program
4486completes normally. In contrast, @dfn{stepping} means executing just
4487one more ``step'' of your program, where ``step'' may mean either one
4488line of source code, or one machine instruction (depending on what
7a292a7a
SS
4489particular command you use). Either when continuing or when stepping,
4490your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
4491it stops due to a signal, you may want to use @code{handle}, or use
4492@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
4493
4494@table @code
4495@kindex continue
41afff9a
EZ
4496@kindex c @r{(@code{continue})}
4497@kindex fg @r{(resume foreground execution)}
c906108c
SS
4498@item continue @r{[}@var{ignore-count}@r{]}
4499@itemx c @r{[}@var{ignore-count}@r{]}
4500@itemx fg @r{[}@var{ignore-count}@r{]}
4501Resume program execution, at the address where your program last stopped;
4502any breakpoints set at that address are bypassed. The optional argument
4503@var{ignore-count} allows you to specify a further number of times to
4504ignore a breakpoint at this location; its effect is like that of
79a6e687 4505@code{ignore} (@pxref{Conditions, ,Break Conditions}).
c906108c
SS
4506
4507The argument @var{ignore-count} is meaningful only when your program
4508stopped due to a breakpoint. At other times, the argument to
4509@code{continue} is ignored.
4510
d4f3574e
SS
4511The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
4512debugged program is deemed to be the foreground program) are provided
4513purely for convenience, and have exactly the same behavior as
4514@code{continue}.
c906108c
SS
4515@end table
4516
4517To resume execution at a different place, you can use @code{return}
79a6e687 4518(@pxref{Returning, ,Returning from a Function}) to go back to the
c906108c 4519calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
79a6e687 4520Different Address}) to go to an arbitrary location in your program.
c906108c
SS
4521
4522A typical technique for using stepping is to set a breakpoint
79a6e687 4523(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the
c906108c
SS
4524beginning of the function or the section of your program where a problem
4525is believed to lie, run your program until it stops at that breakpoint,
4526and then step through the suspect area, examining the variables that are
4527interesting, until you see the problem happen.
4528
4529@table @code
4530@kindex step
41afff9a 4531@kindex s @r{(@code{step})}
c906108c
SS
4532@item step
4533Continue running your program until control reaches a different source
4534line, then stop it and return control to @value{GDBN}. This command is
4535abbreviated @code{s}.
4536
4537@quotation
4538@c "without debugging information" is imprecise; actually "without line
4539@c numbers in the debugging information". (gcc -g1 has debugging info but
4540@c not line numbers). But it seems complex to try to make that
4541@c distinction here.
4542@emph{Warning:} If you use the @code{step} command while control is
4543within a function that was compiled without debugging information,
4544execution proceeds until control reaches a function that does have
4545debugging information. Likewise, it will not step into a function which
4546is compiled without debugging information. To step through functions
4547without debugging information, use the @code{stepi} command, described
4548below.
4549@end quotation
4550
4a92d011
EZ
4551The @code{step} command only stops at the first instruction of a source
4552line. This prevents the multiple stops that could otherwise occur in
4553@code{switch} statements, @code{for} loops, etc. @code{step} continues
4554to stop if a function that has debugging information is called within
4555the line. In other words, @code{step} @emph{steps inside} any functions
4556called within the line.
c906108c 4557
d4f3574e
SS
4558Also, the @code{step} command only enters a function if there is line
4559number information for the function. Otherwise it acts like the
5d161b24 4560@code{next} command. This avoids problems when using @code{cc -gl}
c906108c 4561on MIPS machines. Previously, @code{step} entered subroutines if there
5d161b24 4562was any debugging information about the routine.
c906108c
SS
4563
4564@item step @var{count}
4565Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
4566breakpoint is reached, or a signal not related to stepping occurs before
4567@var{count} steps, stepping stops right away.
c906108c
SS
4568
4569@kindex next
41afff9a 4570@kindex n @r{(@code{next})}
c906108c
SS
4571@item next @r{[}@var{count}@r{]}
4572Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
4573This is similar to @code{step}, but function calls that appear within
4574the line of code are executed without stopping. Execution stops when
4575control reaches a different line of code at the original stack level
4576that was executing when you gave the @code{next} command. This command
4577is abbreviated @code{n}.
c906108c
SS
4578
4579An argument @var{count} is a repeat count, as for @code{step}.
4580
4581
4582@c FIX ME!! Do we delete this, or is there a way it fits in with
4583@c the following paragraph? --- Vctoria
4584@c
4585@c @code{next} within a function that lacks debugging information acts like
4586@c @code{step}, but any function calls appearing within the code of the
4587@c function are executed without stopping.
4588
d4f3574e
SS
4589The @code{next} command only stops at the first instruction of a
4590source line. This prevents multiple stops that could otherwise occur in
4a92d011 4591@code{switch} statements, @code{for} loops, etc.
c906108c 4592
b90a5f51
CF
4593@kindex set step-mode
4594@item set step-mode
4595@cindex functions without line info, and stepping
4596@cindex stepping into functions with no line info
4597@itemx set step-mode on
4a92d011 4598The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
4599stop at the first instruction of a function which contains no debug line
4600information rather than stepping over it.
4601
4a92d011
EZ
4602This is useful in cases where you may be interested in inspecting the
4603machine instructions of a function which has no symbolic info and do not
4604want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
4605
4606@item set step-mode off
4a92d011 4607Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
4608debug information. This is the default.
4609
9c16f35a
EZ
4610@item show step-mode
4611Show whether @value{GDBN} will stop in or step over functions without
4612source line debug information.
4613
c906108c 4614@kindex finish
8dfa32fc 4615@kindex fin @r{(@code{finish})}
c906108c
SS
4616@item finish
4617Continue running until just after function in the selected stack frame
8dfa32fc
JB
4618returns. Print the returned value (if any). This command can be
4619abbreviated as @code{fin}.
c906108c
SS
4620
4621Contrast this with the @code{return} command (@pxref{Returning,
79a6e687 4622,Returning from a Function}).
c906108c
SS
4623
4624@kindex until
41afff9a 4625@kindex u @r{(@code{until})}
09d4efe1 4626@cindex run until specified location
c906108c
SS
4627@item until
4628@itemx u
4629Continue running until a source line past the current line, in the
4630current stack frame, is reached. This command is used to avoid single
4631stepping through a loop more than once. It is like the @code{next}
4632command, except that when @code{until} encounters a jump, it
4633automatically continues execution until the program counter is greater
4634than the address of the jump.
4635
4636This means that when you reach the end of a loop after single stepping
4637though it, @code{until} makes your program continue execution until it
4638exits the loop. In contrast, a @code{next} command at the end of a loop
4639simply steps back to the beginning of the loop, which forces you to step
4640through the next iteration.
4641
4642@code{until} always stops your program if it attempts to exit the current
4643stack frame.
4644
4645@code{until} may produce somewhat counterintuitive results if the order
4646of machine code does not match the order of the source lines. For
4647example, in the following excerpt from a debugging session, the @code{f}
4648(@code{frame}) command shows that execution is stopped at line
4649@code{206}; yet when we use @code{until}, we get to line @code{195}:
4650
474c8240 4651@smallexample
c906108c
SS
4652(@value{GDBP}) f
4653#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
4654206 expand_input();
4655(@value{GDBP}) until
4656195 for ( ; argc > 0; NEXTARG) @{
474c8240 4657@end smallexample
c906108c
SS
4658
4659This happened because, for execution efficiency, the compiler had
4660generated code for the loop closure test at the end, rather than the
4661start, of the loop---even though the test in a C @code{for}-loop is
4662written before the body of the loop. The @code{until} command appeared
4663to step back to the beginning of the loop when it advanced to this
4664expression; however, it has not really gone to an earlier
4665statement---not in terms of the actual machine code.
4666
4667@code{until} with no argument works by means of single
4668instruction stepping, and hence is slower than @code{until} with an
4669argument.
4670
4671@item until @var{location}
4672@itemx u @var{location}
4673Continue running your program until either the specified location is
4674reached, or the current stack frame returns. @var{location} is any of
2a25a5ba
EZ
4675the forms described in @ref{Specify Location}.
4676This form of the command uses temporary breakpoints, and
c60eb6f1
EZ
4677hence is quicker than @code{until} without an argument. The specified
4678location is actually reached only if it is in the current frame. This
4679implies that @code{until} can be used to skip over recursive function
4680invocations. For instance in the code below, if the current location is
4681line @code{96}, issuing @code{until 99} will execute the program up to
db2e3e2e 4682line @code{99} in the same invocation of factorial, i.e., after the inner
c60eb6f1
EZ
4683invocations have returned.
4684
4685@smallexample
468694 int factorial (int value)
468795 @{
468896 if (value > 1) @{
468997 value *= factorial (value - 1);
469098 @}
469199 return (value);
4692100 @}
4693@end smallexample
4694
4695
4696@kindex advance @var{location}
4697@itemx advance @var{location}
09d4efe1 4698Continue running the program up to the given @var{location}. An argument is
2a25a5ba
EZ
4699required, which should be of one of the forms described in
4700@ref{Specify Location}.
4701Execution will also stop upon exit from the current stack
c60eb6f1
EZ
4702frame. This command is similar to @code{until}, but @code{advance} will
4703not skip over recursive function calls, and the target location doesn't
4704have to be in the same frame as the current one.
4705
c906108c
SS
4706
4707@kindex stepi
41afff9a 4708@kindex si @r{(@code{stepi})}
c906108c 4709@item stepi
96a2c332 4710@itemx stepi @var{arg}
c906108c
SS
4711@itemx si
4712Execute one machine instruction, then stop and return to the debugger.
4713
4714It is often useful to do @samp{display/i $pc} when stepping by machine
4715instructions. This makes @value{GDBN} automatically display the next
4716instruction to be executed, each time your program stops. @xref{Auto
79a6e687 4717Display,, Automatic Display}.
c906108c
SS
4718
4719An argument is a repeat count, as in @code{step}.
4720
4721@need 750
4722@kindex nexti
41afff9a 4723@kindex ni @r{(@code{nexti})}
c906108c 4724@item nexti
96a2c332 4725@itemx nexti @var{arg}
c906108c
SS
4726@itemx ni
4727Execute one machine instruction, but if it is a function call,
4728proceed until the function returns.
4729
4730An argument is a repeat count, as in @code{next}.
4731@end table
4732
6d2ebf8b 4733@node Signals
c906108c
SS
4734@section Signals
4735@cindex signals
4736
4737A signal is an asynchronous event that can happen in a program. The
4738operating system defines the possible kinds of signals, and gives each
4739kind a name and a number. For example, in Unix @code{SIGINT} is the
c8aa23ab 4740signal a program gets when you type an interrupt character (often @kbd{Ctrl-c});
c906108c
SS
4741@code{SIGSEGV} is the signal a program gets from referencing a place in
4742memory far away from all the areas in use; @code{SIGALRM} occurs when
4743the alarm clock timer goes off (which happens only if your program has
4744requested an alarm).
4745
4746@cindex fatal signals
4747Some signals, including @code{SIGALRM}, are a normal part of the
4748functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 4749errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
4750program has not specified in advance some other way to handle the signal.
4751@code{SIGINT} does not indicate an error in your program, but it is normally
4752fatal so it can carry out the purpose of the interrupt: to kill the program.
4753
4754@value{GDBN} has the ability to detect any occurrence of a signal in your
4755program. You can tell @value{GDBN} in advance what to do for each kind of
4756signal.
4757
4758@cindex handling signals
24f93129
EZ
4759Normally, @value{GDBN} is set up to let the non-erroneous signals like
4760@code{SIGALRM} be silently passed to your program
4761(so as not to interfere with their role in the program's functioning)
c906108c
SS
4762but to stop your program immediately whenever an error signal happens.
4763You can change these settings with the @code{handle} command.
4764
4765@table @code
4766@kindex info signals
09d4efe1 4767@kindex info handle
c906108c 4768@item info signals
96a2c332 4769@itemx info handle
c906108c
SS
4770Print a table of all the kinds of signals and how @value{GDBN} has been told to
4771handle each one. You can use this to see the signal numbers of all
4772the defined types of signals.
4773
45ac1734
EZ
4774@item info signals @var{sig}
4775Similar, but print information only about the specified signal number.
4776
d4f3574e 4777@code{info handle} is an alias for @code{info signals}.
c906108c
SS
4778
4779@kindex handle
45ac1734 4780@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]}
5ece1a18
EZ
4781Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
4782can be the number of a signal or its name (with or without the
24f93129 4783@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18 4784@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
45ac1734
EZ
4785known signals. Optional arguments @var{keywords}, described below,
4786say what change to make.
c906108c
SS
4787@end table
4788
4789@c @group
4790The keywords allowed by the @code{handle} command can be abbreviated.
4791Their full names are:
4792
4793@table @code
4794@item nostop
4795@value{GDBN} should not stop your program when this signal happens. It may
4796still print a message telling you that the signal has come in.
4797
4798@item stop
4799@value{GDBN} should stop your program when this signal happens. This implies
4800the @code{print} keyword as well.
4801
4802@item print
4803@value{GDBN} should print a message when this signal happens.
4804
4805@item noprint
4806@value{GDBN} should not mention the occurrence of the signal at all. This
4807implies the @code{nostop} keyword as well.
4808
4809@item pass
5ece1a18 4810@itemx noignore
c906108c
SS
4811@value{GDBN} should allow your program to see this signal; your program
4812can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 4813and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
4814
4815@item nopass
5ece1a18 4816@itemx ignore
c906108c 4817@value{GDBN} should not allow your program to see this signal.
5ece1a18 4818@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
4819@end table
4820@c @end group
4821
d4f3574e
SS
4822When a signal stops your program, the signal is not visible to the
4823program until you
c906108c
SS
4824continue. Your program sees the signal then, if @code{pass} is in
4825effect for the signal in question @emph{at that time}. In other words,
4826after @value{GDBN} reports a signal, you can use the @code{handle}
4827command with @code{pass} or @code{nopass} to control whether your
4828program sees that signal when you continue.
4829
24f93129
EZ
4830The default is set to @code{nostop}, @code{noprint}, @code{pass} for
4831non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
4832@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
4833erroneous signals.
4834
c906108c
SS
4835You can also use the @code{signal} command to prevent your program from
4836seeing a signal, or cause it to see a signal it normally would not see,
4837or to give it any signal at any time. For example, if your program stopped
4838due to some sort of memory reference error, you might store correct
4839values into the erroneous variables and continue, hoping to see more
4840execution; but your program would probably terminate immediately as
4841a result of the fatal signal once it saw the signal. To prevent this,
4842you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
79a6e687 4843Program a Signal}.
c906108c 4844
4aa995e1
PA
4845@cindex extra signal information
4846@anchor{extra signal information}
4847
4848On some targets, @value{GDBN} can inspect extra signal information
4849associated with the intercepted signal, before it is actually
4850delivered to the program being debugged. This information is exported
4851by the convenience variable @code{$_siginfo}, and consists of data
4852that is passed by the kernel to the signal handler at the time of the
4853receipt of a signal. The data type of the information itself is
4854target dependent. You can see the data type using the @code{ptype
4855$_siginfo} command. On Unix systems, it typically corresponds to the
4856standard @code{siginfo_t} type, as defined in the @file{signal.h}
4857system header.
4858
4859Here's an example, on a @sc{gnu}/Linux system, printing the stray
4860referenced address that raised a segmentation fault.
4861
4862@smallexample
4863@group
4864(@value{GDBP}) continue
4865Program received signal SIGSEGV, Segmentation fault.
48660x0000000000400766 in main ()
486769 *(int *)p = 0;
4868(@value{GDBP}) ptype $_siginfo
4869type = struct @{
4870 int si_signo;
4871 int si_errno;
4872 int si_code;
4873 union @{
4874 int _pad[28];
4875 struct @{...@} _kill;
4876 struct @{...@} _timer;
4877 struct @{...@} _rt;
4878 struct @{...@} _sigchld;
4879 struct @{...@} _sigfault;
4880 struct @{...@} _sigpoll;
4881 @} _sifields;
4882@}
4883(@value{GDBP}) ptype $_siginfo._sifields._sigfault
4884type = struct @{
4885 void *si_addr;
4886@}
4887(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr
4888$1 = (void *) 0x7ffff7ff7000
4889@end group
4890@end smallexample
4891
4892Depending on target support, @code{$_siginfo} may also be writable.
4893
6d2ebf8b 4894@node Thread Stops
79a6e687 4895@section Stopping and Starting Multi-thread Programs
c906108c 4896
0606b73b
SL
4897@cindex stopped threads
4898@cindex threads, stopped
4899
4900@cindex continuing threads
4901@cindex threads, continuing
4902
4903@value{GDBN} supports debugging programs with multiple threads
4904(@pxref{Threads,, Debugging Programs with Multiple Threads}). There
4905are two modes of controlling execution of your program within the
4906debugger. In the default mode, referred to as @dfn{all-stop mode},
4907when any thread in your program stops (for example, at a breakpoint
4908or while being stepped), all other threads in the program are also stopped by
4909@value{GDBN}. On some targets, @value{GDBN} also supports
4910@dfn{non-stop mode}, in which other threads can continue to run freely while
4911you examine the stopped thread in the debugger.
4912
4913@menu
4914* All-Stop Mode:: All threads stop when GDB takes control
4915* Non-Stop Mode:: Other threads continue to execute
4916* Background Execution:: Running your program asynchronously
4917* Thread-Specific Breakpoints:: Controlling breakpoints
4918* Interrupted System Calls:: GDB may interfere with system calls
4919@end menu
4920
4921@node All-Stop Mode
4922@subsection All-Stop Mode
4923
4924@cindex all-stop mode
4925
4926In all-stop mode, whenever your program stops under @value{GDBN} for any reason,
4927@emph{all} threads of execution stop, not just the current thread. This
4928allows you to examine the overall state of the program, including
4929switching between threads, without worrying that things may change
4930underfoot.
4931
4932Conversely, whenever you restart the program, @emph{all} threads start
4933executing. @emph{This is true even when single-stepping} with commands
4934like @code{step} or @code{next}.
4935
4936In particular, @value{GDBN} cannot single-step all threads in lockstep.
4937Since thread scheduling is up to your debugging target's operating
4938system (not controlled by @value{GDBN}), other threads may
4939execute more than one statement while the current thread completes a
4940single step. Moreover, in general other threads stop in the middle of a
4941statement, rather than at a clean statement boundary, when the program
4942stops.
4943
4944You might even find your program stopped in another thread after
4945continuing or even single-stepping. This happens whenever some other
4946thread runs into a breakpoint, a signal, or an exception before the
4947first thread completes whatever you requested.
4948
4949@cindex automatic thread selection
4950@cindex switching threads automatically
4951@cindex threads, automatic switching
4952Whenever @value{GDBN} stops your program, due to a breakpoint or a
4953signal, it automatically selects the thread where that breakpoint or
4954signal happened. @value{GDBN} alerts you to the context switch with a
4955message such as @samp{[Switching to Thread @var{n}]} to identify the
4956thread.
4957
4958On some OSes, you can modify @value{GDBN}'s default behavior by
4959locking the OS scheduler to allow only a single thread to run.
4960
4961@table @code
4962@item set scheduler-locking @var{mode}
4963@cindex scheduler locking mode
4964@cindex lock scheduler
4965Set the scheduler locking mode. If it is @code{off}, then there is no
4966locking and any thread may run at any time. If @code{on}, then only the
4967current thread may run when the inferior is resumed. The @code{step}
4968mode optimizes for single-stepping; it prevents other threads
4969from preempting the current thread while you are stepping, so that
4970the focus of debugging does not change unexpectedly.
4971Other threads only rarely (or never) get a chance to run
4972when you step. They are more likely to run when you @samp{next} over a
4973function call, and they are completely free to run when you use commands
4974like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
4975thread hits a breakpoint during its timeslice, @value{GDBN} does not change
4976the current thread away from the thread that you are debugging.
4977
4978@item show scheduler-locking
4979Display the current scheduler locking mode.
4980@end table
4981
d4db2f36
PA
4982@cindex resume threads of multiple processes simultaneously
4983By default, when you issue one of the execution commands such as
4984@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only
4985threads of the current inferior to run. For example, if @value{GDBN}
4986is attached to two inferiors, each with two threads, the
4987@code{continue} command resumes only the two threads of the current
4988inferior. This is useful, for example, when you debug a program that
4989forks and you want to hold the parent stopped (so that, for instance,
4990it doesn't run to exit), while you debug the child. In other
4991situations, you may not be interested in inspecting the current state
4992of any of the processes @value{GDBN} is attached to, and you may want
4993to resume them all until some breakpoint is hit. In the latter case,
4994you can instruct @value{GDBN} to allow all threads of all the
4995inferiors to run with the @w{@code{set schedule-multiple}} command.
4996
4997@table @code
4998@kindex set schedule-multiple
4999@item set schedule-multiple
5000Set the mode for allowing threads of multiple processes to be resumed
5001when an execution command is issued. When @code{on}, all threads of
5002all processes are allowed to run. When @code{off}, only the threads
5003of the current process are resumed. The default is @code{off}. The
5004@code{scheduler-locking} mode takes precedence when set to @code{on},
5005or while you are stepping and set to @code{step}.
5006
5007@item show schedule-multiple
5008Display the current mode for resuming the execution of threads of
5009multiple processes.
5010@end table
5011
0606b73b
SL
5012@node Non-Stop Mode
5013@subsection Non-Stop Mode
5014
5015@cindex non-stop mode
5016
5017@c This section is really only a place-holder, and needs to be expanded
5018@c with more details.
5019
5020For some multi-threaded targets, @value{GDBN} supports an optional
5021mode of operation in which you can examine stopped program threads in
5022the debugger while other threads continue to execute freely. This
5023minimizes intrusion when debugging live systems, such as programs
5024where some threads have real-time constraints or must continue to
5025respond to external events. This is referred to as @dfn{non-stop} mode.
5026
5027In non-stop mode, when a thread stops to report a debugging event,
5028@emph{only} that thread is stopped; @value{GDBN} does not stop other
5029threads as well, in contrast to the all-stop mode behavior. Additionally,
5030execution commands such as @code{continue} and @code{step} apply by default
5031only to the current thread in non-stop mode, rather than all threads as
5032in all-stop mode. This allows you to control threads explicitly in
5033ways that are not possible in all-stop mode --- for example, stepping
5034one thread while allowing others to run freely, stepping
5035one thread while holding all others stopped, or stepping several threads
5036independently and simultaneously.
5037
5038To enter non-stop mode, use this sequence of commands before you run
5039or attach to your program:
5040
0606b73b
SL
5041@smallexample
5042# Enable the async interface.
c6ebd6cf 5043set target-async 1
0606b73b 5044
0606b73b
SL
5045# If using the CLI, pagination breaks non-stop.
5046set pagination off
5047
5048# Finally, turn it on!
5049set non-stop on
5050@end smallexample
5051
5052You can use these commands to manipulate the non-stop mode setting:
5053
5054@table @code
5055@kindex set non-stop
5056@item set non-stop on
5057Enable selection of non-stop mode.
5058@item set non-stop off
5059Disable selection of non-stop mode.
5060@kindex show non-stop
5061@item show non-stop
5062Show the current non-stop enablement setting.
5063@end table
5064
5065Note these commands only reflect whether non-stop mode is enabled,
5066not whether the currently-executing program is being run in non-stop mode.
5067In particular, the @code{set non-stop} preference is only consulted when
5068@value{GDBN} starts or connects to the target program, and it is generally
5069not possible to switch modes once debugging has started. Furthermore,
5070since not all targets support non-stop mode, even when you have enabled
5071non-stop mode, @value{GDBN} may still fall back to all-stop operation by
5072default.
5073
5074In non-stop mode, all execution commands apply only to the current thread
5075by default. That is, @code{continue} only continues one thread.
5076To continue all threads, issue @code{continue -a} or @code{c -a}.
5077
5078You can use @value{GDBN}'s background execution commands
5079(@pxref{Background Execution}) to run some threads in the background
5080while you continue to examine or step others from @value{GDBN}.
5081The MI execution commands (@pxref{GDB/MI Program Execution}) are
5082always executed asynchronously in non-stop mode.
5083
5084Suspending execution is done with the @code{interrupt} command when
5085running in the background, or @kbd{Ctrl-c} during foreground execution.
5086In all-stop mode, this stops the whole process;
5087but in non-stop mode the interrupt applies only to the current thread.
5088To stop the whole program, use @code{interrupt -a}.
5089
5090Other execution commands do not currently support the @code{-a} option.
5091
5092In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make
5093that thread current, as it does in all-stop mode. This is because the
5094thread stop notifications are asynchronous with respect to @value{GDBN}'s
5095command interpreter, and it would be confusing if @value{GDBN} unexpectedly
5096changed to a different thread just as you entered a command to operate on the
5097previously current thread.
5098
5099@node Background Execution
5100@subsection Background Execution
5101
5102@cindex foreground execution
5103@cindex background execution
5104@cindex asynchronous execution
5105@cindex execution, foreground, background and asynchronous
5106
5107@value{GDBN}'s execution commands have two variants: the normal
5108foreground (synchronous) behavior, and a background
5109(asynchronous) behavior. In foreground execution, @value{GDBN} waits for
5110the program to report that some thread has stopped before prompting for
5111another command. In background execution, @value{GDBN} immediately gives
5112a command prompt so that you can issue other commands while your program runs.
5113
32fc0df9
PA
5114You need to explicitly enable asynchronous mode before you can use
5115background execution commands. You can use these commands to
5116manipulate the asynchronous mode setting:
5117
5118@table @code
5119@kindex set target-async
5120@item set target-async on
5121Enable asynchronous mode.
5122@item set target-async off
5123Disable asynchronous mode.
5124@kindex show target-async
5125@item show target-async
5126Show the current target-async setting.
5127@end table
5128
5129If the target doesn't support async mode, @value{GDBN} issues an error
5130message if you attempt to use the background execution commands.
5131
0606b73b
SL
5132To specify background execution, add a @code{&} to the command. For example,
5133the background form of the @code{continue} command is @code{continue&}, or
5134just @code{c&}. The execution commands that accept background execution
5135are:
5136
5137@table @code
5138@kindex run&
5139@item run
5140@xref{Starting, , Starting your Program}.
5141
5142@item attach
5143@kindex attach&
5144@xref{Attach, , Debugging an Already-running Process}.
5145
5146@item step
5147@kindex step&
5148@xref{Continuing and Stepping, step}.
5149
5150@item stepi
5151@kindex stepi&
5152@xref{Continuing and Stepping, stepi}.
5153
5154@item next
5155@kindex next&
5156@xref{Continuing and Stepping, next}.
5157
7ce58dd2
DE
5158@item nexti
5159@kindex nexti&
5160@xref{Continuing and Stepping, nexti}.
5161
0606b73b
SL
5162@item continue
5163@kindex continue&
5164@xref{Continuing and Stepping, continue}.
5165
5166@item finish
5167@kindex finish&
5168@xref{Continuing and Stepping, finish}.
5169
5170@item until
5171@kindex until&
5172@xref{Continuing and Stepping, until}.
5173
5174@end table
5175
5176Background execution is especially useful in conjunction with non-stop
5177mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}.
5178However, you can also use these commands in the normal all-stop mode with
5179the restriction that you cannot issue another execution command until the
5180previous one finishes. Examples of commands that are valid in all-stop
5181mode while the program is running include @code{help} and @code{info break}.
5182
5183You can interrupt your program while it is running in the background by
5184using the @code{interrupt} command.
5185
5186@table @code
5187@kindex interrupt
5188@item interrupt
5189@itemx interrupt -a
5190
5191Suspend execution of the running program. In all-stop mode,
5192@code{interrupt} stops the whole process, but in non-stop mode, it stops
5193only the current thread. To stop the whole program in non-stop mode,
5194use @code{interrupt -a}.
5195@end table
5196
0606b73b
SL
5197@node Thread-Specific Breakpoints
5198@subsection Thread-Specific Breakpoints
5199
c906108c 5200When your program has multiple threads (@pxref{Threads,, Debugging
79a6e687 5201Programs with Multiple Threads}), you can choose whether to set
c906108c
SS
5202breakpoints on all threads, or on a particular thread.
5203
5204@table @code
5205@cindex breakpoints and threads
5206@cindex thread breakpoints
5207@kindex break @dots{} thread @var{threadno}
5208@item break @var{linespec} thread @var{threadno}
5209@itemx break @var{linespec} thread @var{threadno} if @dots{}
5210@var{linespec} specifies source lines; there are several ways of
2a25a5ba
EZ
5211writing them (@pxref{Specify Location}), but the effect is always to
5212specify some source line.
c906108c
SS
5213
5214Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
5215to specify that you only want @value{GDBN} to stop the program when a
5216particular thread reaches this breakpoint. @var{threadno} is one of the
5217numeric thread identifiers assigned by @value{GDBN}, shown in the first
5218column of the @samp{info threads} display.
5219
5220If you do not specify @samp{thread @var{threadno}} when you set a
5221breakpoint, the breakpoint applies to @emph{all} threads of your
5222program.
5223
5224You can use the @code{thread} qualifier on conditional breakpoints as
b6199126
DJ
5225well; in this case, place @samp{thread @var{threadno}} before or
5226after the breakpoint condition, like this:
c906108c
SS
5227
5228@smallexample
2df3850c 5229(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
5230@end smallexample
5231
5232@end table
5233
0606b73b
SL
5234@node Interrupted System Calls
5235@subsection Interrupted System Calls
c906108c 5236
36d86913
MC
5237@cindex thread breakpoints and system calls
5238@cindex system calls and thread breakpoints
5239@cindex premature return from system calls
0606b73b
SL
5240There is an unfortunate side effect when using @value{GDBN} to debug
5241multi-threaded programs. If one thread stops for a
36d86913
MC
5242breakpoint, or for some other reason, and another thread is blocked in a
5243system call, then the system call may return prematurely. This is a
5244consequence of the interaction between multiple threads and the signals
5245that @value{GDBN} uses to implement breakpoints and other events that
5246stop execution.
5247
5248To handle this problem, your program should check the return value of
5249each system call and react appropriately. This is good programming
5250style anyways.
5251
5252For example, do not write code like this:
5253
5254@smallexample
5255 sleep (10);
5256@end smallexample
5257
5258The call to @code{sleep} will return early if a different thread stops
5259at a breakpoint or for some other reason.
5260
5261Instead, write this:
5262
5263@smallexample
5264 int unslept = 10;
5265 while (unslept > 0)
5266 unslept = sleep (unslept);
5267@end smallexample
5268
5269A system call is allowed to return early, so the system is still
5270conforming to its specification. But @value{GDBN} does cause your
5271multi-threaded program to behave differently than it would without
5272@value{GDBN}.
5273
5274Also, @value{GDBN} uses internal breakpoints in the thread library to
5275monitor certain events such as thread creation and thread destruction.
5276When such an event happens, a system call in another thread may return
5277prematurely, even though your program does not appear to stop.
5278
c906108c 5279
bacec72f
MS
5280@node Reverse Execution
5281@chapter Running programs backward
5282@cindex reverse execution
5283@cindex running programs backward
5284
5285When you are debugging a program, it is not unusual to realize that
5286you have gone too far, and some event of interest has already happened.
5287If the target environment supports it, @value{GDBN} can allow you to
5288``rewind'' the program by running it backward.
5289
5290A target environment that supports reverse execution should be able
5291to ``undo'' the changes in machine state that have taken place as the
5292program was executing normally. Variables, registers etc.@: should
5293revert to their previous values. Obviously this requires a great
5294deal of sophistication on the part of the target environment; not
5295all target environments can support reverse execution.
5296
5297When a program is executed in reverse, the instructions that
5298have most recently been executed are ``un-executed'', in reverse
5299order. The program counter runs backward, following the previous
5300thread of execution in reverse. As each instruction is ``un-executed'',
5301the values of memory and/or registers that were changed by that
5302instruction are reverted to their previous states. After executing
5303a piece of source code in reverse, all side effects of that code
5304should be ``undone'', and all variables should be returned to their
5305prior values@footnote{
5306Note that some side effects are easier to undo than others. For instance,
5307memory and registers are relatively easy, but device I/O is hard. Some
5308targets may be able undo things like device I/O, and some may not.
5309
5310The contract between @value{GDBN} and the reverse executing target
5311requires only that the target do something reasonable when
5312@value{GDBN} tells it to execute backwards, and then report the
5313results back to @value{GDBN}. Whatever the target reports back to
5314@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN}
5315assumes that the memory and registers that the target reports are in a
5316consistant state, but @value{GDBN} accepts whatever it is given.
5317}.
5318
5319If you are debugging in a target environment that supports
5320reverse execution, @value{GDBN} provides the following commands.
5321
5322@table @code
5323@kindex reverse-continue
5324@kindex rc @r{(@code{reverse-continue})}
5325@item reverse-continue @r{[}@var{ignore-count}@r{]}
5326@itemx rc @r{[}@var{ignore-count}@r{]}
5327Beginning at the point where your program last stopped, start executing
5328in reverse. Reverse execution will stop for breakpoints and synchronous
5329exceptions (signals), just like normal execution. Behavior of
5330asynchronous signals depends on the target environment.
5331
5332@kindex reverse-step
5333@kindex rs @r{(@code{step})}
5334@item reverse-step @r{[}@var{count}@r{]}
5335Run the program backward until control reaches the start of a
5336different source line; then stop it, and return control to @value{GDBN}.
5337
5338Like the @code{step} command, @code{reverse-step} will only stop
5339at the beginning of a source line. It ``un-executes'' the previously
5340executed source line. If the previous source line included calls to
5341debuggable functions, @code{reverse-step} will step (backward) into
5342the called function, stopping at the beginning of the @emph{last}
5343statement in the called function (typically a return statement).
5344
5345Also, as with the @code{step} command, if non-debuggable functions are
5346called, @code{reverse-step} will run thru them backward without stopping.
5347
5348@kindex reverse-stepi
5349@kindex rsi @r{(@code{reverse-stepi})}
5350@item reverse-stepi @r{[}@var{count}@r{]}
5351Reverse-execute one machine instruction. Note that the instruction
5352to be reverse-executed is @emph{not} the one pointed to by the program
5353counter, but the instruction executed prior to that one. For instance,
5354if the last instruction was a jump, @code{reverse-stepi} will take you
5355back from the destination of the jump to the jump instruction itself.
5356
5357@kindex reverse-next
5358@kindex rn @r{(@code{reverse-next})}
5359@item reverse-next @r{[}@var{count}@r{]}
5360Run backward to the beginning of the previous line executed in
5361the current (innermost) stack frame. If the line contains function
5362calls, they will be ``un-executed'' without stopping. Starting from
5363the first line of a function, @code{reverse-next} will take you back
5364to the caller of that function, @emph{before} the function was called,
5365just as the normal @code{next} command would take you from the last
5366line of a function back to its return to its caller
16af530a 5367@footnote{Unless the code is too heavily optimized.}.
bacec72f
MS
5368
5369@kindex reverse-nexti
5370@kindex rni @r{(@code{reverse-nexti})}
5371@item reverse-nexti @r{[}@var{count}@r{]}
5372Like @code{nexti}, @code{reverse-nexti} executes a single instruction
5373in reverse, except that called functions are ``un-executed'' atomically.
5374That is, if the previously executed instruction was a return from
540aa8e7 5375another function, @code{reverse-nexti} will continue to execute
bacec72f
MS
5376in reverse until the call to that function (from the current stack
5377frame) is reached.
5378
5379@kindex reverse-finish
5380@item reverse-finish
5381Just as the @code{finish} command takes you to the point where the
5382current function returns, @code{reverse-finish} takes you to the point
5383where it was called. Instead of ending up at the end of the current
5384function invocation, you end up at the beginning.
5385
5386@kindex set exec-direction
5387@item set exec-direction
5388Set the direction of target execution.
5389@itemx set exec-direction reverse
5390@cindex execute forward or backward in time
5391@value{GDBN} will perform all execution commands in reverse, until the
5392exec-direction mode is changed to ``forward''. Affected commands include
5393@code{step, stepi, next, nexti, continue, and finish}. The @code{return}
5394command cannot be used in reverse mode.
5395@item set exec-direction forward
5396@value{GDBN} will perform all execution commands in the normal fashion.
5397This is the default.
5398@end table
5399
c906108c 5400
a2311334
EZ
5401@node Process Record and Replay
5402@chapter Recording Inferior's Execution and Replaying It
53cc454a
HZ
5403@cindex process record and replay
5404@cindex recording inferior's execution and replaying it
5405
8e05493c
EZ
5406On some platforms, @value{GDBN} provides a special @dfn{process record
5407and replay} target that can record a log of the process execution, and
5408replay it later with both forward and reverse execution commands.
a2311334
EZ
5409
5410@cindex replay mode
5411When this target is in use, if the execution log includes the record
5412for the next instruction, @value{GDBN} will debug in @dfn{replay
5413mode}. In the replay mode, the inferior does not really execute code
5414instructions. Instead, all the events that normally happen during
5415code execution are taken from the execution log. While code is not
5416really executed in replay mode, the values of registers (including the
5417program counter register) and the memory of the inferior are still
8e05493c
EZ
5418changed as they normally would. Their contents are taken from the
5419execution log.
a2311334
EZ
5420
5421@cindex record mode
5422If the record for the next instruction is not in the execution log,
5423@value{GDBN} will debug in @dfn{record mode}. In this mode, the
5424inferior executes normally, and @value{GDBN} records the execution log
5425for future replay.
5426
8e05493c
EZ
5427The process record and replay target supports reverse execution
5428(@pxref{Reverse Execution}), even if the platform on which the
5429inferior runs does not. However, the reverse execution is limited in
5430this case by the range of the instructions recorded in the execution
5431log. In other words, reverse execution on platforms that don't
5432support it directly can only be done in the replay mode.
5433
5434When debugging in the reverse direction, @value{GDBN} will work in
5435replay mode as long as the execution log includes the record for the
5436previous instruction; otherwise, it will work in record mode, if the
5437platform supports reverse execution, or stop if not.
5438
a2311334
EZ
5439For architecture environments that support process record and replay,
5440@value{GDBN} provides the following commands:
53cc454a
HZ
5441
5442@table @code
5443@kindex target record
5444@kindex record
5445@kindex rec
5446@item target record
a2311334
EZ
5447This command starts the process record and replay target. The process
5448record and replay target can only debug a process that is already
5449running. Therefore, you need first to start the process with the
5450@kbd{run} or @kbd{start} commands, and then start the recording with
5451the @kbd{target record} command.
5452
5453Both @code{record} and @code{rec} are aliases of @code{target record}.
5454
5455@cindex displaced stepping, and process record and replay
5456Displaced stepping (@pxref{Maintenance Commands,, displaced stepping})
5457will be automatically disabled when process record and replay target
5458is started. That's because the process record and replay target
5459doesn't support displaced stepping.
5460
5461@cindex non-stop mode, and process record and replay
5462@cindex asynchronous execution, and process record and replay
5463If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in
5464the asynchronous execution mode (@pxref{Background Execution}), the
5465process record and replay target cannot be started because it doesn't
5466support these two modes.
53cc454a
HZ
5467
5468@kindex record stop
5469@kindex rec s
5470@item record stop
a2311334
EZ
5471Stop the process record and replay target. When process record and
5472replay target stops, the entire execution log will be deleted and the
5473inferior will either be terminated, or will remain in its final state.
53cc454a 5474
a2311334
EZ
5475When you stop the process record and replay target in record mode (at
5476the end of the execution log), the inferior will be stopped at the
5477next instruction that would have been recorded. In other words, if
5478you record for a while and then stop recording, the inferior process
5479will be left in the same state as if the recording never happened.
53cc454a 5480
a2311334
EZ
5481On the other hand, if the process record and replay target is stopped
5482while in replay mode (that is, not at the end of the execution log,
5483but at some earlier point), the inferior process will become ``live''
5484at that earlier state, and it will then be possible to continue the
5485usual ``live'' debugging of the process from that state.
53cc454a 5486
a2311334
EZ
5487When the inferior process exits, or @value{GDBN} detaches from it,
5488process record and replay target will automatically stop itself.
53cc454a
HZ
5489
5490@kindex set record insn-number-max
5491@item set record insn-number-max @var{limit}
5492Set the limit of instructions to be recorded. Default value is 200000.
5493
a2311334
EZ
5494If @var{limit} is a positive number, then @value{GDBN} will start
5495deleting instructions from the log once the number of the record
5496instructions becomes greater than @var{limit}. For every new recorded
5497instruction, @value{GDBN} will delete the earliest recorded
5498instruction to keep the number of recorded instructions at the limit.
5499(Since deleting recorded instructions loses information, @value{GDBN}
5500lets you control what happens when the limit is reached, by means of
5501the @code{stop-at-limit} option, described below.)
53cc454a 5502
a2311334
EZ
5503If @var{limit} is zero, @value{GDBN} will never delete recorded
5504instructions from the execution log. The number of recorded
5505instructions is unlimited in this case.
53cc454a
HZ
5506
5507@kindex show record insn-number-max
5508@item show record insn-number-max
a2311334 5509Show the limit of instructions to be recorded.
53cc454a
HZ
5510
5511@kindex set record stop-at-limit
a2311334
EZ
5512@item set record stop-at-limit
5513Control the behavior when the number of recorded instructions reaches
5514the limit. If ON (the default), @value{GDBN} will stop when the limit
5515is reached for the first time and ask you whether you want to stop the
5516inferior or continue running it and recording the execution log. If
5517you decide to continue recording, each new recorded instruction will
5518cause the oldest one to be deleted.
53cc454a 5519
a2311334
EZ
5520If this option is OFF, @value{GDBN} will automatically delete the
5521oldest record to make room for each new one, without asking.
53cc454a
HZ
5522
5523@kindex show record stop-at-limit
5524@item show record stop-at-limit
a2311334 5525Show the current setting of @code{stop-at-limit}.
53cc454a 5526
29153c24
MS
5527@kindex info record
5528@item info record
5529Show various statistics about the state of process record and its
5530in-memory execution log buffer, including:
5531
5532@itemize @bullet
5533@item
5534Whether in record mode or replay mode.
5535@item
5536Lowest recorded instruction number (counting from when the current execution log started recording instructions).
5537@item
5538Highest recorded instruction number.
5539@item
5540Current instruction about to be replayed (if in replay mode).
5541@item
5542Number of instructions contained in the execution log.
5543@item
5544Maximum number of instructions that may be contained in the execution log.
5545@end itemize
53cc454a
HZ
5546
5547@kindex record delete
5548@kindex rec del
5549@item record delete
a2311334 5550When record target runs in replay mode (``in the past''), delete the
53cc454a 5551subsequent execution log and begin to record a new execution log starting
a2311334 5552from the current address. This means you will abandon the previously
53cc454a
HZ
5553recorded ``future'' and begin recording a new ``future''.
5554@end table
5555
5556
6d2ebf8b 5557@node Stack
c906108c
SS
5558@chapter Examining the Stack
5559
5560When your program has stopped, the first thing you need to know is where it
5561stopped and how it got there.
5562
5563@cindex call stack
5d161b24
DB
5564Each time your program performs a function call, information about the call
5565is generated.
5566That information includes the location of the call in your program,
5567the arguments of the call,
c906108c 5568and the local variables of the function being called.
5d161b24 5569The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
5570The stack frames are allocated in a region of memory called the @dfn{call
5571stack}.
5572
5573When your program stops, the @value{GDBN} commands for examining the
5574stack allow you to see all of this information.
5575
5576@cindex selected frame
5577One of the stack frames is @dfn{selected} by @value{GDBN} and many
5578@value{GDBN} commands refer implicitly to the selected frame. In
5579particular, whenever you ask @value{GDBN} for the value of a variable in
5580your program, the value is found in the selected frame. There are
5581special @value{GDBN} commands to select whichever frame you are
79a6e687 5582interested in. @xref{Selection, ,Selecting a Frame}.
c906108c
SS
5583
5584When your program stops, @value{GDBN} automatically selects the
5d161b24 5585currently executing frame and describes it briefly, similar to the
79a6e687 5586@code{frame} command (@pxref{Frame Info, ,Information about a Frame}).
c906108c
SS
5587
5588@menu
5589* Frames:: Stack frames
5590* Backtrace:: Backtraces
5591* Selection:: Selecting a frame
5592* Frame Info:: Information on a frame
c906108c
SS
5593
5594@end menu
5595
6d2ebf8b 5596@node Frames
79a6e687 5597@section Stack Frames
c906108c 5598
d4f3574e 5599@cindex frame, definition
c906108c
SS
5600@cindex stack frame
5601The call stack is divided up into contiguous pieces called @dfn{stack
5602frames}, or @dfn{frames} for short; each frame is the data associated
5603with one call to one function. The frame contains the arguments given
5604to the function, the function's local variables, and the address at
5605which the function is executing.
5606
5607@cindex initial frame
5608@cindex outermost frame
5609@cindex innermost frame
5610When your program is started, the stack has only one frame, that of the
5611function @code{main}. This is called the @dfn{initial} frame or the
5612@dfn{outermost} frame. Each time a function is called, a new frame is
5613made. Each time a function returns, the frame for that function invocation
5614is eliminated. If a function is recursive, there can be many frames for
5615the same function. The frame for the function in which execution is
5616actually occurring is called the @dfn{innermost} frame. This is the most
5617recently created of all the stack frames that still exist.
5618
5619@cindex frame pointer
5620Inside your program, stack frames are identified by their addresses. A
5621stack frame consists of many bytes, each of which has its own address; each
5622kind of computer has a convention for choosing one byte whose
5623address serves as the address of the frame. Usually this address is kept
e09f16f9
EZ
5624in a register called the @dfn{frame pointer register}
5625(@pxref{Registers, $fp}) while execution is going on in that frame.
c906108c
SS
5626
5627@cindex frame number
5628@value{GDBN} assigns numbers to all existing stack frames, starting with
5629zero for the innermost frame, one for the frame that called it,
5630and so on upward. These numbers do not really exist in your program;
5631they are assigned by @value{GDBN} to give you a way of designating stack
5632frames in @value{GDBN} commands.
5633
6d2ebf8b
SS
5634@c The -fomit-frame-pointer below perennially causes hbox overflow
5635@c underflow problems.
c906108c
SS
5636@cindex frameless execution
5637Some compilers provide a way to compile functions so that they operate
e22ea452 5638without stack frames. (For example, the @value{NGCC} option
474c8240 5639@smallexample
6d2ebf8b 5640@samp{-fomit-frame-pointer}
474c8240 5641@end smallexample
6d2ebf8b 5642generates functions without a frame.)
c906108c
SS
5643This is occasionally done with heavily used library functions to save
5644the frame setup time. @value{GDBN} has limited facilities for dealing
5645with these function invocations. If the innermost function invocation
5646has no stack frame, @value{GDBN} nevertheless regards it as though
5647it had a separate frame, which is numbered zero as usual, allowing
5648correct tracing of the function call chain. However, @value{GDBN} has
5649no provision for frameless functions elsewhere in the stack.
5650
5651@table @code
d4f3574e 5652@kindex frame@r{, command}
41afff9a 5653@cindex current stack frame
c906108c 5654@item frame @var{args}
5d161b24 5655The @code{frame} command allows you to move from one stack frame to another,
c906108c 5656and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
5657address of the frame or the stack frame number. Without an argument,
5658@code{frame} prints the current stack frame.
c906108c
SS
5659
5660@kindex select-frame
41afff9a 5661@cindex selecting frame silently
c906108c
SS
5662@item select-frame
5663The @code{select-frame} command allows you to move from one stack frame
5664to another without printing the frame. This is the silent version of
5665@code{frame}.
5666@end table
5667
6d2ebf8b 5668@node Backtrace
c906108c
SS
5669@section Backtraces
5670
09d4efe1
EZ
5671@cindex traceback
5672@cindex call stack traces
c906108c
SS
5673A backtrace is a summary of how your program got where it is. It shows one
5674line per frame, for many frames, starting with the currently executing
5675frame (frame zero), followed by its caller (frame one), and on up the
5676stack.
5677
5678@table @code
5679@kindex backtrace
41afff9a 5680@kindex bt @r{(@code{backtrace})}
c906108c
SS
5681@item backtrace
5682@itemx bt
5683Print a backtrace of the entire stack: one line per frame for all
5684frames in the stack.
5685
5686You can stop the backtrace at any time by typing the system interrupt
c8aa23ab 5687character, normally @kbd{Ctrl-c}.
c906108c
SS
5688
5689@item backtrace @var{n}
5690@itemx bt @var{n}
5691Similar, but print only the innermost @var{n} frames.
5692
5693@item backtrace -@var{n}
5694@itemx bt -@var{n}
5695Similar, but print only the outermost @var{n} frames.
0f061b69
NR
5696
5697@item backtrace full
0f061b69 5698@itemx bt full
dd74f6ae
NR
5699@itemx bt full @var{n}
5700@itemx bt full -@var{n}
e7109c7e 5701Print the values of the local variables also. @var{n} specifies the
286ba84d 5702number of frames to print, as described above.
c906108c
SS
5703@end table
5704
5705@kindex where
5706@kindex info stack
c906108c
SS
5707The names @code{where} and @code{info stack} (abbreviated @code{info s})
5708are additional aliases for @code{backtrace}.
5709
839c27b7
EZ
5710@cindex multiple threads, backtrace
5711In a multi-threaded program, @value{GDBN} by default shows the
5712backtrace only for the current thread. To display the backtrace for
5713several or all of the threads, use the command @code{thread apply}
5714(@pxref{Threads, thread apply}). For example, if you type @kbd{thread
5715apply all backtrace}, @value{GDBN} will display the backtrace for all
5716the threads; this is handy when you debug a core dump of a
5717multi-threaded program.
5718
c906108c
SS
5719Each line in the backtrace shows the frame number and the function name.
5720The program counter value is also shown---unless you use @code{set
5721print address off}. The backtrace also shows the source file name and
5722line number, as well as the arguments to the function. The program
5723counter value is omitted if it is at the beginning of the code for that
5724line number.
5725
5726Here is an example of a backtrace. It was made with the command
5727@samp{bt 3}, so it shows the innermost three frames.
5728
5729@smallexample
5730@group
5d161b24 5731#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c 5732 at builtin.c:993
4f5376b2 5733#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242
c906108c
SS
5734#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
5735 at macro.c:71
5736(More stack frames follow...)
5737@end group
5738@end smallexample
5739
5740@noindent
5741The display for frame zero does not begin with a program counter
5742value, indicating that your program has stopped at the beginning of the
5743code for line @code{993} of @code{builtin.c}.
5744
4f5376b2
JB
5745@noindent
5746The value of parameter @code{data} in frame 1 has been replaced by
5747@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter
5748only if it is a scalar (integer, pointer, enumeration, etc). See command
5749@kbd{set print frame-arguments} in @ref{Print Settings} for more details
5750on how to configure the way function parameter values are printed.
5751
18999be5
EZ
5752@cindex value optimized out, in backtrace
5753@cindex function call arguments, optimized out
5754If your program was compiled with optimizations, some compilers will
5755optimize away arguments passed to functions if those arguments are
5756never used after the call. Such optimizations generate code that
5757passes arguments through registers, but doesn't store those arguments
5758in the stack frame. @value{GDBN} has no way of displaying such
5759arguments in stack frames other than the innermost one. Here's what
5760such a backtrace might look like:
5761
5762@smallexample
5763@group
5764#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
5765 at builtin.c:993
5766#1 0x6e38 in expand_macro (sym=<value optimized out>) at macro.c:242
5767#2 0x6840 in expand_token (obs=0x0, t=<value optimized out>, td=0xf7fffb08)
5768 at macro.c:71
5769(More stack frames follow...)
5770@end group
5771@end smallexample
5772
5773@noindent
5774The values of arguments that were not saved in their stack frames are
5775shown as @samp{<value optimized out>}.
5776
5777If you need to display the values of such optimized-out arguments,
5778either deduce that from other variables whose values depend on the one
5779you are interested in, or recompile without optimizations.
5780
a8f24a35
EZ
5781@cindex backtrace beyond @code{main} function
5782@cindex program entry point
5783@cindex startup code, and backtrace
25d29d70
AC
5784Most programs have a standard user entry point---a place where system
5785libraries and startup code transition into user code. For C this is
d416eeec
EZ
5786@code{main}@footnote{
5787Note that embedded programs (the so-called ``free-standing''
5788environment) are not required to have a @code{main} function as the
5789entry point. They could even have multiple entry points.}.
5790When @value{GDBN} finds the entry function in a backtrace
25d29d70
AC
5791it will terminate the backtrace, to avoid tracing into highly
5792system-specific (and generally uninteresting) code.
5793
5794If you need to examine the startup code, or limit the number of levels
5795in a backtrace, you can change this behavior:
95f90d25
DJ
5796
5797@table @code
25d29d70
AC
5798@item set backtrace past-main
5799@itemx set backtrace past-main on
4644b6e3 5800@kindex set backtrace
25d29d70
AC
5801Backtraces will continue past the user entry point.
5802
5803@item set backtrace past-main off
95f90d25
DJ
5804Backtraces will stop when they encounter the user entry point. This is the
5805default.
5806
25d29d70 5807@item show backtrace past-main
4644b6e3 5808@kindex show backtrace
25d29d70
AC
5809Display the current user entry point backtrace policy.
5810
2315ffec
RC
5811@item set backtrace past-entry
5812@itemx set backtrace past-entry on
a8f24a35 5813Backtraces will continue past the internal entry point of an application.
2315ffec
RC
5814This entry point is encoded by the linker when the application is built,
5815and is likely before the user entry point @code{main} (or equivalent) is called.
5816
5817@item set backtrace past-entry off
d3e8051b 5818Backtraces will stop when they encounter the internal entry point of an
2315ffec
RC
5819application. This is the default.
5820
5821@item show backtrace past-entry
5822Display the current internal entry point backtrace policy.
5823
25d29d70
AC
5824@item set backtrace limit @var{n}
5825@itemx set backtrace limit 0
5826@cindex backtrace limit
5827Limit the backtrace to @var{n} levels. A value of zero means
5828unlimited.
95f90d25 5829
25d29d70
AC
5830@item show backtrace limit
5831Display the current limit on backtrace levels.
95f90d25
DJ
5832@end table
5833
6d2ebf8b 5834@node Selection
79a6e687 5835@section Selecting a Frame
c906108c
SS
5836
5837Most commands for examining the stack and other data in your program work on
5838whichever stack frame is selected at the moment. Here are the commands for
5839selecting a stack frame; all of them finish by printing a brief description
5840of the stack frame just selected.
5841
5842@table @code
d4f3574e 5843@kindex frame@r{, selecting}
41afff9a 5844@kindex f @r{(@code{frame})}
c906108c
SS
5845@item frame @var{n}
5846@itemx f @var{n}
5847Select frame number @var{n}. Recall that frame zero is the innermost
5848(currently executing) frame, frame one is the frame that called the
5849innermost one, and so on. The highest-numbered frame is the one for
5850@code{main}.
5851
5852@item frame @var{addr}
5853@itemx f @var{addr}
5854Select the frame at address @var{addr}. This is useful mainly if the
5855chaining of stack frames has been damaged by a bug, making it
5856impossible for @value{GDBN} to assign numbers properly to all frames. In
5857addition, this can be useful when your program has multiple stacks and
5858switches between them.
5859
c906108c
SS
5860On the SPARC architecture, @code{frame} needs two addresses to
5861select an arbitrary frame: a frame pointer and a stack pointer.
5862
5863On the MIPS and Alpha architecture, it needs two addresses: a stack
5864pointer and a program counter.
5865
5866On the 29k architecture, it needs three addresses: a register stack
5867pointer, a program counter, and a memory stack pointer.
c906108c
SS
5868
5869@kindex up
5870@item up @var{n}
5871Move @var{n} frames up the stack. For positive numbers @var{n}, this
5872advances toward the outermost frame, to higher frame numbers, to frames
5873that have existed longer. @var{n} defaults to one.
5874
5875@kindex down
41afff9a 5876@kindex do @r{(@code{down})}
c906108c
SS
5877@item down @var{n}
5878Move @var{n} frames down the stack. For positive numbers @var{n}, this
5879advances toward the innermost frame, to lower frame numbers, to frames
5880that were created more recently. @var{n} defaults to one. You may
5881abbreviate @code{down} as @code{do}.
5882@end table
5883
5884All of these commands end by printing two lines of output describing the
5885frame. The first line shows the frame number, the function name, the
5886arguments, and the source file and line number of execution in that
5d161b24 5887frame. The second line shows the text of that source line.
c906108c
SS
5888
5889@need 1000
5890For example:
5891
5892@smallexample
5893@group
5894(@value{GDBP}) up
5895#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
5896 at env.c:10
589710 read_input_file (argv[i]);
5898@end group
5899@end smallexample
5900
5901After such a printout, the @code{list} command with no arguments
5902prints ten lines centered on the point of execution in the frame.
87885426
FN
5903You can also edit the program at the point of execution with your favorite
5904editing program by typing @code{edit}.
79a6e687 5905@xref{List, ,Printing Source Lines},
87885426 5906for details.
c906108c
SS
5907
5908@table @code
5909@kindex down-silently
5910@kindex up-silently
5911@item up-silently @var{n}
5912@itemx down-silently @var{n}
5913These two commands are variants of @code{up} and @code{down},
5914respectively; they differ in that they do their work silently, without
5915causing display of the new frame. They are intended primarily for use
5916in @value{GDBN} command scripts, where the output might be unnecessary and
5917distracting.
5918@end table
5919
6d2ebf8b 5920@node Frame Info
79a6e687 5921@section Information About a Frame
c906108c
SS
5922
5923There are several other commands to print information about the selected
5924stack frame.
5925
5926@table @code
5927@item frame
5928@itemx f
5929When used without any argument, this command does not change which
5930frame is selected, but prints a brief description of the currently
5931selected stack frame. It can be abbreviated @code{f}. With an
5932argument, this command is used to select a stack frame.
79a6e687 5933@xref{Selection, ,Selecting a Frame}.
c906108c
SS
5934
5935@kindex info frame
41afff9a 5936@kindex info f @r{(@code{info frame})}
c906108c
SS
5937@item info frame
5938@itemx info f
5939This command prints a verbose description of the selected stack frame,
5940including:
5941
5942@itemize @bullet
5d161b24
DB
5943@item
5944the address of the frame
c906108c
SS
5945@item
5946the address of the next frame down (called by this frame)
5947@item
5948the address of the next frame up (caller of this frame)
5949@item
5950the language in which the source code corresponding to this frame is written
5951@item
5952the address of the frame's arguments
5953@item
d4f3574e
SS
5954the address of the frame's local variables
5955@item
c906108c
SS
5956the program counter saved in it (the address of execution in the caller frame)
5957@item
5958which registers were saved in the frame
5959@end itemize
5960
5961@noindent The verbose description is useful when
5962something has gone wrong that has made the stack format fail to fit
5963the usual conventions.
5964
5965@item info frame @var{addr}
5966@itemx info f @var{addr}
5967Print a verbose description of the frame at address @var{addr}, without
5968selecting that frame. The selected frame remains unchanged by this
5969command. This requires the same kind of address (more than one for some
5970architectures) that you specify in the @code{frame} command.
79a6e687 5971@xref{Selection, ,Selecting a Frame}.
c906108c
SS
5972
5973@kindex info args
5974@item info args
5975Print the arguments of the selected frame, each on a separate line.
5976
5977@item info locals
5978@kindex info locals
5979Print the local variables of the selected frame, each on a separate
5980line. These are all variables (declared either static or automatic)
5981accessible at the point of execution of the selected frame.
5982
c906108c 5983@kindex info catch
d4f3574e
SS
5984@cindex catch exceptions, list active handlers
5985@cindex exception handlers, how to list
c906108c
SS
5986@item info catch
5987Print a list of all the exception handlers that are active in the
5988current stack frame at the current point of execution. To see other
5989exception handlers, visit the associated frame (using the @code{up},
5990@code{down}, or @code{frame} commands); then type @code{info catch}.
79a6e687 5991@xref{Set Catchpoints, , Setting Catchpoints}.
53a5351d 5992
c906108c
SS
5993@end table
5994
c906108c 5995
6d2ebf8b 5996@node Source
c906108c
SS
5997@chapter Examining Source Files
5998
5999@value{GDBN} can print parts of your program's source, since the debugging
6000information recorded in the program tells @value{GDBN} what source files were
6001used to build it. When your program stops, @value{GDBN} spontaneously prints
6002the line where it stopped. Likewise, when you select a stack frame
79a6e687 6003(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where
c906108c
SS
6004execution in that frame has stopped. You can print other portions of
6005source files by explicit command.
6006
7a292a7a 6007If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 6008prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 6009@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
6010
6011@menu
6012* List:: Printing source lines
2a25a5ba 6013* Specify Location:: How to specify code locations
87885426 6014* Edit:: Editing source files
c906108c 6015* Search:: Searching source files
c906108c
SS
6016* Source Path:: Specifying source directories
6017* Machine Code:: Source and machine code
6018@end menu
6019
6d2ebf8b 6020@node List
79a6e687 6021@section Printing Source Lines
c906108c
SS
6022
6023@kindex list
41afff9a 6024@kindex l @r{(@code{list})}
c906108c 6025To print lines from a source file, use the @code{list} command
5d161b24 6026(abbreviated @code{l}). By default, ten lines are printed.
2a25a5ba
EZ
6027There are several ways to specify what part of the file you want to
6028print; see @ref{Specify Location}, for the full list.
c906108c
SS
6029
6030Here are the forms of the @code{list} command most commonly used:
6031
6032@table @code
6033@item list @var{linenum}
6034Print lines centered around line number @var{linenum} in the
6035current source file.
6036
6037@item list @var{function}
6038Print lines centered around the beginning of function
6039@var{function}.
6040
6041@item list
6042Print more lines. If the last lines printed were printed with a
6043@code{list} command, this prints lines following the last lines
6044printed; however, if the last line printed was a solitary line printed
6045as part of displaying a stack frame (@pxref{Stack, ,Examining the
6046Stack}), this prints lines centered around that line.
6047
6048@item list -
6049Print lines just before the lines last printed.
6050@end table
6051
9c16f35a 6052@cindex @code{list}, how many lines to display
c906108c
SS
6053By default, @value{GDBN} prints ten source lines with any of these forms of
6054the @code{list} command. You can change this using @code{set listsize}:
6055
6056@table @code
6057@kindex set listsize
6058@item set listsize @var{count}
6059Make the @code{list} command display @var{count} source lines (unless
6060the @code{list} argument explicitly specifies some other number).
6061
6062@kindex show listsize
6063@item show listsize
6064Display the number of lines that @code{list} prints.
6065@end table
6066
6067Repeating a @code{list} command with @key{RET} discards the argument,
6068so it is equivalent to typing just @code{list}. This is more useful
6069than listing the same lines again. An exception is made for an
6070argument of @samp{-}; that argument is preserved in repetition so that
6071each repetition moves up in the source file.
6072
c906108c
SS
6073In general, the @code{list} command expects you to supply zero, one or two
6074@dfn{linespecs}. Linespecs specify source lines; there are several ways
2a25a5ba
EZ
6075of writing them (@pxref{Specify Location}), but the effect is always
6076to specify some source line.
6077
c906108c
SS
6078Here is a complete description of the possible arguments for @code{list}:
6079
6080@table @code
6081@item list @var{linespec}
6082Print lines centered around the line specified by @var{linespec}.
6083
6084@item list @var{first},@var{last}
6085Print lines from @var{first} to @var{last}. Both arguments are
2a25a5ba
EZ
6086linespecs. When a @code{list} command has two linespecs, and the
6087source file of the second linespec is omitted, this refers to
6088the same source file as the first linespec.
c906108c
SS
6089
6090@item list ,@var{last}
6091Print lines ending with @var{last}.
6092
6093@item list @var{first},
6094Print lines starting with @var{first}.
6095
6096@item list +
6097Print lines just after the lines last printed.
6098
6099@item list -
6100Print lines just before the lines last printed.
6101
6102@item list
6103As described in the preceding table.
6104@end table
6105
2a25a5ba
EZ
6106@node Specify Location
6107@section Specifying a Location
6108@cindex specifying location
6109@cindex linespec
c906108c 6110
2a25a5ba
EZ
6111Several @value{GDBN} commands accept arguments that specify a location
6112of your program's code. Since @value{GDBN} is a source-level
6113debugger, a location usually specifies some line in the source code;
6114for that reason, locations are also known as @dfn{linespecs}.
c906108c 6115
2a25a5ba
EZ
6116Here are all the different ways of specifying a code location that
6117@value{GDBN} understands:
c906108c 6118
2a25a5ba
EZ
6119@table @code
6120@item @var{linenum}
6121Specifies the line number @var{linenum} of the current source file.
c906108c 6122
2a25a5ba
EZ
6123@item -@var{offset}
6124@itemx +@var{offset}
6125Specifies the line @var{offset} lines before or after the @dfn{current
6126line}. For the @code{list} command, the current line is the last one
6127printed; for the breakpoint commands, this is the line at which
6128execution stopped in the currently selected @dfn{stack frame}
6129(@pxref{Frames, ,Frames}, for a description of stack frames.) When
6130used as the second of the two linespecs in a @code{list} command,
6131this specifies the line @var{offset} lines up or down from the first
6132linespec.
6133
6134@item @var{filename}:@var{linenum}
6135Specifies the line @var{linenum} in the source file @var{filename}.
c906108c
SS
6136
6137@item @var{function}
6138Specifies the line that begins the body of the function @var{function}.
2a25a5ba 6139For example, in C, this is the line with the open brace.
c906108c
SS
6140
6141@item @var{filename}:@var{function}
2a25a5ba
EZ
6142Specifies the line that begins the body of the function @var{function}
6143in the file @var{filename}. You only need the file name with a
6144function name to avoid ambiguity when there are identically named
6145functions in different source files.
c906108c
SS
6146
6147@item *@var{address}
2a25a5ba
EZ
6148Specifies the program address @var{address}. For line-oriented
6149commands, such as @code{list} and @code{edit}, this specifies a source
6150line that contains @var{address}. For @code{break} and other
6151breakpoint oriented commands, this can be used to set breakpoints in
6152parts of your program which do not have debugging information or
6153source files.
6154
6155Here @var{address} may be any expression valid in the current working
6156language (@pxref{Languages, working language}) that specifies a code
5fa54e5d
EZ
6157address. In addition, as a convenience, @value{GDBN} extends the
6158semantics of expressions used in locations to cover the situations
6159that frequently happen during debugging. Here are the various forms
6160of @var{address}:
2a25a5ba
EZ
6161
6162@table @code
6163@item @var{expression}
6164Any expression valid in the current working language.
6165
6166@item @var{funcaddr}
6167An address of a function or procedure derived from its name. In C,
6168C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is
6169simply the function's name @var{function} (and actually a special case
6170of a valid expression). In Pascal and Modula-2, this is
6171@code{&@var{function}}. In Ada, this is @code{@var{function}'Address}
6172(although the Pascal form also works).
6173
6174This form specifies the address of the function's first instruction,
6175before the stack frame and arguments have been set up.
6176
6177@item '@var{filename}'::@var{funcaddr}
6178Like @var{funcaddr} above, but also specifies the name of the source
6179file explicitly. This is useful if the name of the function does not
6180specify the function unambiguously, e.g., if there are several
6181functions with identical names in different source files.
c906108c
SS
6182@end table
6183
2a25a5ba
EZ
6184@end table
6185
6186
87885426 6187@node Edit
79a6e687 6188@section Editing Source Files
87885426
FN
6189@cindex editing source files
6190
6191@kindex edit
6192@kindex e @r{(@code{edit})}
6193To edit the lines in a source file, use the @code{edit} command.
6194The editing program of your choice
6195is invoked with the current line set to
6196the active line in the program.
6197Alternatively, there are several ways to specify what part of the file you
2a25a5ba 6198want to print if you want to see other parts of the program:
87885426
FN
6199
6200@table @code
2a25a5ba
EZ
6201@item edit @var{location}
6202Edit the source file specified by @code{location}. Editing starts at
6203that @var{location}, e.g., at the specified source line of the
6204specified file. @xref{Specify Location}, for all the possible forms
6205of the @var{location} argument; here are the forms of the @code{edit}
6206command most commonly used:
87885426 6207
2a25a5ba 6208@table @code
87885426
FN
6209@item edit @var{number}
6210Edit the current source file with @var{number} as the active line number.
6211
6212@item edit @var{function}
6213Edit the file containing @var{function} at the beginning of its definition.
2a25a5ba 6214@end table
87885426 6215
87885426
FN
6216@end table
6217
79a6e687 6218@subsection Choosing your Editor
87885426
FN
6219You can customize @value{GDBN} to use any editor you want
6220@footnote{
6221The only restriction is that your editor (say @code{ex}), recognizes the
6222following command-line syntax:
10998722 6223@smallexample
87885426 6224ex +@var{number} file
10998722 6225@end smallexample
15387254
EZ
6226The optional numeric value +@var{number} specifies the number of the line in
6227the file where to start editing.}.
6228By default, it is @file{@value{EDITOR}}, but you can change this
10998722
AC
6229by setting the environment variable @code{EDITOR} before using
6230@value{GDBN}. For example, to configure @value{GDBN} to use the
6231@code{vi} editor, you could use these commands with the @code{sh} shell:
6232@smallexample
87885426
FN
6233EDITOR=/usr/bin/vi
6234export EDITOR
15387254 6235gdb @dots{}
10998722 6236@end smallexample
87885426 6237or in the @code{csh} shell,
10998722 6238@smallexample
87885426 6239setenv EDITOR /usr/bin/vi
15387254 6240gdb @dots{}
10998722 6241@end smallexample
87885426 6242
6d2ebf8b 6243@node Search
79a6e687 6244@section Searching Source Files
15387254 6245@cindex searching source files
c906108c
SS
6246
6247There are two commands for searching through the current source file for a
6248regular expression.
6249
6250@table @code
6251@kindex search
6252@kindex forward-search
6253@item forward-search @var{regexp}
6254@itemx search @var{regexp}
6255The command @samp{forward-search @var{regexp}} checks each line,
6256starting with the one following the last line listed, for a match for
5d161b24 6257@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
6258synonym @samp{search @var{regexp}} or abbreviate the command name as
6259@code{fo}.
6260
09d4efe1 6261@kindex reverse-search
c906108c
SS
6262@item reverse-search @var{regexp}
6263The command @samp{reverse-search @var{regexp}} checks each line, starting
6264with the one before the last line listed and going backward, for a match
6265for @var{regexp}. It lists the line that is found. You can abbreviate
6266this command as @code{rev}.
6267@end table
c906108c 6268
6d2ebf8b 6269@node Source Path
79a6e687 6270@section Specifying Source Directories
c906108c
SS
6271
6272@cindex source path
6273@cindex directories for source files
6274Executable programs sometimes do not record the directories of the source
6275files from which they were compiled, just the names. Even when they do,
6276the directories could be moved between the compilation and your debugging
6277session. @value{GDBN} has a list of directories to search for source files;
6278this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
6279it tries all the directories in the list, in the order they are present
0b66e38c
EZ
6280in the list, until it finds a file with the desired name.
6281
6282For example, suppose an executable references the file
6283@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
6284@file{/mnt/cross}. The file is first looked up literally; if this
6285fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
6286fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
6287message is printed. @value{GDBN} does not look up the parts of the
6288source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
6289Likewise, the subdirectories of the source path are not searched: if
6290the source path is @file{/mnt/cross}, and the binary refers to
6291@file{foo.c}, @value{GDBN} would not find it under
6292@file{/mnt/cross/usr/src/foo-1.0/lib}.
6293
6294Plain file names, relative file names with leading directories, file
6295names containing dots, etc.@: are all treated as described above; for
6296instance, if the source path is @file{/mnt/cross}, and the source file
6297is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
6298@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
6299that---@file{/mnt/cross/foo.c}.
6300
6301Note that the executable search path is @emph{not} used to locate the
cd852561 6302source files.
c906108c
SS
6303
6304Whenever you reset or rearrange the source path, @value{GDBN} clears out
6305any information it has cached about where source files are found and where
6306each line is in the file.
6307
6308@kindex directory
6309@kindex dir
d4f3574e
SS
6310When you start @value{GDBN}, its source path includes only @samp{cdir}
6311and @samp{cwd}, in that order.
c906108c
SS
6312To add other directories, use the @code{directory} command.
6313
4b505b12
AS
6314The search path is used to find both program source files and @value{GDBN}
6315script files (read using the @samp{-command} option and @samp{source} command).
6316
30daae6c
JB
6317In addition to the source path, @value{GDBN} provides a set of commands
6318that manage a list of source path substitution rules. A @dfn{substitution
6319rule} specifies how to rewrite source directories stored in the program's
6320debug information in case the sources were moved to a different
6321directory between compilation and debugging. A rule is made of
6322two strings, the first specifying what needs to be rewritten in
6323the path, and the second specifying how it should be rewritten.
6324In @ref{set substitute-path}, we name these two parts @var{from} and
6325@var{to} respectively. @value{GDBN} does a simple string replacement
6326of @var{from} with @var{to} at the start of the directory part of the
6327source file name, and uses that result instead of the original file
6328name to look up the sources.
6329
6330Using the previous example, suppose the @file{foo-1.0} tree has been
6331moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell
3f94c067 6332@value{GDBN} to replace @file{/usr/src} in all source path names with
30daae6c
JB
6333@file{/mnt/cross}. The first lookup will then be
6334@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location
6335of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path
6336substitution rule, use the @code{set substitute-path} command
6337(@pxref{set substitute-path}).
6338
6339To avoid unexpected substitution results, a rule is applied only if the
6340@var{from} part of the directory name ends at a directory separator.
6341For instance, a rule substituting @file{/usr/source} into
6342@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but
6343not to @file{/usr/sourceware/foo-2.0}. And because the substitution
d3e8051b 6344is applied only at the beginning of the directory name, this rule will
30daae6c
JB
6345not be applied to @file{/root/usr/source/baz.c} either.
6346
6347In many cases, you can achieve the same result using the @code{directory}
6348command. However, @code{set substitute-path} can be more efficient in
6349the case where the sources are organized in a complex tree with multiple
6350subdirectories. With the @code{directory} command, you need to add each
6351subdirectory of your project. If you moved the entire tree while
6352preserving its internal organization, then @code{set substitute-path}
6353allows you to direct the debugger to all the sources with one single
6354command.
6355
6356@code{set substitute-path} is also more than just a shortcut command.
6357The source path is only used if the file at the original location no
6358longer exists. On the other hand, @code{set substitute-path} modifies
6359the debugger behavior to look at the rewritten location instead. So, if
6360for any reason a source file that is not relevant to your executable is
6361located at the original location, a substitution rule is the only
3f94c067 6362method available to point @value{GDBN} at the new location.
30daae6c 6363
29b0e8a2
JM
6364@cindex @samp{--with-relocated-sources}
6365@cindex default source path substitution
6366You can configure a default source path substitution rule by
6367configuring @value{GDBN} with the
6368@samp{--with-relocated-sources=@var{dir}} option. The @var{dir}
6369should be the name of a directory under @value{GDBN}'s configured
6370prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and
6371directory names in debug information under @var{dir} will be adjusted
6372automatically if the installed @value{GDBN} is moved to a new
6373location. This is useful if @value{GDBN}, libraries or executables
6374with debug information and corresponding source code are being moved
6375together.
6376
c906108c
SS
6377@table @code
6378@item directory @var{dirname} @dots{}
6379@item dir @var{dirname} @dots{}
6380Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
6381directory names may be given to this command, separated by @samp{:}
6382(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
6383part of absolute file names) or
c906108c
SS
6384whitespace. You may specify a directory that is already in the source
6385path; this moves it forward, so @value{GDBN} searches it sooner.
6386
6387@kindex cdir
6388@kindex cwd
41afff9a 6389@vindex $cdir@r{, convenience variable}
d3e8051b 6390@vindex $cwd@r{, convenience variable}
c906108c
SS
6391@cindex compilation directory
6392@cindex current directory
6393@cindex working directory
6394@cindex directory, current
6395@cindex directory, compilation
6396You can use the string @samp{$cdir} to refer to the compilation
6397directory (if one is recorded), and @samp{$cwd} to refer to the current
6398working directory. @samp{$cwd} is not the same as @samp{.}---the former
6399tracks the current working directory as it changes during your @value{GDBN}
6400session, while the latter is immediately expanded to the current
6401directory at the time you add an entry to the source path.
6402
6403@item directory
cd852561 6404Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation.
c906108c
SS
6405
6406@c RET-repeat for @code{directory} is explicitly disabled, but since
6407@c repeating it would be a no-op we do not say that. (thanks to RMS)
6408
6409@item show directories
6410@kindex show directories
6411Print the source path: show which directories it contains.
30daae6c
JB
6412
6413@anchor{set substitute-path}
6414@item set substitute-path @var{from} @var{to}
6415@kindex set substitute-path
6416Define a source path substitution rule, and add it at the end of the
6417current list of existing substitution rules. If a rule with the same
6418@var{from} was already defined, then the old rule is also deleted.
6419
6420For example, if the file @file{/foo/bar/baz.c} was moved to
6421@file{/mnt/cross/baz.c}, then the command
6422
6423@smallexample
6424(@value{GDBP}) set substitute-path /usr/src /mnt/cross
6425@end smallexample
6426
6427@noindent
6428will tell @value{GDBN} to replace @samp{/usr/src} with
6429@samp{/mnt/cross}, which will allow @value{GDBN} to find the file
6430@file{baz.c} even though it was moved.
6431
6432In the case when more than one substitution rule have been defined,
6433the rules are evaluated one by one in the order where they have been
6434defined. The first one matching, if any, is selected to perform
6435the substitution.
6436
6437For instance, if we had entered the following commands:
6438
6439@smallexample
6440(@value{GDBP}) set substitute-path /usr/src/include /mnt/include
6441(@value{GDBP}) set substitute-path /usr/src /mnt/src
6442@end smallexample
6443
6444@noindent
6445@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into
6446@file{/mnt/include/defs.h} by using the first rule. However, it would
6447use the second rule to rewrite @file{/usr/src/lib/foo.c} into
6448@file{/mnt/src/lib/foo.c}.
6449
6450
6451@item unset substitute-path [path]
6452@kindex unset substitute-path
6453If a path is specified, search the current list of substitution rules
6454for a rule that would rewrite that path. Delete that rule if found.
6455A warning is emitted by the debugger if no rule could be found.
6456
6457If no path is specified, then all substitution rules are deleted.
6458
6459@item show substitute-path [path]
6460@kindex show substitute-path
6461If a path is specified, then print the source path substitution rule
6462which would rewrite that path, if any.
6463
6464If no path is specified, then print all existing source path substitution
6465rules.
6466
c906108c
SS
6467@end table
6468
6469If your source path is cluttered with directories that are no longer of
6470interest, @value{GDBN} may sometimes cause confusion by finding the wrong
6471versions of source. You can correct the situation as follows:
6472
6473@enumerate
6474@item
cd852561 6475Use @code{directory} with no argument to reset the source path to its default value.
c906108c
SS
6476
6477@item
6478Use @code{directory} with suitable arguments to reinstall the
6479directories you want in the source path. You can add all the
6480directories in one command.
6481@end enumerate
6482
6d2ebf8b 6483@node Machine Code
79a6e687 6484@section Source and Machine Code
15387254 6485@cindex source line and its code address
c906108c
SS
6486
6487You can use the command @code{info line} to map source lines to program
6488addresses (and vice versa), and the command @code{disassemble} to display
91440f57
HZ
6489a range of addresses as machine instructions. You can use the command
6490@code{set disassemble-next-line} to set whether to disassemble next
6491source line when execution stops. When run under @sc{gnu} Emacs
d4f3574e 6492mode, the @code{info line} command causes the arrow to point to the
5d161b24 6493line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
6494well as hex.
6495
6496@table @code
6497@kindex info line
6498@item info line @var{linespec}
6499Print the starting and ending addresses of the compiled code for
6500source line @var{linespec}. You can specify source lines in any of
2a25a5ba 6501the ways documented in @ref{Specify Location}.
c906108c
SS
6502@end table
6503
6504For example, we can use @code{info line} to discover the location of
6505the object code for the first line of function
6506@code{m4_changequote}:
6507
d4f3574e
SS
6508@c FIXME: I think this example should also show the addresses in
6509@c symbolic form, as they usually would be displayed.
c906108c 6510@smallexample
96a2c332 6511(@value{GDBP}) info line m4_changequote
c906108c
SS
6512Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
6513@end smallexample
6514
6515@noindent
15387254 6516@cindex code address and its source line
c906108c
SS
6517We can also inquire (using @code{*@var{addr}} as the form for
6518@var{linespec}) what source line covers a particular address:
6519@smallexample
6520(@value{GDBP}) info line *0x63ff
6521Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
6522@end smallexample
6523
6524@cindex @code{$_} and @code{info line}
15387254 6525@cindex @code{x} command, default address
41afff9a 6526@kindex x@r{(examine), and} info line
c906108c
SS
6527After @code{info line}, the default address for the @code{x} command
6528is changed to the starting address of the line, so that @samp{x/i} is
6529sufficient to begin examining the machine code (@pxref{Memory,
79a6e687 6530,Examining Memory}). Also, this address is saved as the value of the
c906108c 6531convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
79a6e687 6532Variables}).
c906108c
SS
6533
6534@table @code
6535@kindex disassemble
6536@cindex assembly instructions
6537@cindex instructions, assembly
6538@cindex machine instructions
6539@cindex listing machine instructions
6540@item disassemble
d14508fe 6541@itemx disassemble /m
9b117ef3 6542@itemx disassemble /r
c906108c 6543This specialized command dumps a range of memory as machine
d14508fe 6544instructions. It can also print mixed source+disassembly by specifying
9b117ef3
HZ
6545the @code{/m} modifier and print the raw instructions in hex as well as
6546in symbolic form by specifying the @code{/r}.
d14508fe 6547The default memory range is the function surrounding the
c906108c
SS
6548program counter of the selected frame. A single argument to this
6549command is a program counter value; @value{GDBN} dumps the function
21a0512e
PP
6550surrounding this value. When two arguments are given, they should
6551be separated by a comma, possibly surrounded by whitespace. The
6552arguments specify a range of addresses (first inclusive, second exclusive)
6553to dump. In that case, the name of the function is also printed (since
6554there could be several functions in the given range).
6555
6556The argument(s) can be any expression yielding a numeric value, such as
6557@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}.
2b28d209
PP
6558
6559If the range of memory being disassembled contains current program counter,
6560the instruction at that location is shown with a @code{=>} marker.
c906108c
SS
6561@end table
6562
c906108c
SS
6563The following example shows the disassembly of a range of addresses of
6564HP PA-RISC 2.0 code:
6565
6566@smallexample
21a0512e 6567(@value{GDBP}) disas 0x32c4, 0x32e4
c906108c 6568Dump of assembler code from 0x32c4 to 0x32e4:
2b28d209
PP
6569 0x32c4 <main+204>: addil 0,dp
6570 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
6571 0x32cc <main+212>: ldil 0x3000,r31
6572 0x32d0 <main+216>: ble 0x3f8(sr4,r31)
6573 0x32d4 <main+220>: ldo 0(r31),rp
6574 0x32d8 <main+224>: addil -0x800,dp
6575 0x32dc <main+228>: ldo 0x588(r1),r26
6576 0x32e0 <main+232>: ldil 0x3000,r31
c906108c
SS
6577End of assembler dump.
6578@end smallexample
c906108c 6579
2b28d209
PP
6580Here is an example showing mixed source+assembly for Intel x86, when the
6581program is stopped just after function prologue:
d14508fe
DE
6582
6583@smallexample
6584(@value{GDBP}) disas /m main
6585Dump of assembler code for function main:
65865 @{
9c419145
PP
6587 0x08048330 <+0>: push %ebp
6588 0x08048331 <+1>: mov %esp,%ebp
6589 0x08048333 <+3>: sub $0x8,%esp
6590 0x08048336 <+6>: and $0xfffffff0,%esp
6591 0x08048339 <+9>: sub $0x10,%esp
d14508fe
DE
6592
65936 printf ("Hello.\n");
9c419145
PP
6594=> 0x0804833c <+12>: movl $0x8048440,(%esp)
6595 0x08048343 <+19>: call 0x8048284 <puts@@plt>
d14508fe
DE
6596
65977 return 0;
65988 @}
9c419145
PP
6599 0x08048348 <+24>: mov $0x0,%eax
6600 0x0804834d <+29>: leave
6601 0x0804834e <+30>: ret
d14508fe
DE
6602
6603End of assembler dump.
6604@end smallexample
6605
c906108c
SS
6606Some architectures have more than one commonly-used set of instruction
6607mnemonics or other syntax.
6608
76d17f34
EZ
6609For programs that were dynamically linked and use shared libraries,
6610instructions that call functions or branch to locations in the shared
6611libraries might show a seemingly bogus location---it's actually a
6612location of the relocation table. On some architectures, @value{GDBN}
6613might be able to resolve these to actual function names.
6614
c906108c 6615@table @code
d4f3574e 6616@kindex set disassembly-flavor
d4f3574e
SS
6617@cindex Intel disassembly flavor
6618@cindex AT&T disassembly flavor
6619@item set disassembly-flavor @var{instruction-set}
c906108c
SS
6620Select the instruction set to use when disassembling the
6621program via the @code{disassemble} or @code{x/i} commands.
6622
6623Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
6624can set @var{instruction-set} to either @code{intel} or @code{att}.
6625The default is @code{att}, the AT&T flavor used by default by Unix
6626assemblers for x86-based targets.
9c16f35a
EZ
6627
6628@kindex show disassembly-flavor
6629@item show disassembly-flavor
6630Show the current setting of the disassembly flavor.
c906108c
SS
6631@end table
6632
91440f57
HZ
6633@table @code
6634@kindex set disassemble-next-line
6635@kindex show disassemble-next-line
6636@item set disassemble-next-line
6637@itemx show disassemble-next-line
32ae1842
EZ
6638Control whether or not @value{GDBN} will disassemble the next source
6639line or instruction when execution stops. If ON, @value{GDBN} will
6640display disassembly of the next source line when execution of the
6641program being debugged stops. This is @emph{in addition} to
6642displaying the source line itself, which @value{GDBN} always does if
6643possible. If the next source line cannot be displayed for some reason
6644(e.g., if @value{GDBN} cannot find the source file, or there's no line
6645info in the debug info), @value{GDBN} will display disassembly of the
6646next @emph{instruction} instead of showing the next source line. If
6647AUTO, @value{GDBN} will display disassembly of next instruction only
6648if the source line cannot be displayed. This setting causes
6649@value{GDBN} to display some feedback when you step through a function
6650with no line info or whose source file is unavailable. The default is
6651OFF, which means never display the disassembly of the next line or
6652instruction.
91440f57
HZ
6653@end table
6654
c906108c 6655
6d2ebf8b 6656@node Data
c906108c
SS
6657@chapter Examining Data
6658
6659@cindex printing data
6660@cindex examining data
6661@kindex print
6662@kindex inspect
6663@c "inspect" is not quite a synonym if you are using Epoch, which we do not
6664@c document because it is nonstandard... Under Epoch it displays in a
6665@c different window or something like that.
6666The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
6667command (abbreviated @code{p}), or its synonym @code{inspect}. It
6668evaluates and prints the value of an expression of the language your
6669program is written in (@pxref{Languages, ,Using @value{GDBN} with
78e2826b
TT
6670Different Languages}). It may also print the expression using a
6671Python-based pretty-printer (@pxref{Pretty Printing}).
c906108c
SS
6672
6673@table @code
d4f3574e
SS
6674@item print @var{expr}
6675@itemx print /@var{f} @var{expr}
6676@var{expr} is an expression (in the source language). By default the
6677value of @var{expr} is printed in a format appropriate to its data type;
c906108c 6678you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 6679@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
79a6e687 6680Formats}.
c906108c
SS
6681
6682@item print
6683@itemx print /@var{f}
15387254 6684@cindex reprint the last value
d4f3574e 6685If you omit @var{expr}, @value{GDBN} displays the last value again (from the
79a6e687 6686@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to
c906108c
SS
6687conveniently inspect the same value in an alternative format.
6688@end table
6689
6690A more low-level way of examining data is with the @code{x} command.
6691It examines data in memory at a specified address and prints it in a
79a6e687 6692specified format. @xref{Memory, ,Examining Memory}.
c906108c 6693
7a292a7a 6694If you are interested in information about types, or about how the
d4f3574e
SS
6695fields of a struct or a class are declared, use the @code{ptype @var{exp}}
6696command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 6697Table}.
c906108c
SS
6698
6699@menu
6700* Expressions:: Expressions
6ba66d6a 6701* Ambiguous Expressions:: Ambiguous Expressions
c906108c
SS
6702* Variables:: Program variables
6703* Arrays:: Artificial arrays
6704* Output Formats:: Output formats
6705* Memory:: Examining memory
6706* Auto Display:: Automatic display
6707* Print Settings:: Print settings
6708* Value History:: Value history
6709* Convenience Vars:: Convenience variables
6710* Registers:: Registers
c906108c 6711* Floating Point Hardware:: Floating point hardware
53c69bd7 6712* Vector Unit:: Vector Unit
721c2651 6713* OS Information:: Auxiliary data provided by operating system
29e57380 6714* Memory Region Attributes:: Memory region attributes
16d9dec6 6715* Dump/Restore Files:: Copy between memory and a file
384ee23f 6716* Core File Generation:: Cause a program dump its core
a0eb71c5
KB
6717* Character Sets:: Debugging programs that use a different
6718 character set than GDB does
09d4efe1 6719* Caching Remote Data:: Data caching for remote targets
08388c79 6720* Searching Memory:: Searching memory for a sequence of bytes
c906108c
SS
6721@end menu
6722
6d2ebf8b 6723@node Expressions
c906108c
SS
6724@section Expressions
6725
6726@cindex expressions
6727@code{print} and many other @value{GDBN} commands accept an expression and
6728compute its value. Any kind of constant, variable or operator defined
6729by the programming language you are using is valid in an expression in
e2e0bcd1
JB
6730@value{GDBN}. This includes conditional expressions, function calls,
6731casts, and string constants. It also includes preprocessor macros, if
6732you compiled your program to include this information; see
6733@ref{Compilation}.
c906108c 6734
15387254 6735@cindex arrays in expressions
d4f3574e
SS
6736@value{GDBN} supports array constants in expressions input by
6737the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
63092375
DJ
6738you can use the command @code{print @{1, 2, 3@}} to create an array
6739of three integers. If you pass an array to a function or assign it
6740to a program variable, @value{GDBN} copies the array to memory that
6741is @code{malloc}ed in the target program.
c906108c 6742
c906108c
SS
6743Because C is so widespread, most of the expressions shown in examples in
6744this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
6745Languages}, for information on how to use expressions in other
6746languages.
6747
6748In this section, we discuss operators that you can use in @value{GDBN}
6749expressions regardless of your programming language.
6750
15387254 6751@cindex casts, in expressions
c906108c
SS
6752Casts are supported in all languages, not just in C, because it is so
6753useful to cast a number into a pointer in order to examine a structure
6754at that address in memory.
6755@c FIXME: casts supported---Mod2 true?
c906108c
SS
6756
6757@value{GDBN} supports these operators, in addition to those common
6758to programming languages:
6759
6760@table @code
6761@item @@
6762@samp{@@} is a binary operator for treating parts of memory as arrays.
79a6e687 6763@xref{Arrays, ,Artificial Arrays}, for more information.
c906108c
SS
6764
6765@item ::
6766@samp{::} allows you to specify a variable in terms of the file or
79a6e687 6767function where it is defined. @xref{Variables, ,Program Variables}.
c906108c
SS
6768
6769@cindex @{@var{type}@}
6770@cindex type casting memory
6771@cindex memory, viewing as typed object
6772@cindex casts, to view memory
6773@item @{@var{type}@} @var{addr}
6774Refers to an object of type @var{type} stored at address @var{addr} in
6775memory. @var{addr} may be any expression whose value is an integer or
6776pointer (but parentheses are required around binary operators, just as in
6777a cast). This construct is allowed regardless of what kind of data is
6778normally supposed to reside at @var{addr}.
6779@end table
6780
6ba66d6a
JB
6781@node Ambiguous Expressions
6782@section Ambiguous Expressions
6783@cindex ambiguous expressions
6784
6785Expressions can sometimes contain some ambiguous elements. For instance,
6786some programming languages (notably Ada, C@t{++} and Objective-C) permit
6787a single function name to be defined several times, for application in
6788different contexts. This is called @dfn{overloading}. Another example
6789involving Ada is generics. A @dfn{generic package} is similar to C@t{++}
6790templates and is typically instantiated several times, resulting in
6791the same function name being defined in different contexts.
6792
6793In some cases and depending on the language, it is possible to adjust
6794the expression to remove the ambiguity. For instance in C@t{++}, you
6795can specify the signature of the function you want to break on, as in
6796@kbd{break @var{function}(@var{types})}. In Ada, using the fully
6797qualified name of your function often makes the expression unambiguous
6798as well.
6799
6800When an ambiguity that needs to be resolved is detected, the debugger
6801has the capability to display a menu of numbered choices for each
6802possibility, and then waits for the selection with the prompt @samp{>}.
6803The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}}
6804aborts the current command. If the command in which the expression was
6805used allows more than one choice to be selected, the next option in the
6806menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible
6807choices.
6808
6809For example, the following session excerpt shows an attempt to set a
6810breakpoint at the overloaded symbol @code{String::after}.
6811We choose three particular definitions of that function name:
6812
6813@c FIXME! This is likely to change to show arg type lists, at least
6814@smallexample
6815@group
6816(@value{GDBP}) b String::after
6817[0] cancel
6818[1] all
6819[2] file:String.cc; line number:867
6820[3] file:String.cc; line number:860
6821[4] file:String.cc; line number:875
6822[5] file:String.cc; line number:853
6823[6] file:String.cc; line number:846
6824[7] file:String.cc; line number:735
6825> 2 4 6
6826Breakpoint 1 at 0xb26c: file String.cc, line 867.
6827Breakpoint 2 at 0xb344: file String.cc, line 875.
6828Breakpoint 3 at 0xafcc: file String.cc, line 846.
6829Multiple breakpoints were set.
6830Use the "delete" command to delete unwanted
6831 breakpoints.
6832(@value{GDBP})
6833@end group
6834@end smallexample
6835
6836@table @code
6837@kindex set multiple-symbols
6838@item set multiple-symbols @var{mode}
6839@cindex multiple-symbols menu
6840
6841This option allows you to adjust the debugger behavior when an expression
6842is ambiguous.
6843
6844By default, @var{mode} is set to @code{all}. If the command with which
6845the expression is used allows more than one choice, then @value{GDBN}
6846automatically selects all possible choices. For instance, inserting
6847a breakpoint on a function using an ambiguous name results in a breakpoint
6848inserted on each possible match. However, if a unique choice must be made,
6849then @value{GDBN} uses the menu to help you disambiguate the expression.
6850For instance, printing the address of an overloaded function will result
6851in the use of the menu.
6852
6853When @var{mode} is set to @code{ask}, the debugger always uses the menu
6854when an ambiguity is detected.
6855
6856Finally, when @var{mode} is set to @code{cancel}, the debugger reports
6857an error due to the ambiguity and the command is aborted.
6858
6859@kindex show multiple-symbols
6860@item show multiple-symbols
6861Show the current value of the @code{multiple-symbols} setting.
6862@end table
6863
6d2ebf8b 6864@node Variables
79a6e687 6865@section Program Variables
c906108c
SS
6866
6867The most common kind of expression to use is the name of a variable
6868in your program.
6869
6870Variables in expressions are understood in the selected stack frame
79a6e687 6871(@pxref{Selection, ,Selecting a Frame}); they must be either:
c906108c
SS
6872
6873@itemize @bullet
6874@item
6875global (or file-static)
6876@end itemize
6877
5d161b24 6878@noindent or
c906108c
SS
6879
6880@itemize @bullet
6881@item
6882visible according to the scope rules of the
6883programming language from the point of execution in that frame
5d161b24 6884@end itemize
c906108c
SS
6885
6886@noindent This means that in the function
6887
474c8240 6888@smallexample
c906108c
SS
6889foo (a)
6890 int a;
6891@{
6892 bar (a);
6893 @{
6894 int b = test ();
6895 bar (b);
6896 @}
6897@}
474c8240 6898@end smallexample
c906108c
SS
6899
6900@noindent
6901you can examine and use the variable @code{a} whenever your program is
6902executing within the function @code{foo}, but you can only use or
6903examine the variable @code{b} while your program is executing inside
6904the block where @code{b} is declared.
6905
6906@cindex variable name conflict
6907There is an exception: you can refer to a variable or function whose
6908scope is a single source file even if the current execution point is not
6909in this file. But it is possible to have more than one such variable or
6910function with the same name (in different source files). If that
6911happens, referring to that name has unpredictable effects. If you wish,
6912you can specify a static variable in a particular function or file,
15387254 6913using the colon-colon (@code{::}) notation:
c906108c 6914
d4f3574e 6915@cindex colon-colon, context for variables/functions
12c27660 6916@ifnotinfo
c906108c 6917@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 6918@cindex @code{::}, context for variables/functions
12c27660 6919@end ifnotinfo
474c8240 6920@smallexample
c906108c
SS
6921@var{file}::@var{variable}
6922@var{function}::@var{variable}
474c8240 6923@end smallexample
c906108c
SS
6924
6925@noindent
6926Here @var{file} or @var{function} is the name of the context for the
6927static @var{variable}. In the case of file names, you can use quotes to
6928make sure @value{GDBN} parses the file name as a single word---for example,
6929to print a global value of @code{x} defined in @file{f2.c}:
6930
474c8240 6931@smallexample
c906108c 6932(@value{GDBP}) p 'f2.c'::x
474c8240 6933@end smallexample
c906108c 6934
b37052ae 6935@cindex C@t{++} scope resolution
c906108c 6936This use of @samp{::} is very rarely in conflict with the very similar
b37052ae 6937use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
6938scope resolution operator in @value{GDBN} expressions.
6939@c FIXME: Um, so what happens in one of those rare cases where it's in
6940@c conflict?? --mew
c906108c
SS
6941
6942@cindex wrong values
6943@cindex variable values, wrong
15387254
EZ
6944@cindex function entry/exit, wrong values of variables
6945@cindex optimized code, wrong values of variables
c906108c
SS
6946@quotation
6947@emph{Warning:} Occasionally, a local variable may appear to have the
6948wrong value at certain points in a function---just after entry to a new
6949scope, and just before exit.
6950@end quotation
6951You may see this problem when you are stepping by machine instructions.
6952This is because, on most machines, it takes more than one instruction to
6953set up a stack frame (including local variable definitions); if you are
6954stepping by machine instructions, variables may appear to have the wrong
6955values until the stack frame is completely built. On exit, it usually
6956also takes more than one machine instruction to destroy a stack frame;
6957after you begin stepping through that group of instructions, local
6958variable definitions may be gone.
6959
6960This may also happen when the compiler does significant optimizations.
6961To be sure of always seeing accurate values, turn off all optimization
6962when compiling.
6963
d4f3574e
SS
6964@cindex ``No symbol "foo" in current context''
6965Another possible effect of compiler optimizations is to optimize
6966unused variables out of existence, or assign variables to registers (as
6967opposed to memory addresses). Depending on the support for such cases
6968offered by the debug info format used by the compiler, @value{GDBN}
6969might not be able to display values for such local variables. If that
6970happens, @value{GDBN} will print a message like this:
6971
474c8240 6972@smallexample
d4f3574e 6973No symbol "foo" in current context.
474c8240 6974@end smallexample
d4f3574e
SS
6975
6976To solve such problems, either recompile without optimizations, or use a
6977different debug info format, if the compiler supports several such
15387254 6978formats. For example, @value{NGCC}, the @sc{gnu} C/C@t{++} compiler,
0179ffac
DC
6979usually supports the @option{-gstabs+} option. @option{-gstabs+}
6980produces debug info in a format that is superior to formats such as
6981COFF. You may be able to use DWARF 2 (@option{-gdwarf-2}), which is also
6982an effective form for debug info. @xref{Debugging Options,,Options
ce9341a1
BW
6983for Debugging Your Program or GCC, gcc.info, Using the @sc{gnu}
6984Compiler Collection (GCC)}.
79a6e687 6985@xref{C, ,C and C@t{++}}, for more information about debug info formats
15387254 6986that are best suited to C@t{++} programs.
d4f3574e 6987
ab1adacd
EZ
6988If you ask to print an object whose contents are unknown to
6989@value{GDBN}, e.g., because its data type is not completely specified
6990by the debug information, @value{GDBN} will say @samp{<incomplete
6991type>}. @xref{Symbols, incomplete type}, for more about this.
6992
3a60f64e
JK
6993Strings are identified as arrays of @code{char} values without specified
6994signedness. Arrays of either @code{signed char} or @code{unsigned char} get
6995printed as arrays of 1 byte sized integers. @code{-fsigned-char} or
6996@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN}
6997defines literal string type @code{"char"} as @code{char} without a sign.
6998For program code
6999
7000@smallexample
7001char var0[] = "A";
7002signed char var1[] = "A";
7003@end smallexample
7004
7005You get during debugging
7006@smallexample
7007(gdb) print var0
7008$1 = "A"
7009(gdb) print var1
7010$2 = @{65 'A', 0 '\0'@}
7011@end smallexample
7012
6d2ebf8b 7013@node Arrays
79a6e687 7014@section Artificial Arrays
c906108c
SS
7015
7016@cindex artificial array
15387254 7017@cindex arrays
41afff9a 7018@kindex @@@r{, referencing memory as an array}
c906108c
SS
7019It is often useful to print out several successive objects of the
7020same type in memory; a section of an array, or an array of
7021dynamically determined size for which only a pointer exists in the
7022program.
7023
7024You can do this by referring to a contiguous span of memory as an
7025@dfn{artificial array}, using the binary operator @samp{@@}. The left
7026operand of @samp{@@} should be the first element of the desired array
7027and be an individual object. The right operand should be the desired length
7028of the array. The result is an array value whose elements are all of
7029the type of the left argument. The first element is actually the left
7030argument; the second element comes from bytes of memory immediately
7031following those that hold the first element, and so on. Here is an
7032example. If a program says
7033
474c8240 7034@smallexample
c906108c 7035int *array = (int *) malloc (len * sizeof (int));
474c8240 7036@end smallexample
c906108c
SS
7037
7038@noindent
7039you can print the contents of @code{array} with
7040
474c8240 7041@smallexample
c906108c 7042p *array@@len
474c8240 7043@end smallexample
c906108c
SS
7044
7045The left operand of @samp{@@} must reside in memory. Array values made
7046with @samp{@@} in this way behave just like other arrays in terms of
7047subscripting, and are coerced to pointers when used in expressions.
7048Artificial arrays most often appear in expressions via the value history
79a6e687 7049(@pxref{Value History, ,Value History}), after printing one out.
c906108c
SS
7050
7051Another way to create an artificial array is to use a cast.
7052This re-interprets a value as if it were an array.
7053The value need not be in memory:
474c8240 7054@smallexample
c906108c
SS
7055(@value{GDBP}) p/x (short[2])0x12345678
7056$1 = @{0x1234, 0x5678@}
474c8240 7057@end smallexample
c906108c
SS
7058
7059As a convenience, if you leave the array length out (as in
c3f6f71d 7060@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c 7061the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
474c8240 7062@smallexample
c906108c
SS
7063(@value{GDBP}) p/x (short[])0x12345678
7064$2 = @{0x1234, 0x5678@}
474c8240 7065@end smallexample
c906108c
SS
7066
7067Sometimes the artificial array mechanism is not quite enough; in
7068moderately complex data structures, the elements of interest may not
7069actually be adjacent---for example, if you are interested in the values
7070of pointers in an array. One useful work-around in this situation is
7071to use a convenience variable (@pxref{Convenience Vars, ,Convenience
79a6e687 7072Variables}) as a counter in an expression that prints the first
c906108c
SS
7073interesting value, and then repeat that expression via @key{RET}. For
7074instance, suppose you have an array @code{dtab} of pointers to
7075structures, and you are interested in the values of a field @code{fv}
7076in each structure. Here is an example of what you might type:
7077
474c8240 7078@smallexample
c906108c
SS
7079set $i = 0
7080p dtab[$i++]->fv
7081@key{RET}
7082@key{RET}
7083@dots{}
474c8240 7084@end smallexample
c906108c 7085
6d2ebf8b 7086@node Output Formats
79a6e687 7087@section Output Formats
c906108c
SS
7088
7089@cindex formatted output
7090@cindex output formats
7091By default, @value{GDBN} prints a value according to its data type. Sometimes
7092this is not what you want. For example, you might want to print a number
7093in hex, or a pointer in decimal. Or you might want to view data in memory
7094at a certain address as a character string or as an instruction. To do
7095these things, specify an @dfn{output format} when you print a value.
7096
7097The simplest use of output formats is to say how to print a value
7098already computed. This is done by starting the arguments of the
7099@code{print} command with a slash and a format letter. The format
7100letters supported are:
7101
7102@table @code
7103@item x
7104Regard the bits of the value as an integer, and print the integer in
7105hexadecimal.
7106
7107@item d
7108Print as integer in signed decimal.
7109
7110@item u
7111Print as integer in unsigned decimal.
7112
7113@item o
7114Print as integer in octal.
7115
7116@item t
7117Print as integer in binary. The letter @samp{t} stands for ``two''.
7118@footnote{@samp{b} cannot be used because these format letters are also
7119used with the @code{x} command, where @samp{b} stands for ``byte'';
79a6e687 7120see @ref{Memory,,Examining Memory}.}
c906108c
SS
7121
7122@item a
7123@cindex unknown address, locating
3d67e040 7124@cindex locate address
c906108c
SS
7125Print as an address, both absolute in hexadecimal and as an offset from
7126the nearest preceding symbol. You can use this format used to discover
7127where (in what function) an unknown address is located:
7128
474c8240 7129@smallexample
c906108c
SS
7130(@value{GDBP}) p/a 0x54320
7131$3 = 0x54320 <_initialize_vx+396>
474c8240 7132@end smallexample
c906108c 7133
3d67e040
EZ
7134@noindent
7135The command @code{info symbol 0x54320} yields similar results.
7136@xref{Symbols, info symbol}.
7137
c906108c 7138@item c
51274035
EZ
7139Regard as an integer and print it as a character constant. This
7140prints both the numerical value and its character representation. The
7141character representation is replaced with the octal escape @samp{\nnn}
7142for characters outside the 7-bit @sc{ascii} range.
c906108c 7143
ea37ba09
DJ
7144Without this format, @value{GDBN} displays @code{char},
7145@w{@code{unsigned char}}, and @w{@code{signed char}} data as character
7146constants. Single-byte members of vectors are displayed as integer
7147data.
7148
c906108c
SS
7149@item f
7150Regard the bits of the value as a floating point number and print
7151using typical floating point syntax.
ea37ba09
DJ
7152
7153@item s
7154@cindex printing strings
7155@cindex printing byte arrays
7156Regard as a string, if possible. With this format, pointers to single-byte
7157data are displayed as null-terminated strings and arrays of single-byte data
7158are displayed as fixed-length strings. Other values are displayed in their
7159natural types.
7160
7161Without this format, @value{GDBN} displays pointers to and arrays of
7162@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
7163strings. Single-byte members of a vector are displayed as an integer
7164array.
a6bac58e
TT
7165
7166@item r
7167@cindex raw printing
7168Print using the @samp{raw} formatting. By default, @value{GDBN} will
78e2826b
TT
7169use a Python-based pretty-printer, if one is available (@pxref{Pretty
7170Printing}). This typically results in a higher-level display of the
7171value's contents. The @samp{r} format bypasses any Python
7172pretty-printer which might exist.
c906108c
SS
7173@end table
7174
7175For example, to print the program counter in hex (@pxref{Registers}), type
7176
474c8240 7177@smallexample
c906108c 7178p/x $pc
474c8240 7179@end smallexample
c906108c
SS
7180
7181@noindent
7182Note that no space is required before the slash; this is because command
7183names in @value{GDBN} cannot contain a slash.
7184
7185To reprint the last value in the value history with a different format,
7186you can use the @code{print} command with just a format and no
7187expression. For example, @samp{p/x} reprints the last value in hex.
7188
6d2ebf8b 7189@node Memory
79a6e687 7190@section Examining Memory
c906108c
SS
7191
7192You can use the command @code{x} (for ``examine'') to examine memory in
7193any of several formats, independently of your program's data types.
7194
7195@cindex examining memory
7196@table @code
41afff9a 7197@kindex x @r{(examine memory)}
c906108c
SS
7198@item x/@var{nfu} @var{addr}
7199@itemx x @var{addr}
7200@itemx x
7201Use the @code{x} command to examine memory.
7202@end table
7203
7204@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
7205much memory to display and how to format it; @var{addr} is an
7206expression giving the address where you want to start displaying memory.
7207If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
7208Several commands set convenient defaults for @var{addr}.
7209
7210@table @r
7211@item @var{n}, the repeat count
7212The repeat count is a decimal integer; the default is 1. It specifies
7213how much memory (counting by units @var{u}) to display.
7214@c This really is **decimal**; unaffected by 'set radix' as of GDB
7215@c 4.1.2.
7216
7217@item @var{f}, the display format
51274035
EZ
7218The display format is one of the formats used by @code{print}
7219(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c},
ea37ba09
DJ
7220@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions).
7221The default is @samp{x} (hexadecimal) initially. The default changes
7222each time you use either @code{x} or @code{print}.
c906108c
SS
7223
7224@item @var{u}, the unit size
7225The unit size is any of
7226
7227@table @code
7228@item b
7229Bytes.
7230@item h
7231Halfwords (two bytes).
7232@item w
7233Words (four bytes). This is the initial default.
7234@item g
7235Giant words (eight bytes).
7236@end table
7237
7238Each time you specify a unit size with @code{x}, that size becomes the
7239default unit the next time you use @code{x}. (For the @samp{s} and
7240@samp{i} formats, the unit size is ignored and is normally not written.)
7241
7242@item @var{addr}, starting display address
7243@var{addr} is the address where you want @value{GDBN} to begin displaying
7244memory. The expression need not have a pointer value (though it may);
7245it is always interpreted as an integer address of a byte of memory.
7246@xref{Expressions, ,Expressions}, for more information on expressions. The default for
7247@var{addr} is usually just after the last address examined---but several
7248other commands also set the default address: @code{info breakpoints} (to
7249the address of the last breakpoint listed), @code{info line} (to the
7250starting address of a line), and @code{print} (if you use it to display
7251a value from memory).
7252@end table
7253
7254For example, @samp{x/3uh 0x54320} is a request to display three halfwords
7255(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
7256starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
7257words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 7258@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
7259
7260Since the letters indicating unit sizes are all distinct from the
7261letters specifying output formats, you do not have to remember whether
7262unit size or format comes first; either order works. The output
7263specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
7264(However, the count @var{n} must come first; @samp{wx4} does not work.)
7265
7266Even though the unit size @var{u} is ignored for the formats @samp{s}
7267and @samp{i}, you might still want to use a count @var{n}; for example,
7268@samp{3i} specifies that you want to see three machine instructions,
a4642986
MR
7269including any operands. For convenience, especially when used with
7270the @code{display} command, the @samp{i} format also prints branch delay
7271slot instructions, if any, beyond the count specified, which immediately
7272follow the last instruction that is within the count. The command
7273@code{disassemble} gives an alternative way of inspecting machine
7274instructions; see @ref{Machine Code,,Source and Machine Code}.
c906108c
SS
7275
7276All the defaults for the arguments to @code{x} are designed to make it
7277easy to continue scanning memory with minimal specifications each time
7278you use @code{x}. For example, after you have inspected three machine
7279instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
7280with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
7281the repeat count @var{n} is used again; the other arguments default as
7282for successive uses of @code{x}.
7283
2b28d209
PP
7284When examining machine instructions, the instruction at current program
7285counter is shown with a @code{=>} marker. For example:
7286
7287@smallexample
7288(@value{GDBP}) x/5i $pc-6
7289 0x804837f <main+11>: mov %esp,%ebp
7290 0x8048381 <main+13>: push %ecx
7291 0x8048382 <main+14>: sub $0x4,%esp
7292=> 0x8048385 <main+17>: movl $0x8048460,(%esp)
7293 0x804838c <main+24>: call 0x80482d4 <puts@@plt>
7294@end smallexample
7295
c906108c
SS
7296@cindex @code{$_}, @code{$__}, and value history
7297The addresses and contents printed by the @code{x} command are not saved
7298in the value history because there is often too much of them and they
7299would get in the way. Instead, @value{GDBN} makes these values available for
7300subsequent use in expressions as values of the convenience variables
7301@code{$_} and @code{$__}. After an @code{x} command, the last address
7302examined is available for use in expressions in the convenience variable
7303@code{$_}. The contents of that address, as examined, are available in
7304the convenience variable @code{$__}.
7305
7306If the @code{x} command has a repeat count, the address and contents saved
7307are from the last memory unit printed; this is not the same as the last
7308address printed if several units were printed on the last line of output.
7309
09d4efe1
EZ
7310@cindex remote memory comparison
7311@cindex verify remote memory image
7312When you are debugging a program running on a remote target machine
ea35711c 7313(@pxref{Remote Debugging}), you may wish to verify the program's image in the
09d4efe1
EZ
7314remote machine's memory against the executable file you downloaded to
7315the target. The @code{compare-sections} command is provided for such
7316situations.
7317
7318@table @code
7319@kindex compare-sections
7320@item compare-sections @r{[}@var{section-name}@r{]}
7321Compare the data of a loadable section @var{section-name} in the
7322executable file of the program being debugged with the same section in
7323the remote machine's memory, and report any mismatches. With no
7324arguments, compares all loadable sections. This command's
7325availability depends on the target's support for the @code{"qCRC"}
7326remote request.
7327@end table
7328
6d2ebf8b 7329@node Auto Display
79a6e687 7330@section Automatic Display
c906108c
SS
7331@cindex automatic display
7332@cindex display of expressions
7333
7334If you find that you want to print the value of an expression frequently
7335(to see how it changes), you might want to add it to the @dfn{automatic
7336display list} so that @value{GDBN} prints its value each time your program stops.
7337Each expression added to the list is given a number to identify it;
7338to remove an expression from the list, you specify that number.
7339The automatic display looks like this:
7340
474c8240 7341@smallexample
c906108c
SS
73422: foo = 38
73433: bar[5] = (struct hack *) 0x3804
474c8240 7344@end smallexample
c906108c
SS
7345
7346@noindent
7347This display shows item numbers, expressions and their current values. As with
7348displays you request manually using @code{x} or @code{print}, you can
7349specify the output format you prefer; in fact, @code{display} decides
ea37ba09
DJ
7350whether to use @code{print} or @code{x} depending your format
7351specification---it uses @code{x} if you specify either the @samp{i}
7352or @samp{s} format, or a unit size; otherwise it uses @code{print}.
c906108c
SS
7353
7354@table @code
7355@kindex display
d4f3574e
SS
7356@item display @var{expr}
7357Add the expression @var{expr} to the list of expressions to display
c906108c
SS
7358each time your program stops. @xref{Expressions, ,Expressions}.
7359
7360@code{display} does not repeat if you press @key{RET} again after using it.
7361
d4f3574e 7362@item display/@var{fmt} @var{expr}
c906108c 7363For @var{fmt} specifying only a display format and not a size or
d4f3574e 7364count, add the expression @var{expr} to the auto-display list but
c906108c 7365arrange to display it each time in the specified format @var{fmt}.
79a6e687 7366@xref{Output Formats,,Output Formats}.
c906108c
SS
7367
7368@item display/@var{fmt} @var{addr}
7369For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
7370number of units, add the expression @var{addr} as a memory address to
7371be examined each time your program stops. Examining means in effect
79a6e687 7372doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}.
c906108c
SS
7373@end table
7374
7375For example, @samp{display/i $pc} can be helpful, to see the machine
7376instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 7377is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
7378
7379@table @code
7380@kindex delete display
7381@kindex undisplay
7382@item undisplay @var{dnums}@dots{}
7383@itemx delete display @var{dnums}@dots{}
7384Remove item numbers @var{dnums} from the list of expressions to display.
7385
7386@code{undisplay} does not repeat if you press @key{RET} after using it.
7387(Otherwise you would just get the error @samp{No display number @dots{}}.)
7388
7389@kindex disable display
7390@item disable display @var{dnums}@dots{}
7391Disable the display of item numbers @var{dnums}. A disabled display
7392item is not printed automatically, but is not forgotten. It may be
7393enabled again later.
7394
7395@kindex enable display
7396@item enable display @var{dnums}@dots{}
7397Enable display of item numbers @var{dnums}. It becomes effective once
7398again in auto display of its expression, until you specify otherwise.
7399
7400@item display
7401Display the current values of the expressions on the list, just as is
7402done when your program stops.
7403
7404@kindex info display
7405@item info display
7406Print the list of expressions previously set up to display
7407automatically, each one with its item number, but without showing the
7408values. This includes disabled expressions, which are marked as such.
7409It also includes expressions which would not be displayed right now
7410because they refer to automatic variables not currently available.
7411@end table
7412
15387254 7413@cindex display disabled out of scope
c906108c
SS
7414If a display expression refers to local variables, then it does not make
7415sense outside the lexical context for which it was set up. Such an
7416expression is disabled when execution enters a context where one of its
7417variables is not defined. For example, if you give the command
7418@code{display last_char} while inside a function with an argument
7419@code{last_char}, @value{GDBN} displays this argument while your program
7420continues to stop inside that function. When it stops elsewhere---where
7421there is no variable @code{last_char}---the display is disabled
7422automatically. The next time your program stops where @code{last_char}
7423is meaningful, you can enable the display expression once again.
7424
6d2ebf8b 7425@node Print Settings
79a6e687 7426@section Print Settings
c906108c
SS
7427
7428@cindex format options
7429@cindex print settings
7430@value{GDBN} provides the following ways to control how arrays, structures,
7431and symbols are printed.
7432
7433@noindent
7434These settings are useful for debugging programs in any language:
7435
7436@table @code
4644b6e3 7437@kindex set print
c906108c
SS
7438@item set print address
7439@itemx set print address on
4644b6e3 7440@cindex print/don't print memory addresses
c906108c
SS
7441@value{GDBN} prints memory addresses showing the location of stack
7442traces, structure values, pointer values, breakpoints, and so forth,
7443even when it also displays the contents of those addresses. The default
7444is @code{on}. For example, this is what a stack frame display looks like with
7445@code{set print address on}:
7446
7447@smallexample
7448@group
7449(@value{GDBP}) f
7450#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
7451 at input.c:530
7452530 if (lquote != def_lquote)
7453@end group
7454@end smallexample
7455
7456@item set print address off
7457Do not print addresses when displaying their contents. For example,
7458this is the same stack frame displayed with @code{set print address off}:
7459
7460@smallexample
7461@group
7462(@value{GDBP}) set print addr off
7463(@value{GDBP}) f
7464#0 set_quotes (lq="<<", rq=">>") at input.c:530
7465530 if (lquote != def_lquote)
7466@end group
7467@end smallexample
7468
7469You can use @samp{set print address off} to eliminate all machine
7470dependent displays from the @value{GDBN} interface. For example, with
7471@code{print address off}, you should get the same text for backtraces on
7472all machines---whether or not they involve pointer arguments.
7473
4644b6e3 7474@kindex show print
c906108c
SS
7475@item show print address
7476Show whether or not addresses are to be printed.
7477@end table
7478
7479When @value{GDBN} prints a symbolic address, it normally prints the
7480closest earlier symbol plus an offset. If that symbol does not uniquely
7481identify the address (for example, it is a name whose scope is a single
7482source file), you may need to clarify. One way to do this is with
7483@code{info line}, for example @samp{info line *0x4537}. Alternately,
7484you can set @value{GDBN} to print the source file and line number when
7485it prints a symbolic address:
7486
7487@table @code
c906108c 7488@item set print symbol-filename on
9c16f35a
EZ
7489@cindex source file and line of a symbol
7490@cindex symbol, source file and line
c906108c
SS
7491Tell @value{GDBN} to print the source file name and line number of a
7492symbol in the symbolic form of an address.
7493
7494@item set print symbol-filename off
7495Do not print source file name and line number of a symbol. This is the
7496default.
7497
c906108c
SS
7498@item show print symbol-filename
7499Show whether or not @value{GDBN} will print the source file name and
7500line number of a symbol in the symbolic form of an address.
7501@end table
7502
7503Another situation where it is helpful to show symbol filenames and line
7504numbers is when disassembling code; @value{GDBN} shows you the line
7505number and source file that corresponds to each instruction.
7506
7507Also, you may wish to see the symbolic form only if the address being
7508printed is reasonably close to the closest earlier symbol:
7509
7510@table @code
c906108c 7511@item set print max-symbolic-offset @var{max-offset}
4644b6e3 7512@cindex maximum value for offset of closest symbol
c906108c
SS
7513Tell @value{GDBN} to only display the symbolic form of an address if the
7514offset between the closest earlier symbol and the address is less than
5d161b24 7515@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
7516to always print the symbolic form of an address if any symbol precedes it.
7517
c906108c
SS
7518@item show print max-symbolic-offset
7519Ask how large the maximum offset is that @value{GDBN} prints in a
7520symbolic address.
7521@end table
7522
7523@cindex wild pointer, interpreting
7524@cindex pointer, finding referent
7525If you have a pointer and you are not sure where it points, try
7526@samp{set print symbol-filename on}. Then you can determine the name
7527and source file location of the variable where it points, using
7528@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
7529For example, here @value{GDBN} shows that a variable @code{ptt} points
7530at another variable @code{t}, defined in @file{hi2.c}:
7531
474c8240 7532@smallexample
c906108c
SS
7533(@value{GDBP}) set print symbol-filename on
7534(@value{GDBP}) p/a ptt
7535$4 = 0xe008 <t in hi2.c>
474c8240 7536@end smallexample
c906108c
SS
7537
7538@quotation
7539@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
7540does not show the symbol name and filename of the referent, even with
7541the appropriate @code{set print} options turned on.
7542@end quotation
7543
7544Other settings control how different kinds of objects are printed:
7545
7546@table @code
c906108c
SS
7547@item set print array
7548@itemx set print array on
4644b6e3 7549@cindex pretty print arrays
c906108c
SS
7550Pretty print arrays. This format is more convenient to read,
7551but uses more space. The default is off.
7552
7553@item set print array off
7554Return to compressed format for arrays.
7555
c906108c
SS
7556@item show print array
7557Show whether compressed or pretty format is selected for displaying
7558arrays.
7559
3c9c013a
JB
7560@cindex print array indexes
7561@item set print array-indexes
7562@itemx set print array-indexes on
7563Print the index of each element when displaying arrays. May be more
7564convenient to locate a given element in the array or quickly find the
7565index of a given element in that printed array. The default is off.
7566
7567@item set print array-indexes off
7568Stop printing element indexes when displaying arrays.
7569
7570@item show print array-indexes
7571Show whether the index of each element is printed when displaying
7572arrays.
7573
c906108c 7574@item set print elements @var{number-of-elements}
4644b6e3 7575@cindex number of array elements to print
9c16f35a 7576@cindex limit on number of printed array elements
c906108c
SS
7577Set a limit on how many elements of an array @value{GDBN} will print.
7578If @value{GDBN} is printing a large array, it stops printing after it has
7579printed the number of elements set by the @code{set print elements} command.
7580This limit also applies to the display of strings.
d4f3574e 7581When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
7582Setting @var{number-of-elements} to zero means that the printing is unlimited.
7583
c906108c
SS
7584@item show print elements
7585Display the number of elements of a large array that @value{GDBN} will print.
7586If the number is 0, then the printing is unlimited.
7587
b4740add 7588@item set print frame-arguments @var{value}
a0381d3a 7589@kindex set print frame-arguments
b4740add
JB
7590@cindex printing frame argument values
7591@cindex print all frame argument values
7592@cindex print frame argument values for scalars only
7593@cindex do not print frame argument values
7594This command allows to control how the values of arguments are printed
7595when the debugger prints a frame (@pxref{Frames}). The possible
7596values are:
7597
7598@table @code
7599@item all
4f5376b2 7600The values of all arguments are printed.
b4740add
JB
7601
7602@item scalars
7603Print the value of an argument only if it is a scalar. The value of more
7604complex arguments such as arrays, structures, unions, etc, is replaced
4f5376b2
JB
7605by @code{@dots{}}. This is the default. Here is an example where
7606only scalar arguments are shown:
b4740add
JB
7607
7608@smallexample
7609#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green)
7610 at frame-args.c:23
7611@end smallexample
7612
7613@item none
7614None of the argument values are printed. Instead, the value of each argument
7615is replaced by @code{@dots{}}. In this case, the example above now becomes:
7616
7617@smallexample
7618#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
7619 at frame-args.c:23
7620@end smallexample
7621@end table
7622
4f5376b2
JB
7623By default, only scalar arguments are printed. This command can be used
7624to configure the debugger to print the value of all arguments, regardless
7625of their type. However, it is often advantageous to not print the value
7626of more complex parameters. For instance, it reduces the amount of
7627information printed in each frame, making the backtrace more readable.
7628Also, it improves performance when displaying Ada frames, because
7629the computation of large arguments can sometimes be CPU-intensive,
7630especially in large applications. Setting @code{print frame-arguments}
7631to @code{scalars} (the default) or @code{none} avoids this computation,
7632thus speeding up the display of each Ada frame.
b4740add
JB
7633
7634@item show print frame-arguments
7635Show how the value of arguments should be displayed when printing a frame.
7636
9c16f35a
EZ
7637@item set print repeats
7638@cindex repeated array elements
7639Set the threshold for suppressing display of repeated array
d3e8051b 7640elements. When the number of consecutive identical elements of an
9c16f35a
EZ
7641array exceeds the threshold, @value{GDBN} prints the string
7642@code{"<repeats @var{n} times>"}, where @var{n} is the number of
7643identical repetitions, instead of displaying the identical elements
7644themselves. Setting the threshold to zero will cause all elements to
7645be individually printed. The default threshold is 10.
7646
7647@item show print repeats
7648Display the current threshold for printing repeated identical
7649elements.
7650
c906108c 7651@item set print null-stop
4644b6e3 7652@cindex @sc{null} elements in arrays
c906108c 7653Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 7654@sc{null} is encountered. This is useful when large arrays actually
c906108c 7655contain only short strings.
d4f3574e 7656The default is off.
c906108c 7657
9c16f35a
EZ
7658@item show print null-stop
7659Show whether @value{GDBN} stops printing an array on the first
7660@sc{null} character.
7661
c906108c 7662@item set print pretty on
9c16f35a
EZ
7663@cindex print structures in indented form
7664@cindex indentation in structure display
5d161b24 7665Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
7666per line, like this:
7667
7668@smallexample
7669@group
7670$1 = @{
7671 next = 0x0,
7672 flags = @{
7673 sweet = 1,
7674 sour = 1
7675 @},
7676 meat = 0x54 "Pork"
7677@}
7678@end group
7679@end smallexample
7680
7681@item set print pretty off
7682Cause @value{GDBN} to print structures in a compact format, like this:
7683
7684@smallexample
7685@group
7686$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
7687meat = 0x54 "Pork"@}
7688@end group
7689@end smallexample
7690
7691@noindent
7692This is the default format.
7693
c906108c
SS
7694@item show print pretty
7695Show which format @value{GDBN} is using to print structures.
7696
c906108c 7697@item set print sevenbit-strings on
4644b6e3
EZ
7698@cindex eight-bit characters in strings
7699@cindex octal escapes in strings
c906108c
SS
7700Print using only seven-bit characters; if this option is set,
7701@value{GDBN} displays any eight-bit characters (in strings or
7702character values) using the notation @code{\}@var{nnn}. This setting is
7703best if you are working in English (@sc{ascii}) and you use the
7704high-order bit of characters as a marker or ``meta'' bit.
7705
7706@item set print sevenbit-strings off
7707Print full eight-bit characters. This allows the use of more
7708international character sets, and is the default.
7709
c906108c
SS
7710@item show print sevenbit-strings
7711Show whether or not @value{GDBN} is printing only seven-bit characters.
7712
c906108c 7713@item set print union on
4644b6e3 7714@cindex unions in structures, printing
9c16f35a
EZ
7715Tell @value{GDBN} to print unions which are contained in structures
7716and other unions. This is the default setting.
c906108c
SS
7717
7718@item set print union off
9c16f35a
EZ
7719Tell @value{GDBN} not to print unions which are contained in
7720structures and other unions. @value{GDBN} will print @code{"@{...@}"}
7721instead.
c906108c 7722
c906108c
SS
7723@item show print union
7724Ask @value{GDBN} whether or not it will print unions which are contained in
9c16f35a 7725structures and other unions.
c906108c
SS
7726
7727For example, given the declarations
7728
7729@smallexample
7730typedef enum @{Tree, Bug@} Species;
7731typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 7732typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
7733 Bug_forms;
7734
7735struct thing @{
7736 Species it;
7737 union @{
7738 Tree_forms tree;
7739 Bug_forms bug;
7740 @} form;
7741@};
7742
7743struct thing foo = @{Tree, @{Acorn@}@};
7744@end smallexample
7745
7746@noindent
7747with @code{set print union on} in effect @samp{p foo} would print
7748
7749@smallexample
7750$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
7751@end smallexample
7752
7753@noindent
7754and with @code{set print union off} in effect it would print
7755
7756@smallexample
7757$1 = @{it = Tree, form = @{...@}@}
7758@end smallexample
9c16f35a
EZ
7759
7760@noindent
7761@code{set print union} affects programs written in C-like languages
7762and in Pascal.
c906108c
SS
7763@end table
7764
c906108c
SS
7765@need 1000
7766@noindent
b37052ae 7767These settings are of interest when debugging C@t{++} programs:
c906108c
SS
7768
7769@table @code
4644b6e3 7770@cindex demangling C@t{++} names
c906108c
SS
7771@item set print demangle
7772@itemx set print demangle on
b37052ae 7773Print C@t{++} names in their source form rather than in the encoded
c906108c 7774(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 7775linkage. The default is on.
c906108c 7776
c906108c 7777@item show print demangle
b37052ae 7778Show whether C@t{++} names are printed in mangled or demangled form.
c906108c 7779
c906108c
SS
7780@item set print asm-demangle
7781@itemx set print asm-demangle on
b37052ae 7782Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
7783in assembler code printouts such as instruction disassemblies.
7784The default is off.
7785
c906108c 7786@item show print asm-demangle
b37052ae 7787Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
7788or demangled form.
7789
b37052ae
EZ
7790@cindex C@t{++} symbol decoding style
7791@cindex symbol decoding style, C@t{++}
a8f24a35 7792@kindex set demangle-style
c906108c
SS
7793@item set demangle-style @var{style}
7794Choose among several encoding schemes used by different compilers to
b37052ae 7795represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
7796
7797@table @code
7798@item auto
7799Allow @value{GDBN} to choose a decoding style by inspecting your program.
7800
7801@item gnu
b37052ae 7802Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c 7803This is the default.
c906108c
SS
7804
7805@item hp
b37052ae 7806Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
7807
7808@item lucid
b37052ae 7809Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
7810
7811@item arm
b37052ae 7812Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
7813@strong{Warning:} this setting alone is not sufficient to allow
7814debugging @code{cfront}-generated executables. @value{GDBN} would
7815require further enhancement to permit that.
7816
7817@end table
7818If you omit @var{style}, you will see a list of possible formats.
7819
c906108c 7820@item show demangle-style
b37052ae 7821Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c 7822
c906108c
SS
7823@item set print object
7824@itemx set print object on
4644b6e3 7825@cindex derived type of an object, printing
9c16f35a 7826@cindex display derived types
c906108c
SS
7827When displaying a pointer to an object, identify the @emph{actual}
7828(derived) type of the object rather than the @emph{declared} type, using
7829the virtual function table.
7830
7831@item set print object off
7832Display only the declared type of objects, without reference to the
7833virtual function table. This is the default setting.
7834
c906108c
SS
7835@item show print object
7836Show whether actual, or declared, object types are displayed.
7837
c906108c
SS
7838@item set print static-members
7839@itemx set print static-members on
4644b6e3 7840@cindex static members of C@t{++} objects
b37052ae 7841Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
7842
7843@item set print static-members off
b37052ae 7844Do not print static members when displaying a C@t{++} object.
c906108c 7845
c906108c 7846@item show print static-members
9c16f35a
EZ
7847Show whether C@t{++} static members are printed or not.
7848
7849@item set print pascal_static-members
7850@itemx set print pascal_static-members on
d3e8051b
EZ
7851@cindex static members of Pascal objects
7852@cindex Pascal objects, static members display
9c16f35a
EZ
7853Print static members when displaying a Pascal object. The default is on.
7854
7855@item set print pascal_static-members off
7856Do not print static members when displaying a Pascal object.
7857
7858@item show print pascal_static-members
7859Show whether Pascal static members are printed or not.
c906108c
SS
7860
7861@c These don't work with HP ANSI C++ yet.
c906108c
SS
7862@item set print vtbl
7863@itemx set print vtbl on
4644b6e3 7864@cindex pretty print C@t{++} virtual function tables
9c16f35a
EZ
7865@cindex virtual functions (C@t{++}) display
7866@cindex VTBL display
b37052ae 7867Pretty print C@t{++} virtual function tables. The default is off.
c906108c 7868(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 7869ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
7870
7871@item set print vtbl off
b37052ae 7872Do not pretty print C@t{++} virtual function tables.
c906108c 7873
c906108c 7874@item show print vtbl
b37052ae 7875Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 7876@end table
c906108c 7877
6d2ebf8b 7878@node Value History
79a6e687 7879@section Value History
c906108c
SS
7880
7881@cindex value history
9c16f35a 7882@cindex history of values printed by @value{GDBN}
5d161b24
DB
7883Values printed by the @code{print} command are saved in the @value{GDBN}
7884@dfn{value history}. This allows you to refer to them in other expressions.
7885Values are kept until the symbol table is re-read or discarded
7886(for example with the @code{file} or @code{symbol-file} commands).
7887When the symbol table changes, the value history is discarded,
7888since the values may contain pointers back to the types defined in the
c906108c
SS
7889symbol table.
7890
7891@cindex @code{$}
7892@cindex @code{$$}
7893@cindex history number
7894The values printed are given @dfn{history numbers} by which you can
7895refer to them. These are successive integers starting with one.
7896@code{print} shows you the history number assigned to a value by
7897printing @samp{$@var{num} = } before the value; here @var{num} is the
7898history number.
7899
7900To refer to any previous value, use @samp{$} followed by the value's
7901history number. The way @code{print} labels its output is designed to
7902remind you of this. Just @code{$} refers to the most recent value in
7903the history, and @code{$$} refers to the value before that.
7904@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
7905is the value just prior to @code{$$}, @code{$$1} is equivalent to
7906@code{$$}, and @code{$$0} is equivalent to @code{$}.
7907
7908For example, suppose you have just printed a pointer to a structure and
7909want to see the contents of the structure. It suffices to type
7910
474c8240 7911@smallexample
c906108c 7912p *$
474c8240 7913@end smallexample
c906108c
SS
7914
7915If you have a chain of structures where the component @code{next} points
7916to the next one, you can print the contents of the next one with this:
7917
474c8240 7918@smallexample
c906108c 7919p *$.next
474c8240 7920@end smallexample
c906108c
SS
7921
7922@noindent
7923You can print successive links in the chain by repeating this
7924command---which you can do by just typing @key{RET}.
7925
7926Note that the history records values, not expressions. If the value of
7927@code{x} is 4 and you type these commands:
7928
474c8240 7929@smallexample
c906108c
SS
7930print x
7931set x=5
474c8240 7932@end smallexample
c906108c
SS
7933
7934@noindent
7935then the value recorded in the value history by the @code{print} command
7936remains 4 even though the value of @code{x} has changed.
7937
7938@table @code
7939@kindex show values
7940@item show values
7941Print the last ten values in the value history, with their item numbers.
7942This is like @samp{p@ $$9} repeated ten times, except that @code{show
7943values} does not change the history.
7944
7945@item show values @var{n}
7946Print ten history values centered on history item number @var{n}.
7947
7948@item show values +
7949Print ten history values just after the values last printed. If no more
7950values are available, @code{show values +} produces no display.
7951@end table
7952
7953Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
7954same effect as @samp{show values +}.
7955
6d2ebf8b 7956@node Convenience Vars
79a6e687 7957@section Convenience Variables
c906108c
SS
7958
7959@cindex convenience variables
9c16f35a 7960@cindex user-defined variables
c906108c
SS
7961@value{GDBN} provides @dfn{convenience variables} that you can use within
7962@value{GDBN} to hold on to a value and refer to it later. These variables
7963exist entirely within @value{GDBN}; they are not part of your program, and
7964setting a convenience variable has no direct effect on further execution
7965of your program. That is why you can use them freely.
7966
7967Convenience variables are prefixed with @samp{$}. Any name preceded by
7968@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 7969the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c 7970(Value history references, in contrast, are @emph{numbers} preceded
79a6e687 7971by @samp{$}. @xref{Value History, ,Value History}.)
c906108c
SS
7972
7973You can save a value in a convenience variable with an assignment
7974expression, just as you would set a variable in your program.
7975For example:
7976
474c8240 7977@smallexample
c906108c 7978set $foo = *object_ptr
474c8240 7979@end smallexample
c906108c
SS
7980
7981@noindent
7982would save in @code{$foo} the value contained in the object pointed to by
7983@code{object_ptr}.
7984
7985Using a convenience variable for the first time creates it, but its
7986value is @code{void} until you assign a new value. You can alter the
7987value with another assignment at any time.
7988
7989Convenience variables have no fixed types. You can assign a convenience
7990variable any type of value, including structures and arrays, even if
7991that variable already has a value of a different type. The convenience
7992variable, when used as an expression, has the type of its current value.
7993
7994@table @code
7995@kindex show convenience
9c16f35a 7996@cindex show all user variables
c906108c
SS
7997@item show convenience
7998Print a list of convenience variables used so far, and their values.
d4f3574e 7999Abbreviated @code{show conv}.
53e5f3cf
AS
8000
8001@kindex init-if-undefined
8002@cindex convenience variables, initializing
8003@item init-if-undefined $@var{variable} = @var{expression}
8004Set a convenience variable if it has not already been set. This is useful
8005for user-defined commands that keep some state. It is similar, in concept,
8006to using local static variables with initializers in C (except that
8007convenience variables are global). It can also be used to allow users to
8008override default values used in a command script.
8009
8010If the variable is already defined then the expression is not evaluated so
8011any side-effects do not occur.
c906108c
SS
8012@end table
8013
8014One of the ways to use a convenience variable is as a counter to be
8015incremented or a pointer to be advanced. For example, to print
8016a field from successive elements of an array of structures:
8017
474c8240 8018@smallexample
c906108c
SS
8019set $i = 0
8020print bar[$i++]->contents
474c8240 8021@end smallexample
c906108c 8022
d4f3574e
SS
8023@noindent
8024Repeat that command by typing @key{RET}.
c906108c
SS
8025
8026Some convenience variables are created automatically by @value{GDBN} and given
8027values likely to be useful.
8028
8029@table @code
41afff9a 8030@vindex $_@r{, convenience variable}
c906108c
SS
8031@item $_
8032The variable @code{$_} is automatically set by the @code{x} command to
79a6e687 8033the last address examined (@pxref{Memory, ,Examining Memory}). Other
c906108c
SS
8034commands which provide a default address for @code{x} to examine also
8035set @code{$_} to that address; these commands include @code{info line}
8036and @code{info breakpoint}. The type of @code{$_} is @code{void *}
8037except when set by the @code{x} command, in which case it is a pointer
8038to the type of @code{$__}.
8039
41afff9a 8040@vindex $__@r{, convenience variable}
c906108c
SS
8041@item $__
8042The variable @code{$__} is automatically set by the @code{x} command
8043to the value found in the last address examined. Its type is chosen
8044to match the format in which the data was printed.
8045
8046@item $_exitcode
41afff9a 8047@vindex $_exitcode@r{, convenience variable}
c906108c
SS
8048The variable @code{$_exitcode} is automatically set to the exit code when
8049the program being debugged terminates.
4aa995e1
PA
8050
8051@item $_siginfo
8052@vindex $_siginfo@r{, convenience variable}
ec7e75e7
PP
8053The variable @code{$_siginfo} contains extra signal information
8054(@pxref{extra signal information}). Note that @code{$_siginfo}
8055could be empty, if the application has not yet received any signals.
8056For example, it will be empty before you execute the @code{run} command.
c906108c
SS
8057@end table
8058
53a5351d
JM
8059On HP-UX systems, if you refer to a function or variable name that
8060begins with a dollar sign, @value{GDBN} searches for a user or system
8061name first, before it searches for a convenience variable.
c906108c 8062
bc3b79fd
TJB
8063@cindex convenience functions
8064@value{GDBN} also supplies some @dfn{convenience functions}. These
8065have a syntax similar to convenience variables. A convenience
8066function can be used in an expression just like an ordinary function;
8067however, a convenience function is implemented internally to
8068@value{GDBN}.
8069
8070@table @code
8071@item help function
8072@kindex help function
8073@cindex show all convenience functions
8074Print a list of all convenience functions.
8075@end table
8076
6d2ebf8b 8077@node Registers
c906108c
SS
8078@section Registers
8079
8080@cindex registers
8081You can refer to machine register contents, in expressions, as variables
8082with names starting with @samp{$}. The names of registers are different
8083for each machine; use @code{info registers} to see the names used on
8084your machine.
8085
8086@table @code
8087@kindex info registers
8088@item info registers
8089Print the names and values of all registers except floating-point
c85508ee 8090and vector registers (in the selected stack frame).
c906108c
SS
8091
8092@kindex info all-registers
8093@cindex floating point registers
8094@item info all-registers
8095Print the names and values of all registers, including floating-point
c85508ee 8096and vector registers (in the selected stack frame).
c906108c
SS
8097
8098@item info registers @var{regname} @dots{}
8099Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
8100As discussed in detail below, register values are normally relative to
8101the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
8102the machine you are using, with or without the initial @samp{$}.
8103@end table
8104
e09f16f9
EZ
8105@cindex stack pointer register
8106@cindex program counter register
8107@cindex process status register
8108@cindex frame pointer register
8109@cindex standard registers
c906108c
SS
8110@value{GDBN} has four ``standard'' register names that are available (in
8111expressions) on most machines---whenever they do not conflict with an
8112architecture's canonical mnemonics for registers. The register names
8113@code{$pc} and @code{$sp} are used for the program counter register and
8114the stack pointer. @code{$fp} is used for a register that contains a
8115pointer to the current stack frame, and @code{$ps} is used for a
8116register that contains the processor status. For example,
8117you could print the program counter in hex with
8118
474c8240 8119@smallexample
c906108c 8120p/x $pc
474c8240 8121@end smallexample
c906108c
SS
8122
8123@noindent
8124or print the instruction to be executed next with
8125
474c8240 8126@smallexample
c906108c 8127x/i $pc
474c8240 8128@end smallexample
c906108c
SS
8129
8130@noindent
8131or add four to the stack pointer@footnote{This is a way of removing
8132one word from the stack, on machines where stacks grow downward in
8133memory (most machines, nowadays). This assumes that the innermost
8134stack frame is selected; setting @code{$sp} is not allowed when other
8135stack frames are selected. To pop entire frames off the stack,
8136regardless of machine architecture, use @code{return};
79a6e687 8137see @ref{Returning, ,Returning from a Function}.} with
c906108c 8138
474c8240 8139@smallexample
c906108c 8140set $sp += 4
474c8240 8141@end smallexample
c906108c
SS
8142
8143Whenever possible, these four standard register names are available on
8144your machine even though the machine has different canonical mnemonics,
8145so long as there is no conflict. The @code{info registers} command
8146shows the canonical names. For example, on the SPARC, @code{info
8147registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
8148can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
8149is an alias for the @sc{eflags} register.
c906108c
SS
8150
8151@value{GDBN} always considers the contents of an ordinary register as an
8152integer when the register is examined in this way. Some machines have
8153special registers which can hold nothing but floating point; these
8154registers are considered to have floating point values. There is no way
8155to refer to the contents of an ordinary register as floating point value
8156(although you can @emph{print} it as a floating point value with
8157@samp{print/f $@var{regname}}).
8158
8159Some registers have distinct ``raw'' and ``virtual'' data formats. This
8160means that the data format in which the register contents are saved by
8161the operating system is not the same one that your program normally
8162sees. For example, the registers of the 68881 floating point
8163coprocessor are always saved in ``extended'' (raw) format, but all C
8164programs expect to work with ``double'' (virtual) format. In such
5d161b24 8165cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
8166that makes sense for your program), but the @code{info registers} command
8167prints the data in both formats.
8168
36b80e65
EZ
8169@cindex SSE registers (x86)
8170@cindex MMX registers (x86)
8171Some machines have special registers whose contents can be interpreted
8172in several different ways. For example, modern x86-based machines
8173have SSE and MMX registers that can hold several values packed
8174together in several different formats. @value{GDBN} refers to such
8175registers in @code{struct} notation:
8176
8177@smallexample
8178(@value{GDBP}) print $xmm1
8179$1 = @{
8180 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@},
8181 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@},
8182 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
8183 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@},
8184 v4_int32 = @{0, 20657912, 11, 13@},
8185 v2_int64 = @{88725056443645952, 55834574859@},
8186 uint128 = 0x0000000d0000000b013b36f800000000
8187@}
8188@end smallexample
8189
8190@noindent
8191To set values of such registers, you need to tell @value{GDBN} which
8192view of the register you wish to change, as if you were assigning
8193value to a @code{struct} member:
8194
8195@smallexample
8196 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
8197@end smallexample
8198
c906108c 8199Normally, register values are relative to the selected stack frame
79a6e687 8200(@pxref{Selection, ,Selecting a Frame}). This means that you get the
c906108c
SS
8201value that the register would contain if all stack frames farther in
8202were exited and their saved registers restored. In order to see the
8203true contents of hardware registers, you must select the innermost
8204frame (with @samp{frame 0}).
8205
8206However, @value{GDBN} must deduce where registers are saved, from the machine
8207code generated by your compiler. If some registers are not saved, or if
8208@value{GDBN} is unable to locate the saved registers, the selected stack
8209frame makes no difference.
8210
6d2ebf8b 8211@node Floating Point Hardware
79a6e687 8212@section Floating Point Hardware
c906108c
SS
8213@cindex floating point
8214
8215Depending on the configuration, @value{GDBN} may be able to give
8216you more information about the status of the floating point hardware.
8217
8218@table @code
8219@kindex info float
8220@item info float
8221Display hardware-dependent information about the floating
8222point unit. The exact contents and layout vary depending on the
8223floating point chip. Currently, @samp{info float} is supported on
8224the ARM and x86 machines.
8225@end table
c906108c 8226
e76f1f2e
AC
8227@node Vector Unit
8228@section Vector Unit
8229@cindex vector unit
8230
8231Depending on the configuration, @value{GDBN} may be able to give you
8232more information about the status of the vector unit.
8233
8234@table @code
8235@kindex info vector
8236@item info vector
8237Display information about the vector unit. The exact contents and
8238layout vary depending on the hardware.
8239@end table
8240
721c2651 8241@node OS Information
79a6e687 8242@section Operating System Auxiliary Information
721c2651
EZ
8243@cindex OS information
8244
8245@value{GDBN} provides interfaces to useful OS facilities that can help
8246you debug your program.
8247
8248@cindex @code{ptrace} system call
8249@cindex @code{struct user} contents
8250When @value{GDBN} runs on a @dfn{Posix system} (such as GNU or Unix
8251machines), it interfaces with the inferior via the @code{ptrace}
8252system call. The operating system creates a special sata structure,
8253called @code{struct user}, for this interface. You can use the
8254command @code{info udot} to display the contents of this data
8255structure.
8256
8257@table @code
8258@item info udot
8259@kindex info udot
8260Display the contents of the @code{struct user} maintained by the OS
8261kernel for the program being debugged. @value{GDBN} displays the
8262contents of @code{struct user} as a list of hex numbers, similar to
8263the @code{examine} command.
8264@end table
8265
b383017d
RM
8266@cindex auxiliary vector
8267@cindex vector, auxiliary
b383017d
RM
8268Some operating systems supply an @dfn{auxiliary vector} to programs at
8269startup. This is akin to the arguments and environment that you
8270specify for a program, but contains a system-dependent variety of
8271binary values that tell system libraries important details about the
8272hardware, operating system, and process. Each value's purpose is
8273identified by an integer tag; the meanings are well-known but system-specific.
8274Depending on the configuration and operating system facilities,
9c16f35a
EZ
8275@value{GDBN} may be able to show you this information. For remote
8276targets, this functionality may further depend on the remote stub's
427c3a89
DJ
8277support of the @samp{qXfer:auxv:read} packet, see
8278@ref{qXfer auxiliary vector read}.
b383017d
RM
8279
8280@table @code
8281@kindex info auxv
8282@item info auxv
8283Display the auxiliary vector of the inferior, which can be either a
e4937fc1 8284live process or a core dump file. @value{GDBN} prints each tag value
b383017d
RM
8285numerically, and also shows names and text descriptions for recognized
8286tags. Some values in the vector are numbers, some bit masks, and some
e4937fc1 8287pointers to strings or other data. @value{GDBN} displays each value in the
b383017d
RM
8288most appropriate form for a recognized tag, and in hexadecimal for
8289an unrecognized tag.
8290@end table
8291
07e059b5
VP
8292On some targets, @value{GDBN} can access operating-system-specific information
8293and display it to user, without interpretation. For remote targets,
8294this functionality depends on the remote stub's support of the
8295@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}.
8296
8297@table @code
8298@kindex info os processes
8299@item info os processes
8300Display the list of processes on the target. For each process,
8301@value{GDBN} prints the process identifier, the name of the user, and
8302the command corresponding to the process.
8303@end table
721c2651 8304
29e57380 8305@node Memory Region Attributes
79a6e687 8306@section Memory Region Attributes
29e57380
C
8307@cindex memory region attributes
8308
b383017d 8309@dfn{Memory region attributes} allow you to describe special handling
fd79ecee
DJ
8310required by regions of your target's memory. @value{GDBN} uses
8311attributes to determine whether to allow certain types of memory
8312accesses; whether to use specific width accesses; and whether to cache
8313target memory. By default the description of memory regions is
8314fetched from the target (if the current target supports this), but the
8315user can override the fetched regions.
29e57380
C
8316
8317Defined memory regions can be individually enabled and disabled. When a
8318memory region is disabled, @value{GDBN} uses the default attributes when
8319accessing memory in that region. Similarly, if no memory regions have
8320been defined, @value{GDBN} uses the default attributes when accessing
8321all memory.
8322
b383017d 8323When a memory region is defined, it is given a number to identify it;
29e57380
C
8324to enable, disable, or remove a memory region, you specify that number.
8325
8326@table @code
8327@kindex mem
bfac230e 8328@item mem @var{lower} @var{upper} @var{attributes}@dots{}
09d4efe1
EZ
8329Define a memory region bounded by @var{lower} and @var{upper} with
8330attributes @var{attributes}@dots{}, and add it to the list of regions
8331monitored by @value{GDBN}. Note that @var{upper} == 0 is a special
d3e8051b 8332case: it is treated as the target's maximum memory address.
bfac230e 8333(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
29e57380 8334
fd79ecee
DJ
8335@item mem auto
8336Discard any user changes to the memory regions and use target-supplied
8337regions, if available, or no regions if the target does not support.
8338
29e57380
C
8339@kindex delete mem
8340@item delete mem @var{nums}@dots{}
09d4efe1
EZ
8341Remove memory regions @var{nums}@dots{} from the list of regions
8342monitored by @value{GDBN}.
29e57380
C
8343
8344@kindex disable mem
8345@item disable mem @var{nums}@dots{}
09d4efe1 8346Disable monitoring of memory regions @var{nums}@dots{}.
b383017d 8347A disabled memory region is not forgotten.
29e57380
C
8348It may be enabled again later.
8349
8350@kindex enable mem
8351@item enable mem @var{nums}@dots{}
09d4efe1 8352Enable monitoring of memory regions @var{nums}@dots{}.
29e57380
C
8353
8354@kindex info mem
8355@item info mem
8356Print a table of all defined memory regions, with the following columns
09d4efe1 8357for each region:
29e57380
C
8358
8359@table @emph
8360@item Memory Region Number
8361@item Enabled or Disabled.
b383017d 8362Enabled memory regions are marked with @samp{y}.
29e57380
C
8363Disabled memory regions are marked with @samp{n}.
8364
8365@item Lo Address
8366The address defining the inclusive lower bound of the memory region.
8367
8368@item Hi Address
8369The address defining the exclusive upper bound of the memory region.
8370
8371@item Attributes
8372The list of attributes set for this memory region.
8373@end table
8374@end table
8375
8376
8377@subsection Attributes
8378
b383017d 8379@subsubsection Memory Access Mode
29e57380
C
8380The access mode attributes set whether @value{GDBN} may make read or
8381write accesses to a memory region.
8382
8383While these attributes prevent @value{GDBN} from performing invalid
8384memory accesses, they do nothing to prevent the target system, I/O DMA,
359df76b 8385etc.@: from accessing memory.
29e57380
C
8386
8387@table @code
8388@item ro
8389Memory is read only.
8390@item wo
8391Memory is write only.
8392@item rw
6ca652b0 8393Memory is read/write. This is the default.
29e57380
C
8394@end table
8395
8396@subsubsection Memory Access Size
d3e8051b 8397The access size attribute tells @value{GDBN} to use specific sized
29e57380
C
8398accesses in the memory region. Often memory mapped device registers
8399require specific sized accesses. If no access size attribute is
8400specified, @value{GDBN} may use accesses of any size.
8401
8402@table @code
8403@item 8
8404Use 8 bit memory accesses.
8405@item 16
8406Use 16 bit memory accesses.
8407@item 32
8408Use 32 bit memory accesses.
8409@item 64
8410Use 64 bit memory accesses.
8411@end table
8412
8413@c @subsubsection Hardware/Software Breakpoints
8414@c The hardware/software breakpoint attributes set whether @value{GDBN}
8415@c will use hardware or software breakpoints for the internal breakpoints
8416@c used by the step, next, finish, until, etc. commands.
8417@c
8418@c @table @code
8419@c @item hwbreak
b383017d 8420@c Always use hardware breakpoints
29e57380
C
8421@c @item swbreak (default)
8422@c @end table
8423
8424@subsubsection Data Cache
8425The data cache attributes set whether @value{GDBN} will cache target
8426memory. While this generally improves performance by reducing debug
8427protocol overhead, it can lead to incorrect results because @value{GDBN}
8428does not know about volatile variables or memory mapped device
8429registers.
8430
8431@table @code
8432@item cache
b383017d 8433Enable @value{GDBN} to cache target memory.
6ca652b0
EZ
8434@item nocache
8435Disable @value{GDBN} from caching target memory. This is the default.
29e57380
C
8436@end table
8437
4b5752d0
VP
8438@subsection Memory Access Checking
8439@value{GDBN} can be instructed to refuse accesses to memory that is
8440not explicitly described. This can be useful if accessing such
8441regions has undesired effects for a specific target, or to provide
8442better error checking. The following commands control this behaviour.
8443
8444@table @code
8445@kindex set mem inaccessible-by-default
8446@item set mem inaccessible-by-default [on|off]
8447If @code{on} is specified, make @value{GDBN} treat memory not
8448explicitly described by the memory ranges as non-existent and refuse accesses
8449to such memory. The checks are only performed if there's at least one
8450memory range defined. If @code{off} is specified, make @value{GDBN}
8451treat the memory not explicitly described by the memory ranges as RAM.
56cf5405 8452The default value is @code{on}.
4b5752d0
VP
8453@kindex show mem inaccessible-by-default
8454@item show mem inaccessible-by-default
8455Show the current handling of accesses to unknown memory.
8456@end table
8457
8458
29e57380 8459@c @subsubsection Memory Write Verification
b383017d 8460@c The memory write verification attributes set whether @value{GDBN}
29e57380
C
8461@c will re-reads data after each write to verify the write was successful.
8462@c
8463@c @table @code
8464@c @item verify
8465@c @item noverify (default)
8466@c @end table
8467
16d9dec6 8468@node Dump/Restore Files
79a6e687 8469@section Copy Between Memory and a File
16d9dec6
MS
8470@cindex dump/restore files
8471@cindex append data to a file
8472@cindex dump data to a file
8473@cindex restore data from a file
16d9dec6 8474
df5215a6
JB
8475You can use the commands @code{dump}, @code{append}, and
8476@code{restore} to copy data between target memory and a file. The
8477@code{dump} and @code{append} commands write data to a file, and the
8478@code{restore} command reads data from a file back into the inferior's
8479memory. Files may be in binary, Motorola S-record, Intel hex, or
8480Tektronix Hex format; however, @value{GDBN} can only append to binary
8481files.
8482
8483@table @code
8484
8485@kindex dump
8486@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
8487@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
8488Dump the contents of memory from @var{start_addr} to @var{end_addr},
8489or the value of @var{expr}, to @var{filename} in the given format.
16d9dec6 8490
df5215a6 8491The @var{format} parameter may be any one of:
16d9dec6 8492@table @code
df5215a6
JB
8493@item binary
8494Raw binary form.
8495@item ihex
8496Intel hex format.
8497@item srec
8498Motorola S-record format.
8499@item tekhex
8500Tektronix Hex format.
8501@end table
8502
8503@value{GDBN} uses the same definitions of these formats as the
8504@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
8505@var{format} is omitted, @value{GDBN} dumps the data in raw binary
8506form.
8507
8508@kindex append
8509@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
8510@itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
8511Append the contents of memory from @var{start_addr} to @var{end_addr},
09d4efe1 8512or the value of @var{expr}, to the file @var{filename}, in raw binary form.
df5215a6
JB
8513(@value{GDBN} can only append data to files in raw binary form.)
8514
8515@kindex restore
8516@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
8517Restore the contents of file @var{filename} into memory. The
8518@code{restore} command can automatically recognize any known @sc{bfd}
8519file format, except for raw binary. To restore a raw binary file you
8520must specify the optional keyword @code{binary} after the filename.
16d9dec6 8521
b383017d 8522If @var{bias} is non-zero, its value will be added to the addresses
16d9dec6
MS
8523contained in the file. Binary files always start at address zero, so
8524they will be restored at address @var{bias}. Other bfd files have
8525a built-in location; they will be restored at offset @var{bias}
8526from that location.
8527
8528If @var{start} and/or @var{end} are non-zero, then only data between
8529file offset @var{start} and file offset @var{end} will be restored.
b383017d 8530These offsets are relative to the addresses in the file, before
16d9dec6
MS
8531the @var{bias} argument is applied.
8532
8533@end table
8534
384ee23f
EZ
8535@node Core File Generation
8536@section How to Produce a Core File from Your Program
8537@cindex dump core from inferior
8538
8539A @dfn{core file} or @dfn{core dump} is a file that records the memory
8540image of a running process and its process status (register values
8541etc.). Its primary use is post-mortem debugging of a program that
8542crashed while it ran outside a debugger. A program that crashes
8543automatically produces a core file, unless this feature is disabled by
8544the user. @xref{Files}, for information on invoking @value{GDBN} in
8545the post-mortem debugging mode.
8546
8547Occasionally, you may wish to produce a core file of the program you
8548are debugging in order to preserve a snapshot of its state.
8549@value{GDBN} has a special command for that.
8550
8551@table @code
8552@kindex gcore
8553@kindex generate-core-file
8554@item generate-core-file [@var{file}]
8555@itemx gcore [@var{file}]
8556Produce a core dump of the inferior process. The optional argument
8557@var{file} specifies the file name where to put the core dump. If not
8558specified, the file name defaults to @file{core.@var{pid}}, where
8559@var{pid} is the inferior process ID.
8560
8561Note that this command is implemented only for some systems (as of
8562this writing, @sc{gnu}/Linux, FreeBSD, Solaris, Unixware, and S390).
8563@end table
8564
a0eb71c5
KB
8565@node Character Sets
8566@section Character Sets
8567@cindex character sets
8568@cindex charset
8569@cindex translating between character sets
8570@cindex host character set
8571@cindex target character set
8572
8573If the program you are debugging uses a different character set to
8574represent characters and strings than the one @value{GDBN} uses itself,
8575@value{GDBN} can automatically translate between the character sets for
8576you. The character set @value{GDBN} uses we call the @dfn{host
8577character set}; the one the inferior program uses we call the
8578@dfn{target character set}.
8579
8580For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
8581uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
ea35711c 8582remote protocol (@pxref{Remote Debugging}) to debug a program
a0eb71c5
KB
8583running on an IBM mainframe, which uses the @sc{ebcdic} character set,
8584then the host character set is Latin-1, and the target character set is
8585@sc{ebcdic}. If you give @value{GDBN} the command @code{set
e33d66ec 8586target-charset EBCDIC-US}, then @value{GDBN} translates between
a0eb71c5
KB
8587@sc{ebcdic} and Latin 1 as you print character or string values, or use
8588character and string literals in expressions.
8589
8590@value{GDBN} has no way to automatically recognize which character set
8591the inferior program uses; you must tell it, using the @code{set
8592target-charset} command, described below.
8593
8594Here are the commands for controlling @value{GDBN}'s character set
8595support:
8596
8597@table @code
8598@item set target-charset @var{charset}
8599@kindex set target-charset
10af6951
EZ
8600Set the current target character set to @var{charset}. To display the
8601list of supported target character sets, type
8602@kbd{@w{set target-charset @key{TAB}@key{TAB}}}.
a0eb71c5 8603
a0eb71c5
KB
8604@item set host-charset @var{charset}
8605@kindex set host-charset
8606Set the current host character set to @var{charset}.
8607
8608By default, @value{GDBN} uses a host character set appropriate to the
8609system it is running on; you can override that default using the
732f6a93
TT
8610@code{set host-charset} command. On some systems, @value{GDBN} cannot
8611automatically determine the appropriate host character set. In this
8612case, @value{GDBN} uses @samp{UTF-8}.
a0eb71c5
KB
8613
8614@value{GDBN} can only use certain character sets as its host character
10af6951
EZ
8615set. If you type @kbd{@w{set target-charset @key{TAB}@key{TAB}}},
8616@value{GDBN} will list the host character sets it supports.
a0eb71c5
KB
8617
8618@item set charset @var{charset}
8619@kindex set charset
e33d66ec 8620Set the current host and target character sets to @var{charset}. As
10af6951
EZ
8621above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}},
8622@value{GDBN} will list the names of the character sets that can be used
e33d66ec
EZ
8623for both host and target.
8624
a0eb71c5 8625@item show charset
a0eb71c5 8626@kindex show charset
10af6951 8627Show the names of the current host and target character sets.
e33d66ec 8628
10af6951 8629@item show host-charset
a0eb71c5 8630@kindex show host-charset
10af6951 8631Show the name of the current host character set.
e33d66ec 8632
10af6951 8633@item show target-charset
a0eb71c5 8634@kindex show target-charset
10af6951 8635Show the name of the current target character set.
a0eb71c5 8636
10af6951
EZ
8637@item set target-wide-charset @var{charset}
8638@kindex set target-wide-charset
8639Set the current target's wide character set to @var{charset}. This is
8640the character set used by the target's @code{wchar_t} type. To
8641display the list of supported wide character sets, type
8642@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}.
8643
8644@item show target-wide-charset
8645@kindex show target-wide-charset
8646Show the name of the current target's wide character set.
a0eb71c5
KB
8647@end table
8648
a0eb71c5
KB
8649Here is an example of @value{GDBN}'s character set support in action.
8650Assume that the following source code has been placed in the file
8651@file{charset-test.c}:
8652
8653@smallexample
8654#include <stdio.h>
8655
8656char ascii_hello[]
8657 = @{72, 101, 108, 108, 111, 44, 32, 119,
8658 111, 114, 108, 100, 33, 10, 0@};
8659char ibm1047_hello[]
8660 = @{200, 133, 147, 147, 150, 107, 64, 166,
8661 150, 153, 147, 132, 90, 37, 0@};
8662
8663main ()
8664@{
8665 printf ("Hello, world!\n");
8666@}
10998722 8667@end smallexample
a0eb71c5
KB
8668
8669In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
8670containing the string @samp{Hello, world!} followed by a newline,
8671encoded in the @sc{ascii} and @sc{ibm1047} character sets.
8672
8673We compile the program, and invoke the debugger on it:
8674
8675@smallexample
8676$ gcc -g charset-test.c -o charset-test
8677$ gdb -nw charset-test
8678GNU gdb 2001-12-19-cvs
8679Copyright 2001 Free Software Foundation, Inc.
8680@dots{}
f7dc1244 8681(@value{GDBP})
10998722 8682@end smallexample
a0eb71c5
KB
8683
8684We can use the @code{show charset} command to see what character sets
8685@value{GDBN} is currently using to interpret and display characters and
8686strings:
8687
8688@smallexample
f7dc1244 8689(@value{GDBP}) show charset
e33d66ec 8690The current host and target character set is `ISO-8859-1'.
f7dc1244 8691(@value{GDBP})
10998722 8692@end smallexample
a0eb71c5
KB
8693
8694For the sake of printing this manual, let's use @sc{ascii} as our
8695initial character set:
8696@smallexample
f7dc1244
EZ
8697(@value{GDBP}) set charset ASCII
8698(@value{GDBP}) show charset
e33d66ec 8699The current host and target character set is `ASCII'.
f7dc1244 8700(@value{GDBP})
10998722 8701@end smallexample
a0eb71c5
KB
8702
8703Let's assume that @sc{ascii} is indeed the correct character set for our
8704host system --- in other words, let's assume that if @value{GDBN} prints
8705characters using the @sc{ascii} character set, our terminal will display
8706them properly. Since our current target character set is also
8707@sc{ascii}, the contents of @code{ascii_hello} print legibly:
8708
8709@smallexample
f7dc1244 8710(@value{GDBP}) print ascii_hello
a0eb71c5 8711$1 = 0x401698 "Hello, world!\n"
f7dc1244 8712(@value{GDBP}) print ascii_hello[0]
a0eb71c5 8713$2 = 72 'H'
f7dc1244 8714(@value{GDBP})
10998722 8715@end smallexample
a0eb71c5
KB
8716
8717@value{GDBN} uses the target character set for character and string
8718literals you use in expressions:
8719
8720@smallexample
f7dc1244 8721(@value{GDBP}) print '+'
a0eb71c5 8722$3 = 43 '+'
f7dc1244 8723(@value{GDBP})
10998722 8724@end smallexample
a0eb71c5
KB
8725
8726The @sc{ascii} character set uses the number 43 to encode the @samp{+}
8727character.
8728
8729@value{GDBN} relies on the user to tell it which character set the
8730target program uses. If we print @code{ibm1047_hello} while our target
8731character set is still @sc{ascii}, we get jibberish:
8732
8733@smallexample
f7dc1244 8734(@value{GDBP}) print ibm1047_hello
a0eb71c5 8735$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
f7dc1244 8736(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 8737$5 = 200 '\310'
f7dc1244 8738(@value{GDBP})
10998722 8739@end smallexample
a0eb71c5 8740
e33d66ec 8741If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
a0eb71c5
KB
8742@value{GDBN} tells us the character sets it supports:
8743
8744@smallexample
f7dc1244 8745(@value{GDBP}) set target-charset
b383017d 8746ASCII EBCDIC-US IBM1047 ISO-8859-1
f7dc1244 8747(@value{GDBP}) set target-charset
10998722 8748@end smallexample
a0eb71c5
KB
8749
8750We can select @sc{ibm1047} as our target character set, and examine the
8751program's strings again. Now the @sc{ascii} string is wrong, but
8752@value{GDBN} translates the contents of @code{ibm1047_hello} from the
8753target character set, @sc{ibm1047}, to the host character set,
8754@sc{ascii}, and they display correctly:
8755
8756@smallexample
f7dc1244
EZ
8757(@value{GDBP}) set target-charset IBM1047
8758(@value{GDBP}) show charset
e33d66ec
EZ
8759The current host character set is `ASCII'.
8760The current target character set is `IBM1047'.
f7dc1244 8761(@value{GDBP}) print ascii_hello
a0eb71c5 8762$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
f7dc1244 8763(@value{GDBP}) print ascii_hello[0]
a0eb71c5 8764$7 = 72 '\110'
f7dc1244 8765(@value{GDBP}) print ibm1047_hello
a0eb71c5 8766$8 = 0x4016a8 "Hello, world!\n"
f7dc1244 8767(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 8768$9 = 200 'H'
f7dc1244 8769(@value{GDBP})
10998722 8770@end smallexample
a0eb71c5
KB
8771
8772As above, @value{GDBN} uses the target character set for character and
8773string literals you use in expressions:
8774
8775@smallexample
f7dc1244 8776(@value{GDBP}) print '+'
a0eb71c5 8777$10 = 78 '+'
f7dc1244 8778(@value{GDBP})
10998722 8779@end smallexample
a0eb71c5 8780
e33d66ec 8781The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
a0eb71c5
KB
8782character.
8783
09d4efe1
EZ
8784@node Caching Remote Data
8785@section Caching Data of Remote Targets
8786@cindex caching data of remote targets
8787
4e5d721f 8788@value{GDBN} caches data exchanged between the debugger and a
ea35711c 8789remote target (@pxref{Remote Debugging}). Such caching generally improves
09d4efe1 8790performance, because it reduces the overhead of the remote protocol by
4e5d721f
DE
8791bundling memory reads and writes into large chunks. Unfortunately, simply
8792caching everything would lead to incorrect results, since @value{GDBN}
8793does not necessarily know anything about volatile values, memory-mapped I/O
29b090c0
DE
8794addresses, etc. Furthermore, in non-stop mode (@pxref{Non-Stop Mode})
8795memory can be changed @emph{while} a gdb command is executing.
8796Therefore, by default, @value{GDBN} only caches data
8797known to be on the stack@footnote{In non-stop mode, it is moderately
8798rare for a running thread to modify the stack of a stopped thread
8799in a way that would interfere with a backtrace, and caching of
8800stack reads provides a significant speed up of remote backtraces.}.
8801Other regions of memory can be explicitly marked as
4e5d721f 8802cacheable; see @pxref{Memory Region Attributes}.
09d4efe1
EZ
8803
8804@table @code
8805@kindex set remotecache
8806@item set remotecache on
8807@itemx set remotecache off
4e5d721f
DE
8808This option no longer does anything; it exists for compatibility
8809with old scripts.
09d4efe1
EZ
8810
8811@kindex show remotecache
8812@item show remotecache
4e5d721f
DE
8813Show the current state of the obsolete remotecache flag.
8814
8815@kindex set stack-cache
8816@item set stack-cache on
8817@itemx set stack-cache off
8818Enable or disable caching of stack accesses. When @code{ON}, use
8819caching. By default, this option is @code{ON}.
8820
8821@kindex show stack-cache
8822@item show stack-cache
8823Show the current state of data caching for memory accesses.
09d4efe1
EZ
8824
8825@kindex info dcache
4e5d721f 8826@item info dcache @r{[}line@r{]}
09d4efe1 8827Print the information about the data cache performance. The
4e5d721f
DE
8828information displayed includes the dcache width and depth, and for
8829each cache line, its number, address, and how many times it was
8830referenced. This command is useful for debugging the data cache
8831operation.
8832
8833If a line number is specified, the contents of that line will be
8834printed in hex.
09d4efe1
EZ
8835@end table
8836
08388c79
DE
8837@node Searching Memory
8838@section Search Memory
8839@cindex searching memory
8840
8841Memory can be searched for a particular sequence of bytes with the
8842@code{find} command.
8843
8844@table @code
8845@kindex find
8846@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
8847@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
8848Search memory for the sequence of bytes specified by @var{val1}, @var{val2},
8849etc. The search begins at address @var{start_addr} and continues for either
8850@var{len} bytes or through to @var{end_addr} inclusive.
8851@end table
8852
8853@var{s} and @var{n} are optional parameters.
8854They may be specified in either order, apart or together.
8855
8856@table @r
8857@item @var{s}, search query size
8858The size of each search query value.
8859
8860@table @code
8861@item b
8862bytes
8863@item h
8864halfwords (two bytes)
8865@item w
8866words (four bytes)
8867@item g
8868giant words (eight bytes)
8869@end table
8870
8871All values are interpreted in the current language.
8872This means, for example, that if the current source language is C/C@t{++}
8873then searching for the string ``hello'' includes the trailing '\0'.
8874
8875If the value size is not specified, it is taken from the
8876value's type in the current language.
8877This is useful when one wants to specify the search
8878pattern as a mixture of types.
8879Note that this means, for example, that in the case of C-like languages
8880a search for an untyped 0x42 will search for @samp{(int) 0x42}
8881which is typically four bytes.
8882
8883@item @var{n}, maximum number of finds
8884The maximum number of matches to print. The default is to print all finds.
8885@end table
8886
8887You can use strings as search values. Quote them with double-quotes
8888 (@code{"}).
8889The string value is copied into the search pattern byte by byte,
8890regardless of the endianness of the target and the size specification.
8891
8892The address of each match found is printed as well as a count of the
8893number of matches found.
8894
8895The address of the last value found is stored in convenience variable
8896@samp{$_}.
8897A count of the number of matches is stored in @samp{$numfound}.
8898
8899For example, if stopped at the @code{printf} in this function:
8900
8901@smallexample
8902void
8903hello ()
8904@{
8905 static char hello[] = "hello-hello";
8906 static struct @{ char c; short s; int i; @}
8907 __attribute__ ((packed)) mixed
8908 = @{ 'c', 0x1234, 0x87654321 @};
8909 printf ("%s\n", hello);
8910@}
8911@end smallexample
8912
8913@noindent
8914you get during debugging:
8915
8916@smallexample
8917(gdb) find &hello[0], +sizeof(hello), "hello"
89180x804956d <hello.1620+6>
89191 pattern found
8920(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o'
89210x8049567 <hello.1620>
89220x804956d <hello.1620+6>
89232 patterns found
8924(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l'
89250x8049567 <hello.1620>
89261 pattern found
8927(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
89280x8049560 <mixed.1625>
89291 pattern found
8930(gdb) print $numfound
8931$1 = 1
8932(gdb) print $_
8933$2 = (void *) 0x8049560
8934@end smallexample
a0eb71c5 8935
edb3359d
DJ
8936@node Optimized Code
8937@chapter Debugging Optimized Code
8938@cindex optimized code, debugging
8939@cindex debugging optimized code
8940
8941Almost all compilers support optimization. With optimization
8942disabled, the compiler generates assembly code that corresponds
8943directly to your source code, in a simplistic way. As the compiler
8944applies more powerful optimizations, the generated assembly code
8945diverges from your original source code. With help from debugging
8946information generated by the compiler, @value{GDBN} can map from
8947the running program back to constructs from your original source.
8948
8949@value{GDBN} is more accurate with optimization disabled. If you
8950can recompile without optimization, it is easier to follow the
8951progress of your program during debugging. But, there are many cases
8952where you may need to debug an optimized version.
8953
8954When you debug a program compiled with @samp{-g -O}, remember that the
8955optimizer has rearranged your code; the debugger shows you what is
8956really there. Do not be too surprised when the execution path does not
8957exactly match your source file! An extreme example: if you define a
8958variable, but never use it, @value{GDBN} never sees that
8959variable---because the compiler optimizes it out of existence.
8960
8961Some things do not work as well with @samp{-g -O} as with just
8962@samp{-g}, particularly on machines with instruction scheduling. If in
8963doubt, recompile with @samp{-g} alone, and if this fixes the problem,
8964please report it to us as a bug (including a test case!).
8965@xref{Variables}, for more information about debugging optimized code.
8966
8967@menu
8968* Inline Functions:: How @value{GDBN} presents inlining
8969@end menu
8970
8971@node Inline Functions
8972@section Inline Functions
8973@cindex inline functions, debugging
8974
8975@dfn{Inlining} is an optimization that inserts a copy of the function
8976body directly at each call site, instead of jumping to a shared
8977routine. @value{GDBN} displays inlined functions just like
8978non-inlined functions. They appear in backtraces. You can view their
8979arguments and local variables, step into them with @code{step}, skip
8980them with @code{next}, and escape from them with @code{finish}.
8981You can check whether a function was inlined by using the
8982@code{info frame} command.
8983
8984For @value{GDBN} to support inlined functions, the compiler must
8985record information about inlining in the debug information ---
8986@value{NGCC} using the @sc{dwarf 2} format does this, and several
8987other compilers do also. @value{GDBN} only supports inlined functions
8988when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1
8989do not emit two required attributes (@samp{DW_AT_call_file} and
8990@samp{DW_AT_call_line}); @value{GDBN} does not display inlined
8991function calls with earlier versions of @value{NGCC}. It instead
8992displays the arguments and local variables of inlined functions as
8993local variables in the caller.
8994
8995The body of an inlined function is directly included at its call site;
8996unlike a non-inlined function, there are no instructions devoted to
8997the call. @value{GDBN} still pretends that the call site and the
8998start of the inlined function are different instructions. Stepping to
8999the call site shows the call site, and then stepping again shows
9000the first line of the inlined function, even though no additional
9001instructions are executed.
9002
9003This makes source-level debugging much clearer; you can see both the
9004context of the call and then the effect of the call. Only stepping by
9005a single instruction using @code{stepi} or @code{nexti} does not do
9006this; single instruction steps always show the inlined body.
9007
9008There are some ways that @value{GDBN} does not pretend that inlined
9009function calls are the same as normal calls:
9010
9011@itemize @bullet
9012@item
9013You cannot set breakpoints on inlined functions. @value{GDBN}
9014either reports that there is no symbol with that name, or else sets the
9015breakpoint only on non-inlined copies of the function. This limitation
9016will be removed in a future version of @value{GDBN}; until then,
9017set a breakpoint by line number on the first line of the inlined
9018function instead.
9019
9020@item
9021Setting breakpoints at the call site of an inlined function may not
9022work, because the call site does not contain any code. @value{GDBN}
9023may incorrectly move the breakpoint to the next line of the enclosing
9024function, after the call. This limitation will be removed in a future
9025version of @value{GDBN}; until then, set a breakpoint on an earlier line
9026or inside the inlined function instead.
9027
9028@item
9029@value{GDBN} cannot locate the return value of inlined calls after
9030using the @code{finish} command. This is a limitation of compiler-generated
9031debugging information; after @code{finish}, you can step to the next line
9032and print a variable where your program stored the return value.
9033
9034@end itemize
9035
9036
e2e0bcd1
JB
9037@node Macros
9038@chapter C Preprocessor Macros
9039
49efadf5 9040Some languages, such as C and C@t{++}, provide a way to define and invoke
e2e0bcd1
JB
9041``preprocessor macros'' which expand into strings of tokens.
9042@value{GDBN} can evaluate expressions containing macro invocations, show
9043the result of macro expansion, and show a macro's definition, including
9044where it was defined.
9045
9046You may need to compile your program specially to provide @value{GDBN}
9047with information about preprocessor macros. Most compilers do not
9048include macros in their debugging information, even when you compile
9049with the @option{-g} flag. @xref{Compilation}.
9050
9051A program may define a macro at one point, remove that definition later,
9052and then provide a different definition after that. Thus, at different
9053points in the program, a macro may have different definitions, or have
9054no definition at all. If there is a current stack frame, @value{GDBN}
9055uses the macros in scope at that frame's source code line. Otherwise,
9056@value{GDBN} uses the macros in scope at the current listing location;
9057see @ref{List}.
9058
e2e0bcd1
JB
9059Whenever @value{GDBN} evaluates an expression, it always expands any
9060macro invocations present in the expression. @value{GDBN} also provides
9061the following commands for working with macros explicitly.
9062
9063@table @code
9064
9065@kindex macro expand
9066@cindex macro expansion, showing the results of preprocessor
9067@cindex preprocessor macro expansion, showing the results of
9068@cindex expanding preprocessor macros
9069@item macro expand @var{expression}
9070@itemx macro exp @var{expression}
9071Show the results of expanding all preprocessor macro invocations in
9072@var{expression}. Since @value{GDBN} simply expands macros, but does
9073not parse the result, @var{expression} need not be a valid expression;
9074it can be any string of tokens.
9075
09d4efe1 9076@kindex macro exp1
e2e0bcd1
JB
9077@item macro expand-once @var{expression}
9078@itemx macro exp1 @var{expression}
4644b6e3 9079@cindex expand macro once
e2e0bcd1
JB
9080@i{(This command is not yet implemented.)} Show the results of
9081expanding those preprocessor macro invocations that appear explicitly in
9082@var{expression}. Macro invocations appearing in that expansion are
9083left unchanged. This command allows you to see the effect of a
9084particular macro more clearly, without being confused by further
9085expansions. Since @value{GDBN} simply expands macros, but does not
9086parse the result, @var{expression} need not be a valid expression; it
9087can be any string of tokens.
9088
475b0867 9089@kindex info macro
e2e0bcd1
JB
9090@cindex macro definition, showing
9091@cindex definition, showing a macro's
475b0867 9092@item info macro @var{macro}
e2e0bcd1 9093Show the definition of the macro named @var{macro}, and describe the
484086b7 9094source location or compiler command-line where that definition was established.
e2e0bcd1
JB
9095
9096@kindex macro define
9097@cindex user-defined macros
9098@cindex defining macros interactively
9099@cindex macros, user-defined
9100@item macro define @var{macro} @var{replacement-list}
9101@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
d7d9f01e
TT
9102Introduce a definition for a preprocessor macro named @var{macro},
9103invocations of which are replaced by the tokens given in
9104@var{replacement-list}. The first form of this command defines an
9105``object-like'' macro, which takes no arguments; the second form
9106defines a ``function-like'' macro, which takes the arguments given in
9107@var{arglist}.
9108
9109A definition introduced by this command is in scope in every
9110expression evaluated in @value{GDBN}, until it is removed with the
9111@code{macro undef} command, described below. The definition overrides
9112all definitions for @var{macro} present in the program being debugged,
9113as well as any previous user-supplied definition.
e2e0bcd1
JB
9114
9115@kindex macro undef
9116@item macro undef @var{macro}
d7d9f01e
TT
9117Remove any user-supplied definition for the macro named @var{macro}.
9118This command only affects definitions provided with the @code{macro
9119define} command, described above; it cannot remove definitions present
9120in the program being debugged.
e2e0bcd1 9121
09d4efe1
EZ
9122@kindex macro list
9123@item macro list
d7d9f01e 9124List all the macros defined using the @code{macro define} command.
e2e0bcd1
JB
9125@end table
9126
9127@cindex macros, example of debugging with
9128Here is a transcript showing the above commands in action. First, we
9129show our source files:
9130
9131@smallexample
9132$ cat sample.c
9133#include <stdio.h>
9134#include "sample.h"
9135
9136#define M 42
9137#define ADD(x) (M + x)
9138
9139main ()
9140@{
9141#define N 28
9142 printf ("Hello, world!\n");
9143#undef N
9144 printf ("We're so creative.\n");
9145#define N 1729
9146 printf ("Goodbye, world!\n");
9147@}
9148$ cat sample.h
9149#define Q <
9150$
9151@end smallexample
9152
9153Now, we compile the program using the @sc{gnu} C compiler, @value{NGCC}.
9154We pass the @option{-gdwarf-2} and @option{-g3} flags to ensure the
9155compiler includes information about preprocessor macros in the debugging
9156information.
9157
9158@smallexample
9159$ gcc -gdwarf-2 -g3 sample.c -o sample
9160$
9161@end smallexample
9162
9163Now, we start @value{GDBN} on our sample program:
9164
9165@smallexample
9166$ gdb -nw sample
9167GNU gdb 2002-05-06-cvs
9168Copyright 2002 Free Software Foundation, Inc.
9169GDB is free software, @dots{}
f7dc1244 9170(@value{GDBP})
e2e0bcd1
JB
9171@end smallexample
9172
9173We can expand macros and examine their definitions, even when the
9174program is not running. @value{GDBN} uses the current listing position
9175to decide which macro definitions are in scope:
9176
9177@smallexample
f7dc1244 9178(@value{GDBP}) list main
e2e0bcd1
JB
91793
91804 #define M 42
91815 #define ADD(x) (M + x)
91826
91837 main ()
91848 @{
91859 #define N 28
918610 printf ("Hello, world!\n");
918711 #undef N
918812 printf ("We're so creative.\n");
f7dc1244 9189(@value{GDBP}) info macro ADD
e2e0bcd1
JB
9190Defined at /home/jimb/gdb/macros/play/sample.c:5
9191#define ADD(x) (M + x)
f7dc1244 9192(@value{GDBP}) info macro Q
e2e0bcd1
JB
9193Defined at /home/jimb/gdb/macros/play/sample.h:1
9194 included at /home/jimb/gdb/macros/play/sample.c:2
9195#define Q <
f7dc1244 9196(@value{GDBP}) macro expand ADD(1)
e2e0bcd1 9197expands to: (42 + 1)
f7dc1244 9198(@value{GDBP}) macro expand-once ADD(1)
e2e0bcd1 9199expands to: once (M + 1)
f7dc1244 9200(@value{GDBP})
e2e0bcd1
JB
9201@end smallexample
9202
d7d9f01e 9203In the example above, note that @code{macro expand-once} expands only
e2e0bcd1
JB
9204the macro invocation explicit in the original text --- the invocation of
9205@code{ADD} --- but does not expand the invocation of the macro @code{M},
9206which was introduced by @code{ADD}.
9207
3f94c067
BW
9208Once the program is running, @value{GDBN} uses the macro definitions in
9209force at the source line of the current stack frame:
e2e0bcd1
JB
9210
9211@smallexample
f7dc1244 9212(@value{GDBP}) break main
e2e0bcd1 9213Breakpoint 1 at 0x8048370: file sample.c, line 10.
f7dc1244 9214(@value{GDBP}) run
b383017d 9215Starting program: /home/jimb/gdb/macros/play/sample
e2e0bcd1
JB
9216
9217Breakpoint 1, main () at sample.c:10
921810 printf ("Hello, world!\n");
f7dc1244 9219(@value{GDBP})
e2e0bcd1
JB
9220@end smallexample
9221
9222At line 10, the definition of the macro @code{N} at line 9 is in force:
9223
9224@smallexample
f7dc1244 9225(@value{GDBP}) info macro N
e2e0bcd1
JB
9226Defined at /home/jimb/gdb/macros/play/sample.c:9
9227#define N 28
f7dc1244 9228(@value{GDBP}) macro expand N Q M
e2e0bcd1 9229expands to: 28 < 42
f7dc1244 9230(@value{GDBP}) print N Q M
e2e0bcd1 9231$1 = 1
f7dc1244 9232(@value{GDBP})
e2e0bcd1
JB
9233@end smallexample
9234
9235As we step over directives that remove @code{N}'s definition, and then
9236give it a new definition, @value{GDBN} finds the definition (or lack
9237thereof) in force at each point:
9238
9239@smallexample
f7dc1244 9240(@value{GDBP}) next
e2e0bcd1
JB
9241Hello, world!
924212 printf ("We're so creative.\n");
f7dc1244 9243(@value{GDBP}) info macro N
e2e0bcd1
JB
9244The symbol `N' has no definition as a C/C++ preprocessor macro
9245at /home/jimb/gdb/macros/play/sample.c:12
f7dc1244 9246(@value{GDBP}) next
e2e0bcd1
JB
9247We're so creative.
924814 printf ("Goodbye, world!\n");
f7dc1244 9249(@value{GDBP}) info macro N
e2e0bcd1
JB
9250Defined at /home/jimb/gdb/macros/play/sample.c:13
9251#define N 1729
f7dc1244 9252(@value{GDBP}) macro expand N Q M
e2e0bcd1 9253expands to: 1729 < 42
f7dc1244 9254(@value{GDBP}) print N Q M
e2e0bcd1 9255$2 = 0
f7dc1244 9256(@value{GDBP})
e2e0bcd1
JB
9257@end smallexample
9258
484086b7
JK
9259In addition to source files, macros can be defined on the compilation command
9260line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in
9261such a way, @value{GDBN} displays the location of their definition as line zero
9262of the source file submitted to the compiler.
9263
9264@smallexample
9265(@value{GDBP}) info macro __STDC__
9266Defined at /home/jimb/gdb/macros/play/sample.c:0
9267-D__STDC__=1
9268(@value{GDBP})
9269@end smallexample
9270
e2e0bcd1 9271
b37052ae
EZ
9272@node Tracepoints
9273@chapter Tracepoints
9274@c This chapter is based on the documentation written by Michael
9275@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
9276
9277@cindex tracepoints
9278In some applications, it is not feasible for the debugger to interrupt
9279the program's execution long enough for the developer to learn
9280anything helpful about its behavior. If the program's correctness
9281depends on its real-time behavior, delays introduced by a debugger
9282might cause the program to change its behavior drastically, or perhaps
9283fail, even when the code itself is correct. It is useful to be able
9284to observe the program's behavior without interrupting it.
9285
9286Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
9287specify locations in the program, called @dfn{tracepoints}, and
9288arbitrary expressions to evaluate when those tracepoints are reached.
9289Later, using the @code{tfind} command, you can examine the values
9290those expressions had when the program hit the tracepoints. The
9291expressions may also denote objects in memory---structures or arrays,
9292for example---whose values @value{GDBN} should record; while visiting
9293a particular tracepoint, you may inspect those objects as if they were
9294in memory at that moment. However, because @value{GDBN} records these
9295values without interacting with you, it can do so quickly and
9296unobtrusively, hopefully not disturbing the program's behavior.
9297
9298The tracepoint facility is currently available only for remote
9d29849a
JB
9299targets. @xref{Targets}. In addition, your remote target must know
9300how to collect trace data. This functionality is implemented in the
9301remote stub; however, none of the stubs distributed with @value{GDBN}
9302support tracepoints as of this writing. The format of the remote
9303packets used to implement tracepoints are described in @ref{Tracepoint
9304Packets}.
b37052ae 9305
00bf0b85
SS
9306It is also possible to get trace data from a file, in a manner reminiscent
9307of corefiles; you specify the filename, and use @code{tfind} to search
9308through the file. @xref{Trace Files}, for more details.
9309
b37052ae
EZ
9310This chapter describes the tracepoint commands and features.
9311
9312@menu
b383017d
RM
9313* Set Tracepoints::
9314* Analyze Collected Data::
9315* Tracepoint Variables::
00bf0b85 9316* Trace Files::
b37052ae
EZ
9317@end menu
9318
9319@node Set Tracepoints
9320@section Commands to Set Tracepoints
9321
9322Before running such a @dfn{trace experiment}, an arbitrary number of
1042e4c0
SS
9323tracepoints can be set. A tracepoint is actually a special type of
9324breakpoint (@pxref{Set Breaks}), so you can manipulate it using
9325standard breakpoint commands. For instance, as with breakpoints,
9326tracepoint numbers are successive integers starting from one, and many
9327of the commands associated with tracepoints take the tracepoint number
9328as their argument, to identify which tracepoint to work on.
b37052ae
EZ
9329
9330For each tracepoint, you can specify, in advance, some arbitrary set
9331of data that you want the target to collect in the trace buffer when
9332it hits that tracepoint. The collected data can include registers,
9333local variables, or global data. Later, you can use @value{GDBN}
9334commands to examine the values these data had at the time the
9335tracepoint was hit.
9336
7d13fe92
SS
9337Tracepoints do not support every breakpoint feature. Ignore counts on
9338tracepoints have no effect, and tracepoints cannot run @value{GDBN}
9339commands when they are hit. Tracepoints may not be thread-specific
9340either.
1042e4c0 9341
7a697b8d
SS
9342@cindex fast tracepoints
9343Some targets may support @dfn{fast tracepoints}, which are inserted in
9344a different way (such as with a jump instead of a trap), that is
9345faster but possibly restricted in where they may be installed.
9346
b37052ae
EZ
9347This section describes commands to set tracepoints and associated
9348conditions and actions.
9349
9350@menu
b383017d
RM
9351* Create and Delete Tracepoints::
9352* Enable and Disable Tracepoints::
9353* Tracepoint Passcounts::
782b2b07 9354* Tracepoint Conditions::
f61e138d 9355* Trace State Variables::
b383017d
RM
9356* Tracepoint Actions::
9357* Listing Tracepoints::
79a6e687 9358* Starting and Stopping Trace Experiments::
c9429232 9359* Tracepoint Restrictions::
b37052ae
EZ
9360@end menu
9361
9362@node Create and Delete Tracepoints
9363@subsection Create and Delete Tracepoints
9364
9365@table @code
9366@cindex set tracepoint
9367@kindex trace
1042e4c0 9368@item trace @var{location}
b37052ae 9369The @code{trace} command is very similar to the @code{break} command.
1042e4c0
SS
9370Its argument @var{location} can be a source line, a function name, or
9371an address in the target program. @xref{Specify Location}. The
9372@code{trace} command defines a tracepoint, which is a point in the
9373target program where the debugger will briefly stop, collect some
9374data, and then allow the program to continue. Setting a tracepoint or
9375changing its actions doesn't take effect until the next @code{tstart}
9376command, and once a trace experiment is running, further changes will
9377not have any effect until the next trace experiment starts.
b37052ae
EZ
9378
9379Here are some examples of using the @code{trace} command:
9380
9381@smallexample
9382(@value{GDBP}) @b{trace foo.c:121} // a source file and line number
9383
9384(@value{GDBP}) @b{trace +2} // 2 lines forward
9385
9386(@value{GDBP}) @b{trace my_function} // first source line of function
9387
9388(@value{GDBP}) @b{trace *my_function} // EXACT start address of function
9389
9390(@value{GDBP}) @b{trace *0x2117c4} // an address
9391@end smallexample
9392
9393@noindent
9394You can abbreviate @code{trace} as @code{tr}.
9395
782b2b07
SS
9396@item trace @var{location} if @var{cond}
9397Set a tracepoint with condition @var{cond}; evaluate the expression
9398@var{cond} each time the tracepoint is reached, and collect data only
9399if the value is nonzero---that is, if @var{cond} evaluates as true.
9400@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more
9401information on tracepoint conditions.
9402
7a697b8d
SS
9403@item ftrace @var{location} [ if @var{cond} ]
9404@cindex set fast tracepoint
9405@kindex ftrace
9406The @code{ftrace} command sets a fast tracepoint. For targets that
9407support them, fast tracepoints will use a more efficient but possibly
9408less general technique to trigger data collection, such as a jump
9409instruction instead of a trap, or some sort of hardware support. It
9410may not be possible to create a fast tracepoint at the desired
9411location, in which case the command will exit with an explanatory
9412message.
9413
9414@value{GDBN} handles arguments to @code{ftrace} exactly as for
9415@code{trace}.
9416
b37052ae
EZ
9417@vindex $tpnum
9418@cindex last tracepoint number
9419@cindex recent tracepoint number
9420@cindex tracepoint number
9421The convenience variable @code{$tpnum} records the tracepoint number
9422of the most recently set tracepoint.
9423
9424@kindex delete tracepoint
9425@cindex tracepoint deletion
9426@item delete tracepoint @r{[}@var{num}@r{]}
9427Permanently delete one or more tracepoints. With no argument, the
1042e4c0
SS
9428default is to delete all tracepoints. Note that the regular
9429@code{delete} command can remove tracepoints also.
b37052ae
EZ
9430
9431Examples:
9432
9433@smallexample
9434(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
9435
9436(@value{GDBP}) @b{delete trace} // remove all tracepoints
9437@end smallexample
9438
9439@noindent
9440You can abbreviate this command as @code{del tr}.
9441@end table
9442
9443@node Enable and Disable Tracepoints
9444@subsection Enable and Disable Tracepoints
9445
1042e4c0
SS
9446These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}.
9447
b37052ae
EZ
9448@table @code
9449@kindex disable tracepoint
9450@item disable tracepoint @r{[}@var{num}@r{]}
9451Disable tracepoint @var{num}, or all tracepoints if no argument
9452@var{num} is given. A disabled tracepoint will have no effect during
9453the next trace experiment, but it is not forgotten. You can re-enable
9454a disabled tracepoint using the @code{enable tracepoint} command.
9455
9456@kindex enable tracepoint
9457@item enable tracepoint @r{[}@var{num}@r{]}
9458Enable tracepoint @var{num}, or all tracepoints. The enabled
9459tracepoints will become effective the next time a trace experiment is
9460run.
9461@end table
9462
9463@node Tracepoint Passcounts
9464@subsection Tracepoint Passcounts
9465
9466@table @code
9467@kindex passcount
9468@cindex tracepoint pass count
9469@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
9470Set the @dfn{passcount} of a tracepoint. The passcount is a way to
9471automatically stop a trace experiment. If a tracepoint's passcount is
9472@var{n}, then the trace experiment will be automatically stopped on
9473the @var{n}'th time that tracepoint is hit. If the tracepoint number
9474@var{num} is not specified, the @code{passcount} command sets the
9475passcount of the most recently defined tracepoint. If no passcount is
9476given, the trace experiment will run until stopped explicitly by the
9477user.
9478
9479Examples:
9480
9481@smallexample
b383017d 9482(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
6826cf00 9483@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
b37052ae
EZ
9484
9485(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
6826cf00 9486@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
b37052ae
EZ
9487(@value{GDBP}) @b{trace foo}
9488(@value{GDBP}) @b{pass 3}
9489(@value{GDBP}) @b{trace bar}
9490(@value{GDBP}) @b{pass 2}
9491(@value{GDBP}) @b{trace baz}
9492(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
6826cf00
EZ
9493@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
9494@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
9495@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
b37052ae
EZ
9496@end smallexample
9497@end table
9498
782b2b07
SS
9499@node Tracepoint Conditions
9500@subsection Tracepoint Conditions
9501@cindex conditional tracepoints
9502@cindex tracepoint conditions
9503
9504The simplest sort of tracepoint collects data every time your program
9505reaches a specified place. You can also specify a @dfn{condition} for
9506a tracepoint. A condition is just a Boolean expression in your
9507programming language (@pxref{Expressions, ,Expressions}). A
9508tracepoint with a condition evaluates the expression each time your
9509program reaches it, and data collection happens only if the condition
9510is true.
9511
9512Tracepoint conditions can be specified when a tracepoint is set, by
9513using @samp{if} in the arguments to the @code{trace} command.
9514@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can
9515also be set or changed at any time with the @code{condition} command,
9516just as with breakpoints.
9517
9518Unlike breakpoint conditions, @value{GDBN} does not actually evaluate
9519the conditional expression itself. Instead, @value{GDBN} encodes the
9520expression into an agent expression (@pxref{Agent Expressions}
9521suitable for execution on the target, independently of @value{GDBN}.
9522Global variables become raw memory locations, locals become stack
9523accesses, and so forth.
9524
9525For instance, suppose you have a function that is usually called
9526frequently, but should not be called after an error has occurred. You
9527could use the following tracepoint command to collect data about calls
9528of that function that happen while the error code is propagating
9529through the program; an unconditional tracepoint could end up
9530collecting thousands of useless trace frames that you would have to
9531search through.
9532
9533@smallexample
9534(@value{GDBP}) @kbd{trace normal_operation if errcode > 0}
9535@end smallexample
9536
f61e138d
SS
9537@node Trace State Variables
9538@subsection Trace State Variables
9539@cindex trace state variables
9540
9541A @dfn{trace state variable} is a special type of variable that is
9542created and managed by target-side code. The syntax is the same as
9543that for GDB's convenience variables (a string prefixed with ``$''),
9544but they are stored on the target. They must be created explicitly,
9545using a @code{tvariable} command. They are always 64-bit signed
9546integers.
9547
9548Trace state variables are remembered by @value{GDBN}, and downloaded
9549to the target along with tracepoint information when the trace
9550experiment starts. There are no intrinsic limits on the number of
9551trace state variables, beyond memory limitations of the target.
9552
9553@cindex convenience variables, and trace state variables
9554Although trace state variables are managed by the target, you can use
9555them in print commands and expressions as if they were convenience
9556variables; @value{GDBN} will get the current value from the target
9557while the trace experiment is running. Trace state variables share
9558the same namespace as other ``$'' variables, which means that you
9559cannot have trace state variables with names like @code{$23} or
9560@code{$pc}, nor can you have a trace state variable and a convenience
9561variable with the same name.
9562
9563@table @code
9564
9565@item tvariable $@var{name} [ = @var{expression} ]
9566@kindex tvariable
9567The @code{tvariable} command creates a new trace state variable named
9568@code{$@var{name}}, and optionally gives it an initial value of
9569@var{expression}. @var{expression} is evaluated when this command is
9570entered; the result will be converted to an integer if possible,
9571otherwise @value{GDBN} will report an error. A subsequent
9572@code{tvariable} command specifying the same name does not create a
9573variable, but instead assigns the supplied initial value to the
9574existing variable of that name, overwriting any previous initial
9575value. The default initial value is 0.
9576
9577@item info tvariables
9578@kindex info tvariables
9579List all the trace state variables along with their initial values.
9580Their current values may also be displayed, if the trace experiment is
9581currently running.
9582
9583@item delete tvariable @r{[} $@var{name} @dots{} @r{]}
9584@kindex delete tvariable
9585Delete the given trace state variables, or all of them if no arguments
9586are specified.
9587
9588@end table
9589
b37052ae
EZ
9590@node Tracepoint Actions
9591@subsection Tracepoint Action Lists
9592
9593@table @code
9594@kindex actions
9595@cindex tracepoint actions
9596@item actions @r{[}@var{num}@r{]}
9597This command will prompt for a list of actions to be taken when the
9598tracepoint is hit. If the tracepoint number @var{num} is not
9599specified, this command sets the actions for the one that was most
9600recently defined (so that you can define a tracepoint and then say
9601@code{actions} without bothering about its number). You specify the
9602actions themselves on the following lines, one action at a time, and
9603terminate the actions list with a line containing just @code{end}. So
7d13fe92 9604far, the only defined actions are @code{collect}, @code{teval}, and
b37052ae
EZ
9605@code{while-stepping}.
9606
9607@cindex remove actions from a tracepoint
9608To remove all actions from a tracepoint, type @samp{actions @var{num}}
9609and follow it immediately with @samp{end}.
9610
9611@smallexample
9612(@value{GDBP}) @b{collect @var{data}} // collect some data
9613
6826cf00 9614(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
b37052ae 9615
6826cf00 9616(@value{GDBP}) @b{end} // signals the end of actions.
b37052ae
EZ
9617@end smallexample
9618
9619In the following example, the action list begins with @code{collect}
9620commands indicating the things to be collected when the tracepoint is
9621hit. Then, in order to single-step and collect additional data
9622following the tracepoint, a @code{while-stepping} command is used,
7d13fe92
SS
9623followed by the list of things to be collected after each step in a
9624sequence of single steps. The @code{while-stepping} command is
9625terminated by its own separate @code{end} command. Lastly, the action
9626list is terminated by an @code{end} command.
b37052ae
EZ
9627
9628@smallexample
9629(@value{GDBP}) @b{trace foo}
9630(@value{GDBP}) @b{actions}
9631Enter actions for tracepoint 1, one per line:
9632> collect bar,baz
9633> collect $regs
9634> while-stepping 12
9635 > collect $fp, $sp
9636 > end
9637end
9638@end smallexample
9639
9640@kindex collect @r{(tracepoints)}
9641@item collect @var{expr1}, @var{expr2}, @dots{}
9642Collect values of the given expressions when the tracepoint is hit.
9643This command accepts a comma-separated list of any valid expressions.
9644In addition to global, static, or local variables, the following
9645special arguments are supported:
9646
9647@table @code
9648@item $regs
9649collect all registers
9650
9651@item $args
9652collect all function arguments
9653
9654@item $locals
9655collect all local variables.
9656@end table
9657
9658You can give several consecutive @code{collect} commands, each one
9659with a single argument, or one @code{collect} command with several
9660arguments separated by commas: the effect is the same.
9661
f5c37c66
EZ
9662The command @code{info scope} (@pxref{Symbols, info scope}) is
9663particularly useful for figuring out what data to collect.
9664
6da95a67
SS
9665@kindex teval @r{(tracepoints)}
9666@item teval @var{expr1}, @var{expr2}, @dots{}
9667Evaluate the given expressions when the tracepoint is hit. This
9668command accepts a comma-separated list of expressions. The results
9669are discarded, so this is mainly useful for assigning values to trace
9670state variables (@pxref{Trace State Variables}) without adding those
9671values to the trace buffer, as would be the case if the @code{collect}
9672action were used.
9673
b37052ae
EZ
9674@kindex while-stepping @r{(tracepoints)}
9675@item while-stepping @var{n}
c9429232 9676Perform @var{n} single-step instruction traces after the tracepoint,
7d13fe92 9677collecting new data after each step. The @code{while-stepping}
c9429232
SS
9678command is followed by the list of what to collect while stepping
9679(followed by its own @code{end} command):
b37052ae
EZ
9680
9681@smallexample
9682> while-stepping 12
9683 > collect $regs, myglobal
9684 > end
9685>
9686@end smallexample
9687
9688@noindent
7d13fe92
SS
9689Note that @code{$pc} is not automatically collected by
9690@code{while-stepping}; you need to explicitly collect that register if
9691you need it. You may abbreviate @code{while-stepping} as @code{ws} or
b37052ae 9692@code{stepping}.
236f1d4d
SS
9693
9694@item set default-collect @var{expr1}, @var{expr2}, @dots{}
9695@kindex set default-collect
9696@cindex default collection action
9697This variable is a list of expressions to collect at each tracepoint
9698hit. It is effectively an additional @code{collect} action prepended
9699to every tracepoint action list. The expressions are parsed
9700individually for each tracepoint, so for instance a variable named
9701@code{xyz} may be interpreted as a global for one tracepoint, and a
9702local for another, as appropriate to the tracepoint's location.
9703
9704@item show default-collect
9705@kindex show default-collect
9706Show the list of expressions that are collected by default at each
9707tracepoint hit.
9708
b37052ae
EZ
9709@end table
9710
9711@node Listing Tracepoints
9712@subsection Listing Tracepoints
9713
9714@table @code
9715@kindex info tracepoints
09d4efe1 9716@kindex info tp
b37052ae
EZ
9717@cindex information about tracepoints
9718@item info tracepoints @r{[}@var{num}@r{]}
1042e4c0
SS
9719Display information about the tracepoint @var{num}. If you don't
9720specify a tracepoint number, displays information about all the
9721tracepoints defined so far. The format is similar to that used for
9722@code{info breakpoints}; in fact, @code{info tracepoints} is the same
9723command, simply restricting itself to tracepoints.
9724
9725A tracepoint's listing may include additional information specific to
9726tracing:
b37052ae
EZ
9727
9728@itemize @bullet
9729@item
b37052ae
EZ
9730its passcount as given by the @code{passcount @var{n}} command
9731@item
9732its step count as given by the @code{while-stepping @var{n}} command
9733@item
1042e4c0
SS
9734its action list as given by the @code{actions} command. The actions
9735are prefixed with an @samp{A} so as to distinguish them from commands.
b37052ae
EZ
9736@end itemize
9737
9738@smallexample
9739(@value{GDBP}) @b{info trace}
1042e4c0
SS
9740Num Type Disp Enb Address What
97411 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7
9742 pass count 1200
9743 step count 20
9744 A while-stepping 20
9745 A collect globfoo, $regs
9746 A end
9747 A collect globfoo2
9748 A end
b37052ae
EZ
9749(@value{GDBP})
9750@end smallexample
9751
9752@noindent
9753This command can be abbreviated @code{info tp}.
9754@end table
9755
79a6e687
BW
9756@node Starting and Stopping Trace Experiments
9757@subsection Starting and Stopping Trace Experiments
b37052ae
EZ
9758
9759@table @code
9760@kindex tstart
9761@cindex start a new trace experiment
9762@cindex collected data discarded
9763@item tstart
9764This command takes no arguments. It starts the trace experiment, and
9765begins collecting data. This has the side effect of discarding all
9766the data collected in the trace buffer during the previous trace
9767experiment.
9768
9769@kindex tstop
9770@cindex stop a running trace experiment
9771@item tstop
9772This command takes no arguments. It ends the trace experiment, and
9773stops collecting data.
9774
68c71a2e 9775@strong{Note}: a trace experiment and data collection may stop
b37052ae
EZ
9776automatically if any tracepoint's passcount is reached
9777(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
9778
9779@kindex tstatus
9780@cindex status of trace data collection
9781@cindex trace experiment, status of
9782@item tstatus
9783This command displays the status of the current trace data
9784collection.
9785@end table
9786
9787Here is an example of the commands we described so far:
9788
9789@smallexample
9790(@value{GDBP}) @b{trace gdb_c_test}
9791(@value{GDBP}) @b{actions}
9792Enter actions for tracepoint #1, one per line.
9793> collect $regs,$locals,$args
9794> while-stepping 11
9795 > collect $regs
9796 > end
9797> end
9798(@value{GDBP}) @b{tstart}
9799 [time passes @dots{}]
9800(@value{GDBP}) @b{tstop}
9801@end smallexample
9802
d5551862
SS
9803@cindex disconnected tracing
9804You can choose to continue running the trace experiment even if
9805@value{GDBN} disconnects from the target, voluntarily or
9806involuntarily. For commands such as @code{detach}, the debugger will
9807ask what you want to do with the trace. But for unexpected
9808terminations (@value{GDBN} crash, network outage), it would be
9809unfortunate to lose hard-won trace data, so the variable
9810@code{disconnected-tracing} lets you decide whether the trace should
9811continue running without @value{GDBN}.
9812
9813@table @code
9814@item set disconnected-tracing on
9815@itemx set disconnected-tracing off
9816@kindex set disconnected-tracing
9817Choose whether a tracing run should continue to run if @value{GDBN}
9818has disconnected from the target. Note that @code{detach} or
9819@code{quit} will ask you directly what to do about a running trace no
9820matter what this variable's setting, so the variable is mainly useful
9821for handling unexpected situations, such as loss of the network.
9822
9823@item show disconnected-tracing
9824@kindex show disconnected-tracing
9825Show the current choice for disconnected tracing.
9826
9827@end table
9828
9829When you reconnect to the target, the trace experiment may or may not
9830still be running; it might have filled the trace buffer in the
9831meantime, or stopped for one of the other reasons. If it is running,
9832it will continue after reconnection.
9833
9834Upon reconnection, the target will upload information about the
9835tracepoints in effect. @value{GDBN} will then compare that
9836information to the set of tracepoints currently defined, and attempt
9837to match them up, allowing for the possibility that the numbers may
9838have changed due to creation and deletion in the meantime. If one of
9839the target's tracepoints does not match any in @value{GDBN}, the
9840debugger will create a new tracepoint, so that you have a number with
9841which to specify that tracepoint. This matching-up process is
9842necessarily heuristic, and it may result in useless tracepoints being
9843created; you may simply delete them if they are of no use.
b37052ae 9844
4daf5ac0
SS
9845@cindex circular trace buffer
9846If your target agent supports a @dfn{circular trace buffer}, then you
9847can run a trace experiment indefinitely without filling the trace
9848buffer; when space runs out, the agent deletes already-collected trace
9849frames, oldest first, until there is enough room to continue
9850collecting. This is especially useful if your tracepoints are being
9851hit too often, and your trace gets terminated prematurely because the
9852buffer is full. To ask for a circular trace buffer, simply set
9853@samp{circular_trace_buffer} to on. You can set this at any time,
9854including during tracing; if the agent can do it, it will change
9855buffer handling on the fly, otherwise it will not take effect until
9856the next run.
9857
9858@table @code
9859@item set circular-trace-buffer on
9860@itemx set circular-trace-buffer off
9861@kindex set circular-trace-buffer
9862Choose whether a tracing run should use a linear or circular buffer
9863for trace data. A linear buffer will not lose any trace data, but may
9864fill up prematurely, while a circular buffer will discard old trace
9865data, but it will have always room for the latest tracepoint hits.
9866
9867@item show circular-trace-buffer
9868@kindex show circular-trace-buffer
9869Show the current choice for the trace buffer. Note that this may not
9870match the agent's current buffer handling, nor is it guaranteed to
9871match the setting that might have been in effect during a past run,
9872for instance if you are looking at frames from a trace file.
9873
9874@end table
9875
c9429232
SS
9876@node Tracepoint Restrictions
9877@subsection Tracepoint Restrictions
9878
9879@cindex tracepoint restrictions
9880There are a number of restrictions on the use of tracepoints. As
9881described above, tracepoint data gathering occurs on the target
9882without interaction from @value{GDBN}. Thus the full capabilities of
9883the debugger are not available during data gathering, and then at data
9884examination time, you will be limited by only having what was
9885collected. The following items describe some common problems, but it
9886is not exhaustive, and you may run into additional difficulties not
9887mentioned here.
9888
9889@itemize @bullet
9890
9891@item
9892Tracepoint expressions are intended to gather objects (lvalues). Thus
9893the full flexibility of GDB's expression evaluator is not available.
9894You cannot call functions, cast objects to aggregate types, access
9895convenience variables or modify values (except by assignment to trace
9896state variables). Some language features may implicitly call
9897functions (for instance Objective-C fields with accessors), and therefore
9898cannot be collected either.
9899
9900@item
9901Collection of local variables, either individually or in bulk with
9902@code{$locals} or @code{$args}, during @code{while-stepping} may
9903behave erratically. The stepping action may enter a new scope (for
9904instance by stepping into a function), or the location of the variable
9905may change (for instance it is loaded into a register). The
9906tracepoint data recorded uses the location information for the
9907variables that is correct for the tracepoint location. When the
9908tracepoint is created, it is not possible, in general, to determine
9909where the steps of a @code{while-stepping} sequence will advance the
9910program---particularly if a conditional branch is stepped.
9911
9912@item
9913Collection of an incompletely-initialized or partially-destroyed object
9914may result in something that @value{GDBN} cannot display, or displays
9915in a misleading way.
9916
9917@item
9918When @value{GDBN} displays a pointer to character it automatically
9919dereferences the pointer to also display characters of the string
9920being pointed to. However, collecting the pointer during tracing does
9921not automatically collect the string. You need to explicitly
9922dereference the pointer and provide size information if you want to
9923collect not only the pointer, but the memory pointed to. For example,
9924@code{*ptr@@50} can be used to collect the 50 element array pointed to
9925by @code{ptr}.
9926
9927@item
9928It is not possible to collect a complete stack backtrace at a
9929tracepoint. Instead, you may collect the registers and a few hundred
9930bytes from the stack pointer with something like @code{*$esp@@300}
9931(adjust to use the name of the actual stack pointer register on your
9932target architecture, and the amount of stack you wish to capture).
9933Then the @code{backtrace} command will show a partial backtrace when
9934using a trace frame. The number of stack frames that can be examined
9935depends on the sizes of the frames in the collected stack. Note that
9936if you ask for a block so large that it goes past the bottom of the
9937stack, the target agent may report an error trying to read from an
9938invalid address.
9939
9940@end itemize
9941
b37052ae 9942@node Analyze Collected Data
79a6e687 9943@section Using the Collected Data
b37052ae
EZ
9944
9945After the tracepoint experiment ends, you use @value{GDBN} commands
9946for examining the trace data. The basic idea is that each tracepoint
9947collects a trace @dfn{snapshot} every time it is hit and another
9948snapshot every time it single-steps. All these snapshots are
9949consecutively numbered from zero and go into a buffer, and you can
9950examine them later. The way you examine them is to @dfn{focus} on a
9951specific trace snapshot. When the remote stub is focused on a trace
9952snapshot, it will respond to all @value{GDBN} requests for memory and
9953registers by reading from the buffer which belongs to that snapshot,
9954rather than from @emph{real} memory or registers of the program being
9955debugged. This means that @strong{all} @value{GDBN} commands
9956(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
9957behave as if we were currently debugging the program state as it was
9958when the tracepoint occurred. Any requests for data that are not in
9959the buffer will fail.
9960
9961@menu
9962* tfind:: How to select a trace snapshot
9963* tdump:: How to display all data for a snapshot
9964* save-tracepoints:: How to save tracepoints for a future run
9965@end menu
9966
9967@node tfind
9968@subsection @code{tfind @var{n}}
9969
9970@kindex tfind
9971@cindex select trace snapshot
9972@cindex find trace snapshot
9973The basic command for selecting a trace snapshot from the buffer is
9974@code{tfind @var{n}}, which finds trace snapshot number @var{n},
9975counting from zero. If no argument @var{n} is given, the next
9976snapshot is selected.
9977
9978Here are the various forms of using the @code{tfind} command.
9979
9980@table @code
9981@item tfind start
9982Find the first snapshot in the buffer. This is a synonym for
9983@code{tfind 0} (since 0 is the number of the first snapshot).
9984
9985@item tfind none
9986Stop debugging trace snapshots, resume @emph{live} debugging.
9987
9988@item tfind end
9989Same as @samp{tfind none}.
9990
9991@item tfind
9992No argument means find the next trace snapshot.
9993
9994@item tfind -
9995Find the previous trace snapshot before the current one. This permits
9996retracing earlier steps.
9997
9998@item tfind tracepoint @var{num}
9999Find the next snapshot associated with tracepoint @var{num}. Search
10000proceeds forward from the last examined trace snapshot. If no
10001argument @var{num} is given, it means find the next snapshot collected
10002for the same tracepoint as the current snapshot.
10003
10004@item tfind pc @var{addr}
10005Find the next snapshot associated with the value @var{addr} of the
10006program counter. Search proceeds forward from the last examined trace
10007snapshot. If no argument @var{addr} is given, it means find the next
10008snapshot with the same value of PC as the current snapshot.
10009
10010@item tfind outside @var{addr1}, @var{addr2}
10011Find the next snapshot whose PC is outside the given range of
081dfbf7 10012addresses (exclusive).
b37052ae
EZ
10013
10014@item tfind range @var{addr1}, @var{addr2}
10015Find the next snapshot whose PC is between @var{addr1} and
081dfbf7 10016@var{addr2} (inclusive).
b37052ae
EZ
10017
10018@item tfind line @r{[}@var{file}:@r{]}@var{n}
10019Find the next snapshot associated with the source line @var{n}. If
10020the optional argument @var{file} is given, refer to line @var{n} in
10021that source file. Search proceeds forward from the last examined
10022trace snapshot. If no argument @var{n} is given, it means find the
10023next line other than the one currently being examined; thus saying
10024@code{tfind line} repeatedly can appear to have the same effect as
10025stepping from line to line in a @emph{live} debugging session.
10026@end table
10027
10028The default arguments for the @code{tfind} commands are specifically
10029designed to make it easy to scan through the trace buffer. For
10030instance, @code{tfind} with no argument selects the next trace
10031snapshot, and @code{tfind -} with no argument selects the previous
10032trace snapshot. So, by giving one @code{tfind} command, and then
10033simply hitting @key{RET} repeatedly you can examine all the trace
10034snapshots in order. Or, by saying @code{tfind -} and then hitting
10035@key{RET} repeatedly you can examine the snapshots in reverse order.
10036The @code{tfind line} command with no argument selects the snapshot
10037for the next source line executed. The @code{tfind pc} command with
10038no argument selects the next snapshot with the same program counter
10039(PC) as the current frame. The @code{tfind tracepoint} command with
10040no argument selects the next trace snapshot collected by the same
10041tracepoint as the current one.
10042
10043In addition to letting you scan through the trace buffer manually,
10044these commands make it easy to construct @value{GDBN} scripts that
10045scan through the trace buffer and print out whatever collected data
10046you are interested in. Thus, if we want to examine the PC, FP, and SP
10047registers from each trace frame in the buffer, we can say this:
10048
10049@smallexample
10050(@value{GDBP}) @b{tfind start}
10051(@value{GDBP}) @b{while ($trace_frame != -1)}
10052> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
10053 $trace_frame, $pc, $sp, $fp
10054> tfind
10055> end
10056
10057Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
10058Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
10059Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
10060Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
10061Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
10062Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
10063Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
10064Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
10065Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
10066Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
10067Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
10068@end smallexample
10069
10070Or, if we want to examine the variable @code{X} at each source line in
10071the buffer:
10072
10073@smallexample
10074(@value{GDBP}) @b{tfind start}
10075(@value{GDBP}) @b{while ($trace_frame != -1)}
10076> printf "Frame %d, X == %d\n", $trace_frame, X
10077> tfind line
10078> end
10079
10080Frame 0, X = 1
10081Frame 7, X = 2
10082Frame 13, X = 255
10083@end smallexample
10084
10085@node tdump
10086@subsection @code{tdump}
10087@kindex tdump
10088@cindex dump all data collected at tracepoint
10089@cindex tracepoint data, display
10090
10091This command takes no arguments. It prints all the data collected at
10092the current trace snapshot.
10093
10094@smallexample
10095(@value{GDBP}) @b{trace 444}
10096(@value{GDBP}) @b{actions}
10097Enter actions for tracepoint #2, one per line:
10098> collect $regs, $locals, $args, gdb_long_test
10099> end
10100
10101(@value{GDBP}) @b{tstart}
10102
10103(@value{GDBP}) @b{tfind line 444}
10104#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
10105at gdb_test.c:444
10106444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
10107
10108(@value{GDBP}) @b{tdump}
10109Data collected at tracepoint 2, trace frame 1:
10110d0 0xc4aa0085 -995491707
10111d1 0x18 24
10112d2 0x80 128
10113d3 0x33 51
10114d4 0x71aea3d 119204413
10115d5 0x22 34
10116d6 0xe0 224
10117d7 0x380035 3670069
10118a0 0x19e24a 1696330
10119a1 0x3000668 50333288
10120a2 0x100 256
10121a3 0x322000 3284992
10122a4 0x3000698 50333336
10123a5 0x1ad3cc 1758156
10124fp 0x30bf3c 0x30bf3c
10125sp 0x30bf34 0x30bf34
10126ps 0x0 0
10127pc 0x20b2c8 0x20b2c8
10128fpcontrol 0x0 0
10129fpstatus 0x0 0
10130fpiaddr 0x0 0
10131p = 0x20e5b4 "gdb-test"
10132p1 = (void *) 0x11
10133p2 = (void *) 0x22
10134p3 = (void *) 0x33
10135p4 = (void *) 0x44
10136p5 = (void *) 0x55
10137p6 = (void *) 0x66
10138gdb_long_test = 17 '\021'
10139
10140(@value{GDBP})
10141@end smallexample
10142
10143@node save-tracepoints
10144@subsection @code{save-tracepoints @var{filename}}
10145@kindex save-tracepoints
10146@cindex save tracepoints for future sessions
10147
10148This command saves all current tracepoint definitions together with
10149their actions and passcounts, into a file @file{@var{filename}}
10150suitable for use in a later debugging session. To read the saved
10151tracepoint definitions, use the @code{source} command (@pxref{Command
10152Files}).
10153
10154@node Tracepoint Variables
10155@section Convenience Variables for Tracepoints
10156@cindex tracepoint variables
10157@cindex convenience variables for tracepoints
10158
10159@table @code
10160@vindex $trace_frame
10161@item (int) $trace_frame
10162The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
10163snapshot is selected.
10164
10165@vindex $tracepoint
10166@item (int) $tracepoint
10167The tracepoint for the current trace snapshot.
10168
10169@vindex $trace_line
10170@item (int) $trace_line
10171The line number for the current trace snapshot.
10172
10173@vindex $trace_file
10174@item (char []) $trace_file
10175The source file for the current trace snapshot.
10176
10177@vindex $trace_func
10178@item (char []) $trace_func
10179The name of the function containing @code{$tracepoint}.
10180@end table
10181
10182Note: @code{$trace_file} is not suitable for use in @code{printf},
10183use @code{output} instead.
10184
10185Here's a simple example of using these convenience variables for
10186stepping through all the trace snapshots and printing some of their
f61e138d
SS
10187data. Note that these are not the same as trace state variables,
10188which are managed by the target.
b37052ae
EZ
10189
10190@smallexample
10191(@value{GDBP}) @b{tfind start}
10192
10193(@value{GDBP}) @b{while $trace_frame != -1}
10194> output $trace_file
10195> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
10196> tfind
10197> end
10198@end smallexample
10199
00bf0b85
SS
10200@node Trace Files
10201@section Using Trace Files
10202@cindex trace files
10203
10204In some situations, the target running a trace experiment may no
10205longer be available; perhaps it crashed, or the hardware was needed
10206for a different activity. To handle these cases, you can arrange to
10207dump the trace data into a file, and later use that file as a source
10208of trace data, via the @code{target tfile} command.
10209
10210@table @code
10211
10212@kindex tsave
10213@item tsave [ -r ] @var{filename}
10214Save the trace data to @var{filename}. By default, this command
10215assumes that @var{filename} refers to the host filesystem, so if
10216necessary @value{GDBN} will copy raw trace data up from the target and
10217then save it. If the target supports it, you can also supply the
10218optional argument @code{-r} (``remote'') to direct the target to save
10219the data directly into @var{filename} in its own filesystem, which may be
10220more efficient if the trace buffer is very large. (Note, however, that
10221@code{target tfile} can only read from files accessible to the host.)
10222
10223@kindex target tfile
10224@kindex tfile
10225@item target tfile @var{filename}
10226Use the file named @var{filename} as a source of trace data. Commands
10227that examine data work as they do with a live target, but it is not
10228possible to run any new trace experiments. @code{tstatus} will report
10229the state of the trace run at the moment the data was saved, as well
10230as the current trace frame you are examining. @var{filename} must be
10231on a filesystem accessible to the host.
10232
10233@end table
10234
df0cd8c5
JB
10235@node Overlays
10236@chapter Debugging Programs That Use Overlays
10237@cindex overlays
10238
10239If your program is too large to fit completely in your target system's
10240memory, you can sometimes use @dfn{overlays} to work around this
10241problem. @value{GDBN} provides some support for debugging programs that
10242use overlays.
10243
10244@menu
10245* How Overlays Work:: A general explanation of overlays.
10246* Overlay Commands:: Managing overlays in @value{GDBN}.
10247* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
10248 mapped by asking the inferior.
10249* Overlay Sample Program:: A sample program using overlays.
10250@end menu
10251
10252@node How Overlays Work
10253@section How Overlays Work
10254@cindex mapped overlays
10255@cindex unmapped overlays
10256@cindex load address, overlay's
10257@cindex mapped address
10258@cindex overlay area
10259
10260Suppose you have a computer whose instruction address space is only 64
10261kilobytes long, but which has much more memory which can be accessed by
10262other means: special instructions, segment registers, or memory
10263management hardware, for example. Suppose further that you want to
10264adapt a program which is larger than 64 kilobytes to run on this system.
10265
10266One solution is to identify modules of your program which are relatively
10267independent, and need not call each other directly; call these modules
10268@dfn{overlays}. Separate the overlays from the main program, and place
10269their machine code in the larger memory. Place your main program in
10270instruction memory, but leave at least enough space there to hold the
10271largest overlay as well.
10272
10273Now, to call a function located in an overlay, you must first copy that
10274overlay's machine code from the large memory into the space set aside
10275for it in the instruction memory, and then jump to its entry point
10276there.
10277
c928edc0
AC
10278@c NB: In the below the mapped area's size is greater or equal to the
10279@c size of all overlays. This is intentional to remind the developer
10280@c that overlays don't necessarily need to be the same size.
10281
474c8240 10282@smallexample
df0cd8c5 10283@group
c928edc0
AC
10284 Data Instruction Larger
10285Address Space Address Space Address Space
10286+-----------+ +-----------+ +-----------+
10287| | | | | |
10288+-----------+ +-----------+ +-----------+<-- overlay 1
10289| program | | main | .----| overlay 1 | load address
10290| variables | | program | | +-----------+
10291| and heap | | | | | |
10292+-----------+ | | | +-----------+<-- overlay 2
10293| | +-----------+ | | | load address
10294+-----------+ | | | .-| overlay 2 |
10295 | | | | | |
10296 mapped --->+-----------+ | | +-----------+
10297 address | | | | | |
10298 | overlay | <-' | | |
10299 | area | <---' +-----------+<-- overlay 3
10300 | | <---. | | load address
10301 +-----------+ `--| overlay 3 |
10302 | | | |
10303 +-----------+ | |
10304 +-----------+
10305 | |
10306 +-----------+
10307
10308 @anchor{A code overlay}A code overlay
df0cd8c5 10309@end group
474c8240 10310@end smallexample
df0cd8c5 10311
c928edc0
AC
10312The diagram (@pxref{A code overlay}) shows a system with separate data
10313and instruction address spaces. To map an overlay, the program copies
10314its code from the larger address space to the instruction address space.
10315Since the overlays shown here all use the same mapped address, only one
10316may be mapped at a time. For a system with a single address space for
10317data and instructions, the diagram would be similar, except that the
10318program variables and heap would share an address space with the main
10319program and the overlay area.
df0cd8c5
JB
10320
10321An overlay loaded into instruction memory and ready for use is called a
10322@dfn{mapped} overlay; its @dfn{mapped address} is its address in the
10323instruction memory. An overlay not present (or only partially present)
10324in instruction memory is called @dfn{unmapped}; its @dfn{load address}
10325is its address in the larger memory. The mapped address is also called
10326the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
10327called the @dfn{load memory address}, or @dfn{LMA}.
10328
10329Unfortunately, overlays are not a completely transparent way to adapt a
10330program to limited instruction memory. They introduce a new set of
10331global constraints you must keep in mind as you design your program:
10332
10333@itemize @bullet
10334
10335@item
10336Before calling or returning to a function in an overlay, your program
10337must make sure that overlay is actually mapped. Otherwise, the call or
10338return will transfer control to the right address, but in the wrong
10339overlay, and your program will probably crash.
10340
10341@item
10342If the process of mapping an overlay is expensive on your system, you
10343will need to choose your overlays carefully to minimize their effect on
10344your program's performance.
10345
10346@item
10347The executable file you load onto your system must contain each
10348overlay's instructions, appearing at the overlay's load address, not its
10349mapped address. However, each overlay's instructions must be relocated
10350and its symbols defined as if the overlay were at its mapped address.
10351You can use GNU linker scripts to specify different load and relocation
10352addresses for pieces of your program; see @ref{Overlay Description,,,
10353ld.info, Using ld: the GNU linker}.
10354
10355@item
10356The procedure for loading executable files onto your system must be able
10357to load their contents into the larger address space as well as the
10358instruction and data spaces.
10359
10360@end itemize
10361
10362The overlay system described above is rather simple, and could be
10363improved in many ways:
10364
10365@itemize @bullet
10366
10367@item
10368If your system has suitable bank switch registers or memory management
10369hardware, you could use those facilities to make an overlay's load area
10370contents simply appear at their mapped address in instruction space.
10371This would probably be faster than copying the overlay to its mapped
10372area in the usual way.
10373
10374@item
10375If your overlays are small enough, you could set aside more than one
10376overlay area, and have more than one overlay mapped at a time.
10377
10378@item
10379You can use overlays to manage data, as well as instructions. In
10380general, data overlays are even less transparent to your design than
10381code overlays: whereas code overlays only require care when you call or
10382return to functions, data overlays require care every time you access
10383the data. Also, if you change the contents of a data overlay, you
10384must copy its contents back out to its load address before you can copy a
10385different data overlay into the same mapped area.
10386
10387@end itemize
10388
10389
10390@node Overlay Commands
10391@section Overlay Commands
10392
10393To use @value{GDBN}'s overlay support, each overlay in your program must
10394correspond to a separate section of the executable file. The section's
10395virtual memory address and load memory address must be the overlay's
10396mapped and load addresses. Identifying overlays with sections allows
10397@value{GDBN} to determine the appropriate address of a function or
10398variable, depending on whether the overlay is mapped or not.
10399
10400@value{GDBN}'s overlay commands all start with the word @code{overlay};
10401you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
10402
10403@table @code
10404@item overlay off
4644b6e3 10405@kindex overlay
df0cd8c5
JB
10406Disable @value{GDBN}'s overlay support. When overlay support is
10407disabled, @value{GDBN} assumes that all functions and variables are
10408always present at their mapped addresses. By default, @value{GDBN}'s
10409overlay support is disabled.
10410
10411@item overlay manual
df0cd8c5
JB
10412@cindex manual overlay debugging
10413Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
10414relies on you to tell it which overlays are mapped, and which are not,
10415using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
10416commands described below.
10417
10418@item overlay map-overlay @var{overlay}
10419@itemx overlay map @var{overlay}
df0cd8c5
JB
10420@cindex map an overlay
10421Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
10422be the name of the object file section containing the overlay. When an
10423overlay is mapped, @value{GDBN} assumes it can find the overlay's
10424functions and variables at their mapped addresses. @value{GDBN} assumes
10425that any other overlays whose mapped ranges overlap that of
10426@var{overlay} are now unmapped.
10427
10428@item overlay unmap-overlay @var{overlay}
10429@itemx overlay unmap @var{overlay}
df0cd8c5
JB
10430@cindex unmap an overlay
10431Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
10432must be the name of the object file section containing the overlay.
10433When an overlay is unmapped, @value{GDBN} assumes it can find the
10434overlay's functions and variables at their load addresses.
10435
10436@item overlay auto
df0cd8c5
JB
10437Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
10438consults a data structure the overlay manager maintains in the inferior
10439to see which overlays are mapped. For details, see @ref{Automatic
10440Overlay Debugging}.
10441
10442@item overlay load-target
10443@itemx overlay load
df0cd8c5
JB
10444@cindex reloading the overlay table
10445Re-read the overlay table from the inferior. Normally, @value{GDBN}
10446re-reads the table @value{GDBN} automatically each time the inferior
10447stops, so this command should only be necessary if you have changed the
10448overlay mapping yourself using @value{GDBN}. This command is only
10449useful when using automatic overlay debugging.
10450
10451@item overlay list-overlays
10452@itemx overlay list
10453@cindex listing mapped overlays
10454Display a list of the overlays currently mapped, along with their mapped
10455addresses, load addresses, and sizes.
10456
10457@end table
10458
10459Normally, when @value{GDBN} prints a code address, it includes the name
10460of the function the address falls in:
10461
474c8240 10462@smallexample
f7dc1244 10463(@value{GDBP}) print main
df0cd8c5 10464$3 = @{int ()@} 0x11a0 <main>
474c8240 10465@end smallexample
df0cd8c5
JB
10466@noindent
10467When overlay debugging is enabled, @value{GDBN} recognizes code in
10468unmapped overlays, and prints the names of unmapped functions with
10469asterisks around them. For example, if @code{foo} is a function in an
10470unmapped overlay, @value{GDBN} prints it this way:
10471
474c8240 10472@smallexample
f7dc1244 10473(@value{GDBP}) overlay list
df0cd8c5 10474No sections are mapped.
f7dc1244 10475(@value{GDBP}) print foo
df0cd8c5 10476$5 = @{int (int)@} 0x100000 <*foo*>
474c8240 10477@end smallexample
df0cd8c5
JB
10478@noindent
10479When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
10480name normally:
10481
474c8240 10482@smallexample
f7dc1244 10483(@value{GDBP}) overlay list
b383017d 10484Section .ov.foo.text, loaded at 0x100000 - 0x100034,
df0cd8c5 10485 mapped at 0x1016 - 0x104a
f7dc1244 10486(@value{GDBP}) print foo
df0cd8c5 10487$6 = @{int (int)@} 0x1016 <foo>
474c8240 10488@end smallexample
df0cd8c5
JB
10489
10490When overlay debugging is enabled, @value{GDBN} can find the correct
10491address for functions and variables in an overlay, whether or not the
10492overlay is mapped. This allows most @value{GDBN} commands, like
10493@code{break} and @code{disassemble}, to work normally, even on unmapped
10494code. However, @value{GDBN}'s breakpoint support has some limitations:
10495
10496@itemize @bullet
10497@item
10498@cindex breakpoints in overlays
10499@cindex overlays, setting breakpoints in
10500You can set breakpoints in functions in unmapped overlays, as long as
10501@value{GDBN} can write to the overlay at its load address.
10502@item
10503@value{GDBN} can not set hardware or simulator-based breakpoints in
10504unmapped overlays. However, if you set a breakpoint at the end of your
10505overlay manager (and tell @value{GDBN} which overlays are now mapped, if
10506you are using manual overlay management), @value{GDBN} will re-set its
10507breakpoints properly.
10508@end itemize
10509
10510
10511@node Automatic Overlay Debugging
10512@section Automatic Overlay Debugging
10513@cindex automatic overlay debugging
10514
10515@value{GDBN} can automatically track which overlays are mapped and which
10516are not, given some simple co-operation from the overlay manager in the
10517inferior. If you enable automatic overlay debugging with the
10518@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
10519looks in the inferior's memory for certain variables describing the
10520current state of the overlays.
10521
10522Here are the variables your overlay manager must define to support
10523@value{GDBN}'s automatic overlay debugging:
10524
10525@table @asis
10526
10527@item @code{_ovly_table}:
10528This variable must be an array of the following structures:
10529
474c8240 10530@smallexample
df0cd8c5
JB
10531struct
10532@{
10533 /* The overlay's mapped address. */
10534 unsigned long vma;
10535
10536 /* The size of the overlay, in bytes. */
10537 unsigned long size;
10538
10539 /* The overlay's load address. */
10540 unsigned long lma;
10541
10542 /* Non-zero if the overlay is currently mapped;
10543 zero otherwise. */
10544 unsigned long mapped;
10545@}
474c8240 10546@end smallexample
df0cd8c5
JB
10547
10548@item @code{_novlys}:
10549This variable must be a four-byte signed integer, holding the total
10550number of elements in @code{_ovly_table}.
10551
10552@end table
10553
10554To decide whether a particular overlay is mapped or not, @value{GDBN}
10555looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
10556@code{lma} members equal the VMA and LMA of the overlay's section in the
10557executable file. When @value{GDBN} finds a matching entry, it consults
10558the entry's @code{mapped} member to determine whether the overlay is
10559currently mapped.
10560
81d46470 10561In addition, your overlay manager may define a function called
def71bfa 10562@code{_ovly_debug_event}. If this function is defined, @value{GDBN}
81d46470
MS
10563will silently set a breakpoint there. If the overlay manager then
10564calls this function whenever it has changed the overlay table, this
10565will enable @value{GDBN} to accurately keep track of which overlays
10566are in program memory, and update any breakpoints that may be set
b383017d 10567in overlays. This will allow breakpoints to work even if the
81d46470
MS
10568overlays are kept in ROM or other non-writable memory while they
10569are not being executed.
df0cd8c5
JB
10570
10571@node Overlay Sample Program
10572@section Overlay Sample Program
10573@cindex overlay example program
10574
10575When linking a program which uses overlays, you must place the overlays
10576at their load addresses, while relocating them to run at their mapped
10577addresses. To do this, you must write a linker script (@pxref{Overlay
10578Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
10579since linker scripts are specific to a particular host system, target
10580architecture, and target memory layout, this manual cannot provide
10581portable sample code demonstrating @value{GDBN}'s overlay support.
10582
10583However, the @value{GDBN} source distribution does contain an overlaid
10584program, with linker scripts for a few systems, as part of its test
10585suite. The program consists of the following files from
10586@file{gdb/testsuite/gdb.base}:
10587
10588@table @file
10589@item overlays.c
10590The main program file.
10591@item ovlymgr.c
10592A simple overlay manager, used by @file{overlays.c}.
10593@item foo.c
10594@itemx bar.c
10595@itemx baz.c
10596@itemx grbx.c
10597Overlay modules, loaded and used by @file{overlays.c}.
10598@item d10v.ld
10599@itemx m32r.ld
10600Linker scripts for linking the test program on the @code{d10v-elf}
10601and @code{m32r-elf} targets.
10602@end table
10603
10604You can build the test program using the @code{d10v-elf} GCC
10605cross-compiler like this:
10606
474c8240 10607@smallexample
df0cd8c5
JB
10608$ d10v-elf-gcc -g -c overlays.c
10609$ d10v-elf-gcc -g -c ovlymgr.c
10610$ d10v-elf-gcc -g -c foo.c
10611$ d10v-elf-gcc -g -c bar.c
10612$ d10v-elf-gcc -g -c baz.c
10613$ d10v-elf-gcc -g -c grbx.c
10614$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
10615 baz.o grbx.o -Wl,-Td10v.ld -o overlays
474c8240 10616@end smallexample
df0cd8c5
JB
10617
10618The build process is identical for any other architecture, except that
10619you must substitute the appropriate compiler and linker script for the
10620target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
10621
10622
6d2ebf8b 10623@node Languages
c906108c
SS
10624@chapter Using @value{GDBN} with Different Languages
10625@cindex languages
10626
c906108c
SS
10627Although programming languages generally have common aspects, they are
10628rarely expressed in the same manner. For instance, in ANSI C,
10629dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
10630Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 10631represented (and displayed) differently. Hex numbers in C appear as
c906108c 10632@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
10633
10634@cindex working language
10635Language-specific information is built into @value{GDBN} for some languages,
10636allowing you to express operations like the above in your program's
10637native language, and allowing @value{GDBN} to output values in a manner
10638consistent with the syntax of your program's native language. The
10639language you use to build expressions is called the @dfn{working
10640language}.
10641
10642@menu
10643* Setting:: Switching between source languages
10644* Show:: Displaying the language
c906108c 10645* Checks:: Type and range checks
79a6e687
BW
10646* Supported Languages:: Supported languages
10647* Unsupported Languages:: Unsupported languages
c906108c
SS
10648@end menu
10649
6d2ebf8b 10650@node Setting
79a6e687 10651@section Switching Between Source Languages
c906108c
SS
10652
10653There are two ways to control the working language---either have @value{GDBN}
10654set it automatically, or select it manually yourself. You can use the
10655@code{set language} command for either purpose. On startup, @value{GDBN}
10656defaults to setting the language automatically. The working language is
10657used to determine how expressions you type are interpreted, how values
10658are printed, etc.
10659
10660In addition to the working language, every source file that
10661@value{GDBN} knows about has its own working language. For some object
10662file formats, the compiler might indicate which language a particular
10663source file is in. However, most of the time @value{GDBN} infers the
10664language from the name of the file. The language of a source file
b37052ae 10665controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 10666show each frame appropriately for its own language. There is no way to
d4f3574e
SS
10667set the language of a source file from within @value{GDBN}, but you can
10668set the language associated with a filename extension. @xref{Show, ,
79a6e687 10669Displaying the Language}.
c906108c
SS
10670
10671This is most commonly a problem when you use a program, such
5d161b24 10672as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
10673another language. In that case, make the
10674program use @code{#line} directives in its C output; that way
10675@value{GDBN} will know the correct language of the source code of the original
10676program, and will display that source code, not the generated C code.
10677
10678@menu
10679* Filenames:: Filename extensions and languages.
10680* Manually:: Setting the working language manually
10681* Automatically:: Having @value{GDBN} infer the source language
10682@end menu
10683
6d2ebf8b 10684@node Filenames
79a6e687 10685@subsection List of Filename Extensions and Languages
c906108c
SS
10686
10687If a source file name ends in one of the following extensions, then
10688@value{GDBN} infers that its language is the one indicated.
10689
10690@table @file
e07c999f
PH
10691@item .ada
10692@itemx .ads
10693@itemx .adb
10694@itemx .a
10695Ada source file.
c906108c
SS
10696
10697@item .c
10698C source file
10699
10700@item .C
10701@itemx .cc
10702@itemx .cp
10703@itemx .cpp
10704@itemx .cxx
10705@itemx .c++
b37052ae 10706C@t{++} source file
c906108c 10707
b37303ee
AF
10708@item .m
10709Objective-C source file
10710
c906108c
SS
10711@item .f
10712@itemx .F
10713Fortran source file
10714
c906108c
SS
10715@item .mod
10716Modula-2 source file
c906108c
SS
10717
10718@item .s
10719@itemx .S
10720Assembler source file. This actually behaves almost like C, but
10721@value{GDBN} does not skip over function prologues when stepping.
10722@end table
10723
10724In addition, you may set the language associated with a filename
79a6e687 10725extension. @xref{Show, , Displaying the Language}.
c906108c 10726
6d2ebf8b 10727@node Manually
79a6e687 10728@subsection Setting the Working Language
c906108c
SS
10729
10730If you allow @value{GDBN} to set the language automatically,
10731expressions are interpreted the same way in your debugging session and
10732your program.
10733
10734@kindex set language
10735If you wish, you may set the language manually. To do this, issue the
10736command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 10737a language, such as
c906108c 10738@code{c} or @code{modula-2}.
c906108c
SS
10739For a list of the supported languages, type @samp{set language}.
10740
c906108c
SS
10741Setting the language manually prevents @value{GDBN} from updating the working
10742language automatically. This can lead to confusion if you try
10743to debug a program when the working language is not the same as the
10744source language, when an expression is acceptable to both
10745languages---but means different things. For instance, if the current
10746source file were written in C, and @value{GDBN} was parsing Modula-2, a
10747command such as:
10748
474c8240 10749@smallexample
c906108c 10750print a = b + c
474c8240 10751@end smallexample
c906108c
SS
10752
10753@noindent
10754might not have the effect you intended. In C, this means to add
10755@code{b} and @code{c} and place the result in @code{a}. The result
10756printed would be the value of @code{a}. In Modula-2, this means to compare
10757@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 10758
6d2ebf8b 10759@node Automatically
79a6e687 10760@subsection Having @value{GDBN} Infer the Source Language
c906108c
SS
10761
10762To have @value{GDBN} set the working language automatically, use
10763@samp{set language local} or @samp{set language auto}. @value{GDBN}
10764then infers the working language. That is, when your program stops in a
10765frame (usually by encountering a breakpoint), @value{GDBN} sets the
10766working language to the language recorded for the function in that
10767frame. If the language for a frame is unknown (that is, if the function
10768or block corresponding to the frame was defined in a source file that
10769does not have a recognized extension), the current working language is
10770not changed, and @value{GDBN} issues a warning.
10771
10772This may not seem necessary for most programs, which are written
10773entirely in one source language. However, program modules and libraries
10774written in one source language can be used by a main program written in
10775a different source language. Using @samp{set language auto} in this
10776case frees you from having to set the working language manually.
10777
6d2ebf8b 10778@node Show
79a6e687 10779@section Displaying the Language
c906108c
SS
10780
10781The following commands help you find out which language is the
10782working language, and also what language source files were written in.
10783
c906108c
SS
10784@table @code
10785@item show language
9c16f35a 10786@kindex show language
c906108c
SS
10787Display the current working language. This is the
10788language you can use with commands such as @code{print} to
10789build and compute expressions that may involve variables in your program.
10790
10791@item info frame
4644b6e3 10792@kindex info frame@r{, show the source language}
5d161b24 10793Display the source language for this frame. This language becomes the
c906108c 10794working language if you use an identifier from this frame.
79a6e687 10795@xref{Frame Info, ,Information about a Frame}, to identify the other
c906108c
SS
10796information listed here.
10797
10798@item info source
4644b6e3 10799@kindex info source@r{, show the source language}
c906108c 10800Display the source language of this source file.
5d161b24 10801@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
10802information listed here.
10803@end table
10804
10805In unusual circumstances, you may have source files with extensions
10806not in the standard list. You can then set the extension associated
10807with a language explicitly:
10808
c906108c 10809@table @code
09d4efe1 10810@item set extension-language @var{ext} @var{language}
9c16f35a 10811@kindex set extension-language
09d4efe1
EZ
10812Tell @value{GDBN} that source files with extension @var{ext} are to be
10813assumed as written in the source language @var{language}.
c906108c
SS
10814
10815@item info extensions
9c16f35a 10816@kindex info extensions
c906108c
SS
10817List all the filename extensions and the associated languages.
10818@end table
10819
6d2ebf8b 10820@node Checks
79a6e687 10821@section Type and Range Checking
c906108c
SS
10822
10823@quotation
10824@emph{Warning:} In this release, the @value{GDBN} commands for type and range
10825checking are included, but they do not yet have any effect. This
10826section documents the intended facilities.
10827@end quotation
10828@c FIXME remove warning when type/range code added
10829
10830Some languages are designed to guard you against making seemingly common
10831errors through a series of compile- and run-time checks. These include
10832checking the type of arguments to functions and operators, and making
10833sure mathematical overflows are caught at run time. Checks such as
10834these help to ensure a program's correctness once it has been compiled
10835by eliminating type mismatches, and providing active checks for range
10836errors when your program is running.
10837
10838@value{GDBN} can check for conditions like the above if you wish.
9c16f35a
EZ
10839Although @value{GDBN} does not check the statements in your program,
10840it can check expressions entered directly into @value{GDBN} for
10841evaluation via the @code{print} command, for example. As with the
10842working language, @value{GDBN} can also decide whether or not to check
10843automatically based on your program's source language.
79a6e687 10844@xref{Supported Languages, ,Supported Languages}, for the default
9c16f35a 10845settings of supported languages.
c906108c
SS
10846
10847@menu
10848* Type Checking:: An overview of type checking
10849* Range Checking:: An overview of range checking
10850@end menu
10851
10852@cindex type checking
10853@cindex checks, type
6d2ebf8b 10854@node Type Checking
79a6e687 10855@subsection An Overview of Type Checking
c906108c
SS
10856
10857Some languages, such as Modula-2, are strongly typed, meaning that the
10858arguments to operators and functions have to be of the correct type,
10859otherwise an error occurs. These checks prevent type mismatch
10860errors from ever causing any run-time problems. For example,
10861
10862@smallexample
108631 + 2 @result{} 3
10864@exdent but
10865@error{} 1 + 2.3
10866@end smallexample
10867
10868The second example fails because the @code{CARDINAL} 1 is not
10869type-compatible with the @code{REAL} 2.3.
10870
5d161b24
DB
10871For the expressions you use in @value{GDBN} commands, you can tell the
10872@value{GDBN} type checker to skip checking;
10873to treat any mismatches as errors and abandon the expression;
10874or to only issue warnings when type mismatches occur,
c906108c
SS
10875but evaluate the expression anyway. When you choose the last of
10876these, @value{GDBN} evaluates expressions like the second example above, but
10877also issues a warning.
10878
5d161b24
DB
10879Even if you turn type checking off, there may be other reasons
10880related to type that prevent @value{GDBN} from evaluating an expression.
10881For instance, @value{GDBN} does not know how to add an @code{int} and
10882a @code{struct foo}. These particular type errors have nothing to do
10883with the language in use, and usually arise from expressions, such as
c906108c
SS
10884the one described above, which make little sense to evaluate anyway.
10885
10886Each language defines to what degree it is strict about type. For
10887instance, both Modula-2 and C require the arguments to arithmetical
10888operators to be numbers. In C, enumerated types and pointers can be
10889represented as numbers, so that they are valid arguments to mathematical
79a6e687 10890operators. @xref{Supported Languages, ,Supported Languages}, for further
c906108c
SS
10891details on specific languages.
10892
10893@value{GDBN} provides some additional commands for controlling the type checker:
10894
c906108c
SS
10895@kindex set check type
10896@kindex show check type
10897@table @code
10898@item set check type auto
10899Set type checking on or off based on the current working language.
79a6e687 10900@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
10901each language.
10902
10903@item set check type on
10904@itemx set check type off
10905Set type checking on or off, overriding the default setting for the
10906current working language. Issue a warning if the setting does not
10907match the language default. If any type mismatches occur in
d4f3574e 10908evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
10909message and aborts evaluation of the expression.
10910
10911@item set check type warn
10912Cause the type checker to issue warnings, but to always attempt to
10913evaluate the expression. Evaluating the expression may still
10914be impossible for other reasons. For example, @value{GDBN} cannot add
10915numbers and structures.
10916
10917@item show type
5d161b24 10918Show the current setting of the type checker, and whether or not @value{GDBN}
c906108c
SS
10919is setting it automatically.
10920@end table
10921
10922@cindex range checking
10923@cindex checks, range
6d2ebf8b 10924@node Range Checking
79a6e687 10925@subsection An Overview of Range Checking
c906108c
SS
10926
10927In some languages (such as Modula-2), it is an error to exceed the
10928bounds of a type; this is enforced with run-time checks. Such range
10929checking is meant to ensure program correctness by making sure
10930computations do not overflow, or indices on an array element access do
10931not exceed the bounds of the array.
10932
10933For expressions you use in @value{GDBN} commands, you can tell
10934@value{GDBN} to treat range errors in one of three ways: ignore them,
10935always treat them as errors and abandon the expression, or issue
10936warnings but evaluate the expression anyway.
10937
10938A range error can result from numerical overflow, from exceeding an
10939array index bound, or when you type a constant that is not a member
10940of any type. Some languages, however, do not treat overflows as an
10941error. In many implementations of C, mathematical overflow causes the
10942result to ``wrap around'' to lower values---for example, if @var{m} is
10943the largest integer value, and @var{s} is the smallest, then
10944
474c8240 10945@smallexample
c906108c 10946@var{m} + 1 @result{} @var{s}
474c8240 10947@end smallexample
c906108c
SS
10948
10949This, too, is specific to individual languages, and in some cases
79a6e687
BW
10950specific to individual compilers or machines. @xref{Supported Languages, ,
10951Supported Languages}, for further details on specific languages.
c906108c
SS
10952
10953@value{GDBN} provides some additional commands for controlling the range checker:
10954
c906108c
SS
10955@kindex set check range
10956@kindex show check range
10957@table @code
10958@item set check range auto
10959Set range checking on or off based on the current working language.
79a6e687 10960@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
10961each language.
10962
10963@item set check range on
10964@itemx set check range off
10965Set range checking on or off, overriding the default setting for the
10966current working language. A warning is issued if the setting does not
c3f6f71d
JM
10967match the language default. If a range error occurs and range checking is on,
10968then a message is printed and evaluation of the expression is aborted.
c906108c
SS
10969
10970@item set check range warn
10971Output messages when the @value{GDBN} range checker detects a range error,
10972but attempt to evaluate the expression anyway. Evaluating the
10973expression may still be impossible for other reasons, such as accessing
10974memory that the process does not own (a typical example from many Unix
10975systems).
10976
10977@item show range
10978Show the current setting of the range checker, and whether or not it is
10979being set automatically by @value{GDBN}.
10980@end table
c906108c 10981
79a6e687
BW
10982@node Supported Languages
10983@section Supported Languages
c906108c 10984
9c16f35a
EZ
10985@value{GDBN} supports C, C@t{++}, Objective-C, Fortran, Java, Pascal,
10986assembly, Modula-2, and Ada.
cce74817 10987@c This is false ...
c906108c
SS
10988Some @value{GDBN} features may be used in expressions regardless of the
10989language you use: the @value{GDBN} @code{@@} and @code{::} operators,
10990and the @samp{@{type@}addr} construct (@pxref{Expressions,
10991,Expressions}) can be used with the constructs of any supported
10992language.
10993
10994The following sections detail to what degree each source language is
10995supported by @value{GDBN}. These sections are not meant to be language
10996tutorials or references, but serve only as a reference guide to what the
10997@value{GDBN} expression parser accepts, and what input and output
10998formats should look like for different languages. There are many good
10999books written on each of these languages; please look to these for a
11000language reference or tutorial.
11001
c906108c 11002@menu
b37303ee 11003* C:: C and C@t{++}
b383017d 11004* Objective-C:: Objective-C
09d4efe1 11005* Fortran:: Fortran
9c16f35a 11006* Pascal:: Pascal
b37303ee 11007* Modula-2:: Modula-2
e07c999f 11008* Ada:: Ada
c906108c
SS
11009@end menu
11010
6d2ebf8b 11011@node C
b37052ae 11012@subsection C and C@t{++}
7a292a7a 11013
b37052ae
EZ
11014@cindex C and C@t{++}
11015@cindex expressions in C or C@t{++}
c906108c 11016
b37052ae 11017Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
11018to both languages. Whenever this is the case, we discuss those languages
11019together.
11020
41afff9a
EZ
11021@cindex C@t{++}
11022@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
11023@cindex @sc{gnu} C@t{++}
11024The C@t{++} debugging facilities are jointly implemented by the C@t{++}
11025compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
11026effectively, you must compile your C@t{++} programs with a supported
11027C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
11028compiler (@code{aCC}).
11029
0179ffac
DC
11030For best results when using @sc{gnu} C@t{++}, use the DWARF 2 debugging
11031format; if it doesn't work on your system, try the stabs+ debugging
11032format. You can select those formats explicitly with the @code{g++}
11033command-line options @option{-gdwarf-2} and @option{-gstabs+}.
ce9341a1
BW
11034@xref{Debugging Options,,Options for Debugging Your Program or GCC,
11035gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}.
c906108c 11036
c906108c 11037@menu
b37052ae
EZ
11038* C Operators:: C and C@t{++} operators
11039* C Constants:: C and C@t{++} constants
79a6e687 11040* C Plus Plus Expressions:: C@t{++} expressions
b37052ae
EZ
11041* C Defaults:: Default settings for C and C@t{++}
11042* C Checks:: C and C@t{++} type and range checks
c906108c 11043* Debugging C:: @value{GDBN} and C
79a6e687 11044* Debugging C Plus Plus:: @value{GDBN} features for C@t{++}
febe4383 11045* Decimal Floating Point:: Numbers in Decimal Floating Point format
c906108c 11046@end menu
c906108c 11047
6d2ebf8b 11048@node C Operators
79a6e687 11049@subsubsection C and C@t{++} Operators
7a292a7a 11050
b37052ae 11051@cindex C and C@t{++} operators
c906108c
SS
11052
11053Operators must be defined on values of specific types. For instance,
11054@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 11055often defined on groups of types.
c906108c 11056
b37052ae 11057For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
11058
11059@itemize @bullet
53a5351d 11060
c906108c 11061@item
c906108c 11062@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 11063specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
11064
11065@item
d4f3574e
SS
11066@emph{Floating-point types} include @code{float}, @code{double}, and
11067@code{long double} (if supported by the target platform).
c906108c
SS
11068
11069@item
53a5351d 11070@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
11071
11072@item
11073@emph{Scalar types} include all of the above.
53a5351d 11074
c906108c
SS
11075@end itemize
11076
11077@noindent
11078The following operators are supported. They are listed here
11079in order of increasing precedence:
11080
11081@table @code
11082@item ,
11083The comma or sequencing operator. Expressions in a comma-separated list
11084are evaluated from left to right, with the result of the entire
11085expression being the last expression evaluated.
11086
11087@item =
11088Assignment. The value of an assignment expression is the value
11089assigned. Defined on scalar types.
11090
11091@item @var{op}=
11092Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
11093and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 11094@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
11095@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
11096@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
11097
11098@item ?:
11099The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
11100of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
11101integral type.
11102
11103@item ||
11104Logical @sc{or}. Defined on integral types.
11105
11106@item &&
11107Logical @sc{and}. Defined on integral types.
11108
11109@item |
11110Bitwise @sc{or}. Defined on integral types.
11111
11112@item ^
11113Bitwise exclusive-@sc{or}. Defined on integral types.
11114
11115@item &
11116Bitwise @sc{and}. Defined on integral types.
11117
11118@item ==@r{, }!=
11119Equality and inequality. Defined on scalar types. The value of these
11120expressions is 0 for false and non-zero for true.
11121
11122@item <@r{, }>@r{, }<=@r{, }>=
11123Less than, greater than, less than or equal, greater than or equal.
11124Defined on scalar types. The value of these expressions is 0 for false
11125and non-zero for true.
11126
11127@item <<@r{, }>>
11128left shift, and right shift. Defined on integral types.
11129
11130@item @@
11131The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
11132
11133@item +@r{, }-
11134Addition and subtraction. Defined on integral types, floating-point types and
11135pointer types.
11136
11137@item *@r{, }/@r{, }%
11138Multiplication, division, and modulus. Multiplication and division are
11139defined on integral and floating-point types. Modulus is defined on
11140integral types.
11141
11142@item ++@r{, }--
11143Increment and decrement. When appearing before a variable, the
11144operation is performed before the variable is used in an expression;
11145when appearing after it, the variable's value is used before the
11146operation takes place.
11147
11148@item *
11149Pointer dereferencing. Defined on pointer types. Same precedence as
11150@code{++}.
11151
11152@item &
11153Address operator. Defined on variables. Same precedence as @code{++}.
11154
b37052ae
EZ
11155For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
11156allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
b17828ca 11157to examine the address
b37052ae 11158where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 11159stored.
c906108c
SS
11160
11161@item -
11162Negative. Defined on integral and floating-point types. Same
11163precedence as @code{++}.
11164
11165@item !
11166Logical negation. Defined on integral types. Same precedence as
11167@code{++}.
11168
11169@item ~
11170Bitwise complement operator. Defined on integral types. Same precedence as
11171@code{++}.
11172
11173
11174@item .@r{, }->
11175Structure member, and pointer-to-structure member. For convenience,
11176@value{GDBN} regards the two as equivalent, choosing whether to dereference a
11177pointer based on the stored type information.
11178Defined on @code{struct} and @code{union} data.
11179
c906108c
SS
11180@item .*@r{, }->*
11181Dereferences of pointers to members.
c906108c
SS
11182
11183@item []
11184Array indexing. @code{@var{a}[@var{i}]} is defined as
11185@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
11186
11187@item ()
11188Function parameter list. Same precedence as @code{->}.
11189
c906108c 11190@item ::
b37052ae 11191C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 11192and @code{class} types.
c906108c
SS
11193
11194@item ::
7a292a7a
SS
11195Doubled colons also represent the @value{GDBN} scope operator
11196(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
11197above.
c906108c
SS
11198@end table
11199
c906108c
SS
11200If an operator is redefined in the user code, @value{GDBN} usually
11201attempts to invoke the redefined version instead of using the operator's
11202predefined meaning.
c906108c 11203
6d2ebf8b 11204@node C Constants
79a6e687 11205@subsubsection C and C@t{++} Constants
c906108c 11206
b37052ae 11207@cindex C and C@t{++} constants
c906108c 11208
b37052ae 11209@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 11210following ways:
c906108c
SS
11211
11212@itemize @bullet
11213@item
11214Integer constants are a sequence of digits. Octal constants are
6ca652b0
EZ
11215specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
11216by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
c906108c
SS
11217@samp{l}, specifying that the constant should be treated as a
11218@code{long} value.
11219
11220@item
11221Floating point constants are a sequence of digits, followed by a decimal
11222point, followed by a sequence of digits, and optionally followed by an
11223exponent. An exponent is of the form:
11224@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
11225sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
11226A floating-point constant may also end with a letter @samp{f} or
11227@samp{F}, specifying that the constant should be treated as being of
11228the @code{float} (as opposed to the default @code{double}) type; or with
11229a letter @samp{l} or @samp{L}, which specifies a @code{long double}
11230constant.
c906108c
SS
11231
11232@item
11233Enumerated constants consist of enumerated identifiers, or their
11234integral equivalents.
11235
11236@item
11237Character constants are a single character surrounded by single quotes
11238(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 11239(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
11240be represented by a letter or by @dfn{escape sequences}, which are of
11241the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
11242of the character's ordinal value; or of the form @samp{\@var{x}}, where
11243@samp{@var{x}} is a predefined special character---for example,
11244@samp{\n} for newline.
11245
11246@item
96a2c332
SS
11247String constants are a sequence of character constants surrounded by
11248double quotes (@code{"}). Any valid character constant (as described
11249above) may appear. Double quotes within the string must be preceded by
11250a backslash, so for instance @samp{"a\"b'c"} is a string of five
11251characters.
c906108c
SS
11252
11253@item
11254Pointer constants are an integral value. You can also write pointers
11255to constants using the C operator @samp{&}.
11256
11257@item
11258Array constants are comma-separated lists surrounded by braces @samp{@{}
11259and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
11260integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
11261and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
11262@end itemize
11263
79a6e687
BW
11264@node C Plus Plus Expressions
11265@subsubsection C@t{++} Expressions
b37052ae
EZ
11266
11267@cindex expressions in C@t{++}
11268@value{GDBN} expression handling can interpret most C@t{++} expressions.
11269
0179ffac
DC
11270@cindex debugging C@t{++} programs
11271@cindex C@t{++} compilers
11272@cindex debug formats and C@t{++}
11273@cindex @value{NGCC} and C@t{++}
c906108c 11274@quotation
b37052ae 11275@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use the
0179ffac
DC
11276proper compiler and the proper debug format. Currently, @value{GDBN}
11277works best when debugging C@t{++} code that is compiled with
11278@value{NGCC} 2.95.3 or with @value{NGCC} 3.1 or newer, using the options
11279@option{-gdwarf-2} or @option{-gstabs+}. DWARF 2 is preferred over
11280stabs+. Most configurations of @value{NGCC} emit either DWARF 2 or
11281stabs+ as their default debug format, so you usually don't need to
11282specify a debug format explicitly. Other compilers and/or debug formats
11283are likely to work badly or not at all when using @value{GDBN} to debug
11284C@t{++} code.
c906108c 11285@end quotation
c906108c
SS
11286
11287@enumerate
11288
11289@cindex member functions
11290@item
11291Member function calls are allowed; you can use expressions like
11292
474c8240 11293@smallexample
c906108c 11294count = aml->GetOriginal(x, y)
474c8240 11295@end smallexample
c906108c 11296
41afff9a 11297@vindex this@r{, inside C@t{++} member functions}
b37052ae 11298@cindex namespace in C@t{++}
c906108c
SS
11299@item
11300While a member function is active (in the selected stack frame), your
11301expressions have the same namespace available as the member function;
11302that is, @value{GDBN} allows implicit references to the class instance
b37052ae 11303pointer @code{this} following the same rules as C@t{++}.
c906108c 11304
c906108c 11305@cindex call overloaded functions
d4f3574e 11306@cindex overloaded functions, calling
b37052ae 11307@cindex type conversions in C@t{++}
c906108c
SS
11308@item
11309You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 11310call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
11311perform overload resolution involving user-defined type conversions,
11312calls to constructors, or instantiations of templates that do not exist
11313in the program. It also cannot handle ellipsis argument lists or
11314default arguments.
11315
11316It does perform integral conversions and promotions, floating-point
11317promotions, arithmetic conversions, pointer conversions, conversions of
11318class objects to base classes, and standard conversions such as those of
11319functions or arrays to pointers; it requires an exact match on the
11320number of function arguments.
11321
11322Overload resolution is always performed, unless you have specified
79a6e687
BW
11323@code{set overload-resolution off}. @xref{Debugging C Plus Plus,
11324,@value{GDBN} Features for C@t{++}}.
c906108c 11325
d4f3574e 11326You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
11327explicit function signature to call an overloaded function, as in
11328@smallexample
11329p 'foo(char,int)'('x', 13)
11330@end smallexample
d4f3574e 11331
c906108c 11332The @value{GDBN} command-completion facility can simplify this;
79a6e687 11333see @ref{Completion, ,Command Completion}.
c906108c 11334
c906108c
SS
11335@cindex reference declarations
11336@item
b37052ae
EZ
11337@value{GDBN} understands variables declared as C@t{++} references; you can use
11338them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
11339dereferenced.
11340
11341In the parameter list shown when @value{GDBN} displays a frame, the values of
11342reference variables are not displayed (unlike other variables); this
11343avoids clutter, since references are often used for large structures.
11344The @emph{address} of a reference variable is always shown, unless
11345you have specified @samp{set print address off}.
11346
11347@item
b37052ae 11348@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
11349expressions can use it just as expressions in your program do. Since
11350one scope may be defined in another, you can use @code{::} repeatedly if
11351necessary, for example in an expression like
11352@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 11353resolving name scope by reference to source files, in both C and C@t{++}
79a6e687 11354debugging (@pxref{Variables, ,Program Variables}).
c906108c
SS
11355@end enumerate
11356
b37052ae 11357In addition, when used with HP's C@t{++} compiler, @value{GDBN} supports
53a5351d
JM
11358calling virtual functions correctly, printing out virtual bases of
11359objects, calling functions in a base subobject, casting objects, and
11360invoking user-defined operators.
c906108c 11361
6d2ebf8b 11362@node C Defaults
79a6e687 11363@subsubsection C and C@t{++} Defaults
7a292a7a 11364
b37052ae 11365@cindex C and C@t{++} defaults
c906108c 11366
c906108c
SS
11367If you allow @value{GDBN} to set type and range checking automatically, they
11368both default to @code{off} whenever the working language changes to
b37052ae 11369C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 11370selects the working language.
c906108c
SS
11371
11372If you allow @value{GDBN} to set the language automatically, it
11373recognizes source files whose names end with @file{.c}, @file{.C}, or
11374@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
b37052ae 11375these files, it sets the working language to C or C@t{++}.
79a6e687 11376@xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
c906108c
SS
11377for further details.
11378
c906108c
SS
11379@c Type checking is (a) primarily motivated by Modula-2, and (b)
11380@c unimplemented. If (b) changes, it might make sense to let this node
11381@c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7a292a7a 11382
6d2ebf8b 11383@node C Checks
79a6e687 11384@subsubsection C and C@t{++} Type and Range Checks
7a292a7a 11385
b37052ae 11386@cindex C and C@t{++} checks
c906108c 11387
b37052ae 11388By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
c906108c
SS
11389is not used. However, if you turn type checking on, @value{GDBN}
11390considers two variables type equivalent if:
11391
11392@itemize @bullet
11393@item
11394The two variables are structured and have the same structure, union, or
11395enumerated tag.
11396
11397@item
11398The two variables have the same type name, or types that have been
11399declared equivalent through @code{typedef}.
11400
11401@ignore
11402@c leaving this out because neither J Gilmore nor R Pesch understand it.
11403@c FIXME--beers?
11404@item
11405The two @code{struct}, @code{union}, or @code{enum} variables are
11406declared in the same declaration. (Note: this may not be true for all C
11407compilers.)
11408@end ignore
11409@end itemize
11410
11411Range checking, if turned on, is done on mathematical operations. Array
11412indices are not checked, since they are often used to index a pointer
11413that is not itself an array.
c906108c 11414
6d2ebf8b 11415@node Debugging C
c906108c 11416@subsubsection @value{GDBN} and C
c906108c
SS
11417
11418The @code{set print union} and @code{show print union} commands apply to
11419the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
11420inside a @code{struct} or @code{class} is also printed. Otherwise, it
11421appears as @samp{@{...@}}.
c906108c
SS
11422
11423The @code{@@} operator aids in the debugging of dynamic arrays, formed
11424with pointers and a memory allocation function. @xref{Expressions,
11425,Expressions}.
11426
79a6e687
BW
11427@node Debugging C Plus Plus
11428@subsubsection @value{GDBN} Features for C@t{++}
c906108c 11429
b37052ae 11430@cindex commands for C@t{++}
7a292a7a 11431
b37052ae
EZ
11432Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
11433designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
11434
11435@table @code
11436@cindex break in overloaded functions
11437@item @r{breakpoint menus}
11438When you want a breakpoint in a function whose name is overloaded,
6ba66d6a
JB
11439@value{GDBN} has the capability to display a menu of possible breakpoint
11440locations to help you specify which function definition you want.
11441@xref{Ambiguous Expressions,,Ambiguous Expressions}.
c906108c 11442
b37052ae 11443@cindex overloading in C@t{++}
c906108c
SS
11444@item rbreak @var{regex}
11445Setting breakpoints using regular expressions is helpful for setting
11446breakpoints on overloaded functions that are not members of any special
11447classes.
79a6e687 11448@xref{Set Breaks, ,Setting Breakpoints}.
c906108c 11449
b37052ae 11450@cindex C@t{++} exception handling
c906108c
SS
11451@item catch throw
11452@itemx catch catch
b37052ae 11453Debug C@t{++} exception handling using these commands. @xref{Set
79a6e687 11454Catchpoints, , Setting Catchpoints}.
c906108c
SS
11455
11456@cindex inheritance
11457@item ptype @var{typename}
11458Print inheritance relationships as well as other information for type
11459@var{typename}.
11460@xref{Symbols, ,Examining the Symbol Table}.
11461
b37052ae 11462@cindex C@t{++} symbol display
c906108c
SS
11463@item set print demangle
11464@itemx show print demangle
11465@itemx set print asm-demangle
11466@itemx show print asm-demangle
b37052ae
EZ
11467Control whether C@t{++} symbols display in their source form, both when
11468displaying code as C@t{++} source and when displaying disassemblies.
79a6e687 11469@xref{Print Settings, ,Print Settings}.
c906108c
SS
11470
11471@item set print object
11472@itemx show print object
11473Choose whether to print derived (actual) or declared types of objects.
79a6e687 11474@xref{Print Settings, ,Print Settings}.
c906108c
SS
11475
11476@item set print vtbl
11477@itemx show print vtbl
11478Control the format for printing virtual function tables.
79a6e687 11479@xref{Print Settings, ,Print Settings}.
c906108c 11480(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 11481ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
11482
11483@kindex set overload-resolution
d4f3574e 11484@cindex overloaded functions, overload resolution
c906108c 11485@item set overload-resolution on
b37052ae 11486Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
11487is on. For overloaded functions, @value{GDBN} evaluates the arguments
11488and searches for a function whose signature matches the argument types,
79a6e687
BW
11489using the standard C@t{++} conversion rules (see @ref{C Plus Plus
11490Expressions, ,C@t{++} Expressions}, for details).
11491If it cannot find a match, it emits a message.
c906108c
SS
11492
11493@item set overload-resolution off
b37052ae 11494Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
11495overloaded functions that are not class member functions, @value{GDBN}
11496chooses the first function of the specified name that it finds in the
11497symbol table, whether or not its arguments are of the correct type. For
11498overloaded functions that are class member functions, @value{GDBN}
11499searches for a function whose signature @emph{exactly} matches the
11500argument types.
c906108c 11501
9c16f35a
EZ
11502@kindex show overload-resolution
11503@item show overload-resolution
11504Show the current setting of overload resolution.
11505
c906108c
SS
11506@item @r{Overloaded symbol names}
11507You can specify a particular definition of an overloaded symbol, using
b37052ae 11508the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
11509@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
11510also use the @value{GDBN} command-line word completion facilities to list the
11511available choices, or to finish the type list for you.
79a6e687 11512@xref{Completion,, Command Completion}, for details on how to do this.
c906108c 11513@end table
c906108c 11514
febe4383
TJB
11515@node Decimal Floating Point
11516@subsubsection Decimal Floating Point format
11517@cindex decimal floating point format
11518
11519@value{GDBN} can examine, set and perform computations with numbers in
11520decimal floating point format, which in the C language correspond to the
11521@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as
11522specified by the extension to support decimal floating-point arithmetic.
11523
11524There are two encodings in use, depending on the architecture: BID (Binary
11525Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for
99e008fe 11526PowerPC. @value{GDBN} will use the appropriate encoding for the configured
febe4383
TJB
11527target.
11528
11529Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN}
11530to manipulate decimal floating point numbers, it is not possible to convert
11531(using a cast, for example) integers wider than 32-bit to decimal float.
11532
11533In addition, in order to imitate @value{GDBN}'s behaviour with binary floating
11534point computations, error checking in decimal float operations ignores
11535underflow, overflow and divide by zero exceptions.
11536
4acd40f3 11537In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers
99e008fe
EZ
11538to inspect @code{_Decimal128} values stored in floating point registers.
11539See @ref{PowerPC,,PowerPC} for more details.
4acd40f3 11540
b37303ee
AF
11541@node Objective-C
11542@subsection Objective-C
11543
11544@cindex Objective-C
11545This section provides information about some commands and command
721c2651
EZ
11546options that are useful for debugging Objective-C code. See also
11547@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a
11548few more commands specific to Objective-C support.
b37303ee
AF
11549
11550@menu
b383017d
RM
11551* Method Names in Commands::
11552* The Print Command with Objective-C::
b37303ee
AF
11553@end menu
11554
c8f4133a 11555@node Method Names in Commands
b37303ee
AF
11556@subsubsection Method Names in Commands
11557
11558The following commands have been extended to accept Objective-C method
11559names as line specifications:
11560
11561@kindex clear@r{, and Objective-C}
11562@kindex break@r{, and Objective-C}
11563@kindex info line@r{, and Objective-C}
11564@kindex jump@r{, and Objective-C}
11565@kindex list@r{, and Objective-C}
11566@itemize
11567@item @code{clear}
11568@item @code{break}
11569@item @code{info line}
11570@item @code{jump}
11571@item @code{list}
11572@end itemize
11573
11574A fully qualified Objective-C method name is specified as
11575
11576@smallexample
11577-[@var{Class} @var{methodName}]
11578@end smallexample
11579
c552b3bb
JM
11580where the minus sign is used to indicate an instance method and a
11581plus sign (not shown) is used to indicate a class method. The class
11582name @var{Class} and method name @var{methodName} are enclosed in
11583brackets, similar to the way messages are specified in Objective-C
11584source code. For example, to set a breakpoint at the @code{create}
11585instance method of class @code{Fruit} in the program currently being
11586debugged, enter:
b37303ee
AF
11587
11588@smallexample
11589break -[Fruit create]
11590@end smallexample
11591
11592To list ten program lines around the @code{initialize} class method,
11593enter:
11594
11595@smallexample
11596list +[NSText initialize]
11597@end smallexample
11598
c552b3bb
JM
11599In the current version of @value{GDBN}, the plus or minus sign is
11600required. In future versions of @value{GDBN}, the plus or minus
11601sign will be optional, but you can use it to narrow the search. It
11602is also possible to specify just a method name:
b37303ee
AF
11603
11604@smallexample
11605break create
11606@end smallexample
11607
11608You must specify the complete method name, including any colons. If
11609your program's source files contain more than one @code{create} method,
11610you'll be presented with a numbered list of classes that implement that
11611method. Indicate your choice by number, or type @samp{0} to exit if
11612none apply.
11613
11614As another example, to clear a breakpoint established at the
11615@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
11616
11617@smallexample
11618clear -[NSWindow makeKeyAndOrderFront:]
11619@end smallexample
11620
11621@node The Print Command with Objective-C
11622@subsubsection The Print Command With Objective-C
721c2651 11623@cindex Objective-C, print objects
c552b3bb
JM
11624@kindex print-object
11625@kindex po @r{(@code{print-object})}
b37303ee 11626
c552b3bb 11627The print command has also been extended to accept methods. For example:
b37303ee
AF
11628
11629@smallexample
c552b3bb 11630print -[@var{object} hash]
b37303ee
AF
11631@end smallexample
11632
11633@cindex print an Objective-C object description
c552b3bb
JM
11634@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
11635@noindent
11636will tell @value{GDBN} to send the @code{hash} message to @var{object}
11637and print the result. Also, an additional command has been added,
11638@code{print-object} or @code{po} for short, which is meant to print
11639the description of an object. However, this command may only work
11640with certain Objective-C libraries that have a particular hook
11641function, @code{_NSPrintForDebugger}, defined.
b37303ee 11642
09d4efe1
EZ
11643@node Fortran
11644@subsection Fortran
11645@cindex Fortran-specific support in @value{GDBN}
11646
814e32d7
WZ
11647@value{GDBN} can be used to debug programs written in Fortran, but it
11648currently supports only the features of Fortran 77 language.
11649
11650@cindex trailing underscore, in Fortran symbols
11651Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
11652among them) append an underscore to the names of variables and
11653functions. When you debug programs compiled by those compilers, you
11654will need to refer to variables and functions with a trailing
11655underscore.
11656
11657@menu
11658* Fortran Operators:: Fortran operators and expressions
11659* Fortran Defaults:: Default settings for Fortran
79a6e687 11660* Special Fortran Commands:: Special @value{GDBN} commands for Fortran
814e32d7
WZ
11661@end menu
11662
11663@node Fortran Operators
79a6e687 11664@subsubsection Fortran Operators and Expressions
814e32d7
WZ
11665
11666@cindex Fortran operators and expressions
11667
11668Operators must be defined on values of specific types. For instance,
11669@code{+} is defined on numbers, but not on characters or other non-
ff2587ec 11670arithmetic types. Operators are often defined on groups of types.
814e32d7
WZ
11671
11672@table @code
11673@item **
99e008fe 11674The exponentiation operator. It raises the first operand to the power
814e32d7
WZ
11675of the second one.
11676
11677@item :
11678The range operator. Normally used in the form of array(low:high) to
11679represent a section of array.
68837c9d
MD
11680
11681@item %
11682The access component operator. Normally used to access elements in derived
11683types. Also suitable for unions. As unions aren't part of regular Fortran,
11684this can only happen when accessing a register that uses a gdbarch-defined
11685union type.
814e32d7
WZ
11686@end table
11687
11688@node Fortran Defaults
11689@subsubsection Fortran Defaults
11690
11691@cindex Fortran Defaults
11692
11693Fortran symbols are usually case-insensitive, so @value{GDBN} by
11694default uses case-insensitive matches for Fortran symbols. You can
11695change that with the @samp{set case-insensitive} command, see
11696@ref{Symbols}, for the details.
11697
79a6e687
BW
11698@node Special Fortran Commands
11699@subsubsection Special Fortran Commands
814e32d7
WZ
11700
11701@cindex Special Fortran commands
11702
db2e3e2e
BW
11703@value{GDBN} has some commands to support Fortran-specific features,
11704such as displaying common blocks.
814e32d7 11705
09d4efe1
EZ
11706@table @code
11707@cindex @code{COMMON} blocks, Fortran
11708@kindex info common
11709@item info common @r{[}@var{common-name}@r{]}
11710This command prints the values contained in the Fortran @code{COMMON}
11711block whose name is @var{common-name}. With no argument, the names of
d52fb0e9 11712all @code{COMMON} blocks visible at the current program location are
09d4efe1
EZ
11713printed.
11714@end table
11715
9c16f35a
EZ
11716@node Pascal
11717@subsection Pascal
11718
11719@cindex Pascal support in @value{GDBN}, limitations
11720Debugging Pascal programs which use sets, subranges, file variables, or
11721nested functions does not currently work. @value{GDBN} does not support
11722entering expressions, printing values, or similar features using Pascal
11723syntax.
11724
11725The Pascal-specific command @code{set print pascal_static-members}
11726controls whether static members of Pascal objects are displayed.
11727@xref{Print Settings, pascal_static-members}.
11728
09d4efe1 11729@node Modula-2
c906108c 11730@subsection Modula-2
7a292a7a 11731
d4f3574e 11732@cindex Modula-2, @value{GDBN} support
c906108c
SS
11733
11734The extensions made to @value{GDBN} to support Modula-2 only support
11735output from the @sc{gnu} Modula-2 compiler (which is currently being
11736developed). Other Modula-2 compilers are not currently supported, and
11737attempting to debug executables produced by them is most likely
11738to give an error as @value{GDBN} reads in the executable's symbol
11739table.
11740
11741@cindex expressions in Modula-2
11742@menu
11743* M2 Operators:: Built-in operators
11744* Built-In Func/Proc:: Built-in functions and procedures
11745* M2 Constants:: Modula-2 constants
72019c9c 11746* M2 Types:: Modula-2 types
c906108c
SS
11747* M2 Defaults:: Default settings for Modula-2
11748* Deviations:: Deviations from standard Modula-2
11749* M2 Checks:: Modula-2 type and range checks
11750* M2 Scope:: The scope operators @code{::} and @code{.}
11751* GDB/M2:: @value{GDBN} and Modula-2
11752@end menu
11753
6d2ebf8b 11754@node M2 Operators
c906108c
SS
11755@subsubsection Operators
11756@cindex Modula-2 operators
11757
11758Operators must be defined on values of specific types. For instance,
11759@code{+} is defined on numbers, but not on structures. Operators are
11760often defined on groups of types. For the purposes of Modula-2, the
11761following definitions hold:
11762
11763@itemize @bullet
11764
11765@item
11766@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
11767their subranges.
11768
11769@item
11770@emph{Character types} consist of @code{CHAR} and its subranges.
11771
11772@item
11773@emph{Floating-point types} consist of @code{REAL}.
11774
11775@item
11776@emph{Pointer types} consist of anything declared as @code{POINTER TO
11777@var{type}}.
11778
11779@item
11780@emph{Scalar types} consist of all of the above.
11781
11782@item
11783@emph{Set types} consist of @code{SET} and @code{BITSET} types.
11784
11785@item
11786@emph{Boolean types} consist of @code{BOOLEAN}.
11787@end itemize
11788
11789@noindent
11790The following operators are supported, and appear in order of
11791increasing precedence:
11792
11793@table @code
11794@item ,
11795Function argument or array index separator.
11796
11797@item :=
11798Assignment. The value of @var{var} @code{:=} @var{value} is
11799@var{value}.
11800
11801@item <@r{, }>
11802Less than, greater than on integral, floating-point, or enumerated
11803types.
11804
11805@item <=@r{, }>=
96a2c332 11806Less than or equal to, greater than or equal to
c906108c
SS
11807on integral, floating-point and enumerated types, or set inclusion on
11808set types. Same precedence as @code{<}.
11809
11810@item =@r{, }<>@r{, }#
11811Equality and two ways of expressing inequality, valid on scalar types.
11812Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
11813available for inequality, since @code{#} conflicts with the script
11814comment character.
11815
11816@item IN
11817Set membership. Defined on set types and the types of their members.
11818Same precedence as @code{<}.
11819
11820@item OR
11821Boolean disjunction. Defined on boolean types.
11822
11823@item AND@r{, }&
d4f3574e 11824Boolean conjunction. Defined on boolean types.
c906108c
SS
11825
11826@item @@
11827The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
11828
11829@item +@r{, }-
11830Addition and subtraction on integral and floating-point types, or union
11831and difference on set types.
11832
11833@item *
11834Multiplication on integral and floating-point types, or set intersection
11835on set types.
11836
11837@item /
11838Division on floating-point types, or symmetric set difference on set
11839types. Same precedence as @code{*}.
11840
11841@item DIV@r{, }MOD
11842Integer division and remainder. Defined on integral types. Same
11843precedence as @code{*}.
11844
11845@item -
99e008fe 11846Negative. Defined on @code{INTEGER} and @code{REAL} data.
c906108c
SS
11847
11848@item ^
11849Pointer dereferencing. Defined on pointer types.
11850
11851@item NOT
11852Boolean negation. Defined on boolean types. Same precedence as
11853@code{^}.
11854
11855@item .
11856@code{RECORD} field selector. Defined on @code{RECORD} data. Same
11857precedence as @code{^}.
11858
11859@item []
11860Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
11861
11862@item ()
11863Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
11864as @code{^}.
11865
11866@item ::@r{, }.
11867@value{GDBN} and Modula-2 scope operators.
11868@end table
11869
11870@quotation
72019c9c 11871@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN}
c906108c
SS
11872treats the use of the operator @code{IN}, or the use of operators
11873@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
11874@code{<=}, and @code{>=} on sets as an error.
11875@end quotation
11876
cb51c4e0 11877
6d2ebf8b 11878@node Built-In Func/Proc
79a6e687 11879@subsubsection Built-in Functions and Procedures
cb51c4e0 11880@cindex Modula-2 built-ins
c906108c
SS
11881
11882Modula-2 also makes available several built-in procedures and functions.
11883In describing these, the following metavariables are used:
11884
11885@table @var
11886
11887@item a
11888represents an @code{ARRAY} variable.
11889
11890@item c
11891represents a @code{CHAR} constant or variable.
11892
11893@item i
11894represents a variable or constant of integral type.
11895
11896@item m
11897represents an identifier that belongs to a set. Generally used in the
11898same function with the metavariable @var{s}. The type of @var{s} should
11899be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
11900
11901@item n
11902represents a variable or constant of integral or floating-point type.
11903
11904@item r
11905represents a variable or constant of floating-point type.
11906
11907@item t
11908represents a type.
11909
11910@item v
11911represents a variable.
11912
11913@item x
11914represents a variable or constant of one of many types. See the
11915explanation of the function for details.
11916@end table
11917
11918All Modula-2 built-in procedures also return a result, described below.
11919
11920@table @code
11921@item ABS(@var{n})
11922Returns the absolute value of @var{n}.
11923
11924@item CAP(@var{c})
11925If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 11926equivalent, otherwise it returns its argument.
c906108c
SS
11927
11928@item CHR(@var{i})
11929Returns the character whose ordinal value is @var{i}.
11930
11931@item DEC(@var{v})
c3f6f71d 11932Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
11933
11934@item DEC(@var{v},@var{i})
11935Decrements the value in the variable @var{v} by @var{i}. Returns the
11936new value.
11937
11938@item EXCL(@var{m},@var{s})
11939Removes the element @var{m} from the set @var{s}. Returns the new
11940set.
11941
11942@item FLOAT(@var{i})
11943Returns the floating point equivalent of the integer @var{i}.
11944
11945@item HIGH(@var{a})
11946Returns the index of the last member of @var{a}.
11947
11948@item INC(@var{v})
c3f6f71d 11949Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
11950
11951@item INC(@var{v},@var{i})
11952Increments the value in the variable @var{v} by @var{i}. Returns the
11953new value.
11954
11955@item INCL(@var{m},@var{s})
11956Adds the element @var{m} to the set @var{s} if it is not already
11957there. Returns the new set.
11958
11959@item MAX(@var{t})
11960Returns the maximum value of the type @var{t}.
11961
11962@item MIN(@var{t})
11963Returns the minimum value of the type @var{t}.
11964
11965@item ODD(@var{i})
11966Returns boolean TRUE if @var{i} is an odd number.
11967
11968@item ORD(@var{x})
11969Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
11970value of a character is its @sc{ascii} value (on machines supporting the
11971@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
11972integral, character and enumerated types.
11973
11974@item SIZE(@var{x})
11975Returns the size of its argument. @var{x} can be a variable or a type.
11976
11977@item TRUNC(@var{r})
11978Returns the integral part of @var{r}.
11979
844781a1
GM
11980@item TSIZE(@var{x})
11981Returns the size of its argument. @var{x} can be a variable or a type.
11982
c906108c
SS
11983@item VAL(@var{t},@var{i})
11984Returns the member of the type @var{t} whose ordinal value is @var{i}.
11985@end table
11986
11987@quotation
11988@emph{Warning:} Sets and their operations are not yet supported, so
11989@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
11990an error.
11991@end quotation
11992
11993@cindex Modula-2 constants
6d2ebf8b 11994@node M2 Constants
c906108c
SS
11995@subsubsection Constants
11996
11997@value{GDBN} allows you to express the constants of Modula-2 in the following
11998ways:
11999
12000@itemize @bullet
12001
12002@item
12003Integer constants are simply a sequence of digits. When used in an
12004expression, a constant is interpreted to be type-compatible with the
12005rest of the expression. Hexadecimal integers are specified by a
12006trailing @samp{H}, and octal integers by a trailing @samp{B}.
12007
12008@item
12009Floating point constants appear as a sequence of digits, followed by a
12010decimal point and another sequence of digits. An optional exponent can
12011then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
12012@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
12013digits of the floating point constant must be valid decimal (base 10)
12014digits.
12015
12016@item
12017Character constants consist of a single character enclosed by a pair of
12018like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 12019also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
12020followed by a @samp{C}.
12021
12022@item
12023String constants consist of a sequence of characters enclosed by a
12024pair of like quotes, either single (@code{'}) or double (@code{"}).
12025Escape sequences in the style of C are also allowed. @xref{C
79a6e687 12026Constants, ,C and C@t{++} Constants}, for a brief explanation of escape
c906108c
SS
12027sequences.
12028
12029@item
12030Enumerated constants consist of an enumerated identifier.
12031
12032@item
12033Boolean constants consist of the identifiers @code{TRUE} and
12034@code{FALSE}.
12035
12036@item
12037Pointer constants consist of integral values only.
12038
12039@item
12040Set constants are not yet supported.
12041@end itemize
12042
72019c9c
GM
12043@node M2 Types
12044@subsubsection Modula-2 Types
12045@cindex Modula-2 types
12046
12047Currently @value{GDBN} can print the following data types in Modula-2
12048syntax: array types, record types, set types, pointer types, procedure
12049types, enumerated types, subrange types and base types. You can also
12050print the contents of variables declared using these type.
12051This section gives a number of simple source code examples together with
12052sample @value{GDBN} sessions.
12053
12054The first example contains the following section of code:
12055
12056@smallexample
12057VAR
12058 s: SET OF CHAR ;
12059 r: [20..40] ;
12060@end smallexample
12061
12062@noindent
12063and you can request @value{GDBN} to interrogate the type and value of
12064@code{r} and @code{s}.
12065
12066@smallexample
12067(@value{GDBP}) print s
12068@{'A'..'C', 'Z'@}
12069(@value{GDBP}) ptype s
12070SET OF CHAR
12071(@value{GDBP}) print r
1207221
12073(@value{GDBP}) ptype r
12074[20..40]
12075@end smallexample
12076
12077@noindent
12078Likewise if your source code declares @code{s} as:
12079
12080@smallexample
12081VAR
12082 s: SET ['A'..'Z'] ;
12083@end smallexample
12084
12085@noindent
12086then you may query the type of @code{s} by:
12087
12088@smallexample
12089(@value{GDBP}) ptype s
12090type = SET ['A'..'Z']
12091@end smallexample
12092
12093@noindent
12094Note that at present you cannot interactively manipulate set
12095expressions using the debugger.
12096
12097The following example shows how you might declare an array in Modula-2
12098and how you can interact with @value{GDBN} to print its type and contents:
12099
12100@smallexample
12101VAR
12102 s: ARRAY [-10..10] OF CHAR ;
12103@end smallexample
12104
12105@smallexample
12106(@value{GDBP}) ptype s
12107ARRAY [-10..10] OF CHAR
12108@end smallexample
12109
12110Note that the array handling is not yet complete and although the type
12111is printed correctly, expression handling still assumes that all
12112arrays have a lower bound of zero and not @code{-10} as in the example
844781a1 12113above.
72019c9c
GM
12114
12115Here are some more type related Modula-2 examples:
12116
12117@smallexample
12118TYPE
12119 colour = (blue, red, yellow, green) ;
12120 t = [blue..yellow] ;
12121VAR
12122 s: t ;
12123BEGIN
12124 s := blue ;
12125@end smallexample
12126
12127@noindent
12128The @value{GDBN} interaction shows how you can query the data type
12129and value of a variable.
12130
12131@smallexample
12132(@value{GDBP}) print s
12133$1 = blue
12134(@value{GDBP}) ptype t
12135type = [blue..yellow]
12136@end smallexample
12137
12138@noindent
12139In this example a Modula-2 array is declared and its contents
12140displayed. Observe that the contents are written in the same way as
12141their @code{C} counterparts.
12142
12143@smallexample
12144VAR
12145 s: ARRAY [1..5] OF CARDINAL ;
12146BEGIN
12147 s[1] := 1 ;
12148@end smallexample
12149
12150@smallexample
12151(@value{GDBP}) print s
12152$1 = @{1, 0, 0, 0, 0@}
12153(@value{GDBP}) ptype s
12154type = ARRAY [1..5] OF CARDINAL
12155@end smallexample
12156
12157The Modula-2 language interface to @value{GDBN} also understands
12158pointer types as shown in this example:
12159
12160@smallexample
12161VAR
12162 s: POINTER TO ARRAY [1..5] OF CARDINAL ;
12163BEGIN
12164 NEW(s) ;
12165 s^[1] := 1 ;
12166@end smallexample
12167
12168@noindent
12169and you can request that @value{GDBN} describes the type of @code{s}.
12170
12171@smallexample
12172(@value{GDBP}) ptype s
12173type = POINTER TO ARRAY [1..5] OF CARDINAL
12174@end smallexample
12175
12176@value{GDBN} handles compound types as we can see in this example.
12177Here we combine array types, record types, pointer types and subrange
12178types:
12179
12180@smallexample
12181TYPE
12182 foo = RECORD
12183 f1: CARDINAL ;
12184 f2: CHAR ;
12185 f3: myarray ;
12186 END ;
12187
12188 myarray = ARRAY myrange OF CARDINAL ;
12189 myrange = [-2..2] ;
12190VAR
12191 s: POINTER TO ARRAY myrange OF foo ;
12192@end smallexample
12193
12194@noindent
12195and you can ask @value{GDBN} to describe the type of @code{s} as shown
12196below.
12197
12198@smallexample
12199(@value{GDBP}) ptype s
12200type = POINTER TO ARRAY [-2..2] OF foo = RECORD
12201 f1 : CARDINAL;
12202 f2 : CHAR;
12203 f3 : ARRAY [-2..2] OF CARDINAL;
12204END
12205@end smallexample
12206
6d2ebf8b 12207@node M2 Defaults
79a6e687 12208@subsubsection Modula-2 Defaults
c906108c
SS
12209@cindex Modula-2 defaults
12210
12211If type and range checking are set automatically by @value{GDBN}, they
12212both default to @code{on} whenever the working language changes to
d4f3574e 12213Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
12214selected the working language.
12215
12216If you allow @value{GDBN} to set the language automatically, then entering
12217code compiled from a file whose name ends with @file{.mod} sets the
79a6e687
BW
12218working language to Modula-2. @xref{Automatically, ,Having @value{GDBN}
12219Infer the Source Language}, for further details.
c906108c 12220
6d2ebf8b 12221@node Deviations
79a6e687 12222@subsubsection Deviations from Standard Modula-2
c906108c
SS
12223@cindex Modula-2, deviations from
12224
12225A few changes have been made to make Modula-2 programs easier to debug.
12226This is done primarily via loosening its type strictness:
12227
12228@itemize @bullet
12229@item
12230Unlike in standard Modula-2, pointer constants can be formed by
12231integers. This allows you to modify pointer variables during
12232debugging. (In standard Modula-2, the actual address contained in a
12233pointer variable is hidden from you; it can only be modified
12234through direct assignment to another pointer variable or expression that
12235returned a pointer.)
12236
12237@item
12238C escape sequences can be used in strings and characters to represent
12239non-printable characters. @value{GDBN} prints out strings with these
12240escape sequences embedded. Single non-printable characters are
12241printed using the @samp{CHR(@var{nnn})} format.
12242
12243@item
12244The assignment operator (@code{:=}) returns the value of its right-hand
12245argument.
12246
12247@item
12248All built-in procedures both modify @emph{and} return their argument.
12249@end itemize
12250
6d2ebf8b 12251@node M2 Checks
79a6e687 12252@subsubsection Modula-2 Type and Range Checks
c906108c
SS
12253@cindex Modula-2 checks
12254
12255@quotation
12256@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
12257range checking.
12258@end quotation
12259@c FIXME remove warning when type/range checks added
12260
12261@value{GDBN} considers two Modula-2 variables type equivalent if:
12262
12263@itemize @bullet
12264@item
12265They are of types that have been declared equivalent via a @code{TYPE
12266@var{t1} = @var{t2}} statement
12267
12268@item
12269They have been declared on the same line. (Note: This is true of the
12270@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
12271@end itemize
12272
12273As long as type checking is enabled, any attempt to combine variables
12274whose types are not equivalent is an error.
12275
12276Range checking is done on all mathematical operations, assignment, array
12277index bounds, and all built-in functions and procedures.
12278
6d2ebf8b 12279@node M2 Scope
79a6e687 12280@subsubsection The Scope Operators @code{::} and @code{.}
c906108c 12281@cindex scope
41afff9a 12282@cindex @code{.}, Modula-2 scope operator
c906108c
SS
12283@cindex colon, doubled as scope operator
12284@ifinfo
41afff9a 12285@vindex colon-colon@r{, in Modula-2}
c906108c
SS
12286@c Info cannot handle :: but TeX can.
12287@end ifinfo
a67ec3f4 12288@ifnotinfo
41afff9a 12289@vindex ::@r{, in Modula-2}
a67ec3f4 12290@end ifnotinfo
c906108c
SS
12291
12292There are a few subtle differences between the Modula-2 scope operator
12293(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
12294similar syntax:
12295
474c8240 12296@smallexample
c906108c
SS
12297
12298@var{module} . @var{id}
12299@var{scope} :: @var{id}
474c8240 12300@end smallexample
c906108c
SS
12301
12302@noindent
12303where @var{scope} is the name of a module or a procedure,
12304@var{module} the name of a module, and @var{id} is any declared
12305identifier within your program, except another module.
12306
12307Using the @code{::} operator makes @value{GDBN} search the scope
12308specified by @var{scope} for the identifier @var{id}. If it is not
12309found in the specified scope, then @value{GDBN} searches all scopes
12310enclosing the one specified by @var{scope}.
12311
12312Using the @code{.} operator makes @value{GDBN} search the current scope for
12313the identifier specified by @var{id} that was imported from the
12314definition module specified by @var{module}. With this operator, it is
12315an error if the identifier @var{id} was not imported from definition
12316module @var{module}, or if @var{id} is not an identifier in
12317@var{module}.
12318
6d2ebf8b 12319@node GDB/M2
c906108c
SS
12320@subsubsection @value{GDBN} and Modula-2
12321
12322Some @value{GDBN} commands have little use when debugging Modula-2 programs.
12323Five subcommands of @code{set print} and @code{show print} apply
b37052ae 12324specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 12325@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 12326apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
12327analogue in Modula-2.
12328
12329The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 12330with any language, is not useful with Modula-2. Its
c906108c 12331intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 12332created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 12333address can be specified by an integral constant, the construct
d4f3574e 12334@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
12335
12336@cindex @code{#} in Modula-2
12337In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
12338interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 12339
e07c999f
PH
12340@node Ada
12341@subsection Ada
12342@cindex Ada
12343
12344The extensions made to @value{GDBN} for Ada only support
12345output from the @sc{gnu} Ada (GNAT) compiler.
12346Other Ada compilers are not currently supported, and
12347attempting to debug executables produced by them is most likely
12348to be difficult.
12349
12350
12351@cindex expressions in Ada
12352@menu
12353* Ada Mode Intro:: General remarks on the Ada syntax
12354 and semantics supported by Ada mode
12355 in @value{GDBN}.
12356* Omissions from Ada:: Restrictions on the Ada expression syntax.
12357* Additions to Ada:: Extensions of the Ada expression syntax.
12358* Stopping Before Main Program:: Debugging the program during elaboration.
20924a55
JB
12359* Ada Tasks:: Listing and setting breakpoints in tasks.
12360* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files
e07c999f
PH
12361* Ada Glitches:: Known peculiarities of Ada mode.
12362@end menu
12363
12364@node Ada Mode Intro
12365@subsubsection Introduction
12366@cindex Ada mode, general
12367
12368The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression
12369syntax, with some extensions.
12370The philosophy behind the design of this subset is
12371
12372@itemize @bullet
12373@item
12374That @value{GDBN} should provide basic literals and access to operations for
12375arithmetic, dereferencing, field selection, indexing, and subprogram calls,
12376leaving more sophisticated computations to subprograms written into the
12377program (which therefore may be called from @value{GDBN}).
12378
12379@item
12380That type safety and strict adherence to Ada language restrictions
12381are not particularly important to the @value{GDBN} user.
12382
12383@item
12384That brevity is important to the @value{GDBN} user.
12385@end itemize
12386
f3a2dd1a
JB
12387Thus, for brevity, the debugger acts as if all names declared in
12388user-written packages are directly visible, even if they are not visible
12389according to Ada rules, thus making it unnecessary to fully qualify most
12390names with their packages, regardless of context. Where this causes
12391ambiguity, @value{GDBN} asks the user's intent.
e07c999f
PH
12392
12393The debugger will start in Ada mode if it detects an Ada main program.
12394As for other languages, it will enter Ada mode when stopped in a program that
12395was translated from an Ada source file.
12396
12397While in Ada mode, you may use `@t{--}' for comments. This is useful
12398mostly for documenting command files. The standard @value{GDBN} comment
12399(@samp{#}) still works at the beginning of a line in Ada mode, but not in the
12400middle (to allow based literals).
12401
12402The debugger supports limited overloading. Given a subprogram call in which
12403the function symbol has multiple definitions, it will use the number of
12404actual parameters and some information about their types to attempt to narrow
12405the set of definitions. It also makes very limited use of context, preferring
12406procedures to functions in the context of the @code{call} command, and
12407functions to procedures elsewhere.
12408
12409@node Omissions from Ada
12410@subsubsection Omissions from Ada
12411@cindex Ada, omissions from
12412
12413Here are the notable omissions from the subset:
12414
12415@itemize @bullet
12416@item
12417Only a subset of the attributes are supported:
12418
12419@itemize @minus
12420@item
12421@t{'First}, @t{'Last}, and @t{'Length}
12422 on array objects (not on types and subtypes).
12423
12424@item
12425@t{'Min} and @t{'Max}.
12426
12427@item
12428@t{'Pos} and @t{'Val}.
12429
12430@item
12431@t{'Tag}.
12432
12433@item
12434@t{'Range} on array objects (not subtypes), but only as the right
12435operand of the membership (@code{in}) operator.
12436
12437@item
12438@t{'Access}, @t{'Unchecked_Access}, and
12439@t{'Unrestricted_Access} (a GNAT extension).
12440
12441@item
12442@t{'Address}.
12443@end itemize
12444
12445@item
12446The names in
12447@code{Characters.Latin_1} are not available and
12448concatenation is not implemented. Thus, escape characters in strings are
12449not currently available.
12450
12451@item
12452Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise
12453equality of representations. They will generally work correctly
12454for strings and arrays whose elements have integer or enumeration types.
12455They may not work correctly for arrays whose element
12456types have user-defined equality, for arrays of real values
12457(in particular, IEEE-conformant floating point, because of negative
12458zeroes and NaNs), and for arrays whose elements contain unused bits with
12459indeterminate values.
12460
12461@item
12462The other component-by-component array operations (@code{and}, @code{or},
12463@code{xor}, @code{not}, and relational tests other than equality)
12464are not implemented.
12465
12466@item
860701dc
PH
12467@cindex array aggregates (Ada)
12468@cindex record aggregates (Ada)
12469@cindex aggregates (Ada)
12470There is limited support for array and record aggregates. They are
12471permitted only on the right sides of assignments, as in these examples:
12472
12473@smallexample
077e0a52
JB
12474(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6)
12475(@value{GDBP}) set An_Array := (1, others => 0)
12476(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
12477(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
12478(@value{GDBP}) set A_Record := (1, "Peter", True);
12479(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True)
860701dc
PH
12480@end smallexample
12481
12482Changing a
12483discriminant's value by assigning an aggregate has an
12484undefined effect if that discriminant is used within the record.
12485However, you can first modify discriminants by directly assigning to
12486them (which normally would not be allowed in Ada), and then performing an
12487aggregate assignment. For example, given a variable @code{A_Rec}
12488declared to have a type such as:
12489
12490@smallexample
12491type Rec (Len : Small_Integer := 0) is record
12492 Id : Integer;
12493 Vals : IntArray (1 .. Len);
12494end record;
12495@end smallexample
12496
12497you can assign a value with a different size of @code{Vals} with two
12498assignments:
12499
12500@smallexample
077e0a52
JB
12501(@value{GDBP}) set A_Rec.Len := 4
12502(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
860701dc
PH
12503@end smallexample
12504
12505As this example also illustrates, @value{GDBN} is very loose about the usual
12506rules concerning aggregates. You may leave out some of the
12507components of an array or record aggregate (such as the @code{Len}
12508component in the assignment to @code{A_Rec} above); they will retain their
12509original values upon assignment. You may freely use dynamic values as
12510indices in component associations. You may even use overlapping or
12511redundant component associations, although which component values are
12512assigned in such cases is not defined.
e07c999f
PH
12513
12514@item
12515Calls to dispatching subprograms are not implemented.
12516
12517@item
12518The overloading algorithm is much more limited (i.e., less selective)
ae21e955
BW
12519than that of real Ada. It makes only limited use of the context in
12520which a subexpression appears to resolve its meaning, and it is much
12521looser in its rules for allowing type matches. As a result, some
12522function calls will be ambiguous, and the user will be asked to choose
12523the proper resolution.
e07c999f
PH
12524
12525@item
12526The @code{new} operator is not implemented.
12527
12528@item
12529Entry calls are not implemented.
12530
12531@item
12532Aside from printing, arithmetic operations on the native VAX floating-point
12533formats are not supported.
12534
12535@item
12536It is not possible to slice a packed array.
158c7665
PH
12537
12538@item
12539The names @code{True} and @code{False}, when not part of a qualified name,
12540are interpreted as if implicitly prefixed by @code{Standard}, regardless of
12541context.
12542Should your program
12543redefine these names in a package or procedure (at best a dubious practice),
12544you will have to use fully qualified names to access their new definitions.
e07c999f
PH
12545@end itemize
12546
12547@node Additions to Ada
12548@subsubsection Additions to Ada
12549@cindex Ada, deviations from
12550
12551As it does for other languages, @value{GDBN} makes certain generic
12552extensions to Ada (@pxref{Expressions}):
12553
12554@itemize @bullet
12555@item
ae21e955
BW
12556If the expression @var{E} is a variable residing in memory (typically
12557a local variable or array element) and @var{N} is a positive integer,
12558then @code{@var{E}@@@var{N}} displays the values of @var{E} and the
12559@var{N}-1 adjacent variables following it in memory as an array. In
12560Ada, this operator is generally not necessary, since its prime use is
12561in displaying parts of an array, and slicing will usually do this in
12562Ada. However, there are occasional uses when debugging programs in
12563which certain debugging information has been optimized away.
e07c999f
PH
12564
12565@item
ae21e955
BW
12566@code{@var{B}::@var{var}} means ``the variable named @var{var} that
12567appears in function or file @var{B}.'' When @var{B} is a file name,
12568you must typically surround it in single quotes.
e07c999f
PH
12569
12570@item
12571The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type
12572@var{type} that appears at address @var{addr}.''
12573
12574@item
12575A name starting with @samp{$} is a convenience variable
12576(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}).
12577@end itemize
12578
ae21e955
BW
12579In addition, @value{GDBN} provides a few other shortcuts and outright
12580additions specific to Ada:
e07c999f
PH
12581
12582@itemize @bullet
12583@item
12584The assignment statement is allowed as an expression, returning
12585its right-hand operand as its value. Thus, you may enter
12586
12587@smallexample
077e0a52
JB
12588(@value{GDBP}) set x := y + 3
12589(@value{GDBP}) print A(tmp := y + 1)
e07c999f
PH
12590@end smallexample
12591
12592@item
12593The semicolon is allowed as an ``operator,'' returning as its value
12594the value of its right-hand operand.
12595This allows, for example,
12596complex conditional breaks:
12597
12598@smallexample
077e0a52
JB
12599(@value{GDBP}) break f
12600(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100)
e07c999f
PH
12601@end smallexample
12602
12603@item
12604Rather than use catenation and symbolic character names to introduce special
12605characters into strings, one may instead use a special bracket notation,
12606which is also used to print strings. A sequence of characters of the form
12607@samp{["@var{XX}"]} within a string or character literal denotes the
12608(single) character whose numeric encoding is @var{XX} in hexadecimal. The
12609sequence of characters @samp{["""]} also denotes a single quotation mark
12610in strings. For example,
12611@smallexample
12612 "One line.["0a"]Next line.["0a"]"
12613@end smallexample
12614@noindent
ae21e955
BW
12615contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF})
12616after each period.
e07c999f
PH
12617
12618@item
12619The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and
12620@t{'Max} is optional (and is ignored in any case). For example, it is valid
12621to write
12622
12623@smallexample
077e0a52 12624(@value{GDBP}) print 'max(x, y)
e07c999f
PH
12625@end smallexample
12626
12627@item
12628When printing arrays, @value{GDBN} uses positional notation when the
12629array has a lower bound of 1, and uses a modified named notation otherwise.
ae21e955
BW
12630For example, a one-dimensional array of three integers with a lower bound
12631of 3 might print as
e07c999f
PH
12632
12633@smallexample
12634(3 => 10, 17, 1)
12635@end smallexample
12636
12637@noindent
12638That is, in contrast to valid Ada, only the first component has a @code{=>}
12639clause.
12640
12641@item
12642You may abbreviate attributes in expressions with any unique,
12643multi-character subsequence of
12644their names (an exact match gets preference).
12645For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh}
12646in place of @t{a'length}.
12647
12648@item
12649@cindex quoting Ada internal identifiers
12650Since Ada is case-insensitive, the debugger normally maps identifiers you type
12651to lower case. The GNAT compiler uses upper-case characters for
12652some of its internal identifiers, which are normally of no interest to users.
12653For the rare occasions when you actually have to look at them,
12654enclose them in angle brackets to avoid the lower-case mapping.
12655For example,
12656@smallexample
077e0a52 12657(@value{GDBP}) print <JMPBUF_SAVE>[0]
e07c999f
PH
12658@end smallexample
12659
12660@item
12661Printing an object of class-wide type or dereferencing an
12662access-to-class-wide value will display all the components of the object's
12663specific type (as indicated by its run-time tag). Likewise, component
12664selection on such a value will operate on the specific type of the
12665object.
12666
12667@end itemize
12668
12669@node Stopping Before Main Program
12670@subsubsection Stopping at the Very Beginning
12671
12672@cindex breakpointing Ada elaboration code
12673It is sometimes necessary to debug the program during elaboration, and
12674before reaching the main procedure.
12675As defined in the Ada Reference
12676Manual, the elaboration code is invoked from a procedure called
12677@code{adainit}. To run your program up to the beginning of
12678elaboration, simply use the following two commands:
12679@code{tbreak adainit} and @code{run}.
12680
20924a55
JB
12681@node Ada Tasks
12682@subsubsection Extensions for Ada Tasks
12683@cindex Ada, tasking
12684
12685Support for Ada tasks is analogous to that for threads (@pxref{Threads}).
12686@value{GDBN} provides the following task-related commands:
12687
12688@table @code
12689@kindex info tasks
12690@item info tasks
12691This command shows a list of current Ada tasks, as in the following example:
12692
12693
12694@smallexample
12695@iftex
12696@leftskip=0.5cm
12697@end iftex
12698(@value{GDBP}) info tasks
12699 ID TID P-ID Pri State Name
12700 1 8088000 0 15 Child Activation Wait main_task
12701 2 80a4000 1 15 Accept Statement b
12702 3 809a800 1 15 Child Activation Wait a
32cd1edc 12703* 4 80ae800 3 15 Runnable c
20924a55
JB
12704
12705@end smallexample
12706
12707@noindent
12708In this listing, the asterisk before the last task indicates it to be the
12709task currently being inspected.
12710
12711@table @asis
12712@item ID
12713Represents @value{GDBN}'s internal task number.
12714
12715@item TID
12716The Ada task ID.
12717
12718@item P-ID
12719The parent's task ID (@value{GDBN}'s internal task number).
12720
12721@item Pri
12722The base priority of the task.
12723
12724@item State
12725Current state of the task.
12726
12727@table @code
12728@item Unactivated
12729The task has been created but has not been activated. It cannot be
12730executing.
12731
20924a55
JB
12732@item Runnable
12733The task is not blocked for any reason known to Ada. (It may be waiting
12734for a mutex, though.) It is conceptually "executing" in normal mode.
12735
12736@item Terminated
12737The task is terminated, in the sense of ARM 9.3 (5). Any dependents
12738that were waiting on terminate alternatives have been awakened and have
12739terminated themselves.
12740
12741@item Child Activation Wait
12742The task is waiting for created tasks to complete activation.
12743
12744@item Accept Statement
12745The task is waiting on an accept or selective wait statement.
12746
12747@item Waiting on entry call
12748The task is waiting on an entry call.
12749
12750@item Async Select Wait
12751The task is waiting to start the abortable part of an asynchronous
12752select statement.
12753
12754@item Delay Sleep
12755The task is waiting on a select statement with only a delay
12756alternative open.
12757
12758@item Child Termination Wait
12759The task is sleeping having completed a master within itself, and is
12760waiting for the tasks dependent on that master to become terminated or
12761waiting on a terminate Phase.
12762
12763@item Wait Child in Term Alt
12764The task is sleeping waiting for tasks on terminate alternatives to
12765finish terminating.
12766
12767@item Accepting RV with @var{taskno}
12768The task is accepting a rendez-vous with the task @var{taskno}.
12769@end table
12770
12771@item Name
12772Name of the task in the program.
12773
12774@end table
12775
12776@kindex info task @var{taskno}
12777@item info task @var{taskno}
12778This command shows detailled informations on the specified task, as in
12779the following example:
12780@smallexample
12781@iftex
12782@leftskip=0.5cm
12783@end iftex
12784(@value{GDBP}) info tasks
12785 ID TID P-ID Pri State Name
12786 1 8077880 0 15 Child Activation Wait main_task
32cd1edc 12787* 2 807c468 1 15 Runnable task_1
20924a55
JB
12788(@value{GDBP}) info task 2
12789Ada Task: 0x807c468
12790Name: task_1
12791Thread: 0x807f378
12792Parent: 1 (main_task)
12793Base Priority: 15
12794State: Runnable
12795@end smallexample
12796
12797@item task
12798@kindex task@r{ (Ada)}
12799@cindex current Ada task ID
12800This command prints the ID of the current task.
12801
12802@smallexample
12803@iftex
12804@leftskip=0.5cm
12805@end iftex
12806(@value{GDBP}) info tasks
12807 ID TID P-ID Pri State Name
12808 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 12809* 2 807c458 1 15 Runnable t
20924a55
JB
12810(@value{GDBP}) task
12811[Current task is 2]
12812@end smallexample
12813
12814@item task @var{taskno}
12815@cindex Ada task switching
12816This command is like the @code{thread @var{threadno}}
12817command (@pxref{Threads}). It switches the context of debugging
12818from the current task to the given task.
12819
12820@smallexample
12821@iftex
12822@leftskip=0.5cm
12823@end iftex
12824(@value{GDBP}) info tasks
12825 ID TID P-ID Pri State Name
12826 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 12827* 2 807c458 1 15 Runnable t
20924a55
JB
12828(@value{GDBP}) task 1
12829[Switching to task 1]
12830#0 0x8067726 in pthread_cond_wait ()
12831(@value{GDBP}) bt
12832#0 0x8067726 in pthread_cond_wait ()
12833#1 0x8056714 in system.os_interface.pthread_cond_wait ()
12834#2 0x805cb63 in system.task_primitives.operations.sleep ()
12835#3 0x806153e in system.tasking.stages.activate_tasks ()
12836#4 0x804aacc in un () at un.adb:5
12837@end smallexample
12838
45ac276d
JB
12839@item break @var{linespec} task @var{taskno}
12840@itemx break @var{linespec} task @var{taskno} if @dots{}
12841@cindex breakpoints and tasks, in Ada
12842@cindex task breakpoints, in Ada
12843@kindex break @dots{} task @var{taskno}@r{ (Ada)}
12844These commands are like the @code{break @dots{} thread @dots{}}
12845command (@pxref{Thread Stops}).
12846@var{linespec} specifies source lines, as described
12847in @ref{Specify Location}.
12848
12849Use the qualifier @samp{task @var{taskno}} with a breakpoint command
12850to specify that you only want @value{GDBN} to stop the program when a
12851particular Ada task reaches this breakpoint. @var{taskno} is one of the
12852numeric task identifiers assigned by @value{GDBN}, shown in the first
12853column of the @samp{info tasks} display.
12854
12855If you do not specify @samp{task @var{taskno}} when you set a
12856breakpoint, the breakpoint applies to @emph{all} tasks of your
12857program.
12858
12859You can use the @code{task} qualifier on conditional breakpoints as
12860well; in this case, place @samp{task @var{taskno}} before the
12861breakpoint condition (before the @code{if}).
12862
12863For example,
12864
12865@smallexample
12866@iftex
12867@leftskip=0.5cm
12868@end iftex
12869(@value{GDBP}) info tasks
12870 ID TID P-ID Pri State Name
12871 1 140022020 0 15 Child Activation Wait main_task
12872 2 140045060 1 15 Accept/Select Wait t2
12873 3 140044840 1 15 Runnable t1
12874* 4 140056040 1 15 Runnable t3
12875(@value{GDBP}) b 15 task 2
12876Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15.
12877(@value{GDBP}) cont
12878Continuing.
12879task # 1 running
12880task # 2 running
12881
12882Breakpoint 5, test_task_debug () at test_task_debug.adb:15
1288315 flush;
12884(@value{GDBP}) info tasks
12885 ID TID P-ID Pri State Name
12886 1 140022020 0 15 Child Activation Wait main_task
12887* 2 140045060 1 15 Runnable t2
12888 3 140044840 1 15 Runnable t1
12889 4 140056040 1 15 Delay Sleep t3
12890@end smallexample
20924a55
JB
12891@end table
12892
12893@node Ada Tasks and Core Files
12894@subsubsection Tasking Support when Debugging Core Files
12895@cindex Ada tasking and core file debugging
12896
12897When inspecting a core file, as opposed to debugging a live program,
12898tasking support may be limited or even unavailable, depending on
12899the platform being used.
12900For instance, on x86-linux, the list of tasks is available, but task
12901switching is not supported. On Tru64, however, task switching will work
12902as usual.
12903
12904On certain platforms, including Tru64, the debugger needs to perform some
12905memory writes in order to provide Ada tasking support. When inspecting
12906a core file, this means that the core file must be opened with read-write
12907privileges, using the command @samp{"set write on"} (@pxref{Patching}).
12908Under these circumstances, you should make a backup copy of the core
12909file before inspecting it with @value{GDBN}.
12910
e07c999f
PH
12911@node Ada Glitches
12912@subsubsection Known Peculiarities of Ada Mode
12913@cindex Ada, problems
12914
12915Besides the omissions listed previously (@pxref{Omissions from Ada}),
12916we know of several problems with and limitations of Ada mode in
12917@value{GDBN},
12918some of which will be fixed with planned future releases of the debugger
12919and the GNU Ada compiler.
12920
12921@itemize @bullet
12922@item
12923Currently, the debugger
12924has insufficient information to determine whether certain pointers represent
12925pointers to objects or the objects themselves.
12926Thus, the user may have to tack an extra @code{.all} after an expression
12927to get it printed properly.
12928
12929@item
12930Static constants that the compiler chooses not to materialize as objects in
12931storage are invisible to the debugger.
12932
12933@item
12934Named parameter associations in function argument lists are ignored (the
12935argument lists are treated as positional).
12936
12937@item
12938Many useful library packages are currently invisible to the debugger.
12939
12940@item
12941Fixed-point arithmetic, conversions, input, and output is carried out using
12942floating-point arithmetic, and may give results that only approximate those on
12943the host machine.
12944
e07c999f
PH
12945@item
12946The GNAT compiler never generates the prefix @code{Standard} for any of
12947the standard symbols defined by the Ada language. @value{GDBN} knows about
12948this: it will strip the prefix from names when you use it, and will never
12949look for a name you have so qualified among local symbols, nor match against
12950symbols in other packages or subprograms. If you have
12951defined entities anywhere in your program other than parameters and
12952local variables whose simple names match names in @code{Standard},
12953GNAT's lack of qualification here can cause confusion. When this happens,
12954you can usually resolve the confusion
12955by qualifying the problematic names with package
12956@code{Standard} explicitly.
12957@end itemize
12958
95433b34
JB
12959Older versions of the compiler sometimes generate erroneous debugging
12960information, resulting in the debugger incorrectly printing the value
12961of affected entities. In some cases, the debugger is able to work
12962around an issue automatically. In other cases, the debugger is able
12963to work around the issue, but the work-around has to be specifically
12964enabled.
12965
12966@kindex set ada trust-PAD-over-XVS
12967@kindex show ada trust-PAD-over-XVS
12968@table @code
12969
12970@item set ada trust-PAD-over-XVS on
12971Configure GDB to strictly follow the GNAT encoding when computing the
12972value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS}
12973types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for
12974a complete description of the encoding used by the GNAT compiler).
12975This is the default.
12976
12977@item set ada trust-PAD-over-XVS off
12978This is related to the encoding using by the GNAT compiler. If @value{GDBN}
12979sometimes prints the wrong value for certain entities, changing @code{ada
12980trust-PAD-over-XVS} to @code{off} activates a work-around which may fix
12981the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to
12982@code{off}, but this incurs a slight performance penalty, so it is
12983recommended to leave this setting to @code{on} unless necessary.
12984
12985@end table
12986
79a6e687
BW
12987@node Unsupported Languages
12988@section Unsupported Languages
4e562065
JB
12989
12990@cindex unsupported languages
12991@cindex minimal language
12992In addition to the other fully-supported programming languages,
12993@value{GDBN} also provides a pseudo-language, called @code{minimal}.
12994It does not represent a real programming language, but provides a set
12995of capabilities close to what the C or assembly languages provide.
12996This should allow most simple operations to be performed while debugging
12997an application that uses a language currently not supported by @value{GDBN}.
12998
12999If the language is set to @code{auto}, @value{GDBN} will automatically
13000select this language if the current frame corresponds to an unsupported
13001language.
13002
6d2ebf8b 13003@node Symbols
c906108c
SS
13004@chapter Examining the Symbol Table
13005
d4f3574e 13006The commands described in this chapter allow you to inquire about the
c906108c
SS
13007symbols (names of variables, functions and types) defined in your
13008program. This information is inherent in the text of your program and
13009does not change as your program executes. @value{GDBN} finds it in your
13010program's symbol table, in the file indicated when you started @value{GDBN}
79a6e687
BW
13011(@pxref{File Options, ,Choosing Files}), or by one of the
13012file-management commands (@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
13013
13014@cindex symbol names
13015@cindex names of symbols
13016@cindex quoting names
13017Occasionally, you may need to refer to symbols that contain unusual
13018characters, which @value{GDBN} ordinarily treats as word delimiters. The
13019most frequent case is in referring to static variables in other
79a6e687 13020source files (@pxref{Variables,,Program Variables}). File names
c906108c
SS
13021are recorded in object files as debugging symbols, but @value{GDBN} would
13022ordinarily parse a typical file name, like @file{foo.c}, as the three words
13023@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
13024@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
13025
474c8240 13026@smallexample
c906108c 13027p 'foo.c'::x
474c8240 13028@end smallexample
c906108c
SS
13029
13030@noindent
13031looks up the value of @code{x} in the scope of the file @file{foo.c}.
13032
13033@table @code
a8f24a35
EZ
13034@cindex case-insensitive symbol names
13035@cindex case sensitivity in symbol names
13036@kindex set case-sensitive
13037@item set case-sensitive on
13038@itemx set case-sensitive off
13039@itemx set case-sensitive auto
13040Normally, when @value{GDBN} looks up symbols, it matches their names
13041with case sensitivity determined by the current source language.
13042Occasionally, you may wish to control that. The command @code{set
13043case-sensitive} lets you do that by specifying @code{on} for
13044case-sensitive matches or @code{off} for case-insensitive ones. If
13045you specify @code{auto}, case sensitivity is reset to the default
13046suitable for the source language. The default is case-sensitive
13047matches for all languages except for Fortran, for which the default is
13048case-insensitive matches.
13049
9c16f35a
EZ
13050@kindex show case-sensitive
13051@item show case-sensitive
a8f24a35
EZ
13052This command shows the current setting of case sensitivity for symbols
13053lookups.
13054
c906108c 13055@kindex info address
b37052ae 13056@cindex address of a symbol
c906108c
SS
13057@item info address @var{symbol}
13058Describe where the data for @var{symbol} is stored. For a register
13059variable, this says which register it is kept in. For a non-register
13060local variable, this prints the stack-frame offset at which the variable
13061is always stored.
13062
13063Note the contrast with @samp{print &@var{symbol}}, which does not work
13064at all for a register variable, and for a stack local variable prints
13065the exact address of the current instantiation of the variable.
13066
3d67e040 13067@kindex info symbol
b37052ae 13068@cindex symbol from address
9c16f35a 13069@cindex closest symbol and offset for an address
3d67e040
EZ
13070@item info symbol @var{addr}
13071Print the name of a symbol which is stored at the address @var{addr}.
13072If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
13073nearest symbol and an offset from it:
13074
474c8240 13075@smallexample
3d67e040
EZ
13076(@value{GDBP}) info symbol 0x54320
13077_initialize_vx + 396 in section .text
474c8240 13078@end smallexample
3d67e040
EZ
13079
13080@noindent
13081This is the opposite of the @code{info address} command. You can use
13082it to find out the name of a variable or a function given its address.
13083
c14c28ba
PP
13084For dynamically linked executables, the name of executable or shared
13085library containing the symbol is also printed:
13086
13087@smallexample
13088(@value{GDBP}) info symbol 0x400225
13089_start + 5 in section .text of /tmp/a.out
13090(@value{GDBP}) info symbol 0x2aaaac2811cf
13091__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6
13092@end smallexample
13093
c906108c 13094@kindex whatis
62f3a2ba
FF
13095@item whatis [@var{arg}]
13096Print the data type of @var{arg}, which can be either an expression or
13097a data type. With no argument, print the data type of @code{$}, the
13098last value in the value history. If @var{arg} is an expression, it is
13099not actually evaluated, and any side-effecting operations (such as
13100assignments or function calls) inside it do not take place. If
13101@var{arg} is a type name, it may be the name of a type or typedef, or
13102for C code it may have the form @samp{class @var{class-name}},
13103@samp{struct @var{struct-tag}}, @samp{union @var{union-tag}} or
13104@samp{enum @var{enum-tag}}.
c906108c
SS
13105@xref{Expressions, ,Expressions}.
13106
c906108c 13107@kindex ptype
62f3a2ba
FF
13108@item ptype [@var{arg}]
13109@code{ptype} accepts the same arguments as @code{whatis}, but prints a
13110detailed description of the type, instead of just the name of the type.
13111@xref{Expressions, ,Expressions}.
c906108c
SS
13112
13113For example, for this variable declaration:
13114
474c8240 13115@smallexample
c906108c 13116struct complex @{double real; double imag;@} v;
474c8240 13117@end smallexample
c906108c
SS
13118
13119@noindent
13120the two commands give this output:
13121
474c8240 13122@smallexample
c906108c
SS
13123@group
13124(@value{GDBP}) whatis v
13125type = struct complex
13126(@value{GDBP}) ptype v
13127type = struct complex @{
13128 double real;
13129 double imag;
13130@}
13131@end group
474c8240 13132@end smallexample
c906108c
SS
13133
13134@noindent
13135As with @code{whatis}, using @code{ptype} without an argument refers to
13136the type of @code{$}, the last value in the value history.
13137
ab1adacd
EZ
13138@cindex incomplete type
13139Sometimes, programs use opaque data types or incomplete specifications
13140of complex data structure. If the debug information included in the
13141program does not allow @value{GDBN} to display a full declaration of
13142the data type, it will say @samp{<incomplete type>}. For example,
13143given these declarations:
13144
13145@smallexample
13146 struct foo;
13147 struct foo *fooptr;
13148@end smallexample
13149
13150@noindent
13151but no definition for @code{struct foo} itself, @value{GDBN} will say:
13152
13153@smallexample
ddb50cd7 13154 (@value{GDBP}) ptype foo
ab1adacd
EZ
13155 $1 = <incomplete type>
13156@end smallexample
13157
13158@noindent
13159``Incomplete type'' is C terminology for data types that are not
13160completely specified.
13161
c906108c
SS
13162@kindex info types
13163@item info types @var{regexp}
13164@itemx info types
09d4efe1
EZ
13165Print a brief description of all types whose names match the regular
13166expression @var{regexp} (or all types in your program, if you supply
13167no argument). Each complete typename is matched as though it were a
13168complete line; thus, @samp{i type value} gives information on all
13169types in your program whose names include the string @code{value}, but
13170@samp{i type ^value$} gives information only on types whose complete
13171name is @code{value}.
c906108c
SS
13172
13173This command differs from @code{ptype} in two ways: first, like
13174@code{whatis}, it does not print a detailed description; second, it
13175lists all source files where a type is defined.
13176
b37052ae
EZ
13177@kindex info scope
13178@cindex local variables
09d4efe1 13179@item info scope @var{location}
b37052ae 13180List all the variables local to a particular scope. This command
09d4efe1
EZ
13181accepts a @var{location} argument---a function name, a source line, or
13182an address preceded by a @samp{*}, and prints all the variables local
2a25a5ba
EZ
13183to the scope defined by that location. (@xref{Specify Location}, for
13184details about supported forms of @var{location}.) For example:
b37052ae
EZ
13185
13186@smallexample
13187(@value{GDBP}) @b{info scope command_line_handler}
13188Scope for command_line_handler:
13189Symbol rl is an argument at stack/frame offset 8, length 4.
13190Symbol linebuffer is in static storage at address 0x150a18, length 4.
13191Symbol linelength is in static storage at address 0x150a1c, length 4.
13192Symbol p is a local variable in register $esi, length 4.
13193Symbol p1 is a local variable in register $ebx, length 4.
13194Symbol nline is a local variable in register $edx, length 4.
13195Symbol repeat is a local variable at frame offset -8, length 4.
13196@end smallexample
13197
f5c37c66
EZ
13198@noindent
13199This command is especially useful for determining what data to collect
13200during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
13201collect}.
13202
c906108c
SS
13203@kindex info source
13204@item info source
919d772c
JB
13205Show information about the current source file---that is, the source file for
13206the function containing the current point of execution:
13207@itemize @bullet
13208@item
13209the name of the source file, and the directory containing it,
13210@item
13211the directory it was compiled in,
13212@item
13213its length, in lines,
13214@item
13215which programming language it is written in,
13216@item
13217whether the executable includes debugging information for that file, and
13218if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
13219@item
13220whether the debugging information includes information about
13221preprocessor macros.
13222@end itemize
13223
c906108c
SS
13224
13225@kindex info sources
13226@item info sources
13227Print the names of all source files in your program for which there is
13228debugging information, organized into two lists: files whose symbols
13229have already been read, and files whose symbols will be read when needed.
13230
13231@kindex info functions
13232@item info functions
13233Print the names and data types of all defined functions.
13234
13235@item info functions @var{regexp}
13236Print the names and data types of all defined functions
13237whose names contain a match for regular expression @var{regexp}.
13238Thus, @samp{info fun step} finds all functions whose names
13239include @code{step}; @samp{info fun ^step} finds those whose names
b383017d 13240start with @code{step}. If a function name contains characters
c1468174 13241that conflict with the regular expression language (e.g.@:
1c5dfdad 13242@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
13243
13244@kindex info variables
13245@item info variables
0fe7935b 13246Print the names and data types of all variables that are defined
6ca652b0 13247outside of functions (i.e.@: excluding local variables).
c906108c
SS
13248
13249@item info variables @var{regexp}
13250Print the names and data types of all variables (except for local
13251variables) whose names contain a match for regular expression
13252@var{regexp}.
13253
b37303ee 13254@kindex info classes
721c2651 13255@cindex Objective-C, classes and selectors
b37303ee
AF
13256@item info classes
13257@itemx info classes @var{regexp}
13258Display all Objective-C classes in your program, or
13259(with the @var{regexp} argument) all those matching a particular regular
13260expression.
13261
13262@kindex info selectors
13263@item info selectors
13264@itemx info selectors @var{regexp}
13265Display all Objective-C selectors in your program, or
13266(with the @var{regexp} argument) all those matching a particular regular
13267expression.
13268
c906108c
SS
13269@ignore
13270This was never implemented.
13271@kindex info methods
13272@item info methods
13273@itemx info methods @var{regexp}
13274The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
13275methods within C@t{++} program, or (with the @var{regexp} argument) a
13276specific set of methods found in the various C@t{++} classes. Many
13277C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
13278from the @code{ptype} command can be overwhelming and hard to use. The
13279@code{info-methods} command filters the methods, printing only those
13280which match the regular-expression @var{regexp}.
13281@end ignore
13282
c906108c
SS
13283@cindex reloading symbols
13284Some systems allow individual object files that make up your program to
7a292a7a
SS
13285be replaced without stopping and restarting your program. For example,
13286in VxWorks you can simply recompile a defective object file and keep on
13287running. If you are running on one of these systems, you can allow
13288@value{GDBN} to reload the symbols for automatically relinked modules:
c906108c
SS
13289
13290@table @code
13291@kindex set symbol-reloading
13292@item set symbol-reloading on
13293Replace symbol definitions for the corresponding source file when an
13294object file with a particular name is seen again.
13295
13296@item set symbol-reloading off
6d2ebf8b
SS
13297Do not replace symbol definitions when encountering object files of the
13298same name more than once. This is the default state; if you are not
13299running on a system that permits automatic relinking of modules, you
13300should leave @code{symbol-reloading} off, since otherwise @value{GDBN}
13301may discard symbols when linking large programs, that may contain
13302several modules (from different directories or libraries) with the same
13303name.
c906108c
SS
13304
13305@kindex show symbol-reloading
13306@item show symbol-reloading
13307Show the current @code{on} or @code{off} setting.
13308@end table
c906108c 13309
9c16f35a 13310@cindex opaque data types
c906108c
SS
13311@kindex set opaque-type-resolution
13312@item set opaque-type-resolution on
13313Tell @value{GDBN} to resolve opaque types. An opaque type is a type
13314declared as a pointer to a @code{struct}, @code{class}, or
13315@code{union}---for example, @code{struct MyType *}---that is used in one
13316source file although the full declaration of @code{struct MyType} is in
13317another source file. The default is on.
13318
13319A change in the setting of this subcommand will not take effect until
13320the next time symbols for a file are loaded.
13321
13322@item set opaque-type-resolution off
13323Tell @value{GDBN} not to resolve opaque types. In this case, the type
13324is printed as follows:
13325@smallexample
13326@{<no data fields>@}
13327@end smallexample
13328
13329@kindex show opaque-type-resolution
13330@item show opaque-type-resolution
13331Show whether opaque types are resolved or not.
c906108c
SS
13332
13333@kindex maint print symbols
13334@cindex symbol dump
13335@kindex maint print psymbols
13336@cindex partial symbol dump
13337@item maint print symbols @var{filename}
13338@itemx maint print psymbols @var{filename}
13339@itemx maint print msymbols @var{filename}
13340Write a dump of debugging symbol data into the file @var{filename}.
13341These commands are used to debug the @value{GDBN} symbol-reading code. Only
13342symbols with debugging data are included. If you use @samp{maint print
13343symbols}, @value{GDBN} includes all the symbols for which it has already
13344collected full details: that is, @var{filename} reflects symbols for
13345only those files whose symbols @value{GDBN} has read. You can use the
13346command @code{info sources} to find out which files these are. If you
13347use @samp{maint print psymbols} instead, the dump shows information about
13348symbols that @value{GDBN} only knows partially---that is, symbols defined in
13349files that @value{GDBN} has skimmed, but not yet read completely. Finally,
13350@samp{maint print msymbols} dumps just the minimal symbol information
13351required for each object file from which @value{GDBN} has read some symbols.
79a6e687 13352@xref{Files, ,Commands to Specify Files}, for a discussion of how
c906108c 13353@value{GDBN} reads symbols (in the description of @code{symbol-file}).
44ea7b70 13354
5e7b2f39
JB
13355@kindex maint info symtabs
13356@kindex maint info psymtabs
44ea7b70
JB
13357@cindex listing @value{GDBN}'s internal symbol tables
13358@cindex symbol tables, listing @value{GDBN}'s internal
13359@cindex full symbol tables, listing @value{GDBN}'s internal
13360@cindex partial symbol tables, listing @value{GDBN}'s internal
5e7b2f39
JB
13361@item maint info symtabs @r{[} @var{regexp} @r{]}
13362@itemx maint info psymtabs @r{[} @var{regexp} @r{]}
44ea7b70
JB
13363
13364List the @code{struct symtab} or @code{struct partial_symtab}
13365structures whose names match @var{regexp}. If @var{regexp} is not
13366given, list them all. The output includes expressions which you can
13367copy into a @value{GDBN} debugging this one to examine a particular
13368structure in more detail. For example:
13369
13370@smallexample
5e7b2f39 13371(@value{GDBP}) maint info psymtabs dwarf2read
44ea7b70
JB
13372@{ objfile /home/gnu/build/gdb/gdb
13373 ((struct objfile *) 0x82e69d0)
b383017d 13374 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
13375 ((struct partial_symtab *) 0x8474b10)
13376 readin no
13377 fullname (null)
13378 text addresses 0x814d3c8 -- 0x8158074
13379 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
13380 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
13381 dependencies (none)
13382 @}
13383@}
5e7b2f39 13384(@value{GDBP}) maint info symtabs
44ea7b70
JB
13385(@value{GDBP})
13386@end smallexample
13387@noindent
13388We see that there is one partial symbol table whose filename contains
13389the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
13390and we see that @value{GDBN} has not read in any symtabs yet at all.
13391If we set a breakpoint on a function, that will cause @value{GDBN} to
13392read the symtab for the compilation unit containing that function:
13393
13394@smallexample
13395(@value{GDBP}) break dwarf2_psymtab_to_symtab
13396Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
13397line 1574.
5e7b2f39 13398(@value{GDBP}) maint info symtabs
b383017d 13399@{ objfile /home/gnu/build/gdb/gdb
44ea7b70 13400 ((struct objfile *) 0x82e69d0)
b383017d 13401 @{ symtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
13402 ((struct symtab *) 0x86c1f38)
13403 dirname (null)
13404 fullname (null)
13405 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
1b39d5c0 13406 linetable ((struct linetable *) 0x8370fa0)
44ea7b70
JB
13407 debugformat DWARF 2
13408 @}
13409@}
b383017d 13410(@value{GDBP})
44ea7b70 13411@end smallexample
c906108c
SS
13412@end table
13413
44ea7b70 13414
6d2ebf8b 13415@node Altering
c906108c
SS
13416@chapter Altering Execution
13417
13418Once you think you have found an error in your program, you might want to
13419find out for certain whether correcting the apparent error would lead to
13420correct results in the rest of the run. You can find the answer by
13421experiment, using the @value{GDBN} features for altering execution of the
13422program.
13423
13424For example, you can store new values into variables or memory
7a292a7a
SS
13425locations, give your program a signal, restart it at a different
13426address, or even return prematurely from a function.
c906108c
SS
13427
13428@menu
13429* Assignment:: Assignment to variables
13430* Jumping:: Continuing at a different address
c906108c 13431* Signaling:: Giving your program a signal
c906108c
SS
13432* Returning:: Returning from a function
13433* Calling:: Calling your program's functions
13434* Patching:: Patching your program
13435@end menu
13436
6d2ebf8b 13437@node Assignment
79a6e687 13438@section Assignment to Variables
c906108c
SS
13439
13440@cindex assignment
13441@cindex setting variables
13442To alter the value of a variable, evaluate an assignment expression.
13443@xref{Expressions, ,Expressions}. For example,
13444
474c8240 13445@smallexample
c906108c 13446print x=4
474c8240 13447@end smallexample
c906108c
SS
13448
13449@noindent
13450stores the value 4 into the variable @code{x}, and then prints the
5d161b24 13451value of the assignment expression (which is 4).
c906108c
SS
13452@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
13453information on operators in supported languages.
c906108c
SS
13454
13455@kindex set variable
13456@cindex variables, setting
13457If you are not interested in seeing the value of the assignment, use the
13458@code{set} command instead of the @code{print} command. @code{set} is
13459really the same as @code{print} except that the expression's value is
13460not printed and is not put in the value history (@pxref{Value History,
79a6e687 13461,Value History}). The expression is evaluated only for its effects.
c906108c 13462
c906108c
SS
13463If the beginning of the argument string of the @code{set} command
13464appears identical to a @code{set} subcommand, use the @code{set
13465variable} command instead of just @code{set}. This command is identical
13466to @code{set} except for its lack of subcommands. For example, if your
13467program has a variable @code{width}, you get an error if you try to set
13468a new value with just @samp{set width=13}, because @value{GDBN} has the
13469command @code{set width}:
13470
474c8240 13471@smallexample
c906108c
SS
13472(@value{GDBP}) whatis width
13473type = double
13474(@value{GDBP}) p width
13475$4 = 13
13476(@value{GDBP}) set width=47
13477Invalid syntax in expression.
474c8240 13478@end smallexample
c906108c
SS
13479
13480@noindent
13481The invalid expression, of course, is @samp{=47}. In
13482order to actually set the program's variable @code{width}, use
13483
474c8240 13484@smallexample
c906108c 13485(@value{GDBP}) set var width=47
474c8240 13486@end smallexample
53a5351d 13487
c906108c
SS
13488Because the @code{set} command has many subcommands that can conflict
13489with the names of program variables, it is a good idea to use the
13490@code{set variable} command instead of just @code{set}. For example, if
13491your program has a variable @code{g}, you run into problems if you try
13492to set a new value with just @samp{set g=4}, because @value{GDBN} has
13493the command @code{set gnutarget}, abbreviated @code{set g}:
13494
474c8240 13495@smallexample
c906108c
SS
13496@group
13497(@value{GDBP}) whatis g
13498type = double
13499(@value{GDBP}) p g
13500$1 = 1
13501(@value{GDBP}) set g=4
2df3850c 13502(@value{GDBP}) p g
c906108c
SS
13503$2 = 1
13504(@value{GDBP}) r
13505The program being debugged has been started already.
13506Start it from the beginning? (y or n) y
13507Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
13508"/home/smith/cc_progs/a.out": can't open to read symbols:
13509 Invalid bfd target.
c906108c
SS
13510(@value{GDBP}) show g
13511The current BFD target is "=4".
13512@end group
474c8240 13513@end smallexample
c906108c
SS
13514
13515@noindent
13516The program variable @code{g} did not change, and you silently set the
13517@code{gnutarget} to an invalid value. In order to set the variable
13518@code{g}, use
13519
474c8240 13520@smallexample
c906108c 13521(@value{GDBP}) set var g=4
474c8240 13522@end smallexample
c906108c
SS
13523
13524@value{GDBN} allows more implicit conversions in assignments than C; you can
13525freely store an integer value into a pointer variable or vice versa,
13526and you can convert any structure to any other structure that is the
13527same length or shorter.
13528@comment FIXME: how do structs align/pad in these conversions?
13529@comment /doc@cygnus.com 18dec1990
13530
13531To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
13532construct to generate a value of specified type at a specified address
13533(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
13534to memory location @code{0x83040} as an integer (which implies a certain size
13535and representation in memory), and
13536
474c8240 13537@smallexample
c906108c 13538set @{int@}0x83040 = 4
474c8240 13539@end smallexample
c906108c
SS
13540
13541@noindent
13542stores the value 4 into that memory location.
13543
6d2ebf8b 13544@node Jumping
79a6e687 13545@section Continuing at a Different Address
c906108c
SS
13546
13547Ordinarily, when you continue your program, you do so at the place where
13548it stopped, with the @code{continue} command. You can instead continue at
13549an address of your own choosing, with the following commands:
13550
13551@table @code
13552@kindex jump
13553@item jump @var{linespec}
2a25a5ba
EZ
13554@itemx jump @var{location}
13555Resume execution at line @var{linespec} or at address given by
13556@var{location}. Execution stops again immediately if there is a
13557breakpoint there. @xref{Specify Location}, for a description of the
13558different forms of @var{linespec} and @var{location}. It is common
13559practice to use the @code{tbreak} command in conjunction with
13560@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}.
c906108c
SS
13561
13562The @code{jump} command does not change the current stack frame, or
13563the stack pointer, or the contents of any memory location or any
13564register other than the program counter. If line @var{linespec} is in
13565a different function from the one currently executing, the results may
13566be bizarre if the two functions expect different patterns of arguments or
13567of local variables. For this reason, the @code{jump} command requests
13568confirmation if the specified line is not in the function currently
13569executing. However, even bizarre results are predictable if you are
13570well acquainted with the machine-language code of your program.
c906108c
SS
13571@end table
13572
c906108c 13573@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
13574On many systems, you can get much the same effect as the @code{jump}
13575command by storing a new value into the register @code{$pc}. The
13576difference is that this does not start your program running; it only
13577changes the address of where it @emph{will} run when you continue. For
13578example,
c906108c 13579
474c8240 13580@smallexample
c906108c 13581set $pc = 0x485
474c8240 13582@end smallexample
c906108c
SS
13583
13584@noindent
13585makes the next @code{continue} command or stepping command execute at
13586address @code{0x485}, rather than at the address where your program stopped.
79a6e687 13587@xref{Continuing and Stepping, ,Continuing and Stepping}.
c906108c
SS
13588
13589The most common occasion to use the @code{jump} command is to back
13590up---perhaps with more breakpoints set---over a portion of a program
13591that has already executed, in order to examine its execution in more
13592detail.
13593
c906108c 13594@c @group
6d2ebf8b 13595@node Signaling
79a6e687 13596@section Giving your Program a Signal
9c16f35a 13597@cindex deliver a signal to a program
c906108c
SS
13598
13599@table @code
13600@kindex signal
13601@item signal @var{signal}
13602Resume execution where your program stopped, but immediately give it the
13603signal @var{signal}. @var{signal} can be the name or the number of a
13604signal. For example, on many systems @code{signal 2} and @code{signal
13605SIGINT} are both ways of sending an interrupt signal.
13606
13607Alternatively, if @var{signal} is zero, continue execution without
13608giving a signal. This is useful when your program stopped on account of
13609a signal and would ordinary see the signal when resumed with the
13610@code{continue} command; @samp{signal 0} causes it to resume without a
13611signal.
13612
13613@code{signal} does not repeat when you press @key{RET} a second time
13614after executing the command.
13615@end table
13616@c @end group
13617
13618Invoking the @code{signal} command is not the same as invoking the
13619@code{kill} utility from the shell. Sending a signal with @code{kill}
13620causes @value{GDBN} to decide what to do with the signal depending on
13621the signal handling tables (@pxref{Signals}). The @code{signal} command
13622passes the signal directly to your program.
13623
c906108c 13624
6d2ebf8b 13625@node Returning
79a6e687 13626@section Returning from a Function
c906108c
SS
13627
13628@table @code
13629@cindex returning from a function
13630@kindex return
13631@item return
13632@itemx return @var{expression}
13633You can cancel execution of a function call with the @code{return}
13634command. If you give an
13635@var{expression} argument, its value is used as the function's return
13636value.
13637@end table
13638
13639When you use @code{return}, @value{GDBN} discards the selected stack frame
13640(and all frames within it). You can think of this as making the
13641discarded frame return prematurely. If you wish to specify a value to
13642be returned, give that value as the argument to @code{return}.
13643
13644This pops the selected stack frame (@pxref{Selection, ,Selecting a
79a6e687 13645Frame}), and any other frames inside of it, leaving its caller as the
c906108c
SS
13646innermost remaining frame. That frame becomes selected. The
13647specified value is stored in the registers used for returning values
13648of functions.
13649
13650The @code{return} command does not resume execution; it leaves the
13651program stopped in the state that would exist if the function had just
13652returned. In contrast, the @code{finish} command (@pxref{Continuing
79a6e687 13653and Stepping, ,Continuing and Stepping}) resumes execution until the
c906108c
SS
13654selected stack frame returns naturally.
13655
61ff14c6
JK
13656@value{GDBN} needs to know how the @var{expression} argument should be set for
13657the inferior. The concrete registers assignment depends on the OS ABI and the
13658type being returned by the selected stack frame. For example it is common for
13659OS ABI to return floating point values in FPU registers while integer values in
13660CPU registers. Still some ABIs return even floating point values in CPU
13661registers. Larger integer widths (such as @code{long long int}) also have
13662specific placement rules. @value{GDBN} already knows the OS ABI from its
13663current target so it needs to find out also the type being returned to make the
13664assignment into the right register(s).
13665
13666Normally, the selected stack frame has debug info. @value{GDBN} will always
13667use the debug info instead of the implicit type of @var{expression} when the
13668debug info is available. For example, if you type @kbd{return -1}, and the
13669function in the current stack frame is declared to return a @code{long long
13670int}, @value{GDBN} transparently converts the implicit @code{int} value of -1
13671into a @code{long long int}:
13672
13673@smallexample
13674Breakpoint 1, func () at gdb.base/return-nodebug.c:29
1367529 return 31;
13676(@value{GDBP}) return -1
13677Make func return now? (y or n) y
13678#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43
1367943 printf ("result=%lld\n", func ());
13680(@value{GDBP})
13681@end smallexample
13682
13683However, if the selected stack frame does not have a debug info, e.g., if the
13684function was compiled without debug info, @value{GDBN} has to find out the type
13685to return from user. Specifying a different type by mistake may set the value
13686in different inferior registers than the caller code expects. For example,
13687typing @kbd{return -1} with its implicit type @code{int} would set only a part
13688of a @code{long long int} result for a debug info less function (on 32-bit
13689architectures). Therefore the user is required to specify the return type by
13690an appropriate cast explicitly:
13691
13692@smallexample
13693Breakpoint 2, 0x0040050b in func ()
13694(@value{GDBP}) return -1
13695Return value type not available for selected stack frame.
13696Please use an explicit cast of the value to return.
13697(@value{GDBP}) return (long long int) -1
13698Make selected stack frame return now? (y or n) y
13699#0 0x00400526 in main ()
13700(@value{GDBP})
13701@end smallexample
13702
6d2ebf8b 13703@node Calling
79a6e687 13704@section Calling Program Functions
c906108c 13705
f8568604 13706@table @code
c906108c 13707@cindex calling functions
f8568604
EZ
13708@cindex inferior functions, calling
13709@item print @var{expr}
d3e8051b 13710Evaluate the expression @var{expr} and display the resulting value.
f8568604
EZ
13711@var{expr} may include calls to functions in the program being
13712debugged.
13713
c906108c 13714@kindex call
c906108c
SS
13715@item call @var{expr}
13716Evaluate the expression @var{expr} without displaying @code{void}
13717returned values.
c906108c
SS
13718
13719You can use this variant of the @code{print} command if you want to
f8568604
EZ
13720execute a function from your program that does not return anything
13721(a.k.a.@: @dfn{a void function}), but without cluttering the output
13722with @code{void} returned values that @value{GDBN} will otherwise
13723print. If the result is not void, it is printed and saved in the
13724value history.
13725@end table
13726
9c16f35a
EZ
13727It is possible for the function you call via the @code{print} or
13728@code{call} command to generate a signal (e.g., if there's a bug in
13729the function, or if you passed it incorrect arguments). What happens
13730in that case is controlled by the @code{set unwindonsignal} command.
13731
7cd1089b
PM
13732Similarly, with a C@t{++} program it is possible for the function you
13733call via the @code{print} or @code{call} command to generate an
13734exception that is not handled due to the constraints of the dummy
13735frame. In this case, any exception that is raised in the frame, but has
13736an out-of-frame exception handler will not be found. GDB builds a
13737dummy-frame for the inferior function call, and the unwinder cannot
13738seek for exception handlers outside of this dummy-frame. What happens
13739in that case is controlled by the
13740@code{set unwind-on-terminating-exception} command.
13741
9c16f35a
EZ
13742@table @code
13743@item set unwindonsignal
13744@kindex set unwindonsignal
13745@cindex unwind stack in called functions
13746@cindex call dummy stack unwinding
13747Set unwinding of the stack if a signal is received while in a function
13748that @value{GDBN} called in the program being debugged. If set to on,
13749@value{GDBN} unwinds the stack it created for the call and restores
13750the context to what it was before the call. If set to off (the
13751default), @value{GDBN} stops in the frame where the signal was
13752received.
13753
13754@item show unwindonsignal
13755@kindex show unwindonsignal
13756Show the current setting of stack unwinding in the functions called by
13757@value{GDBN}.
7cd1089b
PM
13758
13759@item set unwind-on-terminating-exception
13760@kindex set unwind-on-terminating-exception
13761@cindex unwind stack in called functions with unhandled exceptions
13762@cindex call dummy stack unwinding on unhandled exception.
13763Set unwinding of the stack if a C@t{++} exception is raised, but left
13764unhandled while in a function that @value{GDBN} called in the program being
13765debugged. If set to on (the default), @value{GDBN} unwinds the stack
13766it created for the call and restores the context to what it was before
13767the call. If set to off, @value{GDBN} the exception is delivered to
13768the default C@t{++} exception handler and the inferior terminated.
13769
13770@item show unwind-on-terminating-exception
13771@kindex show unwind-on-terminating-exception
13772Show the current setting of stack unwinding in the functions called by
13773@value{GDBN}.
13774
9c16f35a
EZ
13775@end table
13776
f8568604
EZ
13777@cindex weak alias functions
13778Sometimes, a function you wish to call is actually a @dfn{weak alias}
13779for another function. In such case, @value{GDBN} might not pick up
13780the type information, including the types of the function arguments,
13781which causes @value{GDBN} to call the inferior function incorrectly.
13782As a result, the called function will function erroneously and may
13783even crash. A solution to that is to use the name of the aliased
13784function instead.
c906108c 13785
6d2ebf8b 13786@node Patching
79a6e687 13787@section Patching Programs
7a292a7a 13788
c906108c
SS
13789@cindex patching binaries
13790@cindex writing into executables
c906108c 13791@cindex writing into corefiles
c906108c 13792
7a292a7a
SS
13793By default, @value{GDBN} opens the file containing your program's
13794executable code (or the corefile) read-only. This prevents accidental
13795alterations to machine code; but it also prevents you from intentionally
13796patching your program's binary.
c906108c
SS
13797
13798If you'd like to be able to patch the binary, you can specify that
13799explicitly with the @code{set write} command. For example, you might
13800want to turn on internal debugging flags, or even to make emergency
13801repairs.
13802
13803@table @code
13804@kindex set write
13805@item set write on
13806@itemx set write off
7a292a7a 13807If you specify @samp{set write on}, @value{GDBN} opens executable and
20924a55 13808core files for both reading and writing; if you specify @kbd{set write
c906108c
SS
13809off} (the default), @value{GDBN} opens them read-only.
13810
13811If you have already loaded a file, you must load it again (using the
7a292a7a
SS
13812@code{exec-file} or @code{core-file} command) after changing @code{set
13813write}, for your new setting to take effect.
c906108c
SS
13814
13815@item show write
13816@kindex show write
7a292a7a
SS
13817Display whether executable files and core files are opened for writing
13818as well as reading.
c906108c
SS
13819@end table
13820
6d2ebf8b 13821@node GDB Files
c906108c
SS
13822@chapter @value{GDBN} Files
13823
7a292a7a
SS
13824@value{GDBN} needs to know the file name of the program to be debugged,
13825both in order to read its symbol table and in order to start your
13826program. To debug a core dump of a previous run, you must also tell
13827@value{GDBN} the name of the core dump file.
c906108c
SS
13828
13829@menu
13830* Files:: Commands to specify files
5b5d99cf 13831* Separate Debug Files:: Debugging information in separate files
c906108c 13832* Symbol Errors:: Errors reading symbol files
b14b1491 13833* Data Files:: GDB data files
c906108c
SS
13834@end menu
13835
6d2ebf8b 13836@node Files
79a6e687 13837@section Commands to Specify Files
c906108c 13838
7a292a7a 13839@cindex symbol table
c906108c 13840@cindex core dump file
7a292a7a
SS
13841
13842You may want to specify executable and core dump file names. The usual
13843way to do this is at start-up time, using the arguments to
13844@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
13845Out of @value{GDBN}}).
c906108c
SS
13846
13847Occasionally it is necessary to change to a different file during a
397ca115
EZ
13848@value{GDBN} session. Or you may run @value{GDBN} and forget to
13849specify a file you want to use. Or you are debugging a remote target
79a6e687
BW
13850via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver}
13851Program}). In these situations the @value{GDBN} commands to specify
0869d01b 13852new files are useful.
c906108c
SS
13853
13854@table @code
13855@cindex executable file
13856@kindex file
13857@item file @var{filename}
13858Use @var{filename} as the program to be debugged. It is read for its
13859symbols and for the contents of pure memory. It is also the program
13860executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
13861directory and the file is not found in the @value{GDBN} working directory,
13862@value{GDBN} uses the environment variable @code{PATH} as a list of
13863directories to search, just as the shell does when looking for a program
13864to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
13865and your program, using the @code{path} command.
13866
fc8be69e
EZ
13867@cindex unlinked object files
13868@cindex patching object files
13869You can load unlinked object @file{.o} files into @value{GDBN} using
13870the @code{file} command. You will not be able to ``run'' an object
13871file, but you can disassemble functions and inspect variables. Also,
13872if the underlying BFD functionality supports it, you could use
13873@kbd{gdb -write} to patch object files using this technique. Note
13874that @value{GDBN} can neither interpret nor modify relocations in this
13875case, so branches and some initialized variables will appear to go to
13876the wrong place. But this feature is still handy from time to time.
13877
c906108c
SS
13878@item file
13879@code{file} with no argument makes @value{GDBN} discard any information it
13880has on both executable file and the symbol table.
13881
13882@kindex exec-file
13883@item exec-file @r{[} @var{filename} @r{]}
13884Specify that the program to be run (but not the symbol table) is found
13885in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
13886if necessary to locate your program. Omitting @var{filename} means to
13887discard information on the executable file.
13888
13889@kindex symbol-file
13890@item symbol-file @r{[} @var{filename} @r{]}
13891Read symbol table information from file @var{filename}. @code{PATH} is
13892searched when necessary. Use the @code{file} command to get both symbol
13893table and program to run from the same file.
13894
13895@code{symbol-file} with no argument clears out @value{GDBN} information on your
13896program's symbol table.
13897
ae5a43e0
DJ
13898The @code{symbol-file} command causes @value{GDBN} to forget the contents of
13899some breakpoints and auto-display expressions. This is because they may
13900contain pointers to the internal data recording symbols and data types,
13901which are part of the old symbol table data being discarded inside
13902@value{GDBN}.
c906108c
SS
13903
13904@code{symbol-file} does not repeat if you press @key{RET} again after
13905executing it once.
13906
13907When @value{GDBN} is configured for a particular environment, it
13908understands debugging information in whatever format is the standard
13909generated for that environment; you may use either a @sc{gnu} compiler, or
13910other compilers that adhere to the local conventions.
c906108c 13911Best results are usually obtained from @sc{gnu} compilers; for example,
e22ea452 13912using @code{@value{NGCC}} you can generate debugging information for
c906108c 13913optimized code.
c906108c
SS
13914
13915For most kinds of object files, with the exception of old SVR3 systems
13916using COFF, the @code{symbol-file} command does not normally read the
13917symbol table in full right away. Instead, it scans the symbol table
13918quickly to find which source files and which symbols are present. The
13919details are read later, one source file at a time, as they are needed.
13920
13921The purpose of this two-stage reading strategy is to make @value{GDBN}
13922start up faster. For the most part, it is invisible except for
13923occasional pauses while the symbol table details for a particular source
13924file are being read. (The @code{set verbose} command can turn these
13925pauses into messages if desired. @xref{Messages/Warnings, ,Optional
79a6e687 13926Warnings and Messages}.)
c906108c 13927
c906108c
SS
13928We have not implemented the two-stage strategy for COFF yet. When the
13929symbol table is stored in COFF format, @code{symbol-file} reads the
13930symbol table data in full right away. Note that ``stabs-in-COFF''
13931still does the two-stage strategy, since the debug info is actually
13932in stabs format.
13933
13934@kindex readnow
13935@cindex reading symbols immediately
13936@cindex symbols, reading immediately
6ac33a4e
TT
13937@item symbol-file @r{[} -readnow @r{]} @var{filename}
13938@itemx file @r{[} -readnow @r{]} @var{filename}
c906108c
SS
13939You can override the @value{GDBN} two-stage strategy for reading symbol
13940tables by using the @samp{-readnow} option with any of the commands that
13941load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 13942entire symbol table available.
c906108c 13943
c906108c
SS
13944@c FIXME: for now no mention of directories, since this seems to be in
13945@c flux. 13mar1992 status is that in theory GDB would look either in
13946@c current dir or in same dir as myprog; but issues like competing
13947@c GDB's, or clutter in system dirs, mean that in practice right now
13948@c only current dir is used. FFish says maybe a special GDB hierarchy
13949@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
13950@c files.
13951
c906108c 13952@kindex core-file
09d4efe1 13953@item core-file @r{[}@var{filename}@r{]}
4644b6e3 13954@itemx core
c906108c
SS
13955Specify the whereabouts of a core dump file to be used as the ``contents
13956of memory''. Traditionally, core files contain only some parts of the
13957address space of the process that generated them; @value{GDBN} can access the
13958executable file itself for other parts.
13959
13960@code{core-file} with no argument specifies that no core file is
13961to be used.
13962
13963Note that the core file is ignored when your program is actually running
7a292a7a
SS
13964under @value{GDBN}. So, if you have been running your program and you
13965wish to debug a core file instead, you must kill the subprocess in which
13966the program is running. To do this, use the @code{kill} command
79a6e687 13967(@pxref{Kill Process, ,Killing the Child Process}).
c906108c 13968
c906108c
SS
13969@kindex add-symbol-file
13970@cindex dynamic linking
13971@item add-symbol-file @var{filename} @var{address}
a94ab193 13972@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]}
17d9d558 13973@itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address} @dots{}
96a2c332
SS
13974The @code{add-symbol-file} command reads additional symbol table
13975information from the file @var{filename}. You would use this command
13976when @var{filename} has been dynamically loaded (by some other means)
13977into the program that is running. @var{address} should be the memory
13978address at which the file has been loaded; @value{GDBN} cannot figure
d167840f
EZ
13979this out for itself. You can additionally specify an arbitrary number
13980of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
13981section name and base address for that section. You can specify any
13982@var{address} as an expression.
c906108c
SS
13983
13984The symbol table of the file @var{filename} is added to the symbol table
13985originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
13986@code{add-symbol-file} command any number of times; the new symbol data
13987thus read keeps adding to the old. To discard all old symbol data
13988instead, use the @code{symbol-file} command without any arguments.
c906108c 13989
17d9d558
JB
13990@cindex relocatable object files, reading symbols from
13991@cindex object files, relocatable, reading symbols from
13992@cindex reading symbols from relocatable object files
13993@cindex symbols, reading from relocatable object files
13994@cindex @file{.o} files, reading symbols from
13995Although @var{filename} is typically a shared library file, an
13996executable file, or some other object file which has been fully
13997relocated for loading into a process, you can also load symbolic
13998information from relocatable @file{.o} files, as long as:
13999
14000@itemize @bullet
14001@item
14002the file's symbolic information refers only to linker symbols defined in
14003that file, not to symbols defined by other object files,
14004@item
14005every section the file's symbolic information refers to has actually
14006been loaded into the inferior, as it appears in the file, and
14007@item
14008you can determine the address at which every section was loaded, and
14009provide these to the @code{add-symbol-file} command.
14010@end itemize
14011
14012@noindent
14013Some embedded operating systems, like Sun Chorus and VxWorks, can load
14014relocatable files into an already running program; such systems
14015typically make the requirements above easy to meet. However, it's
14016important to recognize that many native systems use complex link
49efadf5 14017procedures (@code{.linkonce} section factoring and C@t{++} constructor table
17d9d558
JB
14018assembly, for example) that make the requirements difficult to meet. In
14019general, one cannot assume that using @code{add-symbol-file} to read a
14020relocatable object file's symbolic information will have the same effect
14021as linking the relocatable object file into the program in the normal
14022way.
14023
c906108c
SS
14024@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
14025
c45da7e6
EZ
14026@kindex add-symbol-file-from-memory
14027@cindex @code{syscall DSO}
14028@cindex load symbols from memory
14029@item add-symbol-file-from-memory @var{address}
14030Load symbols from the given @var{address} in a dynamically loaded
14031object file whose image is mapped directly into the inferior's memory.
14032For example, the Linux kernel maps a @code{syscall DSO} into each
14033process's address space; this DSO provides kernel-specific code for
14034some system calls. The argument can be any expression whose
14035evaluation yields the address of the file's shared object file header.
14036For this command to work, you must have used @code{symbol-file} or
14037@code{exec-file} commands in advance.
14038
09d4efe1
EZ
14039@kindex add-shared-symbol-files
14040@kindex assf
14041@item add-shared-symbol-files @var{library-file}
14042@itemx assf @var{library-file}
14043The @code{add-shared-symbol-files} command can currently be used only
14044in the Cygwin build of @value{GDBN} on MS-Windows OS, where it is an
14045alias for the @code{dll-symbols} command (@pxref{Cygwin Native}).
14046@value{GDBN} automatically looks for shared libraries, however if
14047@value{GDBN} does not find yours, you can invoke
14048@code{add-shared-symbol-files}. It takes one argument: the shared
14049library's file name. @code{assf} is a shorthand alias for
14050@code{add-shared-symbol-files}.
c906108c 14051
c906108c 14052@kindex section
09d4efe1
EZ
14053@item section @var{section} @var{addr}
14054The @code{section} command changes the base address of the named
14055@var{section} of the exec file to @var{addr}. This can be used if the
14056exec file does not contain section addresses, (such as in the
14057@code{a.out} format), or when the addresses specified in the file
14058itself are wrong. Each section must be changed separately. The
14059@code{info files} command, described below, lists all the sections and
14060their addresses.
c906108c
SS
14061
14062@kindex info files
14063@kindex info target
14064@item info files
14065@itemx info target
7a292a7a
SS
14066@code{info files} and @code{info target} are synonymous; both print the
14067current target (@pxref{Targets, ,Specifying a Debugging Target}),
14068including the names of the executable and core dump files currently in
14069use by @value{GDBN}, and the files from which symbols were loaded. The
14070command @code{help target} lists all possible targets rather than
14071current ones.
14072
fe95c787
MS
14073@kindex maint info sections
14074@item maint info sections
14075Another command that can give you extra information about program sections
14076is @code{maint info sections}. In addition to the section information
14077displayed by @code{info files}, this command displays the flags and file
14078offset of each section in the executable and core dump files. In addition,
14079@code{maint info sections} provides the following command options (which
14080may be arbitrarily combined):
14081
14082@table @code
14083@item ALLOBJ
14084Display sections for all loaded object files, including shared libraries.
14085@item @var{sections}
6600abed 14086Display info only for named @var{sections}.
fe95c787
MS
14087@item @var{section-flags}
14088Display info only for sections for which @var{section-flags} are true.
14089The section flags that @value{GDBN} currently knows about are:
14090@table @code
14091@item ALLOC
14092Section will have space allocated in the process when loaded.
14093Set for all sections except those containing debug information.
14094@item LOAD
14095Section will be loaded from the file into the child process memory.
14096Set for pre-initialized code and data, clear for @code{.bss} sections.
14097@item RELOC
14098Section needs to be relocated before loading.
14099@item READONLY
14100Section cannot be modified by the child process.
14101@item CODE
14102Section contains executable code only.
6600abed 14103@item DATA
fe95c787
MS
14104Section contains data only (no executable code).
14105@item ROM
14106Section will reside in ROM.
14107@item CONSTRUCTOR
14108Section contains data for constructor/destructor lists.
14109@item HAS_CONTENTS
14110Section is not empty.
14111@item NEVER_LOAD
14112An instruction to the linker to not output the section.
14113@item COFF_SHARED_LIBRARY
14114A notification to the linker that the section contains
14115COFF shared library information.
14116@item IS_COMMON
14117Section contains common symbols.
14118@end table
14119@end table
6763aef9 14120@kindex set trust-readonly-sections
9c16f35a 14121@cindex read-only sections
6763aef9
MS
14122@item set trust-readonly-sections on
14123Tell @value{GDBN} that readonly sections in your object file
6ca652b0 14124really are read-only (i.e.@: that their contents will not change).
6763aef9
MS
14125In that case, @value{GDBN} can fetch values from these sections
14126out of the object file, rather than from the target program.
14127For some targets (notably embedded ones), this can be a significant
14128enhancement to debugging performance.
14129
14130The default is off.
14131
14132@item set trust-readonly-sections off
15110bc3 14133Tell @value{GDBN} not to trust readonly sections. This means that
6763aef9
MS
14134the contents of the section might change while the program is running,
14135and must therefore be fetched from the target when needed.
9c16f35a
EZ
14136
14137@item show trust-readonly-sections
14138Show the current setting of trusting readonly sections.
c906108c
SS
14139@end table
14140
14141All file-specifying commands allow both absolute and relative file names
14142as arguments. @value{GDBN} always converts the file name to an absolute file
14143name and remembers it that way.
14144
c906108c 14145@cindex shared libraries
9cceb671
DJ
14146@anchor{Shared Libraries}
14147@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix,
9c16f35a 14148and IBM RS/6000 AIX shared libraries.
53a5351d 14149
9cceb671
DJ
14150On MS-Windows @value{GDBN} must be linked with the Expat library to support
14151shared libraries. @xref{Expat}.
14152
c906108c
SS
14153@value{GDBN} automatically loads symbol definitions from shared libraries
14154when you use the @code{run} command, or when you examine a core file.
14155(Before you issue the @code{run} command, @value{GDBN} does not understand
14156references to a function in a shared library, however---unless you are
14157debugging a core file).
53a5351d
JM
14158
14159On HP-UX, if the program loads a library explicitly, @value{GDBN}
14160automatically loads the symbols at the time of the @code{shl_load} call.
14161
c906108c
SS
14162@c FIXME: some @value{GDBN} release may permit some refs to undef
14163@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
14164@c FIXME...lib; check this from time to time when updating manual
14165
b7209cb4
FF
14166There are times, however, when you may wish to not automatically load
14167symbol definitions from shared libraries, such as when they are
14168particularly large or there are many of them.
14169
14170To control the automatic loading of shared library symbols, use the
14171commands:
14172
14173@table @code
14174@kindex set auto-solib-add
14175@item set auto-solib-add @var{mode}
14176If @var{mode} is @code{on}, symbols from all shared object libraries
14177will be loaded automatically when the inferior begins execution, you
14178attach to an independently started inferior, or when the dynamic linker
14179informs @value{GDBN} that a new library has been loaded. If @var{mode}
14180is @code{off}, symbols must be loaded manually, using the
14181@code{sharedlibrary} command. The default value is @code{on}.
14182
dcaf7c2c
EZ
14183@cindex memory used for symbol tables
14184If your program uses lots of shared libraries with debug info that
14185takes large amounts of memory, you can decrease the @value{GDBN}
14186memory footprint by preventing it from automatically loading the
14187symbols from shared libraries. To that end, type @kbd{set
14188auto-solib-add off} before running the inferior, then load each
14189library whose debug symbols you do need with @kbd{sharedlibrary
d3e8051b 14190@var{regexp}}, where @var{regexp} is a regular expression that matches
dcaf7c2c
EZ
14191the libraries whose symbols you want to be loaded.
14192
b7209cb4
FF
14193@kindex show auto-solib-add
14194@item show auto-solib-add
14195Display the current autoloading mode.
14196@end table
14197
c45da7e6 14198@cindex load shared library
b7209cb4
FF
14199To explicitly load shared library symbols, use the @code{sharedlibrary}
14200command:
14201
c906108c
SS
14202@table @code
14203@kindex info sharedlibrary
14204@kindex info share
55333a84
DE
14205@item info share @var{regex}
14206@itemx info sharedlibrary @var{regex}
14207Print the names of the shared libraries which are currently loaded
14208that match @var{regex}. If @var{regex} is omitted then print
14209all shared libraries that are loaded.
c906108c
SS
14210
14211@kindex sharedlibrary
14212@kindex share
14213@item sharedlibrary @var{regex}
14214@itemx share @var{regex}
c906108c
SS
14215Load shared object library symbols for files matching a
14216Unix regular expression.
14217As with files loaded automatically, it only loads shared libraries
14218required by your program for a core file or after typing @code{run}. If
14219@var{regex} is omitted all shared libraries required by your program are
14220loaded.
c45da7e6
EZ
14221
14222@item nosharedlibrary
14223@kindex nosharedlibrary
14224@cindex unload symbols from shared libraries
14225Unload all shared object library symbols. This discards all symbols
14226that have been loaded from all shared libraries. Symbols from shared
14227libraries that were loaded by explicit user requests are not
14228discarded.
c906108c
SS
14229@end table
14230
721c2651
EZ
14231Sometimes you may wish that @value{GDBN} stops and gives you control
14232when any of shared library events happen. Use the @code{set
14233stop-on-solib-events} command for this:
14234
14235@table @code
14236@item set stop-on-solib-events
14237@kindex set stop-on-solib-events
14238This command controls whether @value{GDBN} should give you control
14239when the dynamic linker notifies it about some shared library event.
14240The most common event of interest is loading or unloading of a new
14241shared library.
14242
14243@item show stop-on-solib-events
14244@kindex show stop-on-solib-events
14245Show whether @value{GDBN} stops and gives you control when shared
14246library events happen.
14247@end table
14248
f5ebfba0 14249Shared libraries are also supported in many cross or remote debugging
f1838a98
UW
14250configurations. @value{GDBN} needs to have access to the target's libraries;
14251this can be accomplished either by providing copies of the libraries
14252on the host system, or by asking @value{GDBN} to automatically retrieve the
14253libraries from the target. If copies of the target libraries are
14254provided, they need to be the same as the target libraries, although the
f5ebfba0
DJ
14255copies on the target can be stripped as long as the copies on the host are
14256not.
14257
59b7b46f
EZ
14258@cindex where to look for shared libraries
14259For remote debugging, you need to tell @value{GDBN} where the target
14260libraries are, so that it can load the correct copies---otherwise, it
14261may try to load the host's libraries. @value{GDBN} has two variables
14262to specify the search directories for target libraries.
f5ebfba0
DJ
14263
14264@table @code
59b7b46f 14265@cindex prefix for shared library file names
f822c95b 14266@cindex system root, alternate
f5ebfba0 14267@kindex set solib-absolute-prefix
f822c95b
DJ
14268@kindex set sysroot
14269@item set sysroot @var{path}
14270Use @var{path} as the system root for the program being debugged. Any
14271absolute shared library paths will be prefixed with @var{path}; many
14272runtime loaders store the absolute paths to the shared library in the
14273target program's memory. If you use @code{set sysroot} to find shared
14274libraries, they need to be laid out in the same way that they are on
14275the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy
14276under @var{path}.
14277
f1838a98
UW
14278If @var{path} starts with the sequence @file{remote:}, @value{GDBN} will
14279retrieve the target libraries from the remote system. This is only
14280supported when using a remote target that supports the @code{remote get}
14281command (@pxref{File Transfer,,Sending files to a remote system}).
14282The part of @var{path} following the initial @file{remote:}
14283(if present) is used as system root prefix on the remote file system.
14284@footnote{If you want to specify a local system root using a directory
14285that happens to be named @file{remote:}, you need to use some equivalent
14286variant of the name like @file{./remote:}.}
14287
f822c95b
DJ
14288The @code{set solib-absolute-prefix} command is an alias for @code{set
14289sysroot}.
14290
14291@cindex default system root
59b7b46f 14292@cindex @samp{--with-sysroot}
f822c95b
DJ
14293You can set the default system root by using the configure-time
14294@samp{--with-sysroot} option. If the system root is inside
14295@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
14296@samp{--exec-prefix}), then the default system root will be updated
14297automatically if the installed @value{GDBN} is moved to a new
14298location.
14299
14300@kindex show sysroot
14301@item show sysroot
f5ebfba0
DJ
14302Display the current shared library prefix.
14303
14304@kindex set solib-search-path
14305@item set solib-search-path @var{path}
f822c95b
DJ
14306If this variable is set, @var{path} is a colon-separated list of
14307directories to search for shared libraries. @samp{solib-search-path}
14308is used after @samp{sysroot} fails to locate the library, or if the
14309path to the library is relative instead of absolute. If you want to
14310use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set
d3e8051b 14311@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from
f822c95b 14312finding your host's libraries. @samp{sysroot} is preferred; setting
d3e8051b 14313it to a nonexistent directory may interfere with automatic loading
f822c95b 14314of shared library symbols.
f5ebfba0
DJ
14315
14316@kindex show solib-search-path
14317@item show solib-search-path
14318Display the current shared library search path.
14319@end table
14320
5b5d99cf
JB
14321
14322@node Separate Debug Files
14323@section Debugging Information in Separate Files
14324@cindex separate debugging information files
14325@cindex debugging information in separate files
14326@cindex @file{.debug} subdirectories
14327@cindex debugging information directory, global
14328@cindex global debugging information directory
c7e83d54
EZ
14329@cindex build ID, and separate debugging files
14330@cindex @file{.build-id} directory
5b5d99cf
JB
14331
14332@value{GDBN} allows you to put a program's debugging information in a
14333file separate from the executable itself, in a way that allows
14334@value{GDBN} to find and load the debugging information automatically.
c7e83d54
EZ
14335Since debugging information can be very large---sometimes larger
14336than the executable code itself---some systems distribute debugging
5b5d99cf
JB
14337information for their executables in separate files, which users can
14338install only when they need to debug a problem.
14339
c7e83d54
EZ
14340@value{GDBN} supports two ways of specifying the separate debug info
14341file:
5b5d99cf
JB
14342
14343@itemize @bullet
14344@item
c7e83d54
EZ
14345The executable contains a @dfn{debug link} that specifies the name of
14346the separate debug info file. The separate debug file's name is
14347usually @file{@var{executable}.debug}, where @var{executable} is the
14348name of the corresponding executable file without leading directories
14349(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the
99e008fe
EZ
14350debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC)
14351checksum for the debug file, which @value{GDBN} uses to validate that
14352the executable and the debug file came from the same build.
c7e83d54
EZ
14353
14354@item
7e27a47a 14355The executable contains a @dfn{build ID}, a unique bit string that is
c7e83d54 14356also present in the corresponding debug info file. (This is supported
7e27a47a
EZ
14357only on some operating systems, notably those which use the ELF format
14358for binary files and the @sc{gnu} Binutils.) For more details about
14359this feature, see the description of the @option{--build-id}
14360command-line option in @ref{Options, , Command Line Options, ld.info,
14361The GNU Linker}. The debug info file's name is not specified
14362explicitly by the build ID, but can be computed from the build ID, see
14363below.
d3750b24
JK
14364@end itemize
14365
c7e83d54
EZ
14366Depending on the way the debug info file is specified, @value{GDBN}
14367uses two different methods of looking for the debug file:
d3750b24
JK
14368
14369@itemize @bullet
14370@item
c7e83d54
EZ
14371For the ``debug link'' method, @value{GDBN} looks up the named file in
14372the directory of the executable file, then in a subdirectory of that
14373directory named @file{.debug}, and finally under the global debug
14374directory, in a subdirectory whose name is identical to the leading
14375directories of the executable's absolute file name.
14376
14377@item
83f83d7f 14378For the ``build ID'' method, @value{GDBN} looks in the
c7e83d54
EZ
14379@file{.build-id} subdirectory of the global debug directory for a file
14380named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the
7e27a47a
EZ
14381first 2 hex characters of the build ID bit string, and @var{nnnnnnnn}
14382are the rest of the bit string. (Real build ID strings are 32 or more
14383hex characters, not 10.)
c7e83d54
EZ
14384@end itemize
14385
14386So, for example, suppose you ask @value{GDBN} to debug
7e27a47a
EZ
14387@file{/usr/bin/ls}, which has a debug link that specifies the
14388file @file{ls.debug}, and a build ID whose value in hex is
c7e83d54
EZ
14389@code{abcdef1234}. If the global debug directory is
14390@file{/usr/lib/debug}, then @value{GDBN} will look for the following
14391debug information files, in the indicated order:
14392
14393@itemize @minus
14394@item
14395@file{/usr/lib/debug/.build-id/ab/cdef1234.debug}
d3750b24 14396@item
c7e83d54 14397@file{/usr/bin/ls.debug}
5b5d99cf 14398@item
c7e83d54 14399@file{/usr/bin/.debug/ls.debug}
5b5d99cf 14400@item
c7e83d54 14401@file{/usr/lib/debug/usr/bin/ls.debug}.
5b5d99cf 14402@end itemize
5b5d99cf
JB
14403
14404You can set the global debugging info directory's name, and view the
14405name @value{GDBN} is currently using.
14406
14407@table @code
14408
14409@kindex set debug-file-directory
24ddea62
JK
14410@item set debug-file-directory @var{directories}
14411Set the directories which @value{GDBN} searches for separate debugging
14412information files to @var{directory}. Multiple directory components can be set
14413concatenating them by a directory separator.
5b5d99cf
JB
14414
14415@kindex show debug-file-directory
14416@item show debug-file-directory
24ddea62 14417Show the directories @value{GDBN} searches for separate debugging
5b5d99cf
JB
14418information files.
14419
14420@end table
14421
14422@cindex @code{.gnu_debuglink} sections
c7e83d54 14423@cindex debug link sections
5b5d99cf
JB
14424A debug link is a special section of the executable file named
14425@code{.gnu_debuglink}. The section must contain:
14426
14427@itemize
14428@item
14429A filename, with any leading directory components removed, followed by
14430a zero byte,
14431@item
14432zero to three bytes of padding, as needed to reach the next four-byte
14433boundary within the section, and
14434@item
14435a four-byte CRC checksum, stored in the same endianness used for the
14436executable file itself. The checksum is computed on the debugging
14437information file's full contents by the function given below, passing
14438zero as the @var{crc} argument.
14439@end itemize
14440
14441Any executable file format can carry a debug link, as long as it can
14442contain a section named @code{.gnu_debuglink} with the contents
14443described above.
14444
d3750b24 14445@cindex @code{.note.gnu.build-id} sections
c7e83d54 14446@cindex build ID sections
7e27a47a
EZ
14447The build ID is a special section in the executable file (and in other
14448ELF binary files that @value{GDBN} may consider). This section is
14449often named @code{.note.gnu.build-id}, but that name is not mandatory.
14450It contains unique identification for the built files---the ID remains
14451the same across multiple builds of the same build tree. The default
14452algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
14453content for the build ID string. The same section with an identical
14454value is present in the original built binary with symbols, in its
14455stripped variant, and in the separate debugging information file.
d3750b24 14456
5b5d99cf
JB
14457The debugging information file itself should be an ordinary
14458executable, containing a full set of linker symbols, sections, and
14459debugging information. The sections of the debugging information file
c7e83d54
EZ
14460should have the same names, addresses, and sizes as the original file,
14461but they need not contain any data---much like a @code{.bss} section
5b5d99cf
JB
14462in an ordinary executable.
14463
7e27a47a 14464The @sc{gnu} binary utilities (Binutils) package includes the
c7e83d54
EZ
14465@samp{objcopy} utility that can produce
14466the separated executable / debugging information file pairs using the
14467following commands:
14468
14469@smallexample
14470@kbd{objcopy --only-keep-debug foo foo.debug}
14471@kbd{strip -g foo}
c7e83d54
EZ
14472@end smallexample
14473
14474@noindent
14475These commands remove the debugging
83f83d7f
JK
14476information from the executable file @file{foo} and place it in the file
14477@file{foo.debug}. You can use the first, second or both methods to link the
14478two files:
14479
14480@itemize @bullet
14481@item
14482The debug link method needs the following additional command to also leave
14483behind a debug link in @file{foo}:
14484
14485@smallexample
14486@kbd{objcopy --add-gnu-debuglink=foo.debug foo}
14487@end smallexample
14488
14489Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains
d3750b24 14490a version of the @code{strip} command such that the command @kbd{strip foo -f
83f83d7f
JK
14491foo.debug} has the same functionality as the two @code{objcopy} commands and
14492the @code{ln -s} command above, together.
14493
14494@item
14495Build ID gets embedded into the main executable using @code{ld --build-id} or
14496the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus
14497compatibility fixes for debug files separation are present in @sc{gnu} binary
7e27a47a 14498utilities (Binutils) package since version 2.18.
83f83d7f
JK
14499@end itemize
14500
14501@noindent
d3750b24 14502
99e008fe
EZ
14503@cindex CRC algorithm definition
14504The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in
14505IEEE 802.3 using the polynomial:
14506
14507@c TexInfo requires naked braces for multi-digit exponents for Tex
14508@c output, but this causes HTML output to barf. HTML has to be set using
14509@c raw commands. So we end up having to specify this equation in 2
14510@c different ways!
14511@ifhtml
14512@display
14513@html
14514 <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>
14515 + <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
14516@end html
14517@end display
14518@end ifhtml
14519@ifnothtml
14520@display
14521 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}}
14522 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1}
14523@end display
14524@end ifnothtml
14525
14526The function is computed byte at a time, taking the least
14527significant bit of each byte first. The initial pattern
14528@code{0xffffffff} is used, to ensure leading zeros affect the CRC and
14529the final result is inverted to ensure trailing zeros also affect the
14530CRC.
14531
14532@emph{Note:} This is the same CRC polynomial as used in handling the
14533@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{Remote Protocol,
14534, @value{GDBN} Remote Serial Protocol}). However in the
14535case of the Remote Serial Protocol, the CRC is computed @emph{most}
14536significant bit first, and the result is not inverted, so trailing
14537zeros have no effect on the CRC value.
14538
14539To complete the description, we show below the code of the function
14540which produces the CRC used in @code{.gnu_debuglink}. Inverting the
14541initially supplied @code{crc} argument means that an initial call to
14542this function passing in zero will start computing the CRC using
14543@code{0xffffffff}.
5b5d99cf 14544
4644b6e3 14545@kindex gnu_debuglink_crc32
5b5d99cf
JB
14546@smallexample
14547unsigned long
14548gnu_debuglink_crc32 (unsigned long crc,
14549 unsigned char *buf, size_t len)
14550@{
14551 static const unsigned long crc32_table[256] =
14552 @{
14553 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
14554 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
14555 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
14556 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
14557 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
14558 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
14559 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
14560 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
14561 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
14562 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
14563 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
14564 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
14565 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
14566 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
14567 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
14568 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
14569 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
14570 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
14571 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
14572 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
14573 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
14574 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
14575 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
14576 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
14577 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
14578 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
14579 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
14580 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
14581 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
14582 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
14583 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
14584 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
14585 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
14586 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
14587 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
14588 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
14589 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
14590 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
14591 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
14592 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
14593 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
14594 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
14595 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
14596 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
14597 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
14598 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
14599 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
14600 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
14601 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
14602 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
14603 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
14604 0x2d02ef8d
14605 @};
14606 unsigned char *end;
14607
14608 crc = ~crc & 0xffffffff;
14609 for (end = buf + len; buf < end; ++buf)
14610 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
e7a3abfc 14611 return ~crc & 0xffffffff;
5b5d99cf
JB
14612@}
14613@end smallexample
14614
c7e83d54
EZ
14615@noindent
14616This computation does not apply to the ``build ID'' method.
14617
5b5d99cf 14618
6d2ebf8b 14619@node Symbol Errors
79a6e687 14620@section Errors Reading Symbol Files
c906108c
SS
14621
14622While reading a symbol file, @value{GDBN} occasionally encounters problems,
14623such as symbol types it does not recognize, or known bugs in compiler
14624output. By default, @value{GDBN} does not notify you of such problems, since
14625they are relatively common and primarily of interest to people
14626debugging compilers. If you are interested in seeing information
14627about ill-constructed symbol tables, you can either ask @value{GDBN} to print
14628only one message about each such type of problem, no matter how many
14629times the problem occurs; or you can ask @value{GDBN} to print more messages,
14630to see how many times the problems occur, with the @code{set
79a6e687
BW
14631complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and
14632Messages}).
c906108c
SS
14633
14634The messages currently printed, and their meanings, include:
14635
14636@table @code
14637@item inner block not inside outer block in @var{symbol}
14638
14639The symbol information shows where symbol scopes begin and end
14640(such as at the start of a function or a block of statements). This
14641error indicates that an inner scope block is not fully contained
14642in its outer scope blocks.
14643
14644@value{GDBN} circumvents the problem by treating the inner block as if it had
14645the same scope as the outer block. In the error message, @var{symbol}
14646may be shown as ``@code{(don't know)}'' if the outer block is not a
14647function.
14648
14649@item block at @var{address} out of order
14650
14651The symbol information for symbol scope blocks should occur in
14652order of increasing addresses. This error indicates that it does not
14653do so.
14654
14655@value{GDBN} does not circumvent this problem, and has trouble
14656locating symbols in the source file whose symbols it is reading. (You
14657can often determine what source file is affected by specifying
79a6e687
BW
14658@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and
14659Messages}.)
c906108c
SS
14660
14661@item bad block start address patched
14662
14663The symbol information for a symbol scope block has a start address
14664smaller than the address of the preceding source line. This is known
14665to occur in the SunOS 4.1.1 (and earlier) C compiler.
14666
14667@value{GDBN} circumvents the problem by treating the symbol scope block as
14668starting on the previous source line.
14669
14670@item bad string table offset in symbol @var{n}
14671
14672@cindex foo
14673Symbol number @var{n} contains a pointer into the string table which is
14674larger than the size of the string table.
14675
14676@value{GDBN} circumvents the problem by considering the symbol to have the
14677name @code{foo}, which may cause other problems if many symbols end up
14678with this name.
14679
14680@item unknown symbol type @code{0x@var{nn}}
14681
7a292a7a
SS
14682The symbol information contains new data types that @value{GDBN} does
14683not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 14684uncomprehended information, in hexadecimal.
c906108c 14685
7a292a7a
SS
14686@value{GDBN} circumvents the error by ignoring this symbol information.
14687This usually allows you to debug your program, though certain symbols
c906108c 14688are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
14689debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
14690on @code{complain}, then go up to the function @code{read_dbx_symtab}
14691and examine @code{*bufp} to see the symbol.
c906108c
SS
14692
14693@item stub type has NULL name
c906108c 14694
7a292a7a 14695@value{GDBN} could not find the full definition for a struct or class.
c906108c 14696
7a292a7a 14697@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 14698The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
14699information that recent versions of the compiler should have output for
14700it.
c906108c
SS
14701
14702@item info mismatch between compiler and debugger
14703
14704@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 14705
c906108c
SS
14706@end table
14707
b14b1491
TT
14708@node Data Files
14709@section GDB Data Files
14710
14711@cindex prefix for data files
14712@value{GDBN} will sometimes read an auxiliary data file. These files
14713are kept in a directory known as the @dfn{data directory}.
14714
14715You can set the data directory's name, and view the name @value{GDBN}
14716is currently using.
14717
14718@table @code
14719@kindex set data-directory
14720@item set data-directory @var{directory}
14721Set the directory which @value{GDBN} searches for auxiliary data files
14722to @var{directory}.
14723
14724@kindex show data-directory
14725@item show data-directory
14726Show the directory @value{GDBN} searches for auxiliary data files.
14727@end table
14728
14729@cindex default data directory
14730@cindex @samp{--with-gdb-datadir}
14731You can set the default data directory by using the configure-time
14732@samp{--with-gdb-datadir} option. If the data directory is inside
14733@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
14734@samp{--exec-prefix}), then the default data directory will be updated
14735automatically if the installed @value{GDBN} is moved to a new
14736location.
14737
6d2ebf8b 14738@node Targets
c906108c 14739@chapter Specifying a Debugging Target
7a292a7a 14740
c906108c 14741@cindex debugging target
c906108c 14742A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
14743
14744Often, @value{GDBN} runs in the same host environment as your program;
14745in that case, the debugging target is specified as a side effect when
14746you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
14747flexibility---for example, running @value{GDBN} on a physically separate
14748host, or controlling a standalone system over a serial port or a
53a5351d
JM
14749realtime system over a TCP/IP connection---you can use the @code{target}
14750command to specify one of the target types configured for @value{GDBN}
79a6e687 14751(@pxref{Target Commands, ,Commands for Managing Targets}).
c906108c 14752
a8f24a35
EZ
14753@cindex target architecture
14754It is possible to build @value{GDBN} for several different @dfn{target
14755architectures}. When @value{GDBN} is built like that, you can choose
14756one of the available architectures with the @kbd{set architecture}
14757command.
14758
14759@table @code
14760@kindex set architecture
14761@kindex show architecture
14762@item set architecture @var{arch}
14763This command sets the current target architecture to @var{arch}. The
14764value of @var{arch} can be @code{"auto"}, in addition to one of the
14765supported architectures.
14766
14767@item show architecture
14768Show the current target architecture.
9c16f35a
EZ
14769
14770@item set processor
14771@itemx processor
14772@kindex set processor
14773@kindex show processor
14774These are alias commands for, respectively, @code{set architecture}
14775and @code{show architecture}.
a8f24a35
EZ
14776@end table
14777
c906108c
SS
14778@menu
14779* Active Targets:: Active targets
14780* Target Commands:: Commands for managing targets
c906108c 14781* Byte Order:: Choosing target byte order
c906108c
SS
14782@end menu
14783
6d2ebf8b 14784@node Active Targets
79a6e687 14785@section Active Targets
7a292a7a 14786
c906108c
SS
14787@cindex stacking targets
14788@cindex active targets
14789@cindex multiple targets
14790
c906108c 14791There are three classes of targets: processes, core files, and
7a292a7a
SS
14792executable files. @value{GDBN} can work concurrently on up to three
14793active targets, one in each class. This allows you to (for example)
14794start a process and inspect its activity without abandoning your work on
14795a core file.
c906108c
SS
14796
14797For example, if you execute @samp{gdb a.out}, then the executable file
14798@code{a.out} is the only active target. If you designate a core file as
14799well---presumably from a prior run that crashed and coredumped---then
14800@value{GDBN} has two active targets and uses them in tandem, looking
14801first in the corefile target, then in the executable file, to satisfy
14802requests for memory addresses. (Typically, these two classes of target
14803are complementary, since core files contain only a program's
14804read-write memory---variables and so on---plus machine status, while
14805executable files contain only the program text and initialized data.)
c906108c
SS
14806
14807When you type @code{run}, your executable file becomes an active process
7a292a7a
SS
14808target as well. When a process target is active, all @value{GDBN}
14809commands requesting memory addresses refer to that target; addresses in
14810an active core file or executable file target are obscured while the
14811process target is active.
c906108c 14812
7a292a7a 14813Use the @code{core-file} and @code{exec-file} commands to select a new
79a6e687
BW
14814core file or executable target (@pxref{Files, ,Commands to Specify
14815Files}). To specify as a target a process that is already running, use
14816the @code{attach} command (@pxref{Attach, ,Debugging an Already-running
14817Process}).
c906108c 14818
6d2ebf8b 14819@node Target Commands
79a6e687 14820@section Commands for Managing Targets
c906108c
SS
14821
14822@table @code
14823@item target @var{type} @var{parameters}
7a292a7a
SS
14824Connects the @value{GDBN} host environment to a target machine or
14825process. A target is typically a protocol for talking to debugging
14826facilities. You use the argument @var{type} to specify the type or
14827protocol of the target machine.
c906108c
SS
14828
14829Further @var{parameters} are interpreted by the target protocol, but
14830typically include things like device names or host names to connect
14831with, process numbers, and baud rates.
c906108c
SS
14832
14833The @code{target} command does not repeat if you press @key{RET} again
14834after executing the command.
14835
14836@kindex help target
14837@item help target
14838Displays the names of all targets available. To display targets
14839currently selected, use either @code{info target} or @code{info files}
79a6e687 14840(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
14841
14842@item help target @var{name}
14843Describe a particular target, including any parameters necessary to
14844select it.
14845
14846@kindex set gnutarget
14847@item set gnutarget @var{args}
5d161b24 14848@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 14849knows whether it is reading an @dfn{executable},
5d161b24
DB
14850a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
14851with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
14852with @code{gnutarget} the @code{target} refers to a program, not a machine.
14853
d4f3574e 14854@quotation
c906108c
SS
14855@emph{Warning:} To specify a file format with @code{set gnutarget},
14856you must know the actual BFD name.
d4f3574e 14857@end quotation
c906108c 14858
d4f3574e 14859@noindent
79a6e687 14860@xref{Files, , Commands to Specify Files}.
c906108c 14861
5d161b24 14862@kindex show gnutarget
c906108c
SS
14863@item show gnutarget
14864Use the @code{show gnutarget} command to display what file format
14865@code{gnutarget} is set to read. If you have not set @code{gnutarget},
14866@value{GDBN} will determine the file format for each file automatically,
14867and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
14868@end table
14869
4644b6e3 14870@cindex common targets
c906108c
SS
14871Here are some common targets (available, or not, depending on the GDB
14872configuration):
c906108c
SS
14873
14874@table @code
4644b6e3 14875@kindex target
c906108c 14876@item target exec @var{program}
4644b6e3 14877@cindex executable file target
c906108c
SS
14878An executable file. @samp{target exec @var{program}} is the same as
14879@samp{exec-file @var{program}}.
14880
c906108c 14881@item target core @var{filename}
4644b6e3 14882@cindex core dump file target
c906108c
SS
14883A core dump file. @samp{target core @var{filename}} is the same as
14884@samp{core-file @var{filename}}.
c906108c 14885
1a10341b 14886@item target remote @var{medium}
4644b6e3 14887@cindex remote target
1a10341b
JB
14888A remote system connected to @value{GDBN} via a serial line or network
14889connection. This command tells @value{GDBN} to use its own remote
14890protocol over @var{medium} for debugging. @xref{Remote Debugging}.
14891
14892For example, if you have a board connected to @file{/dev/ttya} on the
14893machine running @value{GDBN}, you could say:
14894
14895@smallexample
14896target remote /dev/ttya
14897@end smallexample
14898
14899@code{target remote} supports the @code{load} command. This is only
14900useful if you have some other way of getting the stub to the target
14901system, and you can put it somewhere in memory where it won't get
14902clobbered by the download.
c906108c 14903
ee8e71d4 14904@item target sim @r{[}@var{simargs}@r{]} @dots{}
4644b6e3 14905@cindex built-in simulator target
2df3850c 14906Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213 14907In general,
474c8240 14908@smallexample
104c1213
JM
14909 target sim
14910 load
14911 run
474c8240 14912@end smallexample
d4f3574e 14913@noindent
104c1213 14914works; however, you cannot assume that a specific memory map, device
d4f3574e 14915drivers, or even basic I/O is available, although some simulators do
104c1213
JM
14916provide these. For info about any processor-specific simulator details,
14917see the appropriate section in @ref{Embedded Processors, ,Embedded
14918Processors}.
14919
c906108c
SS
14920@end table
14921
104c1213 14922Some configurations may include these targets as well:
c906108c
SS
14923
14924@table @code
14925
c906108c 14926@item target nrom @var{dev}
4644b6e3 14927@cindex NetROM ROM emulator target
c906108c
SS
14928NetROM ROM emulator. This target only supports downloading.
14929
c906108c
SS
14930@end table
14931
5d161b24 14932Different targets are available on different configurations of @value{GDBN};
c906108c 14933your configuration may have more or fewer targets.
c906108c 14934
721c2651
EZ
14935Many remote targets require you to download the executable's code once
14936you've successfully established a connection. You may wish to control
3d00d119
DJ
14937various aspects of this process.
14938
14939@table @code
721c2651
EZ
14940
14941@item set hash
14942@kindex set hash@r{, for remote monitors}
14943@cindex hash mark while downloading
14944This command controls whether a hash mark @samp{#} is displayed while
14945downloading a file to the remote monitor. If on, a hash mark is
14946displayed after each S-record is successfully downloaded to the
14947monitor.
14948
14949@item show hash
14950@kindex show hash@r{, for remote monitors}
14951Show the current status of displaying the hash mark.
14952
14953@item set debug monitor
14954@kindex set debug monitor
14955@cindex display remote monitor communications
14956Enable or disable display of communications messages between
14957@value{GDBN} and the remote monitor.
14958
14959@item show debug monitor
14960@kindex show debug monitor
14961Show the current status of displaying communications between
14962@value{GDBN} and the remote monitor.
a8f24a35 14963@end table
c906108c
SS
14964
14965@table @code
14966
14967@kindex load @var{filename}
14968@item load @var{filename}
8edfe269 14969@anchor{load}
c906108c
SS
14970Depending on what remote debugging facilities are configured into
14971@value{GDBN}, the @code{load} command may be available. Where it exists, it
14972is meant to make @var{filename} (an executable) available for debugging
14973on the remote system---by downloading, or dynamic linking, for example.
14974@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
14975the @code{add-symbol-file} command.
14976
14977If your @value{GDBN} does not have a @code{load} command, attempting to
14978execute it gets the error message ``@code{You can't do that when your
14979target is @dots{}}''
c906108c
SS
14980
14981The file is loaded at whatever address is specified in the executable.
14982For some object file formats, you can specify the load address when you
14983link the program; for other formats, like a.out, the object file format
14984specifies a fixed address.
14985@c FIXME! This would be a good place for an xref to the GNU linker doc.
14986
68437a39
DJ
14987Depending on the remote side capabilities, @value{GDBN} may be able to
14988load programs into flash memory.
14989
c906108c
SS
14990@code{load} does not repeat if you press @key{RET} again after using it.
14991@end table
14992
6d2ebf8b 14993@node Byte Order
79a6e687 14994@section Choosing Target Byte Order
7a292a7a 14995
c906108c
SS
14996@cindex choosing target byte order
14997@cindex target byte order
c906108c 14998
172c2a43 14999Some types of processors, such as the MIPS, PowerPC, and Renesas SH,
c906108c
SS
15000offer the ability to run either big-endian or little-endian byte
15001orders. Usually the executable or symbol will include a bit to
15002designate the endian-ness, and you will not need to worry about
15003which to use. However, you may still find it useful to adjust
d4f3574e 15004@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
15005
15006@table @code
4644b6e3 15007@kindex set endian
c906108c
SS
15008@item set endian big
15009Instruct @value{GDBN} to assume the target is big-endian.
15010
c906108c
SS
15011@item set endian little
15012Instruct @value{GDBN} to assume the target is little-endian.
15013
c906108c
SS
15014@item set endian auto
15015Instruct @value{GDBN} to use the byte order associated with the
15016executable.
15017
15018@item show endian
15019Display @value{GDBN}'s current idea of the target byte order.
15020
15021@end table
15022
15023Note that these commands merely adjust interpretation of symbolic
15024data on the host, and that they have absolutely no effect on the
15025target system.
15026
ea35711c
DJ
15027
15028@node Remote Debugging
15029@chapter Debugging Remote Programs
c906108c
SS
15030@cindex remote debugging
15031
15032If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
15033@value{GDBN} in the usual way, it is often useful to use remote debugging.
15034For example, you might use remote debugging on an operating system kernel,
c906108c
SS
15035or on a small system which does not have a general purpose operating system
15036powerful enough to run a full-featured debugger.
15037
15038Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
15039to make this work with particular debugging targets. In addition,
5d161b24 15040@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
15041but not specific to any particular target system) which you can use if you
15042write the remote stubs---the code that runs on the remote system to
15043communicate with @value{GDBN}.
15044
15045Other remote targets may be available in your
15046configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 15047
6b2f586d 15048@menu
07f31aa6 15049* Connecting:: Connecting to a remote target
a6b151f1 15050* File Transfer:: Sending files to a remote system
6b2f586d 15051* Server:: Using the gdbserver program
79a6e687
BW
15052* Remote Configuration:: Remote configuration
15053* Remote Stub:: Implementing a remote stub
6b2f586d
AC
15054@end menu
15055
07f31aa6 15056@node Connecting
79a6e687 15057@section Connecting to a Remote Target
07f31aa6
DJ
15058
15059On the @value{GDBN} host machine, you will need an unstripped copy of
d3e8051b 15060your program, since @value{GDBN} needs symbol and debugging information.
07f31aa6
DJ
15061Start up @value{GDBN} as usual, using the name of the local copy of your
15062program as the first argument.
15063
86941c27
JB
15064@cindex @code{target remote}
15065@value{GDBN} can communicate with the target over a serial line, or
15066over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In
15067each case, @value{GDBN} uses the same protocol for debugging your
15068program; only the medium carrying the debugging packets varies. The
15069@code{target remote} command establishes a connection to the target.
15070Its arguments indicate which medium to use:
15071
15072@table @code
15073
15074@item target remote @var{serial-device}
07f31aa6 15075@cindex serial line, @code{target remote}
86941c27
JB
15076Use @var{serial-device} to communicate with the target. For example,
15077to use a serial line connected to the device named @file{/dev/ttyb}:
15078
15079@smallexample
15080target remote /dev/ttyb
15081@end smallexample
15082
07f31aa6
DJ
15083If you're using a serial line, you may want to give @value{GDBN} the
15084@w{@samp{--baud}} option, or use the @code{set remotebaud} command
79a6e687 15085(@pxref{Remote Configuration, set remotebaud}) before the
9c16f35a 15086@code{target} command.
07f31aa6 15087
86941c27
JB
15088@item target remote @code{@var{host}:@var{port}}
15089@itemx target remote @code{tcp:@var{host}:@var{port}}
15090@cindex @acronym{TCP} port, @code{target remote}
15091Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
15092The @var{host} may be either a host name or a numeric @acronym{IP}
15093address; @var{port} must be a decimal number. The @var{host} could be
15094the target machine itself, if it is directly connected to the net, or
15095it might be a terminal server which in turn has a serial line to the
15096target.
07f31aa6 15097
86941c27
JB
15098For example, to connect to port 2828 on a terminal server named
15099@code{manyfarms}:
07f31aa6
DJ
15100
15101@smallexample
15102target remote manyfarms:2828
15103@end smallexample
15104
86941c27
JB
15105If your remote target is actually running on the same machine as your
15106debugger session (e.g.@: a simulator for your target running on the
15107same host), you can omit the hostname. For example, to connect to
15108port 1234 on your local machine:
07f31aa6
DJ
15109
15110@smallexample
15111target remote :1234
15112@end smallexample
15113@noindent
15114
15115Note that the colon is still required here.
15116
86941c27
JB
15117@item target remote @code{udp:@var{host}:@var{port}}
15118@cindex @acronym{UDP} port, @code{target remote}
15119Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to
15120connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
07f31aa6
DJ
15121
15122@smallexample
15123target remote udp:manyfarms:2828
15124@end smallexample
15125
86941c27
JB
15126When using a @acronym{UDP} connection for remote debugging, you should
15127keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP}
15128can silently drop packets on busy or unreliable networks, which will
15129cause havoc with your debugging session.
15130
66b8c7f6
JB
15131@item target remote | @var{command}
15132@cindex pipe, @code{target remote} to
15133Run @var{command} in the background and communicate with it using a
15134pipe. The @var{command} is a shell command, to be parsed and expanded
15135by the system's command shell, @code{/bin/sh}; it should expect remote
15136protocol packets on its standard input, and send replies on its
15137standard output. You could use this to run a stand-alone simulator
15138that speaks the remote debugging protocol, to make net connections
15139using programs like @code{ssh}, or for other similar tricks.
15140
15141If @var{command} closes its standard output (perhaps by exiting),
15142@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the
15143program has already exited, this will have no effect.)
15144
86941c27 15145@end table
07f31aa6 15146
86941c27 15147Once the connection has been established, you can use all the usual
8edfe269
DJ
15148commands to examine and change data. The remote program is already
15149running; you can use @kbd{step} and @kbd{continue}, and you do not
15150need to use @kbd{run}.
07f31aa6
DJ
15151
15152@cindex interrupting remote programs
15153@cindex remote programs, interrupting
15154Whenever @value{GDBN} is waiting for the remote program, if you type the
c8aa23ab 15155interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the
07f31aa6
DJ
15156program. This may or may not succeed, depending in part on the hardware
15157and the serial drivers the remote system uses. If you type the
15158interrupt character once again, @value{GDBN} displays this prompt:
15159
15160@smallexample
15161Interrupted while waiting for the program.
15162Give up (and stop debugging it)? (y or n)
15163@end smallexample
15164
15165If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
15166(If you decide you want to try again later, you can use @samp{target
15167remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
15168goes back to waiting.
15169
15170@table @code
15171@kindex detach (remote)
15172@item detach
15173When you have finished debugging the remote program, you can use the
15174@code{detach} command to release it from @value{GDBN} control.
15175Detaching from the target normally resumes its execution, but the results
15176will depend on your particular remote stub. After the @code{detach}
15177command, @value{GDBN} is free to connect to another target.
15178
15179@kindex disconnect
15180@item disconnect
15181The @code{disconnect} command behaves like @code{detach}, except that
15182the target is generally not resumed. It will wait for @value{GDBN}
15183(this instance or another one) to connect and continue debugging. After
15184the @code{disconnect} command, @value{GDBN} is again free to connect to
15185another target.
09d4efe1
EZ
15186
15187@cindex send command to remote monitor
fad38dfa
EZ
15188@cindex extend @value{GDBN} for remote targets
15189@cindex add new commands for external monitor
09d4efe1
EZ
15190@kindex monitor
15191@item monitor @var{cmd}
fad38dfa
EZ
15192This command allows you to send arbitrary commands directly to the
15193remote monitor. Since @value{GDBN} doesn't care about the commands it
15194sends like this, this command is the way to extend @value{GDBN}---you
15195can add new commands that only the external monitor will understand
15196and implement.
07f31aa6
DJ
15197@end table
15198
a6b151f1
DJ
15199@node File Transfer
15200@section Sending files to a remote system
15201@cindex remote target, file transfer
15202@cindex file transfer
15203@cindex sending files to remote systems
15204
15205Some remote targets offer the ability to transfer files over the same
15206connection used to communicate with @value{GDBN}. This is convenient
15207for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems
15208running @code{gdbserver} over a network interface. For other targets,
15209e.g.@: embedded devices with only a single serial port, this may be
15210the only way to upload or download files.
15211
15212Not all remote targets support these commands.
15213
15214@table @code
15215@kindex remote put
15216@item remote put @var{hostfile} @var{targetfile}
15217Copy file @var{hostfile} from the host system (the machine running
15218@value{GDBN}) to @var{targetfile} on the target system.
15219
15220@kindex remote get
15221@item remote get @var{targetfile} @var{hostfile}
15222Copy file @var{targetfile} from the target system to @var{hostfile}
15223on the host system.
15224
15225@kindex remote delete
15226@item remote delete @var{targetfile}
15227Delete @var{targetfile} from the target system.
15228
15229@end table
15230
6f05cf9f 15231@node Server
79a6e687 15232@section Using the @code{gdbserver} Program
6f05cf9f
AC
15233
15234@kindex gdbserver
15235@cindex remote connection without stubs
15236@code{gdbserver} is a control program for Unix-like systems, which
15237allows you to connect your program with a remote @value{GDBN} via
15238@code{target remote}---but without linking in the usual debugging stub.
15239
15240@code{gdbserver} is not a complete replacement for the debugging stubs,
15241because it requires essentially the same operating-system facilities
15242that @value{GDBN} itself does. In fact, a system that can run
15243@code{gdbserver} to connect to a remote @value{GDBN} could also run
15244@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
15245because it is a much smaller program than @value{GDBN} itself. It is
15246also easier to port than all of @value{GDBN}, so you may be able to get
15247started more quickly on a new system by using @code{gdbserver}.
15248Finally, if you develop code for real-time systems, you may find that
15249the tradeoffs involved in real-time operation make it more convenient to
15250do as much development work as possible on another system, for example
15251by cross-compiling. You can use @code{gdbserver} to make a similar
15252choice for debugging.
15253
15254@value{GDBN} and @code{gdbserver} communicate via either a serial line
15255or a TCP connection, using the standard @value{GDBN} remote serial
15256protocol.
15257
2d717e4f
DJ
15258@quotation
15259@emph{Warning:} @code{gdbserver} does not have any built-in security.
15260Do not run @code{gdbserver} connected to any public network; a
15261@value{GDBN} connection to @code{gdbserver} provides access to the
15262target system with the same privileges as the user running
15263@code{gdbserver}.
15264@end quotation
15265
15266@subsection Running @code{gdbserver}
15267@cindex arguments, to @code{gdbserver}
15268
15269Run @code{gdbserver} on the target system. You need a copy of the
15270program you want to debug, including any libraries it requires.
6f05cf9f
AC
15271@code{gdbserver} does not need your program's symbol table, so you can
15272strip the program if necessary to save space. @value{GDBN} on the host
15273system does all the symbol handling.
15274
15275To use the server, you must tell it how to communicate with @value{GDBN};
56460a61 15276the name of your program; and the arguments for your program. The usual
6f05cf9f
AC
15277syntax is:
15278
15279@smallexample
15280target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
15281@end smallexample
15282
15283@var{comm} is either a device name (to use a serial line) or a TCP
15284hostname and portnumber. For example, to debug Emacs with the argument
15285@samp{foo.txt} and communicate with @value{GDBN} over the serial port
15286@file{/dev/com1}:
15287
15288@smallexample
15289target> gdbserver /dev/com1 emacs foo.txt
15290@end smallexample
15291
15292@code{gdbserver} waits passively for the host @value{GDBN} to communicate
15293with it.
15294
15295To use a TCP connection instead of a serial line:
15296
15297@smallexample
15298target> gdbserver host:2345 emacs foo.txt
15299@end smallexample
15300
15301The only difference from the previous example is the first argument,
15302specifying that you are communicating with the host @value{GDBN} via
15303TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
15304expect a TCP connection from machine @samp{host} to local TCP port 2345.
15305(Currently, the @samp{host} part is ignored.) You can choose any number
15306you want for the port number as long as it does not conflict with any
15307TCP ports already in use on the target system (for example, @code{23} is
15308reserved for @code{telnet}).@footnote{If you choose a port number that
15309conflicts with another service, @code{gdbserver} prints an error message
15310and exits.} You must use the same port number with the host @value{GDBN}
15311@code{target remote} command.
15312
2d717e4f
DJ
15313@subsubsection Attaching to a Running Program
15314
56460a61
DJ
15315On some targets, @code{gdbserver} can also attach to running programs.
15316This is accomplished via the @code{--attach} argument. The syntax is:
15317
15318@smallexample
2d717e4f 15319target> gdbserver --attach @var{comm} @var{pid}
56460a61
DJ
15320@end smallexample
15321
15322@var{pid} is the process ID of a currently running process. It isn't necessary
15323to point @code{gdbserver} at a binary for the running process.
15324
b1fe9455
DJ
15325@pindex pidof
15326@cindex attach to a program by name
15327You can debug processes by name instead of process ID if your target has the
15328@code{pidof} utility:
15329
15330@smallexample
2d717e4f 15331target> gdbserver --attach @var{comm} `pidof @var{program}`
b1fe9455
DJ
15332@end smallexample
15333
f822c95b 15334In case more than one copy of @var{program} is running, or @var{program}
b1fe9455
DJ
15335has multiple threads, most versions of @code{pidof} support the
15336@code{-s} option to only return the first process ID.
15337
2d717e4f
DJ
15338@subsubsection Multi-Process Mode for @code{gdbserver}
15339@cindex gdbserver, multiple processes
15340@cindex multiple processes with gdbserver
15341
15342When you connect to @code{gdbserver} using @code{target remote},
15343@code{gdbserver} debugs the specified program only once. When the
15344program exits, or you detach from it, @value{GDBN} closes the connection
15345and @code{gdbserver} exits.
15346
6e6c6f50 15347If you connect using @kbd{target extended-remote}, @code{gdbserver}
2d717e4f
DJ
15348enters multi-process mode. When the debugged program exits, or you
15349detach from it, @value{GDBN} stays connected to @code{gdbserver} even
15350though no program is running. The @code{run} and @code{attach}
15351commands instruct @code{gdbserver} to run or attach to a new program.
15352The @code{run} command uses @code{set remote exec-file} (@pxref{set
15353remote exec-file}) to select the program to run. Command line
15354arguments are supported, except for wildcard expansion and I/O
15355redirection (@pxref{Arguments}).
15356
15357To start @code{gdbserver} without supplying an initial command to run
15358or process ID to attach, use the @option{--multi} command line option.
6e6c6f50 15359Then you can connect using @kbd{target extended-remote} and start
2d717e4f
DJ
15360the program you want to debug.
15361
15362@code{gdbserver} does not automatically exit in multi-process mode.
15363You can terminate it by using @code{monitor exit}
15364(@pxref{Monitor Commands for gdbserver}).
15365
15366@subsubsection Other Command-Line Arguments for @code{gdbserver}
15367
62709adf
PA
15368The @option{--debug} option tells @code{gdbserver} to display extra
15369status information about the debugging process. The
15370@option{--remote-debug} option tells @code{gdbserver} to display
15371remote protocol debug output. These options are intended for
15372@code{gdbserver} development and for bug reports to the developers.
2d717e4f 15373
ccd213ac
DJ
15374The @option{--wrapper} option specifies a wrapper to launch programs
15375for debugging. The option should be followed by the name of the
15376wrapper, then any command-line arguments to pass to the wrapper, then
15377@kbd{--} indicating the end of the wrapper arguments.
15378
15379@code{gdbserver} runs the specified wrapper program with a combined
15380command line including the wrapper arguments, then the name of the
15381program to debug, then any arguments to the program. The wrapper
15382runs until it executes your program, and then @value{GDBN} gains control.
15383
15384You can use any program that eventually calls @code{execve} with
15385its arguments as a wrapper. Several standard Unix utilities do
15386this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
15387with @code{exec "$@@"} will also work.
15388
15389For example, you can use @code{env} to pass an environment variable to
15390the debugged program, without setting the variable in @code{gdbserver}'s
15391environment:
15392
15393@smallexample
15394$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog
15395@end smallexample
15396
2d717e4f
DJ
15397@subsection Connecting to @code{gdbserver}
15398
15399Run @value{GDBN} on the host system.
15400
15401First make sure you have the necessary symbol files. Load symbols for
f822c95b
DJ
15402your application using the @code{file} command before you connect. Use
15403@code{set sysroot} to locate target libraries (unless your @value{GDBN}
2d717e4f 15404was compiled with the correct sysroot using @code{--with-sysroot}).
f822c95b
DJ
15405
15406The symbol file and target libraries must exactly match the executable
15407and libraries on the target, with one exception: the files on the host
15408system should not be stripped, even if the files on the target system
15409are. Mismatched or missing files will lead to confusing results
15410during debugging. On @sc{gnu}/Linux targets, mismatched or missing
15411files may also prevent @code{gdbserver} from debugging multi-threaded
15412programs.
15413
79a6e687 15414Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}).
6f05cf9f
AC
15415For TCP connections, you must start up @code{gdbserver} prior to using
15416the @code{target remote} command. Otherwise you may get an error whose
15417text depends on the host system, but which usually looks something like
2d717e4f 15418@samp{Connection refused}. Don't use the @code{load}
397ca115 15419command in @value{GDBN} when using @code{gdbserver}, since the program is
f822c95b 15420already on the target.
07f31aa6 15421
79a6e687 15422@subsection Monitor Commands for @code{gdbserver}
c74d0ad8 15423@cindex monitor commands, for @code{gdbserver}
2d717e4f 15424@anchor{Monitor Commands for gdbserver}
c74d0ad8
DJ
15425
15426During a @value{GDBN} session using @code{gdbserver}, you can use the
15427@code{monitor} command to send special requests to @code{gdbserver}.
2d717e4f 15428Here are the available commands.
c74d0ad8
DJ
15429
15430@table @code
15431@item monitor help
15432List the available monitor commands.
15433
15434@item monitor set debug 0
15435@itemx monitor set debug 1
15436Disable or enable general debugging messages.
15437
15438@item monitor set remote-debug 0
15439@itemx monitor set remote-debug 1
15440Disable or enable specific debugging messages associated with the remote
15441protocol (@pxref{Remote Protocol}).
15442
cdbfd419
PP
15443@item monitor set libthread-db-search-path [PATH]
15444@cindex gdbserver, search path for @code{libthread_db}
15445When this command is issued, @var{path} is a colon-separated list of
15446directories to search for @code{libthread_db} (@pxref{Threads,,set
15447libthread-db-search-path}). If you omit @var{path},
15448@samp{libthread-db-search-path} will be reset to an empty list.
15449
2d717e4f
DJ
15450@item monitor exit
15451Tell gdbserver to exit immediately. This command should be followed by
15452@code{disconnect} to close the debugging session. @code{gdbserver} will
15453detach from any attached processes and kill any processes it created.
15454Use @code{monitor exit} to terminate @code{gdbserver} at the end
15455of a multi-process mode debug session.
15456
c74d0ad8
DJ
15457@end table
15458
79a6e687
BW
15459@node Remote Configuration
15460@section Remote Configuration
501eef12 15461
9c16f35a
EZ
15462@kindex set remote
15463@kindex show remote
15464This section documents the configuration options available when
15465debugging remote programs. For the options related to the File I/O
fc320d37 15466extensions of the remote protocol, see @ref{system,
9c16f35a 15467system-call-allowed}.
501eef12
AC
15468
15469@table @code
9c16f35a 15470@item set remoteaddresssize @var{bits}
d3e8051b 15471@cindex address size for remote targets
9c16f35a
EZ
15472@cindex bits in remote address
15473Set the maximum size of address in a memory packet to the specified
15474number of bits. @value{GDBN} will mask off the address bits above
15475that number, when it passes addresses to the remote target. The
15476default value is the number of bits in the target's address.
15477
15478@item show remoteaddresssize
15479Show the current value of remote address size in bits.
15480
15481@item set remotebaud @var{n}
15482@cindex baud rate for remote targets
15483Set the baud rate for the remote serial I/O to @var{n} baud. The
15484value is used to set the speed of the serial port used for debugging
15485remote targets.
15486
15487@item show remotebaud
15488Show the current speed of the remote connection.
15489
15490@item set remotebreak
15491@cindex interrupt remote programs
15492@cindex BREAK signal instead of Ctrl-C
9a6253be 15493@anchor{set remotebreak}
9c16f35a 15494If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote
c8aa23ab 15495when you type @kbd{Ctrl-c} to interrupt the program running
9a7a1b36 15496on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C}
9c16f35a
EZ
15497character instead. The default is off, since most remote systems
15498expect to see @samp{Ctrl-C} as the interrupt signal.
15499
15500@item show remotebreak
15501Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to
15502interrupt the remote program.
15503
23776285
MR
15504@item set remoteflow on
15505@itemx set remoteflow off
15506@kindex set remoteflow
15507Enable or disable hardware flow control (@code{RTS}/@code{CTS})
15508on the serial port used to communicate to the remote target.
15509
15510@item show remoteflow
15511@kindex show remoteflow
15512Show the current setting of hardware flow control.
15513
9c16f35a
EZ
15514@item set remotelogbase @var{base}
15515Set the base (a.k.a.@: radix) of logging serial protocol
15516communications to @var{base}. Supported values of @var{base} are:
15517@code{ascii}, @code{octal}, and @code{hex}. The default is
15518@code{ascii}.
15519
15520@item show remotelogbase
15521Show the current setting of the radix for logging remote serial
15522protocol.
15523
15524@item set remotelogfile @var{file}
15525@cindex record serial communications on file
15526Record remote serial communications on the named @var{file}. The
15527default is not to record at all.
15528
15529@item show remotelogfile.
15530Show the current setting of the file name on which to record the
15531serial communications.
15532
15533@item set remotetimeout @var{num}
15534@cindex timeout for serial communications
15535@cindex remote timeout
15536Set the timeout limit to wait for the remote target to respond to
15537@var{num} seconds. The default is 2 seconds.
15538
15539@item show remotetimeout
15540Show the current number of seconds to wait for the remote target
15541responses.
15542
15543@cindex limit hardware breakpoints and watchpoints
15544@cindex remote target, limit break- and watchpoints
501eef12
AC
15545@anchor{set remote hardware-watchpoint-limit}
15546@anchor{set remote hardware-breakpoint-limit}
15547@item set remote hardware-watchpoint-limit @var{limit}
15548@itemx set remote hardware-breakpoint-limit @var{limit}
15549Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
15550watchpoints. A limit of -1, the default, is treated as unlimited.
2d717e4f
DJ
15551
15552@item set remote exec-file @var{filename}
15553@itemx show remote exec-file
15554@anchor{set remote exec-file}
15555@cindex executable file, for remote target
15556Select the file used for @code{run} with @code{target
15557extended-remote}. This should be set to a filename valid on the
15558target system. If it is not set, the target will use a default
15559filename (e.g.@: the last program run).
84603566 15560
9a7071a8
JB
15561@item set remote interrupt-sequence
15562@cindex interrupt remote programs
15563@cindex select Ctrl-C, BREAK or BREAK-g
15564Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or
15565@samp{BREAK-g} as the
15566sequence to the remote target in order to interrupt the execution.
15567@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which
15568is high level of serial line for some certain time.
15569Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g.
15570It is @code{BREAK} signal followed by character @code{g}.
15571
15572@item show interrupt-sequence
15573Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g}
15574is sent by @value{GDBN} to interrupt the remote program.
15575@code{BREAK-g} is BREAK signal followed by @code{g} and
15576also known as Magic SysRq g.
15577
15578@item set remote interrupt-on-connect
15579@cindex send interrupt-sequence on start
15580Specify whether interrupt-sequence is sent to remote target when
15581@value{GDBN} connects to it. This is mostly needed when you debug
15582Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g}
15583which is known as Magic SysRq g in order to connect @value{GDBN}.
15584
15585@item show interrupt-on-connect
15586Show whether interrupt-sequence is sent
15587to remote target when @value{GDBN} connects to it.
15588
84603566
SL
15589@kindex set tcp
15590@kindex show tcp
15591@item set tcp auto-retry on
15592@cindex auto-retry, for remote TCP target
15593Enable auto-retry for remote TCP connections. This is useful if the remote
15594debugging agent is launched in parallel with @value{GDBN}; there is a race
15595condition because the agent may not become ready to accept the connection
15596before @value{GDBN} attempts to connect. When auto-retry is
15597enabled, if the initial attempt to connect fails, @value{GDBN} reattempts
15598to establish the connection using the timeout specified by
15599@code{set tcp connect-timeout}.
15600
15601@item set tcp auto-retry off
15602Do not auto-retry failed TCP connections.
15603
15604@item show tcp auto-retry
15605Show the current auto-retry setting.
15606
15607@item set tcp connect-timeout @var{seconds}
15608@cindex connection timeout, for remote TCP target
15609@cindex timeout, for remote target connection
15610Set the timeout for establishing a TCP connection to the remote target to
15611@var{seconds}. The timeout affects both polling to retry failed connections
15612(enabled by @code{set tcp auto-retry on}) and waiting for connections
15613that are merely slow to complete, and represents an approximate cumulative
15614value.
15615
15616@item show tcp connect-timeout
15617Show the current connection timeout setting.
501eef12
AC
15618@end table
15619
427c3a89
DJ
15620@cindex remote packets, enabling and disabling
15621The @value{GDBN} remote protocol autodetects the packets supported by
15622your debugging stub. If you need to override the autodetection, you
15623can use these commands to enable or disable individual packets. Each
15624packet can be set to @samp{on} (the remote target supports this
15625packet), @samp{off} (the remote target does not support this packet),
15626or @samp{auto} (detect remote target support for this packet). They
15627all default to @samp{auto}. For more information about each packet,
15628see @ref{Remote Protocol}.
15629
15630During normal use, you should not have to use any of these commands.
15631If you do, that may be a bug in your remote debugging stub, or a bug
15632in @value{GDBN}. You may want to report the problem to the
15633@value{GDBN} developers.
15634
cfa9d6d9
DJ
15635For each packet @var{name}, the command to enable or disable the
15636packet is @code{set remote @var{name}-packet}. The available settings
15637are:
427c3a89 15638
cfa9d6d9 15639@multitable @columnfractions 0.28 0.32 0.25
427c3a89
DJ
15640@item Command Name
15641@tab Remote Packet
15642@tab Related Features
15643
cfa9d6d9 15644@item @code{fetch-register}
427c3a89
DJ
15645@tab @code{p}
15646@tab @code{info registers}
15647
cfa9d6d9 15648@item @code{set-register}
427c3a89
DJ
15649@tab @code{P}
15650@tab @code{set}
15651
cfa9d6d9 15652@item @code{binary-download}
427c3a89
DJ
15653@tab @code{X}
15654@tab @code{load}, @code{set}
15655
cfa9d6d9 15656@item @code{read-aux-vector}
427c3a89
DJ
15657@tab @code{qXfer:auxv:read}
15658@tab @code{info auxv}
15659
cfa9d6d9 15660@item @code{symbol-lookup}
427c3a89
DJ
15661@tab @code{qSymbol}
15662@tab Detecting multiple threads
15663
2d717e4f
DJ
15664@item @code{attach}
15665@tab @code{vAttach}
15666@tab @code{attach}
15667
cfa9d6d9 15668@item @code{verbose-resume}
427c3a89
DJ
15669@tab @code{vCont}
15670@tab Stepping or resuming multiple threads
15671
2d717e4f
DJ
15672@item @code{run}
15673@tab @code{vRun}
15674@tab @code{run}
15675
cfa9d6d9 15676@item @code{software-breakpoint}
427c3a89
DJ
15677@tab @code{Z0}
15678@tab @code{break}
15679
cfa9d6d9 15680@item @code{hardware-breakpoint}
427c3a89
DJ
15681@tab @code{Z1}
15682@tab @code{hbreak}
15683
cfa9d6d9 15684@item @code{write-watchpoint}
427c3a89
DJ
15685@tab @code{Z2}
15686@tab @code{watch}
15687
cfa9d6d9 15688@item @code{read-watchpoint}
427c3a89
DJ
15689@tab @code{Z3}
15690@tab @code{rwatch}
15691
cfa9d6d9 15692@item @code{access-watchpoint}
427c3a89
DJ
15693@tab @code{Z4}
15694@tab @code{awatch}
15695
cfa9d6d9
DJ
15696@item @code{target-features}
15697@tab @code{qXfer:features:read}
15698@tab @code{set architecture}
15699
15700@item @code{library-info}
15701@tab @code{qXfer:libraries:read}
15702@tab @code{info sharedlibrary}
15703
15704@item @code{memory-map}
15705@tab @code{qXfer:memory-map:read}
15706@tab @code{info mem}
15707
15708@item @code{read-spu-object}
15709@tab @code{qXfer:spu:read}
15710@tab @code{info spu}
15711
15712@item @code{write-spu-object}
15713@tab @code{qXfer:spu:write}
15714@tab @code{info spu}
15715
4aa995e1
PA
15716@item @code{read-siginfo-object}
15717@tab @code{qXfer:siginfo:read}
15718@tab @code{print $_siginfo}
15719
15720@item @code{write-siginfo-object}
15721@tab @code{qXfer:siginfo:write}
15722@tab @code{set $_siginfo}
15723
dc146f7c
VP
15724@item @code{threads}
15725@tab @code{qXfer:threads:read}
15726@tab @code{info threads}
15727
cfa9d6d9 15728@item @code{get-thread-local-@*storage-address}
427c3a89
DJ
15729@tab @code{qGetTLSAddr}
15730@tab Displaying @code{__thread} variables
15731
08388c79
DE
15732@item @code{search-memory}
15733@tab @code{qSearch:memory}
15734@tab @code{find}
15735
427c3a89
DJ
15736@item @code{supported-packets}
15737@tab @code{qSupported}
15738@tab Remote communications parameters
15739
cfa9d6d9 15740@item @code{pass-signals}
89be2091
DJ
15741@tab @code{QPassSignals}
15742@tab @code{handle @var{signal}}
15743
a6b151f1
DJ
15744@item @code{hostio-close-packet}
15745@tab @code{vFile:close}
15746@tab @code{remote get}, @code{remote put}
15747
15748@item @code{hostio-open-packet}
15749@tab @code{vFile:open}
15750@tab @code{remote get}, @code{remote put}
15751
15752@item @code{hostio-pread-packet}
15753@tab @code{vFile:pread}
15754@tab @code{remote get}, @code{remote put}
15755
15756@item @code{hostio-pwrite-packet}
15757@tab @code{vFile:pwrite}
15758@tab @code{remote get}, @code{remote put}
15759
15760@item @code{hostio-unlink-packet}
15761@tab @code{vFile:unlink}
15762@tab @code{remote delete}
a6f3e723
SL
15763
15764@item @code{noack-packet}
15765@tab @code{QStartNoAckMode}
15766@tab Packet acknowledgment
07e059b5
VP
15767
15768@item @code{osdata}
15769@tab @code{qXfer:osdata:read}
15770@tab @code{info os}
0b16c5cf
PA
15771
15772@item @code{query-attached}
15773@tab @code{qAttached}
15774@tab Querying remote process attach state.
427c3a89
DJ
15775@end multitable
15776
79a6e687
BW
15777@node Remote Stub
15778@section Implementing a Remote Stub
7a292a7a 15779
8e04817f
AC
15780@cindex debugging stub, example
15781@cindex remote stub, example
15782@cindex stub example, remote debugging
15783The stub files provided with @value{GDBN} implement the target side of the
15784communication protocol, and the @value{GDBN} side is implemented in the
15785@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
15786these subroutines to communicate, and ignore the details. (If you're
15787implementing your own stub file, you can still ignore the details: start
15788with one of the existing stub files. @file{sparc-stub.c} is the best
15789organized, and therefore the easiest to read.)
15790
104c1213
JM
15791@cindex remote serial debugging, overview
15792To debug a program running on another machine (the debugging
15793@dfn{target} machine), you must first arrange for all the usual
15794prerequisites for the program to run by itself. For example, for a C
15795program, you need:
c906108c 15796
104c1213
JM
15797@enumerate
15798@item
15799A startup routine to set up the C runtime environment; these usually
15800have a name like @file{crt0}. The startup routine may be supplied by
15801your hardware supplier, or you may have to write your own.
96baa820 15802
5d161b24 15803@item
d4f3574e 15804A C subroutine library to support your program's
104c1213 15805subroutine calls, notably managing input and output.
96baa820 15806
104c1213
JM
15807@item
15808A way of getting your program to the other machine---for example, a
15809download program. These are often supplied by the hardware
15810manufacturer, but you may have to write your own from hardware
15811documentation.
15812@end enumerate
96baa820 15813
104c1213
JM
15814The next step is to arrange for your program to use a serial port to
15815communicate with the machine where @value{GDBN} is running (the @dfn{host}
15816machine). In general terms, the scheme looks like this:
96baa820 15817
104c1213
JM
15818@table @emph
15819@item On the host,
15820@value{GDBN} already understands how to use this protocol; when everything
15821else is set up, you can simply use the @samp{target remote} command
15822(@pxref{Targets,,Specifying a Debugging Target}).
15823
15824@item On the target,
15825you must link with your program a few special-purpose subroutines that
15826implement the @value{GDBN} remote serial protocol. The file containing these
15827subroutines is called a @dfn{debugging stub}.
15828
15829On certain remote targets, you can use an auxiliary program
15830@code{gdbserver} instead of linking a stub into your program.
79a6e687 15831@xref{Server,,Using the @code{gdbserver} Program}, for details.
104c1213 15832@end table
96baa820 15833
104c1213
JM
15834The debugging stub is specific to the architecture of the remote
15835machine; for example, use @file{sparc-stub.c} to debug programs on
15836@sc{sparc} boards.
96baa820 15837
104c1213
JM
15838@cindex remote serial stub list
15839These working remote stubs are distributed with @value{GDBN}:
96baa820 15840
104c1213
JM
15841@table @code
15842
15843@item i386-stub.c
41afff9a 15844@cindex @file{i386-stub.c}
104c1213
JM
15845@cindex Intel
15846@cindex i386
15847For Intel 386 and compatible architectures.
15848
15849@item m68k-stub.c
41afff9a 15850@cindex @file{m68k-stub.c}
104c1213
JM
15851@cindex Motorola 680x0
15852@cindex m680x0
15853For Motorola 680x0 architectures.
15854
15855@item sh-stub.c
41afff9a 15856@cindex @file{sh-stub.c}
172c2a43 15857@cindex Renesas
104c1213 15858@cindex SH
172c2a43 15859For Renesas SH architectures.
104c1213
JM
15860
15861@item sparc-stub.c
41afff9a 15862@cindex @file{sparc-stub.c}
104c1213
JM
15863@cindex Sparc
15864For @sc{sparc} architectures.
15865
15866@item sparcl-stub.c
41afff9a 15867@cindex @file{sparcl-stub.c}
104c1213
JM
15868@cindex Fujitsu
15869@cindex SparcLite
15870For Fujitsu @sc{sparclite} architectures.
15871
15872@end table
15873
15874The @file{README} file in the @value{GDBN} distribution may list other
15875recently added stubs.
15876
15877@menu
15878* Stub Contents:: What the stub can do for you
15879* Bootstrapping:: What you must do for the stub
15880* Debug Session:: Putting it all together
104c1213
JM
15881@end menu
15882
6d2ebf8b 15883@node Stub Contents
79a6e687 15884@subsection What the Stub Can Do for You
104c1213
JM
15885
15886@cindex remote serial stub
15887The debugging stub for your architecture supplies these three
15888subroutines:
15889
15890@table @code
15891@item set_debug_traps
4644b6e3 15892@findex set_debug_traps
104c1213
JM
15893@cindex remote serial stub, initialization
15894This routine arranges for @code{handle_exception} to run when your
15895program stops. You must call this subroutine explicitly near the
15896beginning of your program.
15897
15898@item handle_exception
4644b6e3 15899@findex handle_exception
104c1213
JM
15900@cindex remote serial stub, main routine
15901This is the central workhorse, but your program never calls it
15902explicitly---the setup code arranges for @code{handle_exception} to
15903run when a trap is triggered.
15904
15905@code{handle_exception} takes control when your program stops during
15906execution (for example, on a breakpoint), and mediates communications
15907with @value{GDBN} on the host machine. This is where the communications
15908protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 15909representative on the target machine. It begins by sending summary
104c1213
JM
15910information on the state of your program, then continues to execute,
15911retrieving and transmitting any information @value{GDBN} needs, until you
15912execute a @value{GDBN} command that makes your program resume; at that point,
15913@code{handle_exception} returns control to your own code on the target
5d161b24 15914machine.
104c1213
JM
15915
15916@item breakpoint
15917@cindex @code{breakpoint} subroutine, remote
15918Use this auxiliary subroutine to make your program contain a
15919breakpoint. Depending on the particular situation, this may be the only
15920way for @value{GDBN} to get control. For instance, if your target
15921machine has some sort of interrupt button, you won't need to call this;
15922pressing the interrupt button transfers control to
15923@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
15924simply receiving characters on the serial port may also trigger a trap;
15925again, in that situation, you don't need to call @code{breakpoint} from
15926your own program---simply running @samp{target remote} from the host
5d161b24 15927@value{GDBN} session gets control.
104c1213
JM
15928
15929Call @code{breakpoint} if none of these is true, or if you simply want
15930to make certain your program stops at a predetermined point for the
15931start of your debugging session.
15932@end table
15933
6d2ebf8b 15934@node Bootstrapping
79a6e687 15935@subsection What You Must Do for the Stub
104c1213
JM
15936
15937@cindex remote stub, support routines
15938The debugging stubs that come with @value{GDBN} are set up for a particular
15939chip architecture, but they have no information about the rest of your
15940debugging target machine.
15941
15942First of all you need to tell the stub how to communicate with the
15943serial port.
15944
15945@table @code
15946@item int getDebugChar()
4644b6e3 15947@findex getDebugChar
104c1213
JM
15948Write this subroutine to read a single character from the serial port.
15949It may be identical to @code{getchar} for your target system; a
15950different name is used to allow you to distinguish the two if you wish.
15951
15952@item void putDebugChar(int)
4644b6e3 15953@findex putDebugChar
104c1213 15954Write this subroutine to write a single character to the serial port.
5d161b24 15955It may be identical to @code{putchar} for your target system; a
104c1213
JM
15956different name is used to allow you to distinguish the two if you wish.
15957@end table
15958
15959@cindex control C, and remote debugging
15960@cindex interrupting remote targets
15961If you want @value{GDBN} to be able to stop your program while it is
15962running, you need to use an interrupt-driven serial driver, and arrange
15963for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
15964character). That is the character which @value{GDBN} uses to tell the
15965remote system to stop.
15966
15967Getting the debugging target to return the proper status to @value{GDBN}
15968probably requires changes to the standard stub; one quick and dirty way
15969is to just execute a breakpoint instruction (the ``dirty'' part is that
15970@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
15971
15972Other routines you need to supply are:
15973
15974@table @code
15975@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
4644b6e3 15976@findex exceptionHandler
104c1213
JM
15977Write this function to install @var{exception_address} in the exception
15978handling tables. You need to do this because the stub does not have any
15979way of knowing what the exception handling tables on your target system
15980are like (for example, the processor's table might be in @sc{rom},
15981containing entries which point to a table in @sc{ram}).
15982@var{exception_number} is the exception number which should be changed;
15983its meaning is architecture-dependent (for example, different numbers
15984might represent divide by zero, misaligned access, etc). When this
15985exception occurs, control should be transferred directly to
15986@var{exception_address}, and the processor state (stack, registers,
15987and so on) should be just as it is when a processor exception occurs. So if
15988you want to use a jump instruction to reach @var{exception_address}, it
15989should be a simple jump, not a jump to subroutine.
15990
15991For the 386, @var{exception_address} should be installed as an interrupt
15992gate so that interrupts are masked while the handler runs. The gate
15993should be at privilege level 0 (the most privileged level). The
15994@sc{sparc} and 68k stubs are able to mask interrupts themselves without
15995help from @code{exceptionHandler}.
15996
15997@item void flush_i_cache()
4644b6e3 15998@findex flush_i_cache
d4f3574e 15999On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
16000instruction cache, if any, on your target machine. If there is no
16001instruction cache, this subroutine may be a no-op.
16002
16003On target machines that have instruction caches, @value{GDBN} requires this
16004function to make certain that the state of your program is stable.
16005@end table
16006
16007@noindent
16008You must also make sure this library routine is available:
16009
16010@table @code
16011@item void *memset(void *, int, int)
4644b6e3 16012@findex memset
104c1213
JM
16013This is the standard library function @code{memset} that sets an area of
16014memory to a known value. If you have one of the free versions of
16015@code{libc.a}, @code{memset} can be found there; otherwise, you must
16016either obtain it from your hardware manufacturer, or write your own.
16017@end table
16018
16019If you do not use the GNU C compiler, you may need other standard
16020library subroutines as well; this varies from one stub to another,
16021but in general the stubs are likely to use any of the common library
e22ea452 16022subroutines which @code{@value{NGCC}} generates as inline code.
104c1213
JM
16023
16024
6d2ebf8b 16025@node Debug Session
79a6e687 16026@subsection Putting it All Together
104c1213
JM
16027
16028@cindex remote serial debugging summary
16029In summary, when your program is ready to debug, you must follow these
16030steps.
16031
16032@enumerate
16033@item
6d2ebf8b 16034Make sure you have defined the supporting low-level routines
79a6e687 16035(@pxref{Bootstrapping,,What You Must Do for the Stub}):
104c1213
JM
16036@display
16037@code{getDebugChar}, @code{putDebugChar},
16038@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
16039@end display
16040
16041@item
16042Insert these lines near the top of your program:
16043
474c8240 16044@smallexample
104c1213
JM
16045set_debug_traps();
16046breakpoint();
474c8240 16047@end smallexample
104c1213
JM
16048
16049@item
16050For the 680x0 stub only, you need to provide a variable called
16051@code{exceptionHook}. Normally you just use:
16052
474c8240 16053@smallexample
104c1213 16054void (*exceptionHook)() = 0;
474c8240 16055@end smallexample
104c1213 16056
d4f3574e 16057@noindent
104c1213 16058but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 16059function in your program, that function is called when
104c1213
JM
16060@code{@value{GDBN}} continues after stopping on a trap (for example, bus
16061error). The function indicated by @code{exceptionHook} is called with
16062one parameter: an @code{int} which is the exception number.
16063
16064@item
16065Compile and link together: your program, the @value{GDBN} debugging stub for
16066your target architecture, and the supporting subroutines.
16067
16068@item
16069Make sure you have a serial connection between your target machine and
16070the @value{GDBN} host, and identify the serial port on the host.
16071
16072@item
16073@c The "remote" target now provides a `load' command, so we should
16074@c document that. FIXME.
16075Download your program to your target machine (or get it there by
16076whatever means the manufacturer provides), and start it.
16077
16078@item
07f31aa6 16079Start @value{GDBN} on the host, and connect to the target
79a6e687 16080(@pxref{Connecting,,Connecting to a Remote Target}).
9db8d71f 16081
104c1213
JM
16082@end enumerate
16083
8e04817f
AC
16084@node Configurations
16085@chapter Configuration-Specific Information
104c1213 16086
8e04817f
AC
16087While nearly all @value{GDBN} commands are available for all native and
16088cross versions of the debugger, there are some exceptions. This chapter
16089describes things that are only available in certain configurations.
104c1213 16090
8e04817f
AC
16091There are three major categories of configurations: native
16092configurations, where the host and target are the same, embedded
16093operating system configurations, which are usually the same for several
16094different processor architectures, and bare embedded processors, which
16095are quite different from each other.
104c1213 16096
8e04817f
AC
16097@menu
16098* Native::
16099* Embedded OS::
16100* Embedded Processors::
16101* Architectures::
16102@end menu
104c1213 16103
8e04817f
AC
16104@node Native
16105@section Native
104c1213 16106
8e04817f
AC
16107This section describes details specific to particular native
16108configurations.
6cf7e474 16109
8e04817f
AC
16110@menu
16111* HP-UX:: HP-UX
7561d450 16112* BSD libkvm Interface:: Debugging BSD kernel memory images
8e04817f
AC
16113* SVR4 Process Information:: SVR4 process information
16114* DJGPP Native:: Features specific to the DJGPP port
78c47bea 16115* Cygwin Native:: Features specific to the Cygwin port
14d6dd68 16116* Hurd Native:: Features specific to @sc{gnu} Hurd
a64548ea 16117* Neutrino:: Features specific to QNX Neutrino
a80b95ba 16118* Darwin:: Features specific to Darwin
8e04817f 16119@end menu
6cf7e474 16120
8e04817f
AC
16121@node HP-UX
16122@subsection HP-UX
104c1213 16123
8e04817f
AC
16124On HP-UX systems, if you refer to a function or variable name that
16125begins with a dollar sign, @value{GDBN} searches for a user or system
16126name first, before it searches for a convenience variable.
104c1213 16127
9c16f35a 16128
7561d450
MK
16129@node BSD libkvm Interface
16130@subsection BSD libkvm Interface
16131
16132@cindex libkvm
16133@cindex kernel memory image
16134@cindex kernel crash dump
16135
16136BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
16137interface that provides a uniform interface for accessing kernel virtual
16138memory images, including live systems and crash dumps. @value{GDBN}
16139uses this interface to allow you to debug live kernels and kernel crash
16140dumps on many native BSD configurations. This is implemented as a
16141special @code{kvm} debugging target. For debugging a live system, load
16142the currently running kernel into @value{GDBN} and connect to the
16143@code{kvm} target:
16144
16145@smallexample
16146(@value{GDBP}) @b{target kvm}
16147@end smallexample
16148
16149For debugging crash dumps, provide the file name of the crash dump as an
16150argument:
16151
16152@smallexample
16153(@value{GDBP}) @b{target kvm /var/crash/bsd.0}
16154@end smallexample
16155
16156Once connected to the @code{kvm} target, the following commands are
16157available:
16158
16159@table @code
16160@kindex kvm
16161@item kvm pcb
721c2651 16162Set current context from the @dfn{Process Control Block} (PCB) address.
7561d450
MK
16163
16164@item kvm proc
16165Set current context from proc address. This command isn't available on
16166modern FreeBSD systems.
16167@end table
16168
8e04817f 16169@node SVR4 Process Information
79a6e687 16170@subsection SVR4 Process Information
60bf7e09
EZ
16171@cindex /proc
16172@cindex examine process image
16173@cindex process info via @file{/proc}
104c1213 16174
60bf7e09
EZ
16175Many versions of SVR4 and compatible systems provide a facility called
16176@samp{/proc} that can be used to examine the image of a running
16177process using file-system subroutines. If @value{GDBN} is configured
16178for an operating system with this facility, the command @code{info
16179proc} is available to report information about the process running
16180your program, or about any process running on your system. @code{info
16181proc} works only on SVR4 systems that include the @code{procfs} code.
16182This includes, as of this writing, @sc{gnu}/Linux, OSF/1 (Digital
16183Unix), Solaris, Irix, and Unixware, but not HP-UX, for example.
104c1213 16184
8e04817f
AC
16185@table @code
16186@kindex info proc
60bf7e09 16187@cindex process ID
8e04817f 16188@item info proc
60bf7e09
EZ
16189@itemx info proc @var{process-id}
16190Summarize available information about any running process. If a
16191process ID is specified by @var{process-id}, display information about
16192that process; otherwise display information about the program being
16193debugged. The summary includes the debugged process ID, the command
16194line used to invoke it, its current working directory, and its
16195executable file's absolute file name.
16196
16197On some systems, @var{process-id} can be of the form
16198@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID
16199within a process. If the optional @var{pid} part is missing, it means
16200a thread from the process being debugged (the leading @samp{/} still
16201needs to be present, or else @value{GDBN} will interpret the number as
16202a process ID rather than a thread ID).
6cf7e474 16203
8e04817f 16204@item info proc mappings
60bf7e09
EZ
16205@cindex memory address space mappings
16206Report the memory address space ranges accessible in the program, with
16207information on whether the process has read, write, or execute access
16208rights to each range. On @sc{gnu}/Linux systems, each memory range
16209includes the object file which is mapped to that range, instead of the
16210memory access rights to that range.
16211
16212@item info proc stat
16213@itemx info proc status
16214@cindex process detailed status information
16215These subcommands are specific to @sc{gnu}/Linux systems. They show
16216the process-related information, including the user ID and group ID;
16217how many threads are there in the process; its virtual memory usage;
16218the signals that are pending, blocked, and ignored; its TTY; its
16219consumption of system and user time; its stack size; its @samp{nice}
2eecc4ab 16220value; etc. For more information, see the @samp{proc} man page
60bf7e09
EZ
16221(type @kbd{man 5 proc} from your shell prompt).
16222
16223@item info proc all
16224Show all the information about the process described under all of the
16225above @code{info proc} subcommands.
16226
8e04817f
AC
16227@ignore
16228@comment These sub-options of 'info proc' were not included when
16229@comment procfs.c was re-written. Keep their descriptions around
16230@comment against the day when someone finds the time to put them back in.
16231@kindex info proc times
16232@item info proc times
16233Starting time, user CPU time, and system CPU time for your program and
16234its children.
6cf7e474 16235
8e04817f
AC
16236@kindex info proc id
16237@item info proc id
16238Report on the process IDs related to your program: its own process ID,
16239the ID of its parent, the process group ID, and the session ID.
8e04817f 16240@end ignore
721c2651
EZ
16241
16242@item set procfs-trace
16243@kindex set procfs-trace
16244@cindex @code{procfs} API calls
16245This command enables and disables tracing of @code{procfs} API calls.
16246
16247@item show procfs-trace
16248@kindex show procfs-trace
16249Show the current state of @code{procfs} API call tracing.
16250
16251@item set procfs-file @var{file}
16252@kindex set procfs-file
16253Tell @value{GDBN} to write @code{procfs} API trace to the named
16254@var{file}. @value{GDBN} appends the trace info to the previous
16255contents of the file. The default is to display the trace on the
16256standard output.
16257
16258@item show procfs-file
16259@kindex show procfs-file
16260Show the file to which @code{procfs} API trace is written.
16261
16262@item proc-trace-entry
16263@itemx proc-trace-exit
16264@itemx proc-untrace-entry
16265@itemx proc-untrace-exit
16266@kindex proc-trace-entry
16267@kindex proc-trace-exit
16268@kindex proc-untrace-entry
16269@kindex proc-untrace-exit
16270These commands enable and disable tracing of entries into and exits
16271from the @code{syscall} interface.
16272
16273@item info pidlist
16274@kindex info pidlist
16275@cindex process list, QNX Neutrino
16276For QNX Neutrino only, this command displays the list of all the
16277processes and all the threads within each process.
16278
16279@item info meminfo
16280@kindex info meminfo
16281@cindex mapinfo list, QNX Neutrino
16282For QNX Neutrino only, this command displays the list of all mapinfos.
8e04817f 16283@end table
104c1213 16284
8e04817f
AC
16285@node DJGPP Native
16286@subsection Features for Debugging @sc{djgpp} Programs
16287@cindex @sc{djgpp} debugging
16288@cindex native @sc{djgpp} debugging
16289@cindex MS-DOS-specific commands
104c1213 16290
514c4d71
EZ
16291@cindex DPMI
16292@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and
8e04817f
AC
16293MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
16294that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
16295top of real-mode DOS systems and their emulations.
104c1213 16296
8e04817f
AC
16297@value{GDBN} supports native debugging of @sc{djgpp} programs, and
16298defines a few commands specific to the @sc{djgpp} port. This
16299subsection describes those commands.
104c1213 16300
8e04817f
AC
16301@table @code
16302@kindex info dos
16303@item info dos
16304This is a prefix of @sc{djgpp}-specific commands which print
16305information about the target system and important OS structures.
f1251bdd 16306
8e04817f
AC
16307@kindex sysinfo
16308@cindex MS-DOS system info
16309@cindex free memory information (MS-DOS)
16310@item info dos sysinfo
16311This command displays assorted information about the underlying
16312platform: the CPU type and features, the OS version and flavor, the
16313DPMI version, and the available conventional and DPMI memory.
104c1213 16314
8e04817f
AC
16315@cindex GDT
16316@cindex LDT
16317@cindex IDT
16318@cindex segment descriptor tables
16319@cindex descriptor tables display
16320@item info dos gdt
16321@itemx info dos ldt
16322@itemx info dos idt
16323These 3 commands display entries from, respectively, Global, Local,
16324and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
16325tables are data structures which store a descriptor for each segment
16326that is currently in use. The segment's selector is an index into a
16327descriptor table; the table entry for that index holds the
16328descriptor's base address and limit, and its attributes and access
16329rights.
104c1213 16330
8e04817f
AC
16331A typical @sc{djgpp} program uses 3 segments: a code segment, a data
16332segment (used for both data and the stack), and a DOS segment (which
16333allows access to DOS/BIOS data structures and absolute addresses in
16334conventional memory). However, the DPMI host will usually define
16335additional segments in order to support the DPMI environment.
d4f3574e 16336
8e04817f
AC
16337@cindex garbled pointers
16338These commands allow to display entries from the descriptor tables.
16339Without an argument, all entries from the specified table are
16340displayed. An argument, which should be an integer expression, means
16341display a single entry whose index is given by the argument. For
16342example, here's a convenient way to display information about the
16343debugged program's data segment:
104c1213 16344
8e04817f
AC
16345@smallexample
16346@exdent @code{(@value{GDBP}) info dos ldt $ds}
16347@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
16348@end smallexample
104c1213 16349
8e04817f
AC
16350@noindent
16351This comes in handy when you want to see whether a pointer is outside
16352the data segment's limit (i.e.@: @dfn{garbled}).
104c1213 16353
8e04817f
AC
16354@cindex page tables display (MS-DOS)
16355@item info dos pde
16356@itemx info dos pte
16357These two commands display entries from, respectively, the Page
16358Directory and the Page Tables. Page Directories and Page Tables are
16359data structures which control how virtual memory addresses are mapped
16360into physical addresses. A Page Table includes an entry for every
16361page of memory that is mapped into the program's address space; there
16362may be several Page Tables, each one holding up to 4096 entries. A
16363Page Directory has up to 4096 entries, one each for every Page Table
16364that is currently in use.
104c1213 16365
8e04817f
AC
16366Without an argument, @kbd{info dos pde} displays the entire Page
16367Directory, and @kbd{info dos pte} displays all the entries in all of
16368the Page Tables. An argument, an integer expression, given to the
16369@kbd{info dos pde} command means display only that entry from the Page
16370Directory table. An argument given to the @kbd{info dos pte} command
16371means display entries from a single Page Table, the one pointed to by
16372the specified entry in the Page Directory.
104c1213 16373
8e04817f
AC
16374@cindex direct memory access (DMA) on MS-DOS
16375These commands are useful when your program uses @dfn{DMA} (Direct
16376Memory Access), which needs physical addresses to program the DMA
16377controller.
104c1213 16378
8e04817f 16379These commands are supported only with some DPMI servers.
104c1213 16380
8e04817f
AC
16381@cindex physical address from linear address
16382@item info dos address-pte @var{addr}
16383This command displays the Page Table entry for a specified linear
514c4d71
EZ
16384address. The argument @var{addr} is a linear address which should
16385already have the appropriate segment's base address added to it,
16386because this command accepts addresses which may belong to @emph{any}
16387segment. For example, here's how to display the Page Table entry for
16388the page where a variable @code{i} is stored:
104c1213 16389
b383017d 16390@smallexample
8e04817f
AC
16391@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
16392@exdent @code{Page Table entry for address 0x11a00d30:}
b383017d 16393@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
8e04817f 16394@end smallexample
104c1213 16395
8e04817f
AC
16396@noindent
16397This says that @code{i} is stored at offset @code{0xd30} from the page
514c4d71 16398whose physical base address is @code{0x02698000}, and shows all the
8e04817f 16399attributes of that page.
104c1213 16400
8e04817f
AC
16401Note that you must cast the addresses of variables to a @code{char *},
16402since otherwise the value of @code{__djgpp_base_address}, the base
16403address of all variables and functions in a @sc{djgpp} program, will
16404be added using the rules of C pointer arithmetics: if @code{i} is
16405declared an @code{int}, @value{GDBN} will add 4 times the value of
16406@code{__djgpp_base_address} to the address of @code{i}.
104c1213 16407
8e04817f
AC
16408Here's another example, it displays the Page Table entry for the
16409transfer buffer:
104c1213 16410
8e04817f
AC
16411@smallexample
16412@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
16413@exdent @code{Page Table entry for address 0x29110:}
16414@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
16415@end smallexample
104c1213 16416
8e04817f
AC
16417@noindent
16418(The @code{+ 3} offset is because the transfer buffer's address is the
514c4d71
EZ
164193rd member of the @code{_go32_info_block} structure.) The output
16420clearly shows that this DPMI server maps the addresses in conventional
16421memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and
16422linear (@code{0x29110}) addresses are identical.
104c1213 16423
8e04817f
AC
16424This command is supported only with some DPMI servers.
16425@end table
104c1213 16426
c45da7e6 16427@cindex DOS serial data link, remote debugging
a8f24a35
EZ
16428In addition to native debugging, the DJGPP port supports remote
16429debugging via a serial data link. The following commands are specific
16430to remote serial debugging in the DJGPP port of @value{GDBN}.
16431
16432@table @code
16433@kindex set com1base
16434@kindex set com1irq
16435@kindex set com2base
16436@kindex set com2irq
16437@kindex set com3base
16438@kindex set com3irq
16439@kindex set com4base
16440@kindex set com4irq
16441@item set com1base @var{addr}
16442This command sets the base I/O port address of the @file{COM1} serial
16443port.
16444
16445@item set com1irq @var{irq}
16446This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use
16447for the @file{COM1} serial port.
16448
16449There are similar commands @samp{set com2base}, @samp{set com3irq},
16450etc.@: for setting the port address and the @code{IRQ} lines for the
16451other 3 COM ports.
16452
16453@kindex show com1base
16454@kindex show com1irq
16455@kindex show com2base
16456@kindex show com2irq
16457@kindex show com3base
16458@kindex show com3irq
16459@kindex show com4base
16460@kindex show com4irq
16461The related commands @samp{show com1base}, @samp{show com1irq} etc.@:
16462display the current settings of the base address and the @code{IRQ}
16463lines used by the COM ports.
c45da7e6
EZ
16464
16465@item info serial
16466@kindex info serial
16467@cindex DOS serial port status
16468This command prints the status of the 4 DOS serial ports. For each
16469port, it prints whether it's active or not, its I/O base address and
16470IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the
16471counts of various errors encountered so far.
a8f24a35
EZ
16472@end table
16473
16474
78c47bea 16475@node Cygwin Native
79a6e687 16476@subsection Features for Debugging MS Windows PE Executables
78c47bea
PM
16477@cindex MS Windows debugging
16478@cindex native Cygwin debugging
16479@cindex Cygwin-specific commands
16480
be448670 16481@value{GDBN} supports native debugging of MS Windows programs, including
cbb8f428
EZ
16482DLLs with and without symbolic debugging information.
16483
16484@cindex Ctrl-BREAK, MS-Windows
16485@cindex interrupt debuggee on MS-Windows
16486MS-Windows programs that call @code{SetConsoleMode} to switch off the
16487special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted
16488by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows
16489supports @kbd{C-@key{BREAK}} as an alternative interrupt key
16490sequence, which can be used to interrupt the debuggee even if it
16491ignores @kbd{C-c}.
16492
16493There are various additional Cygwin-specific commands, described in
16494this section. Working with DLLs that have no debugging symbols is
16495described in @ref{Non-debug DLL Symbols}.
78c47bea
PM
16496
16497@table @code
16498@kindex info w32
16499@item info w32
db2e3e2e 16500This is a prefix of MS Windows-specific commands which print
78c47bea
PM
16501information about the target system and important OS structures.
16502
16503@item info w32 selector
16504This command displays information returned by
16505the Win32 API @code{GetThreadSelectorEntry} function.
16506It takes an optional argument that is evaluated to
16507a long value to give the information about this given selector.
16508Without argument, this command displays information
d3e8051b 16509about the six segment registers.
78c47bea
PM
16510
16511@kindex info dll
16512@item info dll
db2e3e2e 16513This is a Cygwin-specific alias of @code{info shared}.
78c47bea
PM
16514
16515@kindex dll-symbols
16516@item dll-symbols
16517This command loads symbols from a dll similarly to
16518add-sym command but without the need to specify a base address.
16519
be90c084 16520@kindex set cygwin-exceptions
e16b02ee
EZ
16521@cindex debugging the Cygwin DLL
16522@cindex Cygwin DLL, debugging
be90c084 16523@item set cygwin-exceptions @var{mode}
e16b02ee
EZ
16524If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that
16525happen inside the Cygwin DLL. If @var{mode} is @code{off},
16526@value{GDBN} will delay recognition of exceptions, and may ignore some
16527exceptions which seem to be caused by internal Cygwin DLL
16528``bookkeeping''. This option is meant primarily for debugging the
16529Cygwin DLL itself; the default value is @code{off} to avoid annoying
16530@value{GDBN} users with false @code{SIGSEGV} signals.
be90c084
CF
16531
16532@kindex show cygwin-exceptions
16533@item show cygwin-exceptions
e16b02ee
EZ
16534Displays whether @value{GDBN} will break on exceptions that happen
16535inside the Cygwin DLL itself.
be90c084 16536
b383017d 16537@kindex set new-console
78c47bea 16538@item set new-console @var{mode}
b383017d 16539If @var{mode} is @code{on} the debuggee will
78c47bea 16540be started in a new console on next start.
e03e5e7b 16541If @var{mode} is @code{off}, the debuggee will
78c47bea
PM
16542be started in the same console as the debugger.
16543
16544@kindex show new-console
16545@item show new-console
16546Displays whether a new console is used
16547when the debuggee is started.
16548
16549@kindex set new-group
16550@item set new-group @var{mode}
16551This boolean value controls whether the debuggee should
16552start a new group or stay in the same group as the debugger.
16553This affects the way the Windows OS handles
c8aa23ab 16554@samp{Ctrl-C}.
78c47bea
PM
16555
16556@kindex show new-group
16557@item show new-group
16558Displays current value of new-group boolean.
16559
16560@kindex set debugevents
16561@item set debugevents
219eec71
EZ
16562This boolean value adds debug output concerning kernel events related
16563to the debuggee seen by the debugger. This includes events that
16564signal thread and process creation and exit, DLL loading and
16565unloading, console interrupts, and debugging messages produced by the
16566Windows @code{OutputDebugString} API call.
78c47bea
PM
16567
16568@kindex set debugexec
16569@item set debugexec
b383017d 16570This boolean value adds debug output concerning execute events
219eec71 16571(such as resume thread) seen by the debugger.
78c47bea
PM
16572
16573@kindex set debugexceptions
16574@item set debugexceptions
219eec71
EZ
16575This boolean value adds debug output concerning exceptions in the
16576debuggee seen by the debugger.
78c47bea
PM
16577
16578@kindex set debugmemory
16579@item set debugmemory
219eec71
EZ
16580This boolean value adds debug output concerning debuggee memory reads
16581and writes by the debugger.
78c47bea
PM
16582
16583@kindex set shell
16584@item set shell
16585This boolean values specifies whether the debuggee is called
16586via a shell or directly (default value is on).
16587
16588@kindex show shell
16589@item show shell
16590Displays if the debuggee will be started with a shell.
16591
16592@end table
16593
be448670 16594@menu
79a6e687 16595* Non-debug DLL Symbols:: Support for DLLs without debugging symbols
be448670
CF
16596@end menu
16597
79a6e687
BW
16598@node Non-debug DLL Symbols
16599@subsubsection Support for DLLs without Debugging Symbols
be448670
CF
16600@cindex DLLs with no debugging symbols
16601@cindex Minimal symbols and DLLs
16602
16603Very often on windows, some of the DLLs that your program relies on do
16604not include symbolic debugging information (for example,
db2e3e2e 16605@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
be448670 16606symbols in a DLL, it relies on the minimal amount of symbolic
db2e3e2e 16607information contained in the DLL's export table. This section
be448670
CF
16608describes working with such symbols, known internally to @value{GDBN} as
16609``minimal symbols''.
16610
16611Note that before the debugged program has started execution, no DLLs
db2e3e2e 16612will have been loaded. The easiest way around this problem is simply to
be448670 16613start the program --- either by setting a breakpoint or letting the
db2e3e2e 16614program run once to completion. It is also possible to force
be448670 16615@value{GDBN} to load a particular DLL before starting the executable ---
12c27660 16616see the shared library information in @ref{Files}, or the
db2e3e2e 16617@code{dll-symbols} command in @ref{Cygwin Native}. Currently,
be448670
CF
16618explicitly loading symbols from a DLL with no debugging information will
16619cause the symbol names to be duplicated in @value{GDBN}'s lookup table,
16620which may adversely affect symbol lookup performance.
16621
79a6e687 16622@subsubsection DLL Name Prefixes
be448670
CF
16623
16624In keeping with the naming conventions used by the Microsoft debugging
16625tools, DLL export symbols are made available with a prefix based on the
16626DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
16627also entered into the symbol table, so @code{CreateFileA} is often
99e008fe 16628sufficient. In some cases there will be name clashes within a program
be448670
CF
16629(particularly if the executable itself includes full debugging symbols)
16630necessitating the use of the fully qualified name when referring to the
99e008fe 16631contents of the DLL. Use single-quotes around the name to avoid the
be448670
CF
16632exclamation mark (``!'') being interpreted as a language operator.
16633
16634Note that the internal name of the DLL may be all upper-case, even
99e008fe 16635though the file name of the DLL is lower-case, or vice-versa. Since
be448670
CF
16636symbols within @value{GDBN} are @emph{case-sensitive} this may cause
16637some confusion. If in doubt, try the @code{info functions} and
0869d01b
NR
16638@code{info variables} commands or even @code{maint print msymbols}
16639(@pxref{Symbols}). Here's an example:
be448670
CF
16640
16641@smallexample
f7dc1244 16642(@value{GDBP}) info function CreateFileA
be448670
CF
16643All functions matching regular expression "CreateFileA":
16644
16645Non-debugging symbols:
166460x77e885f4 CreateFileA
166470x77e885f4 KERNEL32!CreateFileA
16648@end smallexample
16649
16650@smallexample
f7dc1244 16651(@value{GDBP}) info function !
be448670
CF
16652All functions matching regular expression "!":
16653
16654Non-debugging symbols:
166550x6100114c cygwin1!__assert
166560x61004034 cygwin1!_dll_crt0@@0
166570x61004240 cygwin1!dll_crt0(per_process *)
16658[etc...]
16659@end smallexample
16660
79a6e687 16661@subsubsection Working with Minimal Symbols
be448670
CF
16662
16663Symbols extracted from a DLL's export table do not contain very much
16664type information. All that @value{GDBN} can do is guess whether a symbol
16665refers to a function or variable depending on the linker section that
16666contains the symbol. Also note that the actual contents of the memory
16667contained in a DLL are not available unless the program is running. This
16668means that you cannot examine the contents of a variable or disassemble
16669a function within a DLL without a running program.
16670
16671Variables are generally treated as pointers and dereferenced
16672automatically. For this reason, it is often necessary to prefix a
16673variable name with the address-of operator (``&'') and provide explicit
16674type information in the command. Here's an example of the type of
16675problem:
16676
16677@smallexample
f7dc1244 16678(@value{GDBP}) print 'cygwin1!__argv'
be448670
CF
16679$1 = 268572168
16680@end smallexample
16681
16682@smallexample
f7dc1244 16683(@value{GDBP}) x 'cygwin1!__argv'
be448670
CF
166840x10021610: "\230y\""
16685@end smallexample
16686
16687And two possible solutions:
16688
16689@smallexample
f7dc1244 16690(@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
be448670
CF
16691$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
16692@end smallexample
16693
16694@smallexample
f7dc1244 16695(@value{GDBP}) x/2x &'cygwin1!__argv'
be448670 166960x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
f7dc1244 16697(@value{GDBP}) x/x 0x10021608
be448670 166980x10021608: 0x0022fd98
f7dc1244 16699(@value{GDBP}) x/s 0x0022fd98
be448670
CF
167000x22fd98: "/cygdrive/c/mydirectory/myprogram"
16701@end smallexample
16702
16703Setting a break point within a DLL is possible even before the program
16704starts execution. However, under these circumstances, @value{GDBN} can't
16705examine the initial instructions of the function in order to skip the
16706function's frame set-up code. You can work around this by using ``*&''
16707to set the breakpoint at a raw memory address:
16708
16709@smallexample
f7dc1244 16710(@value{GDBP}) break *&'python22!PyOS_Readline'
be448670
CF
16711Breakpoint 1 at 0x1e04eff0
16712@end smallexample
16713
16714The author of these extensions is not entirely convinced that setting a
16715break point within a shared DLL like @file{kernel32.dll} is completely
16716safe.
16717
14d6dd68 16718@node Hurd Native
79a6e687 16719@subsection Commands Specific to @sc{gnu} Hurd Systems
14d6dd68
EZ
16720@cindex @sc{gnu} Hurd debugging
16721
16722This subsection describes @value{GDBN} commands specific to the
16723@sc{gnu} Hurd native debugging.
16724
16725@table @code
16726@item set signals
16727@itemx set sigs
16728@kindex set signals@r{, Hurd command}
16729@kindex set sigs@r{, Hurd command}
16730This command toggles the state of inferior signal interception by
16731@value{GDBN}. Mach exceptions, such as breakpoint traps, are not
16732affected by this command. @code{sigs} is a shorthand alias for
16733@code{signals}.
16734
16735@item show signals
16736@itemx show sigs
16737@kindex show signals@r{, Hurd command}
16738@kindex show sigs@r{, Hurd command}
16739Show the current state of intercepting inferior's signals.
16740
16741@item set signal-thread
16742@itemx set sigthread
16743@kindex set signal-thread
16744@kindex set sigthread
16745This command tells @value{GDBN} which thread is the @code{libc} signal
16746thread. That thread is run when a signal is delivered to a running
16747process. @code{set sigthread} is the shorthand alias of @code{set
16748signal-thread}.
16749
16750@item show signal-thread
16751@itemx show sigthread
16752@kindex show signal-thread
16753@kindex show sigthread
16754These two commands show which thread will run when the inferior is
16755delivered a signal.
16756
16757@item set stopped
16758@kindex set stopped@r{, Hurd command}
16759This commands tells @value{GDBN} that the inferior process is stopped,
16760as with the @code{SIGSTOP} signal. The stopped process can be
16761continued by delivering a signal to it.
16762
16763@item show stopped
16764@kindex show stopped@r{, Hurd command}
16765This command shows whether @value{GDBN} thinks the debuggee is
16766stopped.
16767
16768@item set exceptions
16769@kindex set exceptions@r{, Hurd command}
16770Use this command to turn off trapping of exceptions in the inferior.
16771When exception trapping is off, neither breakpoints nor
16772single-stepping will work. To restore the default, set exception
16773trapping on.
16774
16775@item show exceptions
16776@kindex show exceptions@r{, Hurd command}
16777Show the current state of trapping exceptions in the inferior.
16778
16779@item set task pause
16780@kindex set task@r{, Hurd commands}
16781@cindex task attributes (@sc{gnu} Hurd)
16782@cindex pause current task (@sc{gnu} Hurd)
16783This command toggles task suspension when @value{GDBN} has control.
16784Setting it to on takes effect immediately, and the task is suspended
16785whenever @value{GDBN} gets control. Setting it to off will take
16786effect the next time the inferior is continued. If this option is set
16787to off, you can use @code{set thread default pause on} or @code{set
16788thread pause on} (see below) to pause individual threads.
16789
16790@item show task pause
16791@kindex show task@r{, Hurd commands}
16792Show the current state of task suspension.
16793
16794@item set task detach-suspend-count
16795@cindex task suspend count
16796@cindex detach from task, @sc{gnu} Hurd
16797This command sets the suspend count the task will be left with when
16798@value{GDBN} detaches from it.
16799
16800@item show task detach-suspend-count
16801Show the suspend count the task will be left with when detaching.
16802
16803@item set task exception-port
16804@itemx set task excp
16805@cindex task exception port, @sc{gnu} Hurd
16806This command sets the task exception port to which @value{GDBN} will
16807forward exceptions. The argument should be the value of the @dfn{send
16808rights} of the task. @code{set task excp} is a shorthand alias.
16809
16810@item set noninvasive
16811@cindex noninvasive task options
16812This command switches @value{GDBN} to a mode that is the least
16813invasive as far as interfering with the inferior is concerned. This
16814is the same as using @code{set task pause}, @code{set exceptions}, and
16815@code{set signals} to values opposite to the defaults.
16816
16817@item info send-rights
16818@itemx info receive-rights
16819@itemx info port-rights
16820@itemx info port-sets
16821@itemx info dead-names
16822@itemx info ports
16823@itemx info psets
16824@cindex send rights, @sc{gnu} Hurd
16825@cindex receive rights, @sc{gnu} Hurd
16826@cindex port rights, @sc{gnu} Hurd
16827@cindex port sets, @sc{gnu} Hurd
16828@cindex dead names, @sc{gnu} Hurd
16829These commands display information about, respectively, send rights,
16830receive rights, port rights, port sets, and dead names of a task.
16831There are also shorthand aliases: @code{info ports} for @code{info
16832port-rights} and @code{info psets} for @code{info port-sets}.
16833
16834@item set thread pause
16835@kindex set thread@r{, Hurd command}
16836@cindex thread properties, @sc{gnu} Hurd
16837@cindex pause current thread (@sc{gnu} Hurd)
16838This command toggles current thread suspension when @value{GDBN} has
16839control. Setting it to on takes effect immediately, and the current
16840thread is suspended whenever @value{GDBN} gets control. Setting it to
16841off will take effect the next time the inferior is continued.
16842Normally, this command has no effect, since when @value{GDBN} has
16843control, the whole task is suspended. However, if you used @code{set
16844task pause off} (see above), this command comes in handy to suspend
16845only the current thread.
16846
16847@item show thread pause
16848@kindex show thread@r{, Hurd command}
16849This command shows the state of current thread suspension.
16850
16851@item set thread run
d3e8051b 16852This command sets whether the current thread is allowed to run.
14d6dd68
EZ
16853
16854@item show thread run
16855Show whether the current thread is allowed to run.
16856
16857@item set thread detach-suspend-count
16858@cindex thread suspend count, @sc{gnu} Hurd
16859@cindex detach from thread, @sc{gnu} Hurd
16860This command sets the suspend count @value{GDBN} will leave on a
16861thread when detaching. This number is relative to the suspend count
16862found by @value{GDBN} when it notices the thread; use @code{set thread
16863takeover-suspend-count} to force it to an absolute value.
16864
16865@item show thread detach-suspend-count
16866Show the suspend count @value{GDBN} will leave on the thread when
16867detaching.
16868
16869@item set thread exception-port
16870@itemx set thread excp
16871Set the thread exception port to which to forward exceptions. This
16872overrides the port set by @code{set task exception-port} (see above).
16873@code{set thread excp} is the shorthand alias.
16874
16875@item set thread takeover-suspend-count
16876Normally, @value{GDBN}'s thread suspend counts are relative to the
16877value @value{GDBN} finds when it notices each thread. This command
16878changes the suspend counts to be absolute instead.
16879
16880@item set thread default
16881@itemx show thread default
16882@cindex thread default settings, @sc{gnu} Hurd
16883Each of the above @code{set thread} commands has a @code{set thread
16884default} counterpart (e.g., @code{set thread default pause}, @code{set
16885thread default exception-port}, etc.). The @code{thread default}
16886variety of commands sets the default thread properties for all
16887threads; you can then change the properties of individual threads with
16888the non-default commands.
16889@end table
16890
16891
a64548ea
EZ
16892@node Neutrino
16893@subsection QNX Neutrino
16894@cindex QNX Neutrino
16895
16896@value{GDBN} provides the following commands specific to the QNX
16897Neutrino target:
16898
16899@table @code
16900@item set debug nto-debug
16901@kindex set debug nto-debug
16902When set to on, enables debugging messages specific to the QNX
16903Neutrino support.
16904
16905@item show debug nto-debug
16906@kindex show debug nto-debug
16907Show the current state of QNX Neutrino messages.
16908@end table
16909
a80b95ba
TG
16910@node Darwin
16911@subsection Darwin
16912@cindex Darwin
16913
16914@value{GDBN} provides the following commands specific to the Darwin target:
16915
16916@table @code
16917@item set debug darwin @var{num}
16918@kindex set debug darwin
16919When set to a non zero value, enables debugging messages specific to
16920the Darwin support. Higher values produce more verbose output.
16921
16922@item show debug darwin
16923@kindex show debug darwin
16924Show the current state of Darwin messages.
16925
16926@item set debug mach-o @var{num}
16927@kindex set debug mach-o
16928When set to a non zero value, enables debugging messages while
16929@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the
16930file format used on Darwin for object and executable files.) Higher
16931values produce more verbose output. This is a command to diagnose
16932problems internal to @value{GDBN} and should not be needed in normal
16933usage.
16934
16935@item show debug mach-o
16936@kindex show debug mach-o
16937Show the current state of Mach-O file messages.
16938
16939@item set mach-exceptions on
16940@itemx set mach-exceptions off
16941@kindex set mach-exceptions
16942On Darwin, faults are first reported as a Mach exception and are then
16943mapped to a Posix signal. Use this command to turn on trapping of
16944Mach exceptions in the inferior. This might be sometimes useful to
16945better understand the cause of a fault. The default is off.
16946
16947@item show mach-exceptions
16948@kindex show mach-exceptions
16949Show the current state of exceptions trapping.
16950@end table
16951
a64548ea 16952
8e04817f
AC
16953@node Embedded OS
16954@section Embedded Operating Systems
104c1213 16955
8e04817f
AC
16956This section describes configurations involving the debugging of
16957embedded operating systems that are available for several different
16958architectures.
d4f3574e 16959
8e04817f
AC
16960@menu
16961* VxWorks:: Using @value{GDBN} with VxWorks
16962@end menu
104c1213 16963
8e04817f
AC
16964@value{GDBN} includes the ability to debug programs running on
16965various real-time operating systems.
104c1213 16966
8e04817f
AC
16967@node VxWorks
16968@subsection Using @value{GDBN} with VxWorks
104c1213 16969
8e04817f 16970@cindex VxWorks
104c1213 16971
8e04817f 16972@table @code
104c1213 16973
8e04817f
AC
16974@kindex target vxworks
16975@item target vxworks @var{machinename}
16976A VxWorks system, attached via TCP/IP. The argument @var{machinename}
16977is the target system's machine name or IP address.
104c1213 16978
8e04817f 16979@end table
104c1213 16980
8e04817f
AC
16981On VxWorks, @code{load} links @var{filename} dynamically on the
16982current target system as well as adding its symbols in @value{GDBN}.
104c1213 16983
8e04817f
AC
16984@value{GDBN} enables developers to spawn and debug tasks running on networked
16985VxWorks targets from a Unix host. Already-running tasks spawned from
16986the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
16987both the Unix host and on the VxWorks target. The program
16988@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
16989installed with the name @code{vxgdb}, to distinguish it from a
16990@value{GDBN} for debugging programs on the host itself.)
104c1213 16991
8e04817f
AC
16992@table @code
16993@item VxWorks-timeout @var{args}
16994@kindex vxworks-timeout
16995All VxWorks-based targets now support the option @code{vxworks-timeout}.
16996This option is set by the user, and @var{args} represents the number of
16997seconds @value{GDBN} waits for responses to rpc's. You might use this if
16998your VxWorks target is a slow software simulator or is on the far side
16999of a thin network line.
17000@end table
104c1213 17001
8e04817f
AC
17002The following information on connecting to VxWorks was current when
17003this manual was produced; newer releases of VxWorks may use revised
17004procedures.
104c1213 17005
4644b6e3 17006@findex INCLUDE_RDB
8e04817f
AC
17007To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
17008to include the remote debugging interface routines in the VxWorks
17009library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
17010VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
17011kernel. The resulting kernel contains @file{rdb.a}, and spawns the
17012source debugging task @code{tRdbTask} when VxWorks is booted. For more
17013information on configuring and remaking VxWorks, see the manufacturer's
17014manual.
17015@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
104c1213 17016
8e04817f
AC
17017Once you have included @file{rdb.a} in your VxWorks system image and set
17018your Unix execution search path to find @value{GDBN}, you are ready to
17019run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
17020@code{vxgdb}, depending on your installation).
104c1213 17021
8e04817f 17022@value{GDBN} comes up showing the prompt:
104c1213 17023
474c8240 17024@smallexample
8e04817f 17025(vxgdb)
474c8240 17026@end smallexample
104c1213 17027
8e04817f
AC
17028@menu
17029* VxWorks Connection:: Connecting to VxWorks
17030* VxWorks Download:: VxWorks download
17031* VxWorks Attach:: Running tasks
17032@end menu
104c1213 17033
8e04817f
AC
17034@node VxWorks Connection
17035@subsubsection Connecting to VxWorks
104c1213 17036
8e04817f
AC
17037The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
17038network. To connect to a target whose host name is ``@code{tt}'', type:
104c1213 17039
474c8240 17040@smallexample
8e04817f 17041(vxgdb) target vxworks tt
474c8240 17042@end smallexample
104c1213 17043
8e04817f
AC
17044@need 750
17045@value{GDBN} displays messages like these:
104c1213 17046
8e04817f
AC
17047@smallexample
17048Attaching remote machine across net...
17049Connected to tt.
17050@end smallexample
104c1213 17051
8e04817f
AC
17052@need 1000
17053@value{GDBN} then attempts to read the symbol tables of any object modules
17054loaded into the VxWorks target since it was last booted. @value{GDBN} locates
17055these files by searching the directories listed in the command search
79a6e687 17056path (@pxref{Environment, ,Your Program's Environment}); if it fails
8e04817f 17057to find an object file, it displays a message such as:
5d161b24 17058
474c8240 17059@smallexample
8e04817f 17060prog.o: No such file or directory.
474c8240 17061@end smallexample
104c1213 17062
8e04817f
AC
17063When this happens, add the appropriate directory to the search path with
17064the @value{GDBN} command @code{path}, and execute the @code{target}
17065command again.
104c1213 17066
8e04817f 17067@node VxWorks Download
79a6e687 17068@subsubsection VxWorks Download
104c1213 17069
8e04817f
AC
17070@cindex download to VxWorks
17071If you have connected to the VxWorks target and you want to debug an
17072object that has not yet been loaded, you can use the @value{GDBN}
17073@code{load} command to download a file from Unix to VxWorks
17074incrementally. The object file given as an argument to the @code{load}
17075command is actually opened twice: first by the VxWorks target in order
17076to download the code, then by @value{GDBN} in order to read the symbol
17077table. This can lead to problems if the current working directories on
17078the two systems differ. If both systems have NFS mounted the same
17079filesystems, you can avoid these problems by using absolute paths.
17080Otherwise, it is simplest to set the working directory on both systems
17081to the directory in which the object file resides, and then to reference
17082the file by its name, without any path. For instance, a program
17083@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
17084and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
17085program, type this on VxWorks:
104c1213 17086
474c8240 17087@smallexample
8e04817f 17088-> cd "@var{vxpath}/vw/demo/rdb"
474c8240 17089@end smallexample
104c1213 17090
8e04817f
AC
17091@noindent
17092Then, in @value{GDBN}, type:
104c1213 17093
474c8240 17094@smallexample
8e04817f
AC
17095(vxgdb) cd @var{hostpath}/vw/demo/rdb
17096(vxgdb) load prog.o
474c8240 17097@end smallexample
104c1213 17098
8e04817f 17099@value{GDBN} displays a response similar to this:
104c1213 17100
8e04817f
AC
17101@smallexample
17102Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
17103@end smallexample
104c1213 17104
8e04817f
AC
17105You can also use the @code{load} command to reload an object module
17106after editing and recompiling the corresponding source file. Note that
17107this makes @value{GDBN} delete all currently-defined breakpoints,
17108auto-displays, and convenience variables, and to clear the value
17109history. (This is necessary in order to preserve the integrity of
17110debugger's data structures that reference the target system's symbol
17111table.)
104c1213 17112
8e04817f 17113@node VxWorks Attach
79a6e687 17114@subsubsection Running Tasks
104c1213
JM
17115
17116@cindex running VxWorks tasks
17117You can also attach to an existing task using the @code{attach} command as
17118follows:
17119
474c8240 17120@smallexample
104c1213 17121(vxgdb) attach @var{task}
474c8240 17122@end smallexample
104c1213
JM
17123
17124@noindent
17125where @var{task} is the VxWorks hexadecimal task ID. The task can be running
17126or suspended when you attach to it. Running tasks are suspended at
17127the time of attachment.
17128
6d2ebf8b 17129@node Embedded Processors
104c1213
JM
17130@section Embedded Processors
17131
17132This section goes into details specific to particular embedded
17133configurations.
17134
c45da7e6
EZ
17135@cindex send command to simulator
17136Whenever a specific embedded processor has a simulator, @value{GDBN}
17137allows to send an arbitrary command to the simulator.
17138
17139@table @code
17140@item sim @var{command}
17141@kindex sim@r{, a command}
17142Send an arbitrary @var{command} string to the simulator. Consult the
17143documentation for the specific simulator in use for information about
17144acceptable commands.
17145@end table
17146
7d86b5d5 17147
104c1213 17148@menu
c45da7e6 17149* ARM:: ARM RDI
172c2a43 17150* M32R/D:: Renesas M32R/D
104c1213 17151* M68K:: Motorola M68K
08be9d71 17152* MicroBlaze:: Xilinx MicroBlaze
104c1213 17153* MIPS Embedded:: MIPS Embedded
a37295f9 17154* OpenRISC 1000:: OpenRisc 1000
104c1213 17155* PA:: HP PA Embedded
4acd40f3 17156* PowerPC Embedded:: PowerPC Embedded
104c1213
JM
17157* Sparclet:: Tsqware Sparclet
17158* Sparclite:: Fujitsu Sparclite
104c1213 17159* Z8000:: Zilog Z8000
a64548ea
EZ
17160* AVR:: Atmel AVR
17161* CRIS:: CRIS
17162* Super-H:: Renesas Super-H
104c1213
JM
17163@end menu
17164
6d2ebf8b 17165@node ARM
104c1213 17166@subsection ARM
c45da7e6 17167@cindex ARM RDI
104c1213
JM
17168
17169@table @code
8e04817f
AC
17170@kindex target rdi
17171@item target rdi @var{dev}
17172ARM Angel monitor, via RDI library interface to ADP protocol. You may
17173use this target to communicate with both boards running the Angel
17174monitor, or with the EmbeddedICE JTAG debug device.
17175
17176@kindex target rdp
17177@item target rdp @var{dev}
17178ARM Demon monitor.
17179
17180@end table
17181
e2f4edfd
EZ
17182@value{GDBN} provides the following ARM-specific commands:
17183
17184@table @code
17185@item set arm disassembler
17186@kindex set arm
17187This commands selects from a list of disassembly styles. The
17188@code{"std"} style is the standard style.
17189
17190@item show arm disassembler
17191@kindex show arm
17192Show the current disassembly style.
17193
17194@item set arm apcs32
17195@cindex ARM 32-bit mode
17196This command toggles ARM operation mode between 32-bit and 26-bit.
17197
17198@item show arm apcs32
17199Display the current usage of the ARM 32-bit mode.
17200
17201@item set arm fpu @var{fputype}
17202This command sets the ARM floating-point unit (FPU) type. The
17203argument @var{fputype} can be one of these:
17204
17205@table @code
17206@item auto
17207Determine the FPU type by querying the OS ABI.
17208@item softfpa
17209Software FPU, with mixed-endian doubles on little-endian ARM
17210processors.
17211@item fpa
17212GCC-compiled FPA co-processor.
17213@item softvfp
17214Software FPU with pure-endian doubles.
17215@item vfp
17216VFP co-processor.
17217@end table
17218
17219@item show arm fpu
17220Show the current type of the FPU.
17221
17222@item set arm abi
17223This command forces @value{GDBN} to use the specified ABI.
17224
17225@item show arm abi
17226Show the currently used ABI.
17227
0428b8f5
DJ
17228@item set arm fallback-mode (arm|thumb|auto)
17229@value{GDBN} uses the symbol table, when available, to determine
17230whether instructions are ARM or Thumb. This command controls
17231@value{GDBN}'s default behavior when the symbol table is not
17232available. The default is @samp{auto}, which causes @value{GDBN} to
17233use the current execution mode (from the @code{T} bit in the @code{CPSR}
17234register).
17235
17236@item show arm fallback-mode
17237Show the current fallback instruction mode.
17238
17239@item set arm force-mode (arm|thumb|auto)
17240This command overrides use of the symbol table to determine whether
17241instructions are ARM or Thumb. The default is @samp{auto}, which
17242causes @value{GDBN} to use the symbol table and then the setting
17243of @samp{set arm fallback-mode}.
17244
17245@item show arm force-mode
17246Show the current forced instruction mode.
17247
e2f4edfd
EZ
17248@item set debug arm
17249Toggle whether to display ARM-specific debugging messages from the ARM
17250target support subsystem.
17251
17252@item show debug arm
17253Show whether ARM-specific debugging messages are enabled.
17254@end table
17255
c45da7e6
EZ
17256The following commands are available when an ARM target is debugged
17257using the RDI interface:
17258
17259@table @code
17260@item rdilogfile @r{[}@var{file}@r{]}
17261@kindex rdilogfile
17262@cindex ADP (Angel Debugger Protocol) logging
17263Set the filename for the ADP (Angel Debugger Protocol) packet log.
17264With an argument, sets the log file to the specified @var{file}. With
17265no argument, show the current log file name. The default log file is
17266@file{rdi.log}.
17267
17268@item rdilogenable @r{[}@var{arg}@r{]}
17269@kindex rdilogenable
17270Control logging of ADP packets. With an argument of 1 or @code{"yes"}
17271enables logging, with an argument 0 or @code{"no"} disables it. With
17272no arguments displays the current setting. When logging is enabled,
17273ADP packets exchanged between @value{GDBN} and the RDI target device
17274are logged to a file.
17275
17276@item set rdiromatzero
17277@kindex set rdiromatzero
17278@cindex ROM at zero address, RDI
17279Tell @value{GDBN} whether the target has ROM at address 0. If on,
17280vector catching is disabled, so that zero address can be used. If off
17281(the default), vector catching is enabled. For this command to take
17282effect, it needs to be invoked prior to the @code{target rdi} command.
17283
17284@item show rdiromatzero
17285@kindex show rdiromatzero
17286Show the current setting of ROM at zero address.
17287
17288@item set rdiheartbeat
17289@kindex set rdiheartbeat
17290@cindex RDI heartbeat
17291Enable or disable RDI heartbeat packets. It is not recommended to
17292turn on this option, since it confuses ARM and EPI JTAG interface, as
17293well as the Angel monitor.
17294
17295@item show rdiheartbeat
17296@kindex show rdiheartbeat
17297Show the setting of RDI heartbeat packets.
17298@end table
17299
ee8e71d4
EZ
17300@table @code
17301@item target sim @r{[}@var{simargs}@r{]} @dots{}
17302The @value{GDBN} ARM simulator accepts the following optional arguments.
17303
17304@table @code
17305@item --swi-support=@var{type}
17306Tell the simulator which SWI interfaces to support.
17307@var{type} may be a comma separated list of the following values.
17308The default value is @code{all}.
17309
17310@table @code
17311@item none
17312@item demon
17313@item angel
17314@item redboot
17315@item all
17316@end table
17317@end table
17318@end table
e2f4edfd 17319
8e04817f 17320@node M32R/D
ba04e063 17321@subsection Renesas M32R/D and M32R/SDI
8e04817f
AC
17322
17323@table @code
8e04817f
AC
17324@kindex target m32r
17325@item target m32r @var{dev}
172c2a43 17326Renesas M32R/D ROM monitor.
8e04817f 17327
fb3e19c0
KI
17328@kindex target m32rsdi
17329@item target m32rsdi @var{dev}
17330Renesas M32R SDI server, connected via parallel port to the board.
721c2651
EZ
17331@end table
17332
17333The following @value{GDBN} commands are specific to the M32R monitor:
17334
17335@table @code
17336@item set download-path @var{path}
17337@kindex set download-path
17338@cindex find downloadable @sc{srec} files (M32R)
d3e8051b 17339Set the default path for finding downloadable @sc{srec} files.
721c2651
EZ
17340
17341@item show download-path
17342@kindex show download-path
17343Show the default path for downloadable @sc{srec} files.
fb3e19c0 17344
721c2651
EZ
17345@item set board-address @var{addr}
17346@kindex set board-address
17347@cindex M32-EVA target board address
17348Set the IP address for the M32R-EVA target board.
17349
17350@item show board-address
17351@kindex show board-address
17352Show the current IP address of the target board.
17353
17354@item set server-address @var{addr}
17355@kindex set server-address
17356@cindex download server address (M32R)
17357Set the IP address for the download server, which is the @value{GDBN}'s
17358host machine.
17359
17360@item show server-address
17361@kindex show server-address
17362Display the IP address of the download server.
17363
17364@item upload @r{[}@var{file}@r{]}
17365@kindex upload@r{, M32R}
17366Upload the specified @sc{srec} @var{file} via the monitor's Ethernet
17367upload capability. If no @var{file} argument is given, the current
17368executable file is uploaded.
17369
17370@item tload @r{[}@var{file}@r{]}
17371@kindex tload@r{, M32R}
17372Test the @code{upload} command.
8e04817f
AC
17373@end table
17374
ba04e063
EZ
17375The following commands are available for M32R/SDI:
17376
17377@table @code
17378@item sdireset
17379@kindex sdireset
17380@cindex reset SDI connection, M32R
17381This command resets the SDI connection.
17382
17383@item sdistatus
17384@kindex sdistatus
17385This command shows the SDI connection status.
17386
17387@item debug_chaos
17388@kindex debug_chaos
17389@cindex M32R/Chaos debugging
17390Instructs the remote that M32R/Chaos debugging is to be used.
17391
17392@item use_debug_dma
17393@kindex use_debug_dma
17394Instructs the remote to use the DEBUG_DMA method of accessing memory.
17395
17396@item use_mon_code
17397@kindex use_mon_code
17398Instructs the remote to use the MON_CODE method of accessing memory.
17399
17400@item use_ib_break
17401@kindex use_ib_break
17402Instructs the remote to set breakpoints by IB break.
17403
17404@item use_dbt_break
17405@kindex use_dbt_break
17406Instructs the remote to set breakpoints by DBT.
17407@end table
17408
8e04817f
AC
17409@node M68K
17410@subsection M68k
17411
7ce59000
DJ
17412The Motorola m68k configuration includes ColdFire support, and a
17413target command for the following ROM monitor.
8e04817f
AC
17414
17415@table @code
17416
8e04817f
AC
17417@kindex target dbug
17418@item target dbug @var{dev}
17419dBUG ROM monitor for Motorola ColdFire.
17420
8e04817f
AC
17421@end table
17422
08be9d71
ME
17423@node MicroBlaze
17424@subsection MicroBlaze
17425@cindex Xilinx MicroBlaze
17426@cindex XMD, Xilinx Microprocessor Debugger
17427
17428The MicroBlaze is a soft-core processor supported on various Xilinx
17429FPGAs, such as Spartan or Virtex series. Boards with these processors
17430usually have JTAG ports which connect to a host system running the Xilinx
17431Embedded Development Kit (EDK) or Software Development Kit (SDK).
17432This host system is used to download the configuration bitstream to
17433the target FPGA. The Xilinx Microprocessor Debugger (XMD) program
17434communicates with the target board using the JTAG interface and
17435presents a @code{gdbserver} interface to the board. By default
17436@code{xmd} uses port @code{1234}. (While it is possible to change
17437this default port, it requires the use of undocumented @code{xmd}
17438commands. Contact Xilinx support if you need to do this.)
17439
17440Use these GDB commands to connect to the MicroBlaze target processor.
17441
17442@table @code
17443@item target remote :1234
17444Use this command to connect to the target if you are running @value{GDBN}
17445on the same system as @code{xmd}.
17446
17447@item target remote @var{xmd-host}:1234
17448Use this command to connect to the target if it is connected to @code{xmd}
17449running on a different system named @var{xmd-host}.
17450
17451@item load
17452Use this command to download a program to the MicroBlaze target.
17453
17454@item set debug microblaze @var{n}
17455Enable MicroBlaze-specific debugging messages if non-zero.
17456
17457@item show debug microblaze @var{n}
17458Show MicroBlaze-specific debugging level.
17459@end table
17460
8e04817f
AC
17461@node MIPS Embedded
17462@subsection MIPS Embedded
17463
17464@cindex MIPS boards
17465@value{GDBN} can use the MIPS remote debugging protocol to talk to a
17466MIPS board attached to a serial line. This is available when
17467you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
104c1213 17468
8e04817f
AC
17469@need 1000
17470Use these @value{GDBN} commands to specify the connection to your target board:
104c1213 17471
8e04817f
AC
17472@table @code
17473@item target mips @var{port}
17474@kindex target mips @var{port}
17475To run a program on the board, start up @code{@value{GDBP}} with the
17476name of your program as the argument. To connect to the board, use the
17477command @samp{target mips @var{port}}, where @var{port} is the name of
17478the serial port connected to the board. If the program has not already
17479been downloaded to the board, you may use the @code{load} command to
17480download it. You can then use all the usual @value{GDBN} commands.
104c1213 17481
8e04817f
AC
17482For example, this sequence connects to the target board through a serial
17483port, and loads and runs a program called @var{prog} through the
17484debugger:
104c1213 17485
474c8240 17486@smallexample
8e04817f
AC
17487host$ @value{GDBP} @var{prog}
17488@value{GDBN} is free software and @dots{}
17489(@value{GDBP}) target mips /dev/ttyb
17490(@value{GDBP}) load @var{prog}
17491(@value{GDBP}) run
474c8240 17492@end smallexample
104c1213 17493
8e04817f
AC
17494@item target mips @var{hostname}:@var{portnumber}
17495On some @value{GDBN} host configurations, you can specify a TCP
17496connection (for instance, to a serial line managed by a terminal
17497concentrator) instead of a serial port, using the syntax
17498@samp{@var{hostname}:@var{portnumber}}.
104c1213 17499
8e04817f
AC
17500@item target pmon @var{port}
17501@kindex target pmon @var{port}
17502PMON ROM monitor.
104c1213 17503
8e04817f
AC
17504@item target ddb @var{port}
17505@kindex target ddb @var{port}
17506NEC's DDB variant of PMON for Vr4300.
104c1213 17507
8e04817f
AC
17508@item target lsi @var{port}
17509@kindex target lsi @var{port}
17510LSI variant of PMON.
104c1213 17511
8e04817f
AC
17512@kindex target r3900
17513@item target r3900 @var{dev}
17514Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
104c1213 17515
8e04817f
AC
17516@kindex target array
17517@item target array @var{dev}
17518Array Tech LSI33K RAID controller board.
104c1213 17519
8e04817f 17520@end table
104c1213 17521
104c1213 17522
8e04817f
AC
17523@noindent
17524@value{GDBN} also supports these special commands for MIPS targets:
104c1213 17525
8e04817f 17526@table @code
8e04817f
AC
17527@item set mipsfpu double
17528@itemx set mipsfpu single
17529@itemx set mipsfpu none
a64548ea 17530@itemx set mipsfpu auto
8e04817f
AC
17531@itemx show mipsfpu
17532@kindex set mipsfpu
17533@kindex show mipsfpu
17534@cindex MIPS remote floating point
17535@cindex floating point, MIPS remote
17536If your target board does not support the MIPS floating point
17537coprocessor, you should use the command @samp{set mipsfpu none} (if you
17538need this, you may wish to put the command in your @value{GDBN} init
17539file). This tells @value{GDBN} how to find the return value of
17540functions which return floating point values. It also allows
17541@value{GDBN} to avoid saving the floating point registers when calling
17542functions on the board. If you are using a floating point coprocessor
17543with only single precision floating point support, as on the @sc{r4650}
17544processor, use the command @samp{set mipsfpu single}. The default
17545double precision floating point coprocessor may be selected using
17546@samp{set mipsfpu double}.
104c1213 17547
8e04817f
AC
17548In previous versions the only choices were double precision or no
17549floating point, so @samp{set mipsfpu on} will select double precision
17550and @samp{set mipsfpu off} will select no floating point.
104c1213 17551
8e04817f
AC
17552As usual, you can inquire about the @code{mipsfpu} variable with
17553@samp{show mipsfpu}.
104c1213 17554
8e04817f
AC
17555@item set timeout @var{seconds}
17556@itemx set retransmit-timeout @var{seconds}
17557@itemx show timeout
17558@itemx show retransmit-timeout
17559@cindex @code{timeout}, MIPS protocol
17560@cindex @code{retransmit-timeout}, MIPS protocol
17561@kindex set timeout
17562@kindex show timeout
17563@kindex set retransmit-timeout
17564@kindex show retransmit-timeout
17565You can control the timeout used while waiting for a packet, in the MIPS
17566remote protocol, with the @code{set timeout @var{seconds}} command. The
17567default is 5 seconds. Similarly, you can control the timeout used while
a6f3e723 17568waiting for an acknowledgment of a packet with the @code{set
8e04817f
AC
17569retransmit-timeout @var{seconds}} command. The default is 3 seconds.
17570You can inspect both values with @code{show timeout} and @code{show
17571retransmit-timeout}. (These commands are @emph{only} available when
17572@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
104c1213 17573
8e04817f
AC
17574The timeout set by @code{set timeout} does not apply when @value{GDBN}
17575is waiting for your program to stop. In that case, @value{GDBN} waits
17576forever because it has no way of knowing how long the program is going
17577to run before stopping.
ba04e063
EZ
17578
17579@item set syn-garbage-limit @var{num}
17580@kindex set syn-garbage-limit@r{, MIPS remote}
17581@cindex synchronize with remote MIPS target
17582Limit the maximum number of characters @value{GDBN} should ignore when
17583it tries to synchronize with the remote target. The default is 10
17584characters. Setting the limit to -1 means there's no limit.
17585
17586@item show syn-garbage-limit
17587@kindex show syn-garbage-limit@r{, MIPS remote}
17588Show the current limit on the number of characters to ignore when
17589trying to synchronize with the remote system.
17590
17591@item set monitor-prompt @var{prompt}
17592@kindex set monitor-prompt@r{, MIPS remote}
17593@cindex remote monitor prompt
17594Tell @value{GDBN} to expect the specified @var{prompt} string from the
17595remote monitor. The default depends on the target:
17596@table @asis
17597@item pmon target
17598@samp{PMON}
17599@item ddb target
17600@samp{NEC010}
17601@item lsi target
17602@samp{PMON>}
17603@end table
17604
17605@item show monitor-prompt
17606@kindex show monitor-prompt@r{, MIPS remote}
17607Show the current strings @value{GDBN} expects as the prompt from the
17608remote monitor.
17609
17610@item set monitor-warnings
17611@kindex set monitor-warnings@r{, MIPS remote}
17612Enable or disable monitor warnings about hardware breakpoints. This
17613has effect only for the @code{lsi} target. When on, @value{GDBN} will
17614display warning messages whose codes are returned by the @code{lsi}
17615PMON monitor for breakpoint commands.
17616
17617@item show monitor-warnings
17618@kindex show monitor-warnings@r{, MIPS remote}
17619Show the current setting of printing monitor warnings.
17620
17621@item pmon @var{command}
17622@kindex pmon@r{, MIPS remote}
17623@cindex send PMON command
17624This command allows sending an arbitrary @var{command} string to the
17625monitor. The monitor must be in debug mode for this to work.
8e04817f 17626@end table
104c1213 17627
a37295f9
MM
17628@node OpenRISC 1000
17629@subsection OpenRISC 1000
17630@cindex OpenRISC 1000
17631
17632@cindex or1k boards
17633See OR1k Architecture document (@uref{www.opencores.org}) for more information
17634about platform and commands.
17635
17636@table @code
17637
17638@kindex target jtag
17639@item target jtag jtag://@var{host}:@var{port}
17640
17641Connects to remote JTAG server.
17642JTAG remote server can be either an or1ksim or JTAG server,
17643connected via parallel port to the board.
17644
17645Example: @code{target jtag jtag://localhost:9999}
17646
17647@kindex or1ksim
17648@item or1ksim @var{command}
17649If connected to @code{or1ksim} OpenRISC 1000 Architectural
17650Simulator, proprietary commands can be executed.
17651
17652@kindex info or1k spr
17653@item info or1k spr
17654Displays spr groups.
17655
17656@item info or1k spr @var{group}
17657@itemx info or1k spr @var{groupno}
17658Displays register names in selected group.
17659
17660@item info or1k spr @var{group} @var{register}
17661@itemx info or1k spr @var{register}
17662@itemx info or1k spr @var{groupno} @var{registerno}
17663@itemx info or1k spr @var{registerno}
17664Shows information about specified spr register.
17665
17666@kindex spr
17667@item spr @var{group} @var{register} @var{value}
17668@itemx spr @var{register @var{value}}
17669@itemx spr @var{groupno} @var{registerno @var{value}}
17670@itemx spr @var{registerno @var{value}}
17671Writes @var{value} to specified spr register.
17672@end table
17673
17674Some implementations of OpenRISC 1000 Architecture also have hardware trace.
17675It is very similar to @value{GDBN} trace, except it does not interfere with normal
17676program execution and is thus much faster. Hardware breakpoints/watchpoint
17677triggers can be set using:
17678@table @code
17679@item $LEA/$LDATA
17680Load effective address/data
17681@item $SEA/$SDATA
17682Store effective address/data
17683@item $AEA/$ADATA
17684Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
17685@item $FETCH
17686Fetch data
17687@end table
17688
17689When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
17690@code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
17691
17692@code{htrace} commands:
17693@cindex OpenRISC 1000 htrace
17694@table @code
17695@kindex hwatch
17696@item hwatch @var{conditional}
d3e8051b 17697Set hardware watchpoint on combination of Load/Store Effective Address(es)
a37295f9
MM
17698or Data. For example:
17699
17700@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
17701
17702@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
17703
4644b6e3 17704@kindex htrace
a37295f9
MM
17705@item htrace info
17706Display information about current HW trace configuration.
17707
a37295f9
MM
17708@item htrace trigger @var{conditional}
17709Set starting criteria for HW trace.
17710
a37295f9
MM
17711@item htrace qualifier @var{conditional}
17712Set acquisition qualifier for HW trace.
17713
a37295f9
MM
17714@item htrace stop @var{conditional}
17715Set HW trace stopping criteria.
17716
f153cc92 17717@item htrace record [@var{data}]*
a37295f9
MM
17718Selects the data to be recorded, when qualifier is met and HW trace was
17719triggered.
17720
a37295f9 17721@item htrace enable
a37295f9
MM
17722@itemx htrace disable
17723Enables/disables the HW trace.
17724
f153cc92 17725@item htrace rewind [@var{filename}]
a37295f9
MM
17726Clears currently recorded trace data.
17727
17728If filename is specified, new trace file is made and any newly collected data
17729will be written there.
17730
f153cc92 17731@item htrace print [@var{start} [@var{len}]]
a37295f9
MM
17732Prints trace buffer, using current record configuration.
17733
a37295f9
MM
17734@item htrace mode continuous
17735Set continuous trace mode.
17736
a37295f9
MM
17737@item htrace mode suspend
17738Set suspend trace mode.
17739
17740@end table
17741
4acd40f3
TJB
17742@node PowerPC Embedded
17743@subsection PowerPC Embedded
104c1213 17744
55eddb0f
DJ
17745@value{GDBN} provides the following PowerPC-specific commands:
17746
104c1213 17747@table @code
55eddb0f
DJ
17748@kindex set powerpc
17749@item set powerpc soft-float
17750@itemx show powerpc soft-float
17751Force @value{GDBN} to use (or not use) a software floating point calling
17752convention. By default, @value{GDBN} selects the calling convention based
17753on the selected architecture and the provided executable file.
17754
17755@item set powerpc vector-abi
17756@itemx show powerpc vector-abi
17757Force @value{GDBN} to use the specified calling convention for vector
17758arguments and return values. The valid options are @samp{auto};
17759@samp{generic}, to avoid vector registers even if they are present;
17760@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE
17761registers. By default, @value{GDBN} selects the calling convention
17762based on the selected architecture and the provided executable file.
17763
8e04817f
AC
17764@kindex target dink32
17765@item target dink32 @var{dev}
17766DINK32 ROM monitor.
104c1213 17767
8e04817f
AC
17768@kindex target ppcbug
17769@item target ppcbug @var{dev}
17770@kindex target ppcbug1
17771@item target ppcbug1 @var{dev}
17772PPCBUG ROM monitor for PowerPC.
104c1213 17773
8e04817f
AC
17774@kindex target sds
17775@item target sds @var{dev}
17776SDS monitor, running on a PowerPC board (such as Motorola's ADS).
c45da7e6 17777@end table
8e04817f 17778
c45da7e6 17779@cindex SDS protocol
d52fb0e9 17780The following commands specific to the SDS protocol are supported
55eddb0f 17781by @value{GDBN}:
c45da7e6
EZ
17782
17783@table @code
17784@item set sdstimeout @var{nsec}
17785@kindex set sdstimeout
17786Set the timeout for SDS protocol reads to be @var{nsec} seconds. The
17787default is 2 seconds.
17788
17789@item show sdstimeout
17790@kindex show sdstimeout
17791Show the current value of the SDS timeout.
17792
17793@item sds @var{command}
17794@kindex sds@r{, a command}
17795Send the specified @var{command} string to the SDS monitor.
8e04817f
AC
17796@end table
17797
c45da7e6 17798
8e04817f
AC
17799@node PA
17800@subsection HP PA Embedded
104c1213
JM
17801
17802@table @code
17803
8e04817f
AC
17804@kindex target op50n
17805@item target op50n @var{dev}
17806OP50N monitor, running on an OKI HPPA board.
17807
17808@kindex target w89k
17809@item target w89k @var{dev}
17810W89K monitor, running on a Winbond HPPA board.
104c1213
JM
17811
17812@end table
17813
8e04817f
AC
17814@node Sparclet
17815@subsection Tsqware Sparclet
104c1213 17816
8e04817f
AC
17817@cindex Sparclet
17818
17819@value{GDBN} enables developers to debug tasks running on
17820Sparclet targets from a Unix host.
17821@value{GDBN} uses code that runs on
17822both the Unix host and on the Sparclet target. The program
17823@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213 17824
8e04817f
AC
17825@table @code
17826@item remotetimeout @var{args}
17827@kindex remotetimeout
17828@value{GDBN} supports the option @code{remotetimeout}.
17829This option is set by the user, and @var{args} represents the number of
17830seconds @value{GDBN} waits for responses.
104c1213
JM
17831@end table
17832
8e04817f
AC
17833@cindex compiling, on Sparclet
17834When compiling for debugging, include the options @samp{-g} to get debug
17835information and @samp{-Ttext} to relocate the program to where you wish to
17836load it on the target. You may also want to add the options @samp{-n} or
17837@samp{-N} in order to reduce the size of the sections. Example:
104c1213 17838
474c8240 17839@smallexample
8e04817f 17840sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
474c8240 17841@end smallexample
104c1213 17842
8e04817f 17843You can use @code{objdump} to verify that the addresses are what you intended:
104c1213 17844
474c8240 17845@smallexample
8e04817f 17846sparclet-aout-objdump --headers --syms prog
474c8240 17847@end smallexample
104c1213 17848
8e04817f
AC
17849@cindex running, on Sparclet
17850Once you have set
17851your Unix execution search path to find @value{GDBN}, you are ready to
17852run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
17853(or @code{sparclet-aout-gdb}, depending on your installation).
104c1213 17854
8e04817f
AC
17855@value{GDBN} comes up showing the prompt:
17856
474c8240 17857@smallexample
8e04817f 17858(gdbslet)
474c8240 17859@end smallexample
104c1213
JM
17860
17861@menu
8e04817f
AC
17862* Sparclet File:: Setting the file to debug
17863* Sparclet Connection:: Connecting to Sparclet
17864* Sparclet Download:: Sparclet download
17865* Sparclet Execution:: Running and debugging
104c1213
JM
17866@end menu
17867
8e04817f 17868@node Sparclet File
79a6e687 17869@subsubsection Setting File to Debug
104c1213 17870
8e04817f 17871The @value{GDBN} command @code{file} lets you choose with program to debug.
104c1213 17872
474c8240 17873@smallexample
8e04817f 17874(gdbslet) file prog
474c8240 17875@end smallexample
104c1213 17876
8e04817f
AC
17877@need 1000
17878@value{GDBN} then attempts to read the symbol table of @file{prog}.
17879@value{GDBN} locates
17880the file by searching the directories listed in the command search
17881path.
12c27660 17882If the file was compiled with debug information (option @samp{-g}), source
8e04817f
AC
17883files will be searched as well.
17884@value{GDBN} locates
17885the source files by searching the directories listed in the directory search
79a6e687 17886path (@pxref{Environment, ,Your Program's Environment}).
8e04817f
AC
17887If it fails
17888to find a file, it displays a message such as:
104c1213 17889
474c8240 17890@smallexample
8e04817f 17891prog: No such file or directory.
474c8240 17892@end smallexample
104c1213 17893
8e04817f
AC
17894When this happens, add the appropriate directories to the search paths with
17895the @value{GDBN} commands @code{path} and @code{dir}, and execute the
17896@code{target} command again.
104c1213 17897
8e04817f
AC
17898@node Sparclet Connection
17899@subsubsection Connecting to Sparclet
104c1213 17900
8e04817f
AC
17901The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
17902To connect to a target on serial port ``@code{ttya}'', type:
104c1213 17903
474c8240 17904@smallexample
8e04817f
AC
17905(gdbslet) target sparclet /dev/ttya
17906Remote target sparclet connected to /dev/ttya
17907main () at ../prog.c:3
474c8240 17908@end smallexample
104c1213 17909
8e04817f
AC
17910@need 750
17911@value{GDBN} displays messages like these:
104c1213 17912
474c8240 17913@smallexample
8e04817f 17914Connected to ttya.
474c8240 17915@end smallexample
104c1213 17916
8e04817f 17917@node Sparclet Download
79a6e687 17918@subsubsection Sparclet Download
104c1213 17919
8e04817f
AC
17920@cindex download to Sparclet
17921Once connected to the Sparclet target,
17922you can use the @value{GDBN}
17923@code{load} command to download the file from the host to the target.
17924The file name and load offset should be given as arguments to the @code{load}
17925command.
17926Since the file format is aout, the program must be loaded to the starting
17927address. You can use @code{objdump} to find out what this value is. The load
17928offset is an offset which is added to the VMA (virtual memory address)
17929of each of the file's sections.
17930For instance, if the program
17931@file{prog} was linked to text address 0x1201000, with data at 0x12010160
17932and bss at 0x12010170, in @value{GDBN}, type:
104c1213 17933
474c8240 17934@smallexample
8e04817f
AC
17935(gdbslet) load prog 0x12010000
17936Loading section .text, size 0xdb0 vma 0x12010000
474c8240 17937@end smallexample
104c1213 17938
8e04817f
AC
17939If the code is loaded at a different address then what the program was linked
17940to, you may need to use the @code{section} and @code{add-symbol-file} commands
17941to tell @value{GDBN} where to map the symbol table.
17942
17943@node Sparclet Execution
79a6e687 17944@subsubsection Running and Debugging
8e04817f
AC
17945
17946@cindex running and debugging Sparclet programs
17947You can now begin debugging the task using @value{GDBN}'s execution control
17948commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
17949manual for the list of commands.
17950
474c8240 17951@smallexample
8e04817f
AC
17952(gdbslet) b main
17953Breakpoint 1 at 0x12010000: file prog.c, line 3.
17954(gdbslet) run
17955Starting program: prog
17956Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
179573 char *symarg = 0;
17958(gdbslet) step
179594 char *execarg = "hello!";
17960(gdbslet)
474c8240 17961@end smallexample
8e04817f
AC
17962
17963@node Sparclite
17964@subsection Fujitsu Sparclite
104c1213
JM
17965
17966@table @code
17967
8e04817f
AC
17968@kindex target sparclite
17969@item target sparclite @var{dev}
17970Fujitsu sparclite boards, used only for the purpose of loading.
17971You must use an additional command to debug the program.
17972For example: target remote @var{dev} using @value{GDBN} standard
17973remote protocol.
104c1213
JM
17974
17975@end table
17976
8e04817f
AC
17977@node Z8000
17978@subsection Zilog Z8000
104c1213 17979
8e04817f
AC
17980@cindex Z8000
17981@cindex simulator, Z8000
17982@cindex Zilog Z8000 simulator
104c1213 17983
8e04817f
AC
17984When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
17985a Z8000 simulator.
17986
17987For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
17988unsegmented variant of the Z8000 architecture) or the Z8001 (the
17989segmented variant). The simulator recognizes which architecture is
17990appropriate by inspecting the object code.
104c1213 17991
8e04817f
AC
17992@table @code
17993@item target sim @var{args}
17994@kindex sim
17995@kindex target sim@r{, with Z8000}
17996Debug programs on a simulated CPU. If the simulator supports setup
17997options, specify them via @var{args}.
104c1213
JM
17998@end table
17999
8e04817f
AC
18000@noindent
18001After specifying this target, you can debug programs for the simulated
18002CPU in the same style as programs for your host computer; use the
18003@code{file} command to load a new program image, the @code{run} command
18004to run your program, and so on.
18005
18006As well as making available all the usual machine registers
18007(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
18008additional items of information as specially named registers:
104c1213
JM
18009
18010@table @code
18011
8e04817f
AC
18012@item cycles
18013Counts clock-ticks in the simulator.
104c1213 18014
8e04817f
AC
18015@item insts
18016Counts instructions run in the simulator.
104c1213 18017
8e04817f
AC
18018@item time
18019Execution time in 60ths of a second.
104c1213 18020
8e04817f 18021@end table
104c1213 18022
8e04817f
AC
18023You can refer to these values in @value{GDBN} expressions with the usual
18024conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
18025conditional breakpoint that suspends only after at least 5000
18026simulated clock ticks.
104c1213 18027
a64548ea
EZ
18028@node AVR
18029@subsection Atmel AVR
18030@cindex AVR
18031
18032When configured for debugging the Atmel AVR, @value{GDBN} supports the
18033following AVR-specific commands:
18034
18035@table @code
18036@item info io_registers
18037@kindex info io_registers@r{, AVR}
18038@cindex I/O registers (Atmel AVR)
18039This command displays information about the AVR I/O registers. For
18040each register, @value{GDBN} prints its number and value.
18041@end table
18042
18043@node CRIS
18044@subsection CRIS
18045@cindex CRIS
18046
18047When configured for debugging CRIS, @value{GDBN} provides the
18048following CRIS-specific commands:
18049
18050@table @code
18051@item set cris-version @var{ver}
18052@cindex CRIS version
e22e55c9
OF
18053Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}.
18054The CRIS version affects register names and sizes. This command is useful in
18055case autodetection of the CRIS version fails.
a64548ea
EZ
18056
18057@item show cris-version
18058Show the current CRIS version.
18059
18060@item set cris-dwarf2-cfi
18061@cindex DWARF-2 CFI and CRIS
e22e55c9
OF
18062Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}.
18063Change to @samp{off} when using @code{gcc-cris} whose version is below
18064@code{R59}.
a64548ea
EZ
18065
18066@item show cris-dwarf2-cfi
18067Show the current state of using DWARF-2 CFI.
e22e55c9
OF
18068
18069@item set cris-mode @var{mode}
18070@cindex CRIS mode
18071Set the current CRIS mode to @var{mode}. It should only be changed when
18072debugging in guru mode, in which case it should be set to
18073@samp{guru} (the default is @samp{normal}).
18074
18075@item show cris-mode
18076Show the current CRIS mode.
a64548ea
EZ
18077@end table
18078
18079@node Super-H
18080@subsection Renesas Super-H
18081@cindex Super-H
18082
18083For the Renesas Super-H processor, @value{GDBN} provides these
18084commands:
18085
18086@table @code
18087@item regs
18088@kindex regs@r{, Super-H}
18089Show the values of all Super-H registers.
c055b101
CV
18090
18091@item set sh calling-convention @var{convention}
18092@kindex set sh calling-convention
18093Set the calling-convention used when calling functions from @value{GDBN}.
18094Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}.
18095With the @samp{gcc} setting, functions are called using the @value{NGCC} calling
18096convention. If the DWARF-2 information of the called function specifies
18097that the function follows the Renesas calling convention, the function
18098is called using the Renesas calling convention. If the calling convention
18099is set to @samp{renesas}, the Renesas calling convention is always used,
18100regardless of the DWARF-2 information. This can be used to override the
18101default of @samp{gcc} if debug information is missing, or the compiler
18102does not emit the DWARF-2 calling convention entry for a function.
18103
18104@item show sh calling-convention
18105@kindex show sh calling-convention
18106Show the current calling convention setting.
18107
a64548ea
EZ
18108@end table
18109
18110
8e04817f
AC
18111@node Architectures
18112@section Architectures
104c1213 18113
8e04817f
AC
18114This section describes characteristics of architectures that affect
18115all uses of @value{GDBN} with the architecture, both native and cross.
104c1213 18116
8e04817f 18117@menu
9c16f35a 18118* i386::
8e04817f
AC
18119* A29K::
18120* Alpha::
18121* MIPS::
a64548ea 18122* HPPA:: HP PA architecture
23d964e7 18123* SPU:: Cell Broadband Engine SPU architecture
4acd40f3 18124* PowerPC::
8e04817f 18125@end menu
104c1213 18126
9c16f35a 18127@node i386
db2e3e2e 18128@subsection x86 Architecture-specific Issues
9c16f35a
EZ
18129
18130@table @code
18131@item set struct-convention @var{mode}
18132@kindex set struct-convention
18133@cindex struct return convention
18134@cindex struct/union returned in registers
18135Set the convention used by the inferior to return @code{struct}s and
18136@code{union}s from functions to @var{mode}. Possible values of
18137@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the
18138default). @code{"default"} or @code{"pcc"} means that @code{struct}s
18139are returned on the stack, while @code{"reg"} means that a
18140@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will
18141be returned in a register.
18142
18143@item show struct-convention
18144@kindex show struct-convention
18145Show the current setting of the convention to return @code{struct}s
18146from functions.
18147@end table
18148
8e04817f
AC
18149@node A29K
18150@subsection A29K
104c1213
JM
18151
18152@table @code
104c1213 18153
8e04817f
AC
18154@kindex set rstack_high_address
18155@cindex AMD 29K register stack
18156@cindex register stack, AMD29K
18157@item set rstack_high_address @var{address}
18158On AMD 29000 family processors, registers are saved in a separate
18159@dfn{register stack}. There is no way for @value{GDBN} to determine the
18160extent of this stack. Normally, @value{GDBN} just assumes that the
18161stack is ``large enough''. This may result in @value{GDBN} referencing
18162memory locations that do not exist. If necessary, you can get around
18163this problem by specifying the ending address of the register stack with
18164the @code{set rstack_high_address} command. The argument should be an
18165address, which you probably want to precede with @samp{0x} to specify in
18166hexadecimal.
104c1213 18167
8e04817f
AC
18168@kindex show rstack_high_address
18169@item show rstack_high_address
18170Display the current limit of the register stack, on AMD 29000 family
18171processors.
104c1213 18172
8e04817f 18173@end table
104c1213 18174
8e04817f
AC
18175@node Alpha
18176@subsection Alpha
104c1213 18177
8e04817f 18178See the following section.
104c1213 18179
8e04817f
AC
18180@node MIPS
18181@subsection MIPS
104c1213 18182
8e04817f
AC
18183@cindex stack on Alpha
18184@cindex stack on MIPS
18185@cindex Alpha stack
18186@cindex MIPS stack
18187Alpha- and MIPS-based computers use an unusual stack frame, which
18188sometimes requires @value{GDBN} to search backward in the object code to
18189find the beginning of a function.
104c1213 18190
8e04817f
AC
18191@cindex response time, MIPS debugging
18192To improve response time (especially for embedded applications, where
18193@value{GDBN} may be restricted to a slow serial line for this search)
18194you may want to limit the size of this search, using one of these
18195commands:
104c1213 18196
8e04817f
AC
18197@table @code
18198@cindex @code{heuristic-fence-post} (Alpha, MIPS)
18199@item set heuristic-fence-post @var{limit}
18200Restrict @value{GDBN} to examining at most @var{limit} bytes in its
18201search for the beginning of a function. A value of @var{0} (the
18202default) means there is no limit. However, except for @var{0}, the
18203larger the limit the more bytes @code{heuristic-fence-post} must search
e2f4edfd
EZ
18204and therefore the longer it takes to run. You should only need to use
18205this command when debugging a stripped executable.
104c1213 18206
8e04817f
AC
18207@item show heuristic-fence-post
18208Display the current limit.
18209@end table
104c1213
JM
18210
18211@noindent
8e04817f
AC
18212These commands are available @emph{only} when @value{GDBN} is configured
18213for debugging programs on Alpha or MIPS processors.
104c1213 18214
a64548ea
EZ
18215Several MIPS-specific commands are available when debugging MIPS
18216programs:
18217
18218@table @code
a64548ea
EZ
18219@item set mips abi @var{arg}
18220@kindex set mips abi
18221@cindex set ABI for MIPS
18222Tell @value{GDBN} which MIPS ABI is used by the inferior. Possible
18223values of @var{arg} are:
18224
18225@table @samp
18226@item auto
18227The default ABI associated with the current binary (this is the
18228default).
18229@item o32
18230@item o64
18231@item n32
18232@item n64
18233@item eabi32
18234@item eabi64
18235@item auto
18236@end table
18237
18238@item show mips abi
18239@kindex show mips abi
18240Show the MIPS ABI used by @value{GDBN} to debug the inferior.
18241
18242@item set mipsfpu
18243@itemx show mipsfpu
18244@xref{MIPS Embedded, set mipsfpu}.
18245
18246@item set mips mask-address @var{arg}
18247@kindex set mips mask-address
18248@cindex MIPS addresses, masking
18249This command determines whether the most-significant 32 bits of 64-bit
18250MIPS addresses are masked off. The argument @var{arg} can be
18251@samp{on}, @samp{off}, or @samp{auto}. The latter is the default
18252setting, which lets @value{GDBN} determine the correct value.
18253
18254@item show mips mask-address
18255@kindex show mips mask-address
18256Show whether the upper 32 bits of MIPS addresses are masked off or
18257not.
18258
18259@item set remote-mips64-transfers-32bit-regs
18260@kindex set remote-mips64-transfers-32bit-regs
18261This command controls compatibility with 64-bit MIPS targets that
18262transfer data in 32-bit quantities. If you have an old MIPS 64 target
18263that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr},
18264and 64 bits for other registers, set this option to @samp{on}.
18265
18266@item show remote-mips64-transfers-32bit-regs
18267@kindex show remote-mips64-transfers-32bit-regs
18268Show the current setting of compatibility with older MIPS 64 targets.
18269
18270@item set debug mips
18271@kindex set debug mips
18272This command turns on and off debugging messages for the MIPS-specific
18273target code in @value{GDBN}.
18274
18275@item show debug mips
18276@kindex show debug mips
18277Show the current setting of MIPS debugging messages.
18278@end table
18279
18280
18281@node HPPA
18282@subsection HPPA
18283@cindex HPPA support
18284
d3e8051b 18285When @value{GDBN} is debugging the HP PA architecture, it provides the
a64548ea
EZ
18286following special commands:
18287
18288@table @code
18289@item set debug hppa
18290@kindex set debug hppa
db2e3e2e 18291This command determines whether HPPA architecture-specific debugging
a64548ea
EZ
18292messages are to be displayed.
18293
18294@item show debug hppa
18295Show whether HPPA debugging messages are displayed.
18296
18297@item maint print unwind @var{address}
18298@kindex maint print unwind@r{, HPPA}
18299This command displays the contents of the unwind table entry at the
18300given @var{address}.
18301
18302@end table
18303
104c1213 18304
23d964e7
UW
18305@node SPU
18306@subsection Cell Broadband Engine SPU architecture
18307@cindex Cell Broadband Engine
18308@cindex SPU
18309
18310When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
18311it provides the following special commands:
18312
18313@table @code
18314@item info spu event
18315@kindex info spu
18316Display SPU event facility status. Shows current event mask
18317and pending event status.
18318
18319@item info spu signal
18320Display SPU signal notification facility status. Shows pending
18321signal-control word and signal notification mode of both signal
18322notification channels.
18323
18324@item info spu mailbox
18325Display SPU mailbox facility status. Shows all pending entries,
18326in order of processing, in each of the SPU Write Outbound,
18327SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
18328
18329@item info spu dma
18330Display MFC DMA status. Shows all pending commands in the MFC
18331DMA queue. For each entry, opcode, tag, class IDs, effective
18332and local store addresses and transfer size are shown.
18333
18334@item info spu proxydma
18335Display MFC Proxy-DMA status. Shows all pending commands in the MFC
18336Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
18337and local store addresses and transfer size are shown.
18338
18339@end table
18340
3285f3fe
UW
18341When @value{GDBN} is debugging a combined PowerPC/SPU application
18342on the Cell Broadband Engine, it provides in addition the following
18343special commands:
18344
18345@table @code
18346@item set spu stop-on-load @var{arg}
18347@kindex set spu
18348Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN}
18349will give control to the user when a new SPE thread enters its @code{main}
18350function. The default is @code{off}.
18351
18352@item show spu stop-on-load
18353@kindex show spu
18354Show whether to stop for new SPE threads.
18355
ff1a52c6
UW
18356@item set spu auto-flush-cache @var{arg}
18357Set whether to automatically flush the software-managed cache. When set to
18358@code{on}, @value{GDBN} will automatically cause the SPE software-managed
18359cache to be flushed whenever SPE execution stops. This provides a consistent
18360view of PowerPC memory that is accessed via the cache. If an application
18361does not use the software-managed cache, this option has no effect.
18362
18363@item show spu auto-flush-cache
18364Show whether to automatically flush the software-managed cache.
18365
3285f3fe
UW
18366@end table
18367
4acd40f3
TJB
18368@node PowerPC
18369@subsection PowerPC
18370@cindex PowerPC architecture
18371
18372When @value{GDBN} is debugging the PowerPC architecture, it provides a set of
18373pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
18374numbers stored in the floating point registers. These values must be stored
18375in two consecutive registers, always starting at an even register like
18376@code{f0} or @code{f2}.
18377
18378The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed
18379by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0},
18380@code{f2} and @code{f3} for @code{$dl1} and so on.
18381
aeac0ff9 18382For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit
677c5bb1
LM
18383wide Extended Floating Point Registers (@samp{f32} through @samp{f63}).
18384
23d964e7 18385
8e04817f
AC
18386@node Controlling GDB
18387@chapter Controlling @value{GDBN}
18388
18389You can alter the way @value{GDBN} interacts with you by using the
18390@code{set} command. For commands controlling how @value{GDBN} displays
79a6e687 18391data, see @ref{Print Settings, ,Print Settings}. Other settings are
8e04817f
AC
18392described here.
18393
18394@menu
18395* Prompt:: Prompt
18396* Editing:: Command editing
d620b259 18397* Command History:: Command history
8e04817f
AC
18398* Screen Size:: Screen size
18399* Numbers:: Numbers
1e698235 18400* ABI:: Configuring the current ABI
8e04817f
AC
18401* Messages/Warnings:: Optional warnings and messages
18402* Debugging Output:: Optional messages about internal happenings
14fb1bac 18403* Other Misc Settings:: Other Miscellaneous Settings
8e04817f
AC
18404@end menu
18405
18406@node Prompt
18407@section Prompt
104c1213 18408
8e04817f 18409@cindex prompt
104c1213 18410
8e04817f
AC
18411@value{GDBN} indicates its readiness to read a command by printing a string
18412called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
18413can change the prompt string with the @code{set prompt} command. For
18414instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
18415the prompt in one of the @value{GDBN} sessions so that you can always tell
18416which one you are talking to.
104c1213 18417
8e04817f
AC
18418@emph{Note:} @code{set prompt} does not add a space for you after the
18419prompt you set. This allows you to set a prompt which ends in a space
18420or a prompt that does not.
104c1213 18421
8e04817f
AC
18422@table @code
18423@kindex set prompt
18424@item set prompt @var{newprompt}
18425Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
104c1213 18426
8e04817f
AC
18427@kindex show prompt
18428@item show prompt
18429Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
104c1213
JM
18430@end table
18431
8e04817f 18432@node Editing
79a6e687 18433@section Command Editing
8e04817f
AC
18434@cindex readline
18435@cindex command line editing
104c1213 18436
703663ab 18437@value{GDBN} reads its input commands via the @dfn{Readline} interface. This
8e04817f
AC
18438@sc{gnu} library provides consistent behavior for programs which provide a
18439command line interface to the user. Advantages are @sc{gnu} Emacs-style
18440or @dfn{vi}-style inline editing of commands, @code{csh}-like history
18441substitution, and a storage and recall of command history across
18442debugging sessions.
104c1213 18443
8e04817f
AC
18444You may control the behavior of command line editing in @value{GDBN} with the
18445command @code{set}.
104c1213 18446
8e04817f
AC
18447@table @code
18448@kindex set editing
18449@cindex editing
18450@item set editing
18451@itemx set editing on
18452Enable command line editing (enabled by default).
104c1213 18453
8e04817f
AC
18454@item set editing off
18455Disable command line editing.
104c1213 18456
8e04817f
AC
18457@kindex show editing
18458@item show editing
18459Show whether command line editing is enabled.
104c1213
JM
18460@end table
18461
703663ab
EZ
18462@xref{Command Line Editing}, for more details about the Readline
18463interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
18464encouraged to read that chapter.
18465
d620b259 18466@node Command History
79a6e687 18467@section Command History
703663ab 18468@cindex command history
8e04817f
AC
18469
18470@value{GDBN} can keep track of the commands you type during your
18471debugging sessions, so that you can be certain of precisely what
18472happened. Use these commands to manage the @value{GDBN} command
18473history facility.
104c1213 18474
703663ab
EZ
18475@value{GDBN} uses the @sc{gnu} History library, a part of the Readline
18476package, to provide the history facility. @xref{Using History
18477Interactively}, for the detailed description of the History library.
18478
d620b259 18479To issue a command to @value{GDBN} without affecting certain aspects of
9e6c4bd5
NR
18480the state which is seen by users, prefix it with @samp{server }
18481(@pxref{Server Prefix}). This
d620b259
NR
18482means that this command will not affect the command history, nor will it
18483affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
18484pressed on a line by itself.
18485
18486@cindex @code{server}, command prefix
18487The server prefix does not affect the recording of values into the value
18488history; to print a value without recording it into the value history,
18489use the @code{output} command instead of the @code{print} command.
18490
703663ab
EZ
18491Here is the description of @value{GDBN} commands related to command
18492history.
18493
104c1213 18494@table @code
8e04817f
AC
18495@cindex history substitution
18496@cindex history file
18497@kindex set history filename
4644b6e3 18498@cindex @env{GDBHISTFILE}, environment variable
8e04817f
AC
18499@item set history filename @var{fname}
18500Set the name of the @value{GDBN} command history file to @var{fname}.
18501This is the file where @value{GDBN} reads an initial command history
18502list, and where it writes the command history from this session when it
18503exits. You can access this list through history expansion or through
18504the history command editing characters listed below. This file defaults
18505to the value of the environment variable @code{GDBHISTFILE}, or to
18506@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
18507is not set.
104c1213 18508
9c16f35a
EZ
18509@cindex save command history
18510@kindex set history save
8e04817f
AC
18511@item set history save
18512@itemx set history save on
18513Record command history in a file, whose name may be specified with the
18514@code{set history filename} command. By default, this option is disabled.
104c1213 18515
8e04817f
AC
18516@item set history save off
18517Stop recording command history in a file.
104c1213 18518
8e04817f 18519@cindex history size
9c16f35a 18520@kindex set history size
6fc08d32 18521@cindex @env{HISTSIZE}, environment variable
8e04817f
AC
18522@item set history size @var{size}
18523Set the number of commands which @value{GDBN} keeps in its history list.
18524This defaults to the value of the environment variable
18525@code{HISTSIZE}, or to 256 if this variable is not set.
104c1213
JM
18526@end table
18527
8e04817f 18528History expansion assigns special meaning to the character @kbd{!}.
703663ab 18529@xref{Event Designators}, for more details.
8e04817f 18530
703663ab 18531@cindex history expansion, turn on/off
8e04817f
AC
18532Since @kbd{!} is also the logical not operator in C, history expansion
18533is off by default. If you decide to enable history expansion with the
18534@code{set history expansion on} command, you may sometimes need to
18535follow @kbd{!} (when it is used as logical not, in an expression) with
18536a space or a tab to prevent it from being expanded. The readline
18537history facilities do not attempt substitution on the strings
18538@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
18539
18540The commands to control history expansion are:
104c1213
JM
18541
18542@table @code
8e04817f
AC
18543@item set history expansion on
18544@itemx set history expansion
703663ab 18545@kindex set history expansion
8e04817f 18546Enable history expansion. History expansion is off by default.
104c1213 18547
8e04817f
AC
18548@item set history expansion off
18549Disable history expansion.
104c1213 18550
8e04817f
AC
18551@c @group
18552@kindex show history
18553@item show history
18554@itemx show history filename
18555@itemx show history save
18556@itemx show history size
18557@itemx show history expansion
18558These commands display the state of the @value{GDBN} history parameters.
18559@code{show history} by itself displays all four states.
18560@c @end group
18561@end table
18562
18563@table @code
9c16f35a
EZ
18564@kindex show commands
18565@cindex show last commands
18566@cindex display command history
8e04817f
AC
18567@item show commands
18568Display the last ten commands in the command history.
104c1213 18569
8e04817f
AC
18570@item show commands @var{n}
18571Print ten commands centered on command number @var{n}.
18572
18573@item show commands +
18574Print ten commands just after the commands last printed.
104c1213
JM
18575@end table
18576
8e04817f 18577@node Screen Size
79a6e687 18578@section Screen Size
8e04817f
AC
18579@cindex size of screen
18580@cindex pauses in output
104c1213 18581
8e04817f
AC
18582Certain commands to @value{GDBN} may produce large amounts of
18583information output to the screen. To help you read all of it,
18584@value{GDBN} pauses and asks you for input at the end of each page of
18585output. Type @key{RET} when you want to continue the output, or @kbd{q}
18586to discard the remaining output. Also, the screen width setting
18587determines when to wrap lines of output. Depending on what is being
18588printed, @value{GDBN} tries to break the line at a readable place,
18589rather than simply letting it overflow onto the following line.
18590
18591Normally @value{GDBN} knows the size of the screen from the terminal
18592driver software. For example, on Unix @value{GDBN} uses the termcap data base
18593together with the value of the @code{TERM} environment variable and the
18594@code{stty rows} and @code{stty cols} settings. If this is not correct,
18595you can override it with the @code{set height} and @code{set
18596width} commands:
18597
18598@table @code
18599@kindex set height
18600@kindex set width
18601@kindex show width
18602@kindex show height
18603@item set height @var{lpp}
18604@itemx show height
18605@itemx set width @var{cpl}
18606@itemx show width
18607These @code{set} commands specify a screen height of @var{lpp} lines and
18608a screen width of @var{cpl} characters. The associated @code{show}
18609commands display the current settings.
104c1213 18610
8e04817f
AC
18611If you specify a height of zero lines, @value{GDBN} does not pause during
18612output no matter how long the output is. This is useful if output is to a
18613file or to an editor buffer.
104c1213 18614
8e04817f
AC
18615Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
18616from wrapping its output.
9c16f35a
EZ
18617
18618@item set pagination on
18619@itemx set pagination off
18620@kindex set pagination
18621Turn the output pagination on or off; the default is on. Turning
7c953934
TT
18622pagination off is the alternative to @code{set height 0}. Note that
18623running @value{GDBN} with the @option{--batch} option (@pxref{Mode
18624Options, -batch}) also automatically disables pagination.
9c16f35a
EZ
18625
18626@item show pagination
18627@kindex show pagination
18628Show the current pagination mode.
104c1213
JM
18629@end table
18630
8e04817f
AC
18631@node Numbers
18632@section Numbers
18633@cindex number representation
18634@cindex entering numbers
104c1213 18635
8e04817f
AC
18636You can always enter numbers in octal, decimal, or hexadecimal in
18637@value{GDBN} by the usual conventions: octal numbers begin with
18638@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
eb2dae08
EZ
18639begin with @samp{0x}. Numbers that neither begin with @samp{0} or
18640@samp{0x}, nor end with a @samp{.} are, by default, entered in base
1864110; likewise, the default display for numbers---when no particular
18642format is specified---is base 10. You can change the default base for
18643both input and output with the commands described below.
104c1213 18644
8e04817f
AC
18645@table @code
18646@kindex set input-radix
18647@item set input-radix @var{base}
18648Set the default base for numeric input. Supported choices
18649for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 18650specified either unambiguously or using the current input radix; for
8e04817f 18651example, any of
104c1213 18652
8e04817f 18653@smallexample
9c16f35a
EZ
18654set input-radix 012
18655set input-radix 10.
18656set input-radix 0xa
8e04817f 18657@end smallexample
104c1213 18658
8e04817f 18659@noindent
9c16f35a 18660sets the input base to decimal. On the other hand, @samp{set input-radix 10}
eb2dae08
EZ
18661leaves the input radix unchanged, no matter what it was, since
18662@samp{10}, being without any leading or trailing signs of its base, is
18663interpreted in the current radix. Thus, if the current radix is 16,
18664@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't
18665change the radix.
104c1213 18666
8e04817f
AC
18667@kindex set output-radix
18668@item set output-radix @var{base}
18669Set the default base for numeric display. Supported choices
18670for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 18671specified either unambiguously or using the current input radix.
104c1213 18672
8e04817f
AC
18673@kindex show input-radix
18674@item show input-radix
18675Display the current default base for numeric input.
104c1213 18676
8e04817f
AC
18677@kindex show output-radix
18678@item show output-radix
18679Display the current default base for numeric display.
9c16f35a
EZ
18680
18681@item set radix @r{[}@var{base}@r{]}
18682@itemx show radix
18683@kindex set radix
18684@kindex show radix
18685These commands set and show the default base for both input and output
18686of numbers. @code{set radix} sets the radix of input and output to
18687the same base; without an argument, it resets the radix back to its
18688default value of 10.
18689
8e04817f 18690@end table
104c1213 18691
1e698235 18692@node ABI
79a6e687 18693@section Configuring the Current ABI
1e698235
DJ
18694
18695@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
18696application automatically. However, sometimes you need to override its
18697conclusions. Use these commands to manage @value{GDBN}'s view of the
18698current ABI.
18699
98b45e30
DJ
18700@cindex OS ABI
18701@kindex set osabi
b4e9345d 18702@kindex show osabi
98b45e30
DJ
18703
18704One @value{GDBN} configuration can debug binaries for multiple operating
b383017d 18705system targets, either via remote debugging or native emulation.
98b45e30
DJ
18706@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
18707but you can override its conclusion using the @code{set osabi} command.
18708One example where this is useful is in debugging of binaries which use
18709an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
18710not have the same identifying marks that the standard C library for your
18711platform provides.
18712
18713@table @code
18714@item show osabi
18715Show the OS ABI currently in use.
18716
18717@item set osabi
18718With no argument, show the list of registered available OS ABI's.
18719
18720@item set osabi @var{abi}
18721Set the current OS ABI to @var{abi}.
18722@end table
18723
1e698235 18724@cindex float promotion
1e698235
DJ
18725
18726Generally, the way that an argument of type @code{float} is passed to a
18727function depends on whether the function is prototyped. For a prototyped
18728(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
18729according to the architecture's convention for @code{float}. For unprototyped
18730(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
18731@code{double} and then passed.
18732
18733Unfortunately, some forms of debug information do not reliably indicate whether
18734a function is prototyped. If @value{GDBN} calls a function that is not marked
18735as prototyped, it consults @kbd{set coerce-float-to-double}.
18736
18737@table @code
a8f24a35 18738@kindex set coerce-float-to-double
1e698235
DJ
18739@item set coerce-float-to-double
18740@itemx set coerce-float-to-double on
18741Arguments of type @code{float} will be promoted to @code{double} when passed
18742to an unprototyped function. This is the default setting.
18743
18744@item set coerce-float-to-double off
18745Arguments of type @code{float} will be passed directly to unprototyped
18746functions.
9c16f35a
EZ
18747
18748@kindex show coerce-float-to-double
18749@item show coerce-float-to-double
18750Show the current setting of promoting @code{float} to @code{double}.
1e698235
DJ
18751@end table
18752
f1212245
DJ
18753@kindex set cp-abi
18754@kindex show cp-abi
18755@value{GDBN} needs to know the ABI used for your program's C@t{++}
18756objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
18757used to build your application. @value{GDBN} only fully supports
18758programs with a single C@t{++} ABI; if your program contains code using
18759multiple C@t{++} ABI's or if @value{GDBN} can not identify your
18760program's ABI correctly, you can tell @value{GDBN} which ABI to use.
18761Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
18762before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
18763``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
18764use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
18765``auto''.
18766
18767@table @code
18768@item show cp-abi
18769Show the C@t{++} ABI currently in use.
18770
18771@item set cp-abi
18772With no argument, show the list of supported C@t{++} ABI's.
18773
18774@item set cp-abi @var{abi}
18775@itemx set cp-abi auto
18776Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
18777@end table
18778
8e04817f 18779@node Messages/Warnings
79a6e687 18780@section Optional Warnings and Messages
104c1213 18781
9c16f35a
EZ
18782@cindex verbose operation
18783@cindex optional warnings
8e04817f
AC
18784By default, @value{GDBN} is silent about its inner workings. If you are
18785running on a slow machine, you may want to use the @code{set verbose}
18786command. This makes @value{GDBN} tell you when it does a lengthy
18787internal operation, so you will not think it has crashed.
104c1213 18788
8e04817f
AC
18789Currently, the messages controlled by @code{set verbose} are those
18790which announce that the symbol table for a source file is being read;
79a6e687 18791see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}.
104c1213 18792
8e04817f
AC
18793@table @code
18794@kindex set verbose
18795@item set verbose on
18796Enables @value{GDBN} output of certain informational messages.
104c1213 18797
8e04817f
AC
18798@item set verbose off
18799Disables @value{GDBN} output of certain informational messages.
104c1213 18800
8e04817f
AC
18801@kindex show verbose
18802@item show verbose
18803Displays whether @code{set verbose} is on or off.
18804@end table
104c1213 18805
8e04817f
AC
18806By default, if @value{GDBN} encounters bugs in the symbol table of an
18807object file, it is silent; but if you are debugging a compiler, you may
79a6e687
BW
18808find this information useful (@pxref{Symbol Errors, ,Errors Reading
18809Symbol Files}).
104c1213 18810
8e04817f 18811@table @code
104c1213 18812
8e04817f
AC
18813@kindex set complaints
18814@item set complaints @var{limit}
18815Permits @value{GDBN} to output @var{limit} complaints about each type of
18816unusual symbols before becoming silent about the problem. Set
18817@var{limit} to zero to suppress all complaints; set it to a large number
18818to prevent complaints from being suppressed.
104c1213 18819
8e04817f
AC
18820@kindex show complaints
18821@item show complaints
18822Displays how many symbol complaints @value{GDBN} is permitted to produce.
104c1213 18823
8e04817f 18824@end table
104c1213 18825
d837706a 18826@anchor{confirmation requests}
8e04817f
AC
18827By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
18828lot of stupid questions to confirm certain commands. For example, if
18829you try to run a program which is already running:
104c1213 18830
474c8240 18831@smallexample
8e04817f
AC
18832(@value{GDBP}) run
18833The program being debugged has been started already.
18834Start it from the beginning? (y or n)
474c8240 18835@end smallexample
104c1213 18836
8e04817f
AC
18837If you are willing to unflinchingly face the consequences of your own
18838commands, you can disable this ``feature'':
104c1213 18839
8e04817f 18840@table @code
104c1213 18841
8e04817f
AC
18842@kindex set confirm
18843@cindex flinching
18844@cindex confirmation
18845@cindex stupid questions
18846@item set confirm off
7c953934
TT
18847Disables confirmation requests. Note that running @value{GDBN} with
18848the @option{--batch} option (@pxref{Mode Options, -batch}) also
18849automatically disables confirmation requests.
104c1213 18850
8e04817f
AC
18851@item set confirm on
18852Enables confirmation requests (the default).
104c1213 18853
8e04817f
AC
18854@kindex show confirm
18855@item show confirm
18856Displays state of confirmation requests.
18857
18858@end table
104c1213 18859
16026cd7
AS
18860@cindex command tracing
18861If you need to debug user-defined commands or sourced files you may find it
18862useful to enable @dfn{command tracing}. In this mode each command will be
18863printed as it is executed, prefixed with one or more @samp{+} symbols, the
18864quantity denoting the call depth of each command.
18865
18866@table @code
18867@kindex set trace-commands
18868@cindex command scripts, debugging
18869@item set trace-commands on
18870Enable command tracing.
18871@item set trace-commands off
18872Disable command tracing.
18873@item show trace-commands
18874Display the current state of command tracing.
18875@end table
18876
8e04817f 18877@node Debugging Output
79a6e687 18878@section Optional Messages about Internal Happenings
4644b6e3
EZ
18879@cindex optional debugging messages
18880
da316a69
EZ
18881@value{GDBN} has commands that enable optional debugging messages from
18882various @value{GDBN} subsystems; normally these commands are of
18883interest to @value{GDBN} maintainers, or when reporting a bug. This
18884section documents those commands.
18885
104c1213 18886@table @code
a8f24a35
EZ
18887@kindex set exec-done-display
18888@item set exec-done-display
18889Turns on or off the notification of asynchronous commands'
18890completion. When on, @value{GDBN} will print a message when an
18891asynchronous command finishes its execution. The default is off.
18892@kindex show exec-done-display
18893@item show exec-done-display
18894Displays the current setting of asynchronous command completion
18895notification.
4644b6e3
EZ
18896@kindex set debug
18897@cindex gdbarch debugging info
a8f24a35 18898@cindex architecture debugging info
8e04817f 18899@item set debug arch
a8f24a35 18900Turns on or off display of gdbarch debugging info. The default is off
4644b6e3 18901@kindex show debug
8e04817f
AC
18902@item show debug arch
18903Displays the current state of displaying gdbarch debugging info.
721c2651
EZ
18904@item set debug aix-thread
18905@cindex AIX threads
18906Display debugging messages about inner workings of the AIX thread
18907module.
18908@item show debug aix-thread
18909Show the current state of AIX thread debugging info display.
d97bc12b
DE
18910@item set debug dwarf2-die
18911@cindex DWARF2 DIEs
18912Dump DWARF2 DIEs after they are read in.
18913The value is the number of nesting levels to print.
18914A value of zero turns off the display.
18915@item show debug dwarf2-die
18916Show the current state of DWARF2 DIE debugging.
237fc4c9
PA
18917@item set debug displaced
18918@cindex displaced stepping debugging info
18919Turns on or off display of @value{GDBN} debugging info for the
18920displaced stepping support. The default is off.
18921@item show debug displaced
18922Displays the current state of displaying @value{GDBN} debugging info
18923related to displaced stepping.
8e04817f 18924@item set debug event
4644b6e3 18925@cindex event debugging info
a8f24a35 18926Turns on or off display of @value{GDBN} event debugging info. The
8e04817f 18927default is off.
8e04817f
AC
18928@item show debug event
18929Displays the current state of displaying @value{GDBN} event debugging
18930info.
8e04817f 18931@item set debug expression
4644b6e3 18932@cindex expression debugging info
721c2651
EZ
18933Turns on or off display of debugging info about @value{GDBN}
18934expression parsing. The default is off.
8e04817f 18935@item show debug expression
721c2651
EZ
18936Displays the current state of displaying debugging info about
18937@value{GDBN} expression parsing.
7453dc06 18938@item set debug frame
4644b6e3 18939@cindex frame debugging info
7453dc06
AC
18940Turns on or off display of @value{GDBN} frame debugging info. The
18941default is off.
7453dc06
AC
18942@item show debug frame
18943Displays the current state of displaying @value{GDBN} frame debugging
18944info.
cbe54154
PA
18945@item set debug gnu-nat
18946@cindex @sc{gnu}/Hurd debug messages
18947Turns on or off debugging messages from the @sc{gnu}/Hurd debug support.
18948@item show debug gnu-nat
18949Show the current state of @sc{gnu}/Hurd debugging messages.
30e91e0b
RC
18950@item set debug infrun
18951@cindex inferior debugging info
18952Turns on or off display of @value{GDBN} debugging info for running the inferior.
18953The default is off. @file{infrun.c} contains GDB's runtime state machine used
18954for implementing operations such as single-stepping the inferior.
18955@item show debug infrun
18956Displays the current state of @value{GDBN} inferior debugging.
da316a69
EZ
18957@item set debug lin-lwp
18958@cindex @sc{gnu}/Linux LWP debug messages
18959@cindex Linux lightweight processes
721c2651 18960Turns on or off debugging messages from the Linux LWP debug support.
da316a69
EZ
18961@item show debug lin-lwp
18962Show the current state of Linux LWP debugging messages.
b84876c2
PA
18963@item set debug lin-lwp-async
18964@cindex @sc{gnu}/Linux LWP async debug messages
18965@cindex Linux lightweight processes
18966Turns on or off debugging messages from the Linux LWP async debug support.
18967@item show debug lin-lwp-async
18968Show the current state of Linux LWP async debugging messages.
2b4855ab 18969@item set debug observer
4644b6e3 18970@cindex observer debugging info
2b4855ab
AC
18971Turns on or off display of @value{GDBN} observer debugging. This
18972includes info such as the notification of observable events.
2b4855ab
AC
18973@item show debug observer
18974Displays the current state of observer debugging.
8e04817f 18975@item set debug overload
4644b6e3 18976@cindex C@t{++} overload debugging info
8e04817f 18977Turns on or off display of @value{GDBN} C@t{++} overload debugging
359df76b 18978info. This includes info such as ranking of functions, etc. The default
8e04817f 18979is off.
8e04817f
AC
18980@item show debug overload
18981Displays the current state of displaying @value{GDBN} C@t{++} overload
18982debugging info.
92981e24
TT
18983@cindex expression parser, debugging info
18984@cindex debug expression parser
18985@item set debug parser
18986Turns on or off the display of expression parser debugging output.
18987Internally, this sets the @code{yydebug} variable in the expression
18988parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for
18989details. The default is off.
18990@item show debug parser
18991Show the current state of expression parser debugging.
8e04817f
AC
18992@cindex packets, reporting on stdout
18993@cindex serial connections, debugging
605a56cb
DJ
18994@cindex debug remote protocol
18995@cindex remote protocol debugging
18996@cindex display remote packets
8e04817f
AC
18997@item set debug remote
18998Turns on or off display of reports on all packets sent back and forth across
18999the serial line to the remote machine. The info is printed on the
19000@value{GDBN} standard output stream. The default is off.
8e04817f
AC
19001@item show debug remote
19002Displays the state of display of remote packets.
8e04817f
AC
19003@item set debug serial
19004Turns on or off display of @value{GDBN} serial debugging info. The
19005default is off.
8e04817f
AC
19006@item show debug serial
19007Displays the current state of displaying @value{GDBN} serial debugging
19008info.
c45da7e6
EZ
19009@item set debug solib-frv
19010@cindex FR-V shared-library debugging
19011Turns on or off debugging messages for FR-V shared-library code.
19012@item show debug solib-frv
19013Display the current state of FR-V shared-library code debugging
19014messages.
8e04817f 19015@item set debug target
4644b6e3 19016@cindex target debugging info
8e04817f
AC
19017Turns on or off display of @value{GDBN} target debugging info. This info
19018includes what is going on at the target level of GDB, as it happens. The
701b08bb
DJ
19019default is 0. Set it to 1 to track events, and to 2 to also track the
19020value of large memory transfers. Changes to this flag do not take effect
19021until the next time you connect to a target or use the @code{run} command.
8e04817f
AC
19022@item show debug target
19023Displays the current state of displaying @value{GDBN} target debugging
19024info.
75feb17d
DJ
19025@item set debug timestamp
19026@cindex timestampping debugging info
19027Turns on or off display of timestamps with @value{GDBN} debugging info.
19028When enabled, seconds and microseconds are displayed before each debugging
19029message.
19030@item show debug timestamp
19031Displays the current state of displaying timestamps with @value{GDBN}
19032debugging info.
c45da7e6 19033@item set debugvarobj
4644b6e3 19034@cindex variable object debugging info
8e04817f
AC
19035Turns on or off display of @value{GDBN} variable object debugging
19036info. The default is off.
c45da7e6 19037@item show debugvarobj
8e04817f
AC
19038Displays the current state of displaying @value{GDBN} variable object
19039debugging info.
e776119f
DJ
19040@item set debug xml
19041@cindex XML parser debugging
19042Turns on or off debugging messages for built-in XML parsers.
19043@item show debug xml
19044Displays the current state of XML debugging messages.
8e04817f 19045@end table
104c1213 19046
14fb1bac
JB
19047@node Other Misc Settings
19048@section Other Miscellaneous Settings
19049@cindex miscellaneous settings
19050
19051@table @code
19052@kindex set interactive-mode
19053@item set interactive-mode
19054If @code{on}, forces @value{GDBN} to operate interactively.
19055If @code{off}, forces @value{GDBN} to operate non-interactively,
19056If @code{auto} (the default), @value{GDBN} guesses which mode to use,
19057based on whether the debugger was started in a terminal or not.
19058
19059In the vast majority of cases, the debugger should be able to guess
19060correctly which mode should be used. But this setting can be useful
19061in certain specific cases, such as running a MinGW @value{GDBN}
19062inside a cygwin window.
19063
19064@kindex show interactive-mode
19065@item show interactive-mode
19066Displays whether the debugger is operating in interactive mode or not.
19067@end table
19068
d57a3c85
TJB
19069@node Extending GDB
19070@chapter Extending @value{GDBN}
19071@cindex extending GDB
19072
19073@value{GDBN} provides two mechanisms for extension. The first is based
19074on composition of @value{GDBN} commands, and the second is based on the
19075Python scripting language.
19076
95433b34
JB
19077To facilitate the use of these extensions, @value{GDBN} is capable
19078of evaluating the contents of a file. When doing so, @value{GDBN}
19079can recognize which scripting language is being used by looking at
19080the filename extension. Files with an unrecognized filename extension
19081are always treated as a @value{GDBN} Command Files.
19082@xref{Command Files,, Command files}.
19083
19084You can control how @value{GDBN} evaluates these files with the following
19085setting:
19086
19087@table @code
19088@kindex set script-extension
19089@kindex show script-extension
19090@item set script-extension off
19091All scripts are always evaluated as @value{GDBN} Command Files.
19092
19093@item set script-extension soft
19094The debugger determines the scripting language based on filename
19095extension. If this scripting language is supported, @value{GDBN}
19096evaluates the script using that language. Otherwise, it evaluates
19097the file as a @value{GDBN} Command File.
19098
19099@item set script-extension strict
19100The debugger determines the scripting language based on filename
19101extension, and evaluates the script using that language. If the
19102language is not supported, then the evaluation fails.
19103
19104@item show script-extension
19105Display the current value of the @code{script-extension} option.
19106
19107@end table
19108
d57a3c85
TJB
19109@menu
19110* Sequences:: Canned Sequences of Commands
19111* Python:: Scripting @value{GDBN} using Python
19112@end menu
19113
8e04817f 19114@node Sequences
d57a3c85 19115@section Canned Sequences of Commands
104c1213 19116
8e04817f 19117Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
79a6e687 19118Command Lists}), @value{GDBN} provides two ways to store sequences of
8e04817f
AC
19119commands for execution as a unit: user-defined commands and command
19120files.
104c1213 19121
8e04817f 19122@menu
fcc73fe3
EZ
19123* Define:: How to define your own commands
19124* Hooks:: Hooks for user-defined commands
19125* Command Files:: How to write scripts of commands to be stored in a file
19126* Output:: Commands for controlled output
8e04817f 19127@end menu
104c1213 19128
8e04817f 19129@node Define
d57a3c85 19130@subsection User-defined Commands
104c1213 19131
8e04817f 19132@cindex user-defined command
fcc73fe3 19133@cindex arguments, to user-defined commands
8e04817f
AC
19134A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
19135which you assign a new name as a command. This is done with the
19136@code{define} command. User commands may accept up to 10 arguments
19137separated by whitespace. Arguments are accessed within the user command
c03c782f 19138via @code{$arg0@dots{}$arg9}. A trivial example:
104c1213 19139
8e04817f
AC
19140@smallexample
19141define adder
19142 print $arg0 + $arg1 + $arg2
c03c782f 19143end
8e04817f 19144@end smallexample
104c1213
JM
19145
19146@noindent
8e04817f 19147To execute the command use:
104c1213 19148
8e04817f
AC
19149@smallexample
19150adder 1 2 3
19151@end smallexample
104c1213 19152
8e04817f
AC
19153@noindent
19154This defines the command @code{adder}, which prints the sum of
19155its three arguments. Note the arguments are text substitutions, so they may
19156reference variables, use complex expressions, or even perform inferior
19157functions calls.
104c1213 19158
fcc73fe3
EZ
19159@cindex argument count in user-defined commands
19160@cindex how many arguments (user-defined commands)
c03c782f
AS
19161In addition, @code{$argc} may be used to find out how many arguments have
19162been passed. This expands to a number in the range 0@dots{}10.
19163
19164@smallexample
19165define adder
19166 if $argc == 2
19167 print $arg0 + $arg1
19168 end
19169 if $argc == 3
19170 print $arg0 + $arg1 + $arg2
19171 end
19172end
19173@end smallexample
19174
104c1213 19175@table @code
104c1213 19176
8e04817f
AC
19177@kindex define
19178@item define @var{commandname}
19179Define a command named @var{commandname}. If there is already a command
19180by that name, you are asked to confirm that you want to redefine it.
adb483fe
DJ
19181@var{commandname} may be a bare command name consisting of letters,
19182numbers, dashes, and underscores. It may also start with any predefined
19183prefix command. For example, @samp{define target my-target} creates
19184a user-defined @samp{target my-target} command.
104c1213 19185
8e04817f
AC
19186The definition of the command is made up of other @value{GDBN} command lines,
19187which are given following the @code{define} command. The end of these
19188commands is marked by a line containing @code{end}.
104c1213 19189
8e04817f 19190@kindex document
ca91424e 19191@kindex end@r{ (user-defined commands)}
8e04817f
AC
19192@item document @var{commandname}
19193Document the user-defined command @var{commandname}, so that it can be
19194accessed by @code{help}. The command @var{commandname} must already be
19195defined. This command reads lines of documentation just as @code{define}
19196reads the lines of the command definition, ending with @code{end}.
19197After the @code{document} command is finished, @code{help} on command
19198@var{commandname} displays the documentation you have written.
104c1213 19199
8e04817f
AC
19200You may use the @code{document} command again to change the
19201documentation of a command. Redefining the command with @code{define}
19202does not change the documentation.
104c1213 19203
c45da7e6
EZ
19204@kindex dont-repeat
19205@cindex don't repeat command
19206@item dont-repeat
19207Used inside a user-defined command, this tells @value{GDBN} that this
19208command should not be repeated when the user hits @key{RET}
19209(@pxref{Command Syntax, repeat last command}).
19210
8e04817f
AC
19211@kindex help user-defined
19212@item help user-defined
19213List all user-defined commands, with the first line of the documentation
19214(if any) for each.
104c1213 19215
8e04817f
AC
19216@kindex show user
19217@item show user
19218@itemx show user @var{commandname}
19219Display the @value{GDBN} commands used to define @var{commandname} (but
19220not its documentation). If no @var{commandname} is given, display the
19221definitions for all user-defined commands.
104c1213 19222
fcc73fe3 19223@cindex infinite recursion in user-defined commands
20f01a46
DH
19224@kindex show max-user-call-depth
19225@kindex set max-user-call-depth
19226@item show max-user-call-depth
5ca0cb28
DH
19227@itemx set max-user-call-depth
19228The value of @code{max-user-call-depth} controls how many recursion
3f94c067 19229levels are allowed in user-defined commands before @value{GDBN} suspects an
5ca0cb28 19230infinite recursion and aborts the command.
104c1213
JM
19231@end table
19232
fcc73fe3
EZ
19233In addition to the above commands, user-defined commands frequently
19234use control flow commands, described in @ref{Command Files}.
19235
8e04817f
AC
19236When user-defined commands are executed, the
19237commands of the definition are not printed. An error in any command
19238stops execution of the user-defined command.
104c1213 19239
8e04817f
AC
19240If used interactively, commands that would ask for confirmation proceed
19241without asking when used inside a user-defined command. Many @value{GDBN}
19242commands that normally print messages to say what they are doing omit the
19243messages when used in a user-defined command.
104c1213 19244
8e04817f 19245@node Hooks
d57a3c85 19246@subsection User-defined Command Hooks
8e04817f
AC
19247@cindex command hooks
19248@cindex hooks, for commands
19249@cindex hooks, pre-command
104c1213 19250
8e04817f 19251@kindex hook
8e04817f
AC
19252You may define @dfn{hooks}, which are a special kind of user-defined
19253command. Whenever you run the command @samp{foo}, if the user-defined
19254command @samp{hook-foo} exists, it is executed (with no arguments)
19255before that command.
104c1213 19256
8e04817f
AC
19257@cindex hooks, post-command
19258@kindex hookpost
8e04817f
AC
19259A hook may also be defined which is run after the command you executed.
19260Whenever you run the command @samp{foo}, if the user-defined command
19261@samp{hookpost-foo} exists, it is executed (with no arguments) after
19262that command. Post-execution hooks may exist simultaneously with
19263pre-execution hooks, for the same command.
104c1213 19264
8e04817f 19265It is valid for a hook to call the command which it hooks. If this
9f1c6395 19266occurs, the hook is not re-executed, thereby avoiding infinite recursion.
104c1213 19267
8e04817f
AC
19268@c It would be nice if hookpost could be passed a parameter indicating
19269@c if the command it hooks executed properly or not. FIXME!
104c1213 19270
8e04817f
AC
19271@kindex stop@r{, a pseudo-command}
19272In addition, a pseudo-command, @samp{stop} exists. Defining
19273(@samp{hook-stop}) makes the associated commands execute every time
19274execution stops in your program: before breakpoint commands are run,
19275displays are printed, or the stack frame is printed.
104c1213 19276
8e04817f
AC
19277For example, to ignore @code{SIGALRM} signals while
19278single-stepping, but treat them normally during normal execution,
19279you could define:
104c1213 19280
474c8240 19281@smallexample
8e04817f
AC
19282define hook-stop
19283handle SIGALRM nopass
19284end
104c1213 19285
8e04817f
AC
19286define hook-run
19287handle SIGALRM pass
19288end
104c1213 19289
8e04817f 19290define hook-continue
d3e8051b 19291handle SIGALRM pass
8e04817f 19292end
474c8240 19293@end smallexample
104c1213 19294
d3e8051b 19295As a further example, to hook at the beginning and end of the @code{echo}
b383017d 19296command, and to add extra text to the beginning and end of the message,
8e04817f 19297you could define:
104c1213 19298
474c8240 19299@smallexample
8e04817f
AC
19300define hook-echo
19301echo <<<---
19302end
104c1213 19303
8e04817f
AC
19304define hookpost-echo
19305echo --->>>\n
19306end
104c1213 19307
8e04817f
AC
19308(@value{GDBP}) echo Hello World
19309<<<---Hello World--->>>
19310(@value{GDBP})
104c1213 19311
474c8240 19312@end smallexample
104c1213 19313
8e04817f
AC
19314You can define a hook for any single-word command in @value{GDBN}, but
19315not for command aliases; you should define a hook for the basic command
c1468174 19316name, e.g.@: @code{backtrace} rather than @code{bt}.
8e04817f
AC
19317@c FIXME! So how does Joe User discover whether a command is an alias
19318@c or not?
adb483fe
DJ
19319You can hook a multi-word command by adding @code{hook-} or
19320@code{hookpost-} to the last word of the command, e.g.@:
19321@samp{define target hook-remote} to add a hook to @samp{target remote}.
19322
8e04817f
AC
19323If an error occurs during the execution of your hook, execution of
19324@value{GDBN} commands stops and @value{GDBN} issues a prompt
19325(before the command that you actually typed had a chance to run).
104c1213 19326
8e04817f
AC
19327If you try to define a hook which does not match any known command, you
19328get a warning from the @code{define} command.
c906108c 19329
8e04817f 19330@node Command Files
d57a3c85 19331@subsection Command Files
c906108c 19332
8e04817f 19333@cindex command files
fcc73fe3 19334@cindex scripting commands
6fc08d32
EZ
19335A command file for @value{GDBN} is a text file made of lines that are
19336@value{GDBN} commands. Comments (lines starting with @kbd{#}) may
19337also be included. An empty line in a command file does nothing; it
19338does not mean to repeat the last command, as it would from the
19339terminal.
c906108c 19340
6fc08d32 19341You can request the execution of a command file with the @code{source}
95433b34
JB
19342command. Note that the @code{source} command is also used to evaluate
19343scripts that are not Command Files. The exact behavior can be configured
19344using the @code{script-extension} setting.
19345@xref{Extending GDB,, Extending GDB}.
c906108c 19346
8e04817f
AC
19347@table @code
19348@kindex source
ca91424e 19349@cindex execute commands from a file
16026cd7 19350@item source [@code{-v}] @var{filename}
8e04817f 19351Execute the command file @var{filename}.
c906108c
SS
19352@end table
19353
fcc73fe3
EZ
19354The lines in a command file are generally executed sequentially,
19355unless the order of execution is changed by one of the
19356@emph{flow-control commands} described below. The commands are not
a71ec265
DH
19357printed as they are executed. An error in any command terminates
19358execution of the command file and control is returned to the console.
c906108c 19359
4b505b12
AS
19360@value{GDBN} searches for @var{filename} in the current directory and then
19361on the search path (specified with the @samp{directory} command).
19362
16026cd7
AS
19363If @code{-v}, for verbose mode, is given then @value{GDBN} displays
19364each command as it is executed. The option must be given before
19365@var{filename}, and is interpreted as part of the filename anywhere else.
19366
8e04817f
AC
19367Commands that would ask for confirmation if used interactively proceed
19368without asking when used in a command file. Many @value{GDBN} commands that
19369normally print messages to say what they are doing omit the messages
19370when called from command files.
c906108c 19371
8e04817f
AC
19372@value{GDBN} also accepts command input from standard input. In this
19373mode, normal output goes to standard output and error output goes to
19374standard error. Errors in a command file supplied on standard input do
6fc08d32 19375not terminate execution of the command file---execution continues with
8e04817f 19376the next command.
c906108c 19377
474c8240 19378@smallexample
8e04817f 19379gdb < cmds > log 2>&1
474c8240 19380@end smallexample
c906108c 19381
8e04817f
AC
19382(The syntax above will vary depending on the shell used.) This example
19383will execute commands from the file @file{cmds}. All output and errors
19384would be directed to @file{log}.
c906108c 19385
fcc73fe3
EZ
19386Since commands stored on command files tend to be more general than
19387commands typed interactively, they frequently need to deal with
19388complicated situations, such as different or unexpected values of
19389variables and symbols, changes in how the program being debugged is
19390built, etc. @value{GDBN} provides a set of flow-control commands to
19391deal with these complexities. Using these commands, you can write
19392complex scripts that loop over data structures, execute commands
19393conditionally, etc.
19394
19395@table @code
19396@kindex if
19397@kindex else
19398@item if
19399@itemx else
19400This command allows to include in your script conditionally executed
19401commands. The @code{if} command takes a single argument, which is an
19402expression to evaluate. It is followed by a series of commands that
19403are executed only if the expression is true (its value is nonzero).
19404There can then optionally be an @code{else} line, followed by a series
19405of commands that are only executed if the expression was false. The
19406end of the list is marked by a line containing @code{end}.
19407
19408@kindex while
19409@item while
19410This command allows to write loops. Its syntax is similar to
19411@code{if}: the command takes a single argument, which is an expression
19412to evaluate, and must be followed by the commands to execute, one per
19413line, terminated by an @code{end}. These commands are called the
19414@dfn{body} of the loop. The commands in the body of @code{while} are
19415executed repeatedly as long as the expression evaluates to true.
19416
19417@kindex loop_break
19418@item loop_break
19419This command exits the @code{while} loop in whose body it is included.
19420Execution of the script continues after that @code{while}s @code{end}
19421line.
19422
19423@kindex loop_continue
19424@item loop_continue
19425This command skips the execution of the rest of the body of commands
19426in the @code{while} loop in whose body it is included. Execution
19427branches to the beginning of the @code{while} loop, where it evaluates
19428the controlling expression.
ca91424e
EZ
19429
19430@kindex end@r{ (if/else/while commands)}
19431@item end
19432Terminate the block of commands that are the body of @code{if},
19433@code{else}, or @code{while} flow-control commands.
fcc73fe3
EZ
19434@end table
19435
19436
8e04817f 19437@node Output
d57a3c85 19438@subsection Commands for Controlled Output
c906108c 19439
8e04817f
AC
19440During the execution of a command file or a user-defined command, normal
19441@value{GDBN} output is suppressed; the only output that appears is what is
19442explicitly printed by the commands in the definition. This section
19443describes three commands useful for generating exactly the output you
19444want.
c906108c
SS
19445
19446@table @code
8e04817f
AC
19447@kindex echo
19448@item echo @var{text}
19449@c I do not consider backslash-space a standard C escape sequence
19450@c because it is not in ANSI.
19451Print @var{text}. Nonprinting characters can be included in
19452@var{text} using C escape sequences, such as @samp{\n} to print a
19453newline. @strong{No newline is printed unless you specify one.}
19454In addition to the standard C escape sequences, a backslash followed
19455by a space stands for a space. This is useful for displaying a
19456string with spaces at the beginning or the end, since leading and
19457trailing spaces are otherwise trimmed from all arguments.
19458To print @samp{@w{ }and foo =@w{ }}, use the command
19459@samp{echo \@w{ }and foo = \@w{ }}.
c906108c 19460
8e04817f
AC
19461A backslash at the end of @var{text} can be used, as in C, to continue
19462the command onto subsequent lines. For example,
c906108c 19463
474c8240 19464@smallexample
8e04817f
AC
19465echo This is some text\n\
19466which is continued\n\
19467onto several lines.\n
474c8240 19468@end smallexample
c906108c 19469
8e04817f 19470produces the same output as
c906108c 19471
474c8240 19472@smallexample
8e04817f
AC
19473echo This is some text\n
19474echo which is continued\n
19475echo onto several lines.\n
474c8240 19476@end smallexample
c906108c 19477
8e04817f
AC
19478@kindex output
19479@item output @var{expression}
19480Print the value of @var{expression} and nothing but that value: no
19481newlines, no @samp{$@var{nn} = }. The value is not entered in the
19482value history either. @xref{Expressions, ,Expressions}, for more information
19483on expressions.
c906108c 19484
8e04817f
AC
19485@item output/@var{fmt} @var{expression}
19486Print the value of @var{expression} in format @var{fmt}. You can use
19487the same formats as for @code{print}. @xref{Output Formats,,Output
79a6e687 19488Formats}, for more information.
c906108c 19489
8e04817f 19490@kindex printf
82160952
EZ
19491@item printf @var{template}, @var{expressions}@dots{}
19492Print the values of one or more @var{expressions} under the control of
19493the string @var{template}. To print several values, make
19494@var{expressions} be a comma-separated list of individual expressions,
19495which may be either numbers or pointers. Their values are printed as
19496specified by @var{template}, exactly as a C program would do by
19497executing the code below:
c906108c 19498
474c8240 19499@smallexample
82160952 19500printf (@var{template}, @var{expressions}@dots{});
474c8240 19501@end smallexample
c906108c 19502
82160952
EZ
19503As in @code{C} @code{printf}, ordinary characters in @var{template}
19504are printed verbatim, while @dfn{conversion specification} introduced
19505by the @samp{%} character cause subsequent @var{expressions} to be
19506evaluated, their values converted and formatted according to type and
19507style information encoded in the conversion specifications, and then
19508printed.
19509
8e04817f 19510For example, you can print two values in hex like this:
c906108c 19511
8e04817f
AC
19512@smallexample
19513printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
19514@end smallexample
c906108c 19515
82160952
EZ
19516@code{printf} supports all the standard @code{C} conversion
19517specifications, including the flags and modifiers between the @samp{%}
19518character and the conversion letter, with the following exceptions:
19519
19520@itemize @bullet
19521@item
19522The argument-ordering modifiers, such as @samp{2$}, are not supported.
19523
19524@item
19525The modifier @samp{*} is not supported for specifying precision or
19526width.
19527
19528@item
19529The @samp{'} flag (for separation of digits into groups according to
19530@code{LC_NUMERIC'}) is not supported.
19531
19532@item
19533The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not
19534supported.
19535
19536@item
19537The conversion letter @samp{n} (as in @samp{%n}) is not supported.
19538
19539@item
19540The conversion letters @samp{a} and @samp{A} are not supported.
19541@end itemize
19542
19543@noindent
19544Note that the @samp{ll} type modifier is supported only if the
19545underlying @code{C} implementation used to build @value{GDBN} supports
19546the @code{long long int} type, and the @samp{L} type modifier is
19547supported only if @code{long double} type is available.
19548
19549As in @code{C}, @code{printf} supports simple backslash-escape
19550sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"},
19551@samp{\a}, and @samp{\f}, that consist of backslash followed by a
19552single character. Octal and hexadecimal escape sequences are not
19553supported.
1a619819
LM
19554
19555Additionally, @code{printf} supports conversion specifications for DFP
0aea4bf3
LM
19556(@dfn{Decimal Floating Point}) types using the following length modifiers
19557together with a floating point specifier.
1a619819
LM
19558letters:
19559
19560@itemize @bullet
19561@item
19562@samp{H} for printing @code{Decimal32} types.
19563
19564@item
19565@samp{D} for printing @code{Decimal64} types.
19566
19567@item
19568@samp{DD} for printing @code{Decimal128} types.
19569@end itemize
19570
19571If the underlying @code{C} implementation used to build @value{GDBN} has
0aea4bf3 19572support for the three length modifiers for DFP types, other modifiers
3b784c4f 19573such as width and precision will also be available for @value{GDBN} to use.
1a619819
LM
19574
19575In case there is no such @code{C} support, no additional modifiers will be
19576available and the value will be printed in the standard way.
19577
19578Here's an example of printing DFP types using the above conversion letters:
19579@smallexample
0aea4bf3 19580printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
1a619819
LM
19581@end smallexample
19582
c906108c
SS
19583@end table
19584
d57a3c85
TJB
19585@node Python
19586@section Scripting @value{GDBN} using Python
19587@cindex python scripting
19588@cindex scripting with python
19589
19590You can script @value{GDBN} using the @uref{http://www.python.org/,
19591Python programming language}. This feature is available only if
19592@value{GDBN} was configured using @option{--with-python}.
19593
19594@menu
19595* Python Commands:: Accessing Python from @value{GDBN}.
19596* Python API:: Accessing @value{GDBN} from Python.
19597@end menu
19598
19599@node Python Commands
19600@subsection Python Commands
19601@cindex python commands
19602@cindex commands to access python
19603
19604@value{GDBN} provides one command for accessing the Python interpreter,
19605and one related setting:
19606
19607@table @code
19608@kindex python
19609@item python @r{[}@var{code}@r{]}
19610The @code{python} command can be used to evaluate Python code.
19611
19612If given an argument, the @code{python} command will evaluate the
19613argument as a Python command. For example:
19614
19615@smallexample
19616(@value{GDBP}) python print 23
1961723
19618@end smallexample
19619
19620If you do not provide an argument to @code{python}, it will act as a
19621multi-line command, like @code{define}. In this case, the Python
19622script is made up of subsequent command lines, given after the
19623@code{python} command. This command list is terminated using a line
19624containing @code{end}. For example:
19625
19626@smallexample
19627(@value{GDBP}) python
19628Type python script
19629End with a line saying just "end".
19630>print 23
19631>end
1963223
19633@end smallexample
19634
19635@kindex maint set python print-stack
19636@item maint set python print-stack
19637By default, @value{GDBN} will print a stack trace when an error occurs
19638in a Python script. This can be controlled using @code{maint set
19639python print-stack}: if @code{on}, the default, then Python stack
19640printing is enabled; if @code{off}, then Python stack printing is
19641disabled.
19642@end table
19643
95433b34
JB
19644It is also possible to execute a Python script from the @value{GDBN}
19645interpreter:
19646
19647@table @code
19648@item source @file{script-name}
19649The script name must end with @samp{.py} and @value{GDBN} must be configured
19650to recognize the script language based on filename extension using
19651the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
19652
19653@item python execfile ("script-name")
19654This method is based on the @code{execfile} Python built-in function,
19655and thus is always available.
19656@end table
19657
d57a3c85
TJB
19658@node Python API
19659@subsection Python API
19660@cindex python api
19661@cindex programming in python
19662
19663@cindex python stdout
19664@cindex python pagination
19665At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
19666@code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
19667A Python program which outputs to one of these streams may have its
19668output interrupted by the user (@pxref{Screen Size}). In this
19669situation, a Python @code{KeyboardInterrupt} exception is thrown.
19670
19671@menu
19672* Basic Python:: Basic Python Functions.
19673* Exception Handling::
89c73ade 19674* Auto-loading:: Automatically loading Python code.
a08702d6 19675* Values From Inferior::
2c74e833 19676* Types In Python:: Python representation of types.
a6bac58e
TT
19677* Pretty Printing:: Pretty-printing values.
19678* Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
d8906c6f 19679* Commands In Python:: Implementing new commands in Python.
bc3b79fd 19680* Functions In Python:: Writing new convenience functions.
89c73ade 19681* Objfiles In Python:: Object files.
f3e9a817
PM
19682* Frames In Python:: Accessing inferior stack frames from Python.
19683* Blocks In Python:: Accessing frame blocks from Python.
19684* Symbols In Python:: Python representation of symbols.
19685* Symbol Tables In Python:: Python representation of symbol tables.
be759fcf 19686* Lazy Strings In Python:: Python representation of lazy strings.
d57a3c85
TJB
19687@end menu
19688
19689@node Basic Python
19690@subsubsection Basic Python
19691
19692@cindex python functions
19693@cindex python module
19694@cindex gdb module
19695@value{GDBN} introduces a new Python module, named @code{gdb}. All
19696methods and classes added by @value{GDBN} are placed in this module.
19697@value{GDBN} automatically @code{import}s the @code{gdb} module for
19698use in all scripts evaluated by the @code{python} command.
19699
19700@findex gdb.execute
12453b93 19701@defun execute command [from_tty]
d57a3c85
TJB
19702Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
19703If a GDB exception happens while @var{command} runs, it is
19704translated as described in @ref{Exception Handling,,Exception Handling}.
19705If no exceptions occur, this function returns @code{None}.
12453b93
TJB
19706
19707@var{from_tty} specifies whether @value{GDBN} ought to consider this
19708command as having originated from the user invoking it interactively.
19709It must be a boolean value. If omitted, it defaults to @code{False}.
d57a3c85
TJB
19710@end defun
19711
8f500870
TT
19712@findex gdb.parameter
19713@defun parameter parameter
d57a3c85
TJB
19714Return the value of a @value{GDBN} parameter. @var{parameter} is a
19715string naming the parameter to look up; @var{parameter} may contain
19716spaces if the parameter has a multi-part name. For example,
19717@samp{print object} is a valid parameter name.
19718
19719If the named parameter does not exist, this function throws a
19720@code{RuntimeError}. Otherwise, the parameter's value is converted to
19721a Python value of the appropriate type, and returned.
19722@end defun
19723
08c637de
TJB
19724@findex gdb.history
19725@defun history number
19726Return a value from @value{GDBN}'s value history (@pxref{Value
19727History}). @var{number} indicates which history element to return.
19728If @var{number} is negative, then @value{GDBN} will take its absolute value
19729and count backward from the last element (i.e., the most recent element) to
19730find the value to return. If @var{number} is zero, then @value{GDBN} will
a0c36267 19731return the most recent element. If the element specified by @var{number}
08c637de
TJB
19732doesn't exist in the value history, a @code{RuntimeError} exception will be
19733raised.
19734
19735If no exception is raised, the return value is always an instance of
19736@code{gdb.Value} (@pxref{Values From Inferior}).
19737@end defun
19738
57a1d736
TT
19739@findex gdb.parse_and_eval
19740@defun parse_and_eval expression
19741Parse @var{expression} as an expression in the current language,
19742evaluate it, and return the result as a @code{gdb.Value}.
19743@var{expression} must be a string.
19744
19745This function can be useful when implementing a new command
19746(@pxref{Commands In Python}), as it provides a way to parse the
19747command's argument as an expression. It is also useful simply to
19748compute values, for example, it is the only way to get the value of a
19749convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}.
19750@end defun
19751
d57a3c85
TJB
19752@findex gdb.write
19753@defun write string
19754Print a string to @value{GDBN}'s paginated standard output stream.
19755Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
19756call this function.
19757@end defun
19758
19759@findex gdb.flush
19760@defun flush
19761Flush @value{GDBN}'s paginated standard output stream. Flushing
19762@code{sys.stdout} or @code{sys.stderr} will automatically call this
19763function.
19764@end defun
19765
f870a310
TT
19766@findex gdb.target_charset
19767@defun target_charset
19768Return the name of the current target character set (@pxref{Character
19769Sets}). This differs from @code{gdb.parameter('target-charset')} in
19770that @samp{auto} is never returned.
19771@end defun
19772
19773@findex gdb.target_wide_charset
19774@defun target_wide_charset
19775Return the name of the current target wide character set
19776(@pxref{Character Sets}). This differs from
19777@code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
19778never returned.
19779@end defun
19780
d57a3c85
TJB
19781@node Exception Handling
19782@subsubsection Exception Handling
19783@cindex python exceptions
19784@cindex exceptions, python
19785
19786When executing the @code{python} command, Python exceptions
19787uncaught within the Python code are translated to calls to
19788@value{GDBN} error-reporting mechanism. If the command that called
19789@code{python} does not handle the error, @value{GDBN} will
19790terminate it and print an error message containing the Python
19791exception name, the associated value, and the Python call stack
19792backtrace at the point where the exception was raised. Example:
19793
19794@smallexample
19795(@value{GDBP}) python print foo
19796Traceback (most recent call last):
19797 File "<string>", line 1, in <module>
19798NameError: name 'foo' is not defined
19799@end smallexample
19800
19801@value{GDBN} errors that happen in @value{GDBN} commands invoked by Python
19802code are converted to Python @code{RuntimeError} exceptions. User
19803interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
19804prompt) is translated to a Python @code{KeyboardInterrupt}
19805exception. If you catch these exceptions in your Python code, your
19806exception handler will see @code{RuntimeError} or
19807@code{KeyboardInterrupt} as the exception type, the @value{GDBN} error
19808message as its value, and the Python call stack backtrace at the
19809Python statement closest to where the @value{GDBN} error occured as the
19810traceback.
19811
89c73ade
TT
19812@node Auto-loading
19813@subsubsection Auto-loading
19814@cindex auto-loading, Python
19815
19816When a new object file is read (for example, due to the @code{file}
19817command, or because the inferior has loaded a shared library),
19818@value{GDBN} will look for a file named @file{@var{objfile}-gdb.py},
19819where @var{objfile} is the object file's real name, formed by ensuring
19820that the file name is absolute, following all symlinks, and resolving
19821@code{.} and @code{..} components. If this file exists and is
19822readable, @value{GDBN} will evaluate it as a Python script.
19823
19824If this file does not exist, and if the parameter
19825@code{debug-file-directory} is set (@pxref{Separate Debug Files}),
24ddea62
JK
19826then @value{GDBN} will use for its each separated directory component
19827@code{component} the file named @file{@code{component}/@var{real-name}}, where
89c73ade
TT
19828@var{real-name} is the object file's real name, as described above.
19829
19830Finally, if this file does not exist, then @value{GDBN} will look for
19831a file named @file{@var{data-directory}/python/auto-load/@var{real-name}}, where
19832@var{data-directory} is @value{GDBN}'s data directory (available via
19833@code{show data-directory}, @pxref{Data Files}), and @var{real-name}
19834is the object file's real name, as described above.
19835
19836When reading an auto-loaded file, @value{GDBN} sets the ``current
19837objfile''. This is available via the @code{gdb.current_objfile}
19838function (@pxref{Objfiles In Python}). This can be useful for
19839registering objfile-specific pretty-printers.
19840
19841The auto-loading feature is useful for supplying application-specific
19842debugging commands and scripts. You can enable or disable this
19843feature, and view its current state.
19844
19845@table @code
19846@kindex maint set python auto-load
19847@item maint set python auto-load [yes|no]
19848Enable or disable the Python auto-loading feature.
19849
19850@kindex show python auto-load
19851@item show python auto-load
19852Show whether Python auto-loading is enabled or disabled.
19853@end table
19854
19855@value{GDBN} does not track which files it has already auto-loaded.
19856So, your @samp{-gdb.py} file should take care to ensure that it may be
19857evaluated multiple times without error.
19858
a08702d6
TJB
19859@node Values From Inferior
19860@subsubsection Values From Inferior
19861@cindex values from inferior, with Python
19862@cindex python, working with values from inferior
19863
19864@cindex @code{gdb.Value}
19865@value{GDBN} provides values it obtains from the inferior program in
19866an object of type @code{gdb.Value}. @value{GDBN} uses this object
19867for its internal bookkeeping of the inferior's values, and for
19868fetching values when necessary.
19869
19870Inferior values that are simple scalars can be used directly in
19871Python expressions that are valid for the value's data type. Here's
19872an example for an integer or floating-point value @code{some_val}:
19873
19874@smallexample
19875bar = some_val + 2
19876@end smallexample
19877
19878@noindent
19879As result of this, @code{bar} will also be a @code{gdb.Value} object
19880whose values are of the same type as those of @code{some_val}.
19881
19882Inferior values that are structures or instances of some class can
19883be accessed using the Python @dfn{dictionary syntax}. For example, if
19884@code{some_val} is a @code{gdb.Value} instance holding a structure, you
19885can access its @code{foo} element with:
19886
19887@smallexample
19888bar = some_val['foo']
19889@end smallexample
19890
19891Again, @code{bar} will also be a @code{gdb.Value} object.
19892
c0c6f777 19893The following attributes are provided:
a08702d6 19894
def2b000 19895@table @code
2c74e833 19896@defivar Value address
c0c6f777
TJB
19897If this object is addressable, this read-only attribute holds a
19898@code{gdb.Value} object representing the address. Otherwise,
19899this attribute holds @code{None}.
2c74e833 19900@end defivar
c0c6f777 19901
def2b000 19902@cindex optimized out value in Python
2c74e833 19903@defivar Value is_optimized_out
def2b000
TJB
19904This read-only boolean attribute is true if the compiler optimized out
19905this value, thus it is not available for fetching from the inferior.
2c74e833
TT
19906@end defivar
19907
19908@defivar Value type
19909The type of this @code{gdb.Value}. The value of this attribute is a
19910@code{gdb.Type} object.
19911@end defivar
def2b000
TJB
19912@end table
19913
19914The following methods are provided:
19915
19916@table @code
14ff2235
PM
19917@defmethod Value cast type
19918Return a new instance of @code{gdb.Value} that is the result of
19919casting this instance to the type described by @var{type}, which must
19920be a @code{gdb.Type} object. If the cast cannot be performed for some
19921reason, this method throws an exception.
19922@end defmethod
19923
a08702d6 19924@defmethod Value dereference
def2b000
TJB
19925For pointer data types, this method returns a new @code{gdb.Value} object
19926whose contents is the object pointed to by the pointer. For example, if
19927@code{foo} is a C pointer to an @code{int}, declared in your C program as
a08702d6
TJB
19928
19929@smallexample
19930int *foo;
19931@end smallexample
19932
19933@noindent
19934then you can use the corresponding @code{gdb.Value} to access what
19935@code{foo} points to like this:
19936
19937@smallexample
19938bar = foo.dereference ()
19939@end smallexample
19940
19941The result @code{bar} will be a @code{gdb.Value} object holding the
19942value pointed to by @code{foo}.
19943@end defmethod
19944
fbb8f299 19945@defmethod Value string @r{[}encoding@r{]} @r{[}errors@r{]} @r{[}length@r{]}
b6cb8e7d
TJB
19946If this @code{gdb.Value} represents a string, then this method
19947converts the contents to a Python string. Otherwise, this method will
19948throw an exception.
19949
19950Strings are recognized in a language-specific way; whether a given
19951@code{gdb.Value} represents a string is determined by the current
19952language.
19953
19954For C-like languages, a value is a string if it is a pointer to or an
19955array of characters or ints. The string is assumed to be terminated
fbb8f299
PM
19956by a zero of the appropriate width. However if the optional length
19957argument is given, the string will be converted to that given length,
19958ignoring any embedded zeros that the string may contain.
b6cb8e7d
TJB
19959
19960If the optional @var{encoding} argument is given, it must be a string
19961naming the encoding of the string in the @code{gdb.Value}, such as
19962@code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
19963the same encodings as the corresponding argument to Python's
19964@code{string.decode} method, and the Python codec machinery will be used
19965to convert the string. If @var{encoding} is not given, or if
19966@var{encoding} is the empty string, then either the @code{target-charset}
19967(@pxref{Character Sets}) will be used, or a language-specific encoding
19968will be used, if the current language is able to supply one.
19969
19970The optional @var{errors} argument is the same as the corresponding
19971argument to Python's @code{string.decode} method.
fbb8f299
PM
19972
19973If the optional @var{length} argument is given, the string will be
19974fetched and converted to the given length.
b6cb8e7d 19975@end defmethod
be759fcf
PM
19976
19977@defmethod Value lazy_string @r{[}encoding@r{]} @r{[}length@r{]}
19978If this @code{gdb.Value} represents a string, then this method
19979converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings
19980In Python}). Otherwise, this method will throw an exception.
19981
19982If the optional @var{encoding} argument is given, it must be a string
19983naming the encoding of the @code{gdb.LazyString}. Some examples are:
19984@samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the
19985@var{encoding} argument is an encoding that @value{GDBN} does
19986recognize, @value{GDBN} will raise an error.
19987
19988When a lazy string is printed, the @value{GDBN} encoding machinery is
19989used to convert the string during printing. If the optional
19990@var{encoding} argument is not provided, or is an empty string,
19991@value{GDBN} will automatically select the encoding most suitable for
19992the string type. For further information on encoding in @value{GDBN}
19993please see @ref{Character Sets}.
19994
19995If the optional @var{length} argument is given, the string will be
19996fetched and encoded to the length of characters specified. If
19997the @var{length} argument is not provided, the string will be fetched
19998and encoded until a null of appropriate width is found.
19999@end defmethod
def2b000 20000@end table
b6cb8e7d 20001
2c74e833
TT
20002@node Types In Python
20003@subsubsection Types In Python
20004@cindex types in Python
20005@cindex Python, working with types
20006
20007@tindex gdb.Type
20008@value{GDBN} represents types from the inferior using the class
20009@code{gdb.Type}.
20010
20011The following type-related functions are available in the @code{gdb}
20012module:
20013
20014@findex gdb.lookup_type
20015@defun lookup_type name [block]
20016This function looks up a type by name. @var{name} is the name of the
20017type to look up. It must be a string.
20018
5107b149
PM
20019If @var{block} is given, then @var{name} is looked up in that scope.
20020Otherwise, it is searched for globally.
20021
2c74e833
TT
20022Ordinarily, this function will return an instance of @code{gdb.Type}.
20023If the named type cannot be found, it will throw an exception.
20024@end defun
20025
20026An instance of @code{Type} has the following attributes:
20027
20028@table @code
20029@defivar Type code
20030The type code for this type. The type code will be one of the
20031@code{TYPE_CODE_} constants defined below.
20032@end defivar
20033
20034@defivar Type sizeof
20035The size of this type, in target @code{char} units. Usually, a
20036target's @code{char} type will be an 8-bit byte. However, on some
20037unusual platforms, this type may have a different size.
20038@end defivar
20039
20040@defivar Type tag
20041The tag name for this type. The tag name is the name after
20042@code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
20043languages have this concept. If this type has no tag name, then
20044@code{None} is returned.
20045@end defivar
20046@end table
20047
20048The following methods are provided:
20049
20050@table @code
20051@defmethod Type fields
20052For structure and union types, this method returns the fields. Range
20053types have two fields, the minimum and maximum values. Enum types
20054have one field per enum constant. Function and method types have one
20055field per parameter. The base types of C@t{++} classes are also
20056represented as fields. If the type has no fields, or does not fit
20057into one of these categories, an empty sequence will be returned.
20058
20059Each field is an object, with some pre-defined attributes:
20060@table @code
20061@item bitpos
20062This attribute is not available for @code{static} fields (as in
20063C@t{++} or Java). For non-@code{static} fields, the value is the bit
20064position of the field.
20065
20066@item name
20067The name of the field, or @code{None} for anonymous fields.
20068
20069@item artificial
20070This is @code{True} if the field is artificial, usually meaning that
20071it was provided by the compiler and not the user. This attribute is
20072always provided, and is @code{False} if the field is not artificial.
20073
bfd31e71
PM
20074@item is_base_class
20075This is @code{True} if the field represents a base class of a C@t{++}
20076structure. This attribute is always provided, and is @code{False}
20077if the field is not a base class of the type that is the argument of
20078@code{fields}, or if that type was not a C@t{++} class.
20079
2c74e833
TT
20080@item bitsize
20081If the field is packed, or is a bitfield, then this will have a
20082non-zero value, which is the size of the field in bits. Otherwise,
20083this will be zero; in this case the field's size is given by its type.
20084
20085@item type
20086The type of the field. This is usually an instance of @code{Type},
20087but it can be @code{None} in some situations.
20088@end table
20089@end defmethod
20090
20091@defmethod Type const
20092Return a new @code{gdb.Type} object which represents a
20093@code{const}-qualified variant of this type.
20094@end defmethod
20095
20096@defmethod Type volatile
20097Return a new @code{gdb.Type} object which represents a
20098@code{volatile}-qualified variant of this type.
20099@end defmethod
20100
20101@defmethod Type unqualified
20102Return a new @code{gdb.Type} object which represents an unqualified
20103variant of this type. That is, the result is neither @code{const} nor
20104@code{volatile}.
20105@end defmethod
20106
361ae042
PM
20107@defmethod Type range
20108Return a Python @code{Tuple} object that contains two elements: the
20109low bound of the argument type and the high bound of that type. If
20110the type does not have a range, @value{GDBN} will raise a
20111@code{RuntimeError} exception.
20112@end defmethod
20113
2c74e833
TT
20114@defmethod Type reference
20115Return a new @code{gdb.Type} object which represents a reference to this
20116type.
20117@end defmethod
20118
7a6973ad
TT
20119@defmethod Type pointer
20120Return a new @code{gdb.Type} object which represents a pointer to this
20121type.
20122@end defmethod
20123
2c74e833
TT
20124@defmethod Type strip_typedefs
20125Return a new @code{gdb.Type} that represents the real type,
20126after removing all layers of typedefs.
20127@end defmethod
20128
20129@defmethod Type target
20130Return a new @code{gdb.Type} object which represents the target type
20131of this type.
20132
20133For a pointer type, the target type is the type of the pointed-to
20134object. For an array type (meaning C-like arrays), the target type is
20135the type of the elements of the array. For a function or method type,
20136the target type is the type of the return value. For a complex type,
20137the target type is the type of the elements. For a typedef, the
20138target type is the aliased type.
20139
20140If the type does not have a target, this method will throw an
20141exception.
20142@end defmethod
20143
5107b149 20144@defmethod Type template_argument n [block]
2c74e833
TT
20145If this @code{gdb.Type} is an instantiation of a template, this will
20146return a new @code{gdb.Type} which represents the type of the
20147@var{n}th template argument.
20148
20149If this @code{gdb.Type} is not a template type, this will throw an
20150exception. Ordinarily, only C@t{++} code will have template types.
20151
5107b149
PM
20152If @var{block} is given, then @var{name} is looked up in that scope.
20153Otherwise, it is searched for globally.
2c74e833
TT
20154@end defmethod
20155@end table
20156
20157
20158Each type has a code, which indicates what category this type falls
20159into. The available type categories are represented by constants
20160defined in the @code{gdb} module:
20161
20162@table @code
20163@findex TYPE_CODE_PTR
20164@findex gdb.TYPE_CODE_PTR
20165@item TYPE_CODE_PTR
20166The type is a pointer.
20167
20168@findex TYPE_CODE_ARRAY
20169@findex gdb.TYPE_CODE_ARRAY
20170@item TYPE_CODE_ARRAY
20171The type is an array.
20172
20173@findex TYPE_CODE_STRUCT
20174@findex gdb.TYPE_CODE_STRUCT
20175@item TYPE_CODE_STRUCT
20176The type is a structure.
20177
20178@findex TYPE_CODE_UNION
20179@findex gdb.TYPE_CODE_UNION
20180@item TYPE_CODE_UNION
20181The type is a union.
20182
20183@findex TYPE_CODE_ENUM
20184@findex gdb.TYPE_CODE_ENUM
20185@item TYPE_CODE_ENUM
20186The type is an enum.
20187
20188@findex TYPE_CODE_FLAGS
20189@findex gdb.TYPE_CODE_FLAGS
20190@item TYPE_CODE_FLAGS
20191A bit flags type, used for things such as status registers.
20192
20193@findex TYPE_CODE_FUNC
20194@findex gdb.TYPE_CODE_FUNC
20195@item TYPE_CODE_FUNC
20196The type is a function.
20197
20198@findex TYPE_CODE_INT
20199@findex gdb.TYPE_CODE_INT
20200@item TYPE_CODE_INT
20201The type is an integer type.
20202
20203@findex TYPE_CODE_FLT
20204@findex gdb.TYPE_CODE_FLT
20205@item TYPE_CODE_FLT
20206A floating point type.
20207
20208@findex TYPE_CODE_VOID
20209@findex gdb.TYPE_CODE_VOID
20210@item TYPE_CODE_VOID
20211The special type @code{void}.
20212
20213@findex TYPE_CODE_SET
20214@findex gdb.TYPE_CODE_SET
20215@item TYPE_CODE_SET
20216A Pascal set type.
20217
20218@findex TYPE_CODE_RANGE
20219@findex gdb.TYPE_CODE_RANGE
20220@item TYPE_CODE_RANGE
20221A range type, that is, an integer type with bounds.
20222
20223@findex TYPE_CODE_STRING
20224@findex gdb.TYPE_CODE_STRING
20225@item TYPE_CODE_STRING
20226A string type. Note that this is only used for certain languages with
20227language-defined string types; C strings are not represented this way.
20228
20229@findex TYPE_CODE_BITSTRING
20230@findex gdb.TYPE_CODE_BITSTRING
20231@item TYPE_CODE_BITSTRING
20232A string of bits.
20233
20234@findex TYPE_CODE_ERROR
20235@findex gdb.TYPE_CODE_ERROR
20236@item TYPE_CODE_ERROR
20237An unknown or erroneous type.
20238
20239@findex TYPE_CODE_METHOD
20240@findex gdb.TYPE_CODE_METHOD
20241@item TYPE_CODE_METHOD
20242A method type, as found in C@t{++} or Java.
20243
20244@findex TYPE_CODE_METHODPTR
20245@findex gdb.TYPE_CODE_METHODPTR
20246@item TYPE_CODE_METHODPTR
20247A pointer-to-member-function.
20248
20249@findex TYPE_CODE_MEMBERPTR
20250@findex gdb.TYPE_CODE_MEMBERPTR
20251@item TYPE_CODE_MEMBERPTR
20252A pointer-to-member.
20253
20254@findex TYPE_CODE_REF
20255@findex gdb.TYPE_CODE_REF
20256@item TYPE_CODE_REF
20257A reference type.
20258
20259@findex TYPE_CODE_CHAR
20260@findex gdb.TYPE_CODE_CHAR
20261@item TYPE_CODE_CHAR
20262A character type.
20263
20264@findex TYPE_CODE_BOOL
20265@findex gdb.TYPE_CODE_BOOL
20266@item TYPE_CODE_BOOL
20267A boolean type.
20268
20269@findex TYPE_CODE_COMPLEX
20270@findex gdb.TYPE_CODE_COMPLEX
20271@item TYPE_CODE_COMPLEX
20272A complex float type.
20273
20274@findex TYPE_CODE_TYPEDEF
20275@findex gdb.TYPE_CODE_TYPEDEF
20276@item TYPE_CODE_TYPEDEF
20277A typedef to some other type.
20278
20279@findex TYPE_CODE_NAMESPACE
20280@findex gdb.TYPE_CODE_NAMESPACE
20281@item TYPE_CODE_NAMESPACE
20282A C@t{++} namespace.
20283
20284@findex TYPE_CODE_DECFLOAT
20285@findex gdb.TYPE_CODE_DECFLOAT
20286@item TYPE_CODE_DECFLOAT
20287A decimal floating point type.
20288
20289@findex TYPE_CODE_INTERNAL_FUNCTION
20290@findex gdb.TYPE_CODE_INTERNAL_FUNCTION
20291@item TYPE_CODE_INTERNAL_FUNCTION
20292A function internal to @value{GDBN}. This is the type used to represent
20293convenience functions.
20294@end table
20295
a6bac58e
TT
20296@node Pretty Printing
20297@subsubsection Pretty Printing
20298
20299@value{GDBN} provides a mechanism to allow pretty-printing of values
20300using Python code. The pretty-printer API allows application-specific
20301code to greatly simplify the display of complex objects. This
20302mechanism works for both MI and the CLI.
20303
20304For example, here is how a C@t{++} @code{std::string} looks without a
20305pretty-printer:
20306
20307@smallexample
20308(@value{GDBP}) print s
20309$1 = @{
20310 static npos = 4294967295,
20311 _M_dataplus = @{
20312 <std::allocator<char>> = @{
20313 <__gnu_cxx::new_allocator<char>> = @{<No data fields>@}, <No data fields>@},
20314 members of std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider:
20315 _M_p = 0x804a014 "abcd"
20316 @}
20317@}
20318@end smallexample
20319
20320After a pretty-printer for @code{std::string} has been installed, only
20321the contents are printed:
20322
20323@smallexample
20324(@value{GDBP}) print s
20325$2 = "abcd"
20326@end smallexample
20327
20328A pretty-printer is just an object that holds a value and implements a
20329specific interface, defined here.
20330
20331@defop Operation {pretty printer} children (self)
20332@value{GDBN} will call this method on a pretty-printer to compute the
20333children of the pretty-printer's value.
20334
20335This method must return an object conforming to the Python iterator
20336protocol. Each item returned by the iterator must be a tuple holding
20337two elements. The first element is the ``name'' of the child; the
20338second element is the child's value. The value can be any Python
20339object which is convertible to a @value{GDBN} value.
20340
20341This method is optional. If it does not exist, @value{GDBN} will act
20342as though the value has no children.
20343@end defop
20344
20345@defop Operation {pretty printer} display_hint (self)
20346The CLI may call this method and use its result to change the
20347formatting of a value. The result will also be supplied to an MI
20348consumer as a @samp{displayhint} attribute of the variable being
20349printed.
20350
20351This method is optional. If it does exist, this method must return a
20352string.
20353
20354Some display hints are predefined by @value{GDBN}:
20355
20356@table @samp
20357@item array
20358Indicate that the object being printed is ``array-like''. The CLI
20359uses this to respect parameters such as @code{set print elements} and
20360@code{set print array}.
20361
20362@item map
20363Indicate that the object being printed is ``map-like'', and that the
20364children of this value can be assumed to alternate between keys and
20365values.
20366
20367@item string
20368Indicate that the object being printed is ``string-like''. If the
20369printer's @code{to_string} method returns a Python string of some
20370kind, then @value{GDBN} will call its internal language-specific
20371string-printing function to format the string. For the CLI this means
20372adding quotation marks, possibly escaping some characters, respecting
20373@code{set print elements}, and the like.
20374@end table
20375@end defop
20376
20377@defop Operation {pretty printer} to_string (self)
20378@value{GDBN} will call this method to display the string
20379representation of the value passed to the object's constructor.
20380
20381When printing from the CLI, if the @code{to_string} method exists,
20382then @value{GDBN} will prepend its result to the values returned by
20383@code{children}. Exactly how this formatting is done is dependent on
20384the display hint, and may change as more hints are added. Also,
20385depending on the print settings (@pxref{Print Settings}), the CLI may
20386print just the result of @code{to_string} in a stack trace, omitting
20387the result of @code{children}.
20388
20389If this method returns a string, it is printed verbatim.
20390
20391Otherwise, if this method returns an instance of @code{gdb.Value},
20392then @value{GDBN} prints this value. This may result in a call to
20393another pretty-printer.
20394
20395If instead the method returns a Python value which is convertible to a
20396@code{gdb.Value}, then @value{GDBN} performs the conversion and prints
20397the resulting value. Again, this may result in a call to another
20398pretty-printer. Python scalars (integers, floats, and booleans) and
20399strings are convertible to @code{gdb.Value}; other types are not.
20400
20401If the result is not one of these types, an exception is raised.
20402@end defop
20403
20404@node Selecting Pretty-Printers
20405@subsubsection Selecting Pretty-Printers
20406
20407The Python list @code{gdb.pretty_printers} contains an array of
20408functions that have been registered via addition as a pretty-printer.
20409Each @code{gdb.Objfile} also contains a @code{pretty_printers}
20410attribute.
20411
20412A function on one of these lists is passed a single @code{gdb.Value}
20413argument and should return a pretty-printer object conforming to the
20414interface definition above (@pxref{Pretty Printing}). If a function
20415cannot create a pretty-printer for the value, it should return
20416@code{None}.
20417
20418@value{GDBN} first checks the @code{pretty_printers} attribute of each
20419@code{gdb.Objfile} and iteratively calls each function in the list for
20420that @code{gdb.Objfile} until it receives a pretty-printer object.
20421After these lists have been exhausted, it tries the global
20422@code{gdb.pretty-printers} list, again calling each function until an
20423object is returned.
20424
20425The order in which the objfiles are searched is not specified. For a
20426given list, functions are always invoked from the head of the list,
20427and iterated over sequentially until the end of the list, or a printer
20428object is returned.
20429
20430Here is an example showing how a @code{std::string} printer might be
20431written:
20432
20433@smallexample
20434class StdStringPrinter:
20435 "Print a std::string"
20436
20437 def __init__ (self, val):
20438 self.val = val
20439
20440 def to_string (self):
20441 return self.val['_M_dataplus']['_M_p']
20442
20443 def display_hint (self):
20444 return 'string'
20445@end smallexample
20446
20447And here is an example showing how a lookup function for the printer
20448example above might be written.
20449
20450@smallexample
20451def str_lookup_function (val):
20452
20453 lookup_tag = val.type.tag
20454 regex = re.compile ("^std::basic_string<char,.*>$")
20455 if lookup_tag == None:
20456 return None
20457 if regex.match (lookup_tag):
20458 return StdStringPrinter (val)
20459
20460 return None
20461@end smallexample
20462
20463The example lookup function extracts the value's type, and attempts to
20464match it to a type that it can pretty-print. If it is a type the
20465printer can pretty-print, it will return a printer object. If not, it
20466returns @code{None}.
20467
20468We recommend that you put your core pretty-printers into a Python
20469package. If your pretty-printers are for use with a library, we
20470further recommend embedding a version number into the package name.
20471This practice will enable @value{GDBN} to load multiple versions of
20472your pretty-printers at the same time, because they will have
20473different names.
20474
20475You should write auto-loaded code (@pxref{Auto-loading}) such that it
20476can be evaluated multiple times without changing its meaning. An
20477ideal auto-load file will consist solely of @code{import}s of your
20478printer modules, followed by a call to a register pretty-printers with
20479the current objfile.
20480
20481Taken as a whole, this approach will scale nicely to multiple
20482inferiors, each potentially using a different library version.
20483Embedding a version number in the Python package name will ensure that
20484@value{GDBN} is able to load both sets of printers simultaneously.
20485Then, because the search for pretty-printers is done by objfile, and
20486because your auto-loaded code took care to register your library's
20487printers with a specific objfile, @value{GDBN} will find the correct
20488printers for the specific version of the library used by each
20489inferior.
20490
20491To continue the @code{std::string} example (@pxref{Pretty Printing}),
20492this code might appear in @code{gdb.libstdcxx.v6}:
20493
20494@smallexample
20495def register_printers (objfile):
20496 objfile.pretty_printers.add (str_lookup_function)
20497@end smallexample
20498
20499@noindent
20500And then the corresponding contents of the auto-load file would be:
20501
20502@smallexample
20503import gdb.libstdcxx.v6
20504gdb.libstdcxx.v6.register_printers (gdb.current_objfile ())
20505@end smallexample
20506
d8906c6f
TJB
20507@node Commands In Python
20508@subsubsection Commands In Python
20509
20510@cindex commands in python
20511@cindex python commands
d8906c6f
TJB
20512You can implement new @value{GDBN} CLI commands in Python. A CLI
20513command is implemented using an instance of the @code{gdb.Command}
20514class, most commonly using a subclass.
20515
cc924cad 20516@defmethod Command __init__ name @var{command_class} @r{[}@var{completer_class}@r{]} @r{[}@var{prefix}@r{]}
d8906c6f
TJB
20517The object initializer for @code{Command} registers the new command
20518with @value{GDBN}. This initializer is normally invoked from the
20519subclass' own @code{__init__} method.
20520
20521@var{name} is the name of the command. If @var{name} consists of
20522multiple words, then the initial words are looked for as prefix
20523commands. In this case, if one of the prefix commands does not exist,
20524an exception is raised.
20525
20526There is no support for multi-line commands.
20527
cc924cad 20528@var{command_class} should be one of the @samp{COMMAND_} constants
d8906c6f
TJB
20529defined below. This argument tells @value{GDBN} how to categorize the
20530new command in the help system.
20531
cc924cad 20532@var{completer_class} is an optional argument. If given, it should be
d8906c6f
TJB
20533one of the @samp{COMPLETE_} constants defined below. This argument
20534tells @value{GDBN} how to perform completion for this command. If not
20535given, @value{GDBN} will attempt to complete using the object's
20536@code{complete} method (see below); if no such method is found, an
20537error will occur when completion is attempted.
20538
20539@var{prefix} is an optional argument. If @code{True}, then the new
20540command is a prefix command; sub-commands of this command may be
20541registered.
20542
20543The help text for the new command is taken from the Python
20544documentation string for the command's class, if there is one. If no
20545documentation string is provided, the default value ``This command is
20546not documented.'' is used.
20547@end defmethod
20548
a0c36267 20549@cindex don't repeat Python command
d8906c6f
TJB
20550@defmethod Command dont_repeat
20551By default, a @value{GDBN} command is repeated when the user enters a
20552blank line at the command prompt. A command can suppress this
20553behavior by invoking the @code{dont_repeat} method. This is similar
20554to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
20555@end defmethod
20556
20557@defmethod Command invoke argument from_tty
20558This method is called by @value{GDBN} when this command is invoked.
20559
20560@var{argument} is a string. It is the argument to the command, after
20561leading and trailing whitespace has been stripped.
20562
20563@var{from_tty} is a boolean argument. When true, this means that the
20564command was entered by the user at the terminal; when false it means
20565that the command came from elsewhere.
20566
20567If this method throws an exception, it is turned into a @value{GDBN}
20568@code{error} call. Otherwise, the return value is ignored.
20569@end defmethod
20570
a0c36267 20571@cindex completion of Python commands
d8906c6f
TJB
20572@defmethod Command complete text word
20573This method is called by @value{GDBN} when the user attempts
20574completion on this command. All forms of completion are handled by
a0c36267
EZ
20575this method, that is, the @key{TAB} and @key{M-?} key bindings
20576(@pxref{Completion}), and the @code{complete} command (@pxref{Help,
20577complete}).
d8906c6f
TJB
20578
20579The arguments @var{text} and @var{word} are both strings. @var{text}
20580holds the complete command line up to the cursor's location.
20581@var{word} holds the last word of the command line; this is computed
20582using a word-breaking heuristic.
20583
20584The @code{complete} method can return several values:
20585@itemize @bullet
20586@item
20587If the return value is a sequence, the contents of the sequence are
20588used as the completions. It is up to @code{complete} to ensure that the
20589contents actually do complete the word. A zero-length sequence is
20590allowed, it means that there were no completions available. Only
20591string elements of the sequence are used; other elements in the
20592sequence are ignored.
20593
20594@item
20595If the return value is one of the @samp{COMPLETE_} constants defined
20596below, then the corresponding @value{GDBN}-internal completion
20597function is invoked, and its result is used.
20598
20599@item
20600All other results are treated as though there were no available
20601completions.
20602@end itemize
20603@end defmethod
20604
d8906c6f
TJB
20605When a new command is registered, it must be declared as a member of
20606some general class of commands. This is used to classify top-level
20607commands in the on-line help system; note that prefix commands are not
20608listed under their own category but rather that of their top-level
20609command. The available classifications are represented by constants
20610defined in the @code{gdb} module:
20611
20612@table @code
20613@findex COMMAND_NONE
20614@findex gdb.COMMAND_NONE
20615@item COMMAND_NONE
20616The command does not belong to any particular class. A command in
20617this category will not be displayed in any of the help categories.
20618
20619@findex COMMAND_RUNNING
20620@findex gdb.COMMAND_RUNNING
a0c36267 20621@item COMMAND_RUNNING
d8906c6f
TJB
20622The command is related to running the inferior. For example,
20623@code{start}, @code{step}, and @code{continue} are in this category.
a0c36267 20624Type @kbd{help running} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
20625commands in this category.
20626
20627@findex COMMAND_DATA
20628@findex gdb.COMMAND_DATA
a0c36267 20629@item COMMAND_DATA
d8906c6f
TJB
20630The command is related to data or variables. For example,
20631@code{call}, @code{find}, and @code{print} are in this category. Type
a0c36267 20632@kbd{help data} at the @value{GDBN} prompt to see a list of commands
d8906c6f
TJB
20633in this category.
20634
20635@findex COMMAND_STACK
20636@findex gdb.COMMAND_STACK
20637@item COMMAND_STACK
20638The command has to do with manipulation of the stack. For example,
20639@code{backtrace}, @code{frame}, and @code{return} are in this
a0c36267 20640category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
d8906c6f
TJB
20641list of commands in this category.
20642
20643@findex COMMAND_FILES
20644@findex gdb.COMMAND_FILES
20645@item COMMAND_FILES
20646This class is used for file-related commands. For example,
20647@code{file}, @code{list} and @code{section} are in this category.
a0c36267 20648Type @kbd{help files} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
20649commands in this category.
20650
20651@findex COMMAND_SUPPORT
20652@findex gdb.COMMAND_SUPPORT
20653@item COMMAND_SUPPORT
20654This should be used for ``support facilities'', generally meaning
20655things that are useful to the user when interacting with @value{GDBN},
20656but not related to the state of the inferior. For example,
20657@code{help}, @code{make}, and @code{shell} are in this category. Type
a0c36267 20658@kbd{help support} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
20659commands in this category.
20660
20661@findex COMMAND_STATUS
20662@findex gdb.COMMAND_STATUS
a0c36267 20663@item COMMAND_STATUS
d8906c6f
TJB
20664The command is an @samp{info}-related command, that is, related to the
20665state of @value{GDBN} itself. For example, @code{info}, @code{macro},
a0c36267 20666and @code{show} are in this category. Type @kbd{help status} at the
d8906c6f
TJB
20667@value{GDBN} prompt to see a list of commands in this category.
20668
20669@findex COMMAND_BREAKPOINTS
20670@findex gdb.COMMAND_BREAKPOINTS
a0c36267 20671@item COMMAND_BREAKPOINTS
d8906c6f 20672The command has to do with breakpoints. For example, @code{break},
a0c36267 20673@code{clear}, and @code{delete} are in this category. Type @kbd{help
d8906c6f
TJB
20674breakpoints} at the @value{GDBN} prompt to see a list of commands in
20675this category.
20676
20677@findex COMMAND_TRACEPOINTS
20678@findex gdb.COMMAND_TRACEPOINTS
a0c36267 20679@item COMMAND_TRACEPOINTS
d8906c6f
TJB
20680The command has to do with tracepoints. For example, @code{trace},
20681@code{actions}, and @code{tfind} are in this category. Type
a0c36267 20682@kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
20683commands in this category.
20684
20685@findex COMMAND_OBSCURE
20686@findex gdb.COMMAND_OBSCURE
20687@item COMMAND_OBSCURE
20688The command is only used in unusual circumstances, or is not of
20689general interest to users. For example, @code{checkpoint},
a0c36267 20690@code{fork}, and @code{stop} are in this category. Type @kbd{help
d8906c6f
TJB
20691obscure} at the @value{GDBN} prompt to see a list of commands in this
20692category.
20693
20694@findex COMMAND_MAINTENANCE
20695@findex gdb.COMMAND_MAINTENANCE
20696@item COMMAND_MAINTENANCE
20697The command is only useful to @value{GDBN} maintainers. The
20698@code{maintenance} and @code{flushregs} commands are in this category.
a0c36267 20699Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
20700commands in this category.
20701@end table
20702
d8906c6f
TJB
20703A new command can use a predefined completion function, either by
20704specifying it via an argument at initialization, or by returning it
20705from the @code{complete} method. These predefined completion
20706constants are all defined in the @code{gdb} module:
20707
20708@table @code
20709@findex COMPLETE_NONE
20710@findex gdb.COMPLETE_NONE
20711@item COMPLETE_NONE
20712This constant means that no completion should be done.
20713
20714@findex COMPLETE_FILENAME
20715@findex gdb.COMPLETE_FILENAME
20716@item COMPLETE_FILENAME
20717This constant means that filename completion should be performed.
20718
20719@findex COMPLETE_LOCATION
20720@findex gdb.COMPLETE_LOCATION
20721@item COMPLETE_LOCATION
20722This constant means that location completion should be done.
20723@xref{Specify Location}.
20724
20725@findex COMPLETE_COMMAND
20726@findex gdb.COMPLETE_COMMAND
20727@item COMPLETE_COMMAND
20728This constant means that completion should examine @value{GDBN}
20729command names.
20730
20731@findex COMPLETE_SYMBOL
20732@findex gdb.COMPLETE_SYMBOL
20733@item COMPLETE_SYMBOL
20734This constant means that completion should be done using symbol names
20735as the source.
20736@end table
20737
20738The following code snippet shows how a trivial CLI command can be
20739implemented in Python:
20740
20741@smallexample
20742class HelloWorld (gdb.Command):
20743 """Greet the whole world."""
20744
20745 def __init__ (self):
20746 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_OBSCURE)
20747
20748 def invoke (self, arg, from_tty):
20749 print "Hello, World!"
20750
20751HelloWorld ()
20752@end smallexample
20753
20754The last line instantiates the class, and is necessary to trigger the
20755registration of the command with @value{GDBN}. Depending on how the
20756Python code is read into @value{GDBN}, you may need to import the
20757@code{gdb} module explicitly.
20758
bc3b79fd
TJB
20759@node Functions In Python
20760@subsubsection Writing new convenience functions
20761
20762@cindex writing convenience functions
20763@cindex convenience functions in python
20764@cindex python convenience functions
20765@tindex gdb.Function
20766@tindex Function
20767You can implement new convenience functions (@pxref{Convenience Vars})
20768in Python. A convenience function is an instance of a subclass of the
20769class @code{gdb.Function}.
20770
20771@defmethod Function __init__ name
20772The initializer for @code{Function} registers the new function with
20773@value{GDBN}. The argument @var{name} is the name of the function,
20774a string. The function will be visible to the user as a convenience
20775variable of type @code{internal function}, whose name is the same as
20776the given @var{name}.
20777
20778The documentation for the new function is taken from the documentation
20779string for the new class.
20780@end defmethod
20781
20782@defmethod Function invoke @var{*args}
20783When a convenience function is evaluated, its arguments are converted
20784to instances of @code{gdb.Value}, and then the function's
20785@code{invoke} method is called. Note that @value{GDBN} does not
20786predetermine the arity of convenience functions. Instead, all
20787available arguments are passed to @code{invoke}, following the
20788standard Python calling convention. In particular, a convenience
20789function can have default values for parameters without ill effect.
20790
20791The return value of this method is used as its value in the enclosing
20792expression. If an ordinary Python value is returned, it is converted
20793to a @code{gdb.Value} following the usual rules.
20794@end defmethod
20795
20796The following code snippet shows how a trivial convenience function can
20797be implemented in Python:
20798
20799@smallexample
20800class Greet (gdb.Function):
20801 """Return string to greet someone.
20802Takes a name as argument."""
20803
20804 def __init__ (self):
20805 super (Greet, self).__init__ ("greet")
20806
20807 def invoke (self, name):
20808 return "Hello, %s!" % name.string ()
20809
20810Greet ()
20811@end smallexample
20812
20813The last line instantiates the class, and is necessary to trigger the
20814registration of the function with @value{GDBN}. Depending on how the
20815Python code is read into @value{GDBN}, you may need to import the
20816@code{gdb} module explicitly.
20817
89c73ade
TT
20818@node Objfiles In Python
20819@subsubsection Objfiles In Python
20820
20821@cindex objfiles in python
20822@tindex gdb.Objfile
20823@tindex Objfile
20824@value{GDBN} loads symbols for an inferior from various
20825symbol-containing files (@pxref{Files}). These include the primary
20826executable file, any shared libraries used by the inferior, and any
20827separate debug info files (@pxref{Separate Debug Files}).
20828@value{GDBN} calls these symbol-containing files @dfn{objfiles}.
20829
20830The following objfile-related functions are available in the
20831@code{gdb} module:
20832
20833@findex gdb.current_objfile
20834@defun current_objfile
20835When auto-loading a Python script (@pxref{Auto-loading}), @value{GDBN}
20836sets the ``current objfile'' to the corresponding objfile. This
20837function returns the current objfile. If there is no current objfile,
20838this function returns @code{None}.
20839@end defun
20840
20841@findex gdb.objfiles
20842@defun objfiles
20843Return a sequence of all the objfiles current known to @value{GDBN}.
20844@xref{Objfiles In Python}.
20845@end defun
20846
20847Each objfile is represented by an instance of the @code{gdb.Objfile}
20848class.
20849
20850@defivar Objfile filename
20851The file name of the objfile as a string.
20852@end defivar
20853
20854@defivar Objfile pretty_printers
20855The @code{pretty_printers} attribute is a list of functions. It is
20856used to look up pretty-printers. A @code{Value} is passed to each
20857function in order; if the function returns @code{None}, then the
20858search continues. Otherwise, the return value should be an object
a6bac58e
TT
20859which is used to format the value. @xref{Pretty Printing}, for more
20860information.
89c73ade
TT
20861@end defivar
20862
f8f6f20b 20863@node Frames In Python
f3e9a817 20864@subsubsection Accessing inferior stack frames from Python.
f8f6f20b
TJB
20865
20866@cindex frames in python
20867When the debugged program stops, @value{GDBN} is able to analyze its call
20868stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
20869represents a frame in the stack. A @code{gdb.Frame} object is only valid
20870while its corresponding frame exists in the inferior's stack. If you try
20871to use an invalid frame object, @value{GDBN} will throw a @code{RuntimeError}
20872exception.
20873
20874Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
20875operator, like:
20876
20877@smallexample
20878(@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
20879True
20880@end smallexample
20881
20882The following frame-related functions are available in the @code{gdb} module:
20883
20884@findex gdb.selected_frame
20885@defun selected_frame
20886Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
20887@end defun
20888
20889@defun frame_stop_reason_string reason
20890Return a string explaining the reason why @value{GDBN} stopped unwinding
20891frames, as expressed by the given @var{reason} code (an integer, see the
20892@code{unwind_stop_reason} method further down in this section).
20893@end defun
20894
20895A @code{gdb.Frame} object has the following methods:
20896
20897@table @code
20898@defmethod Frame is_valid
20899Returns true if the @code{gdb.Frame} object is valid, false if not.
20900A frame object can become invalid if the frame it refers to doesn't
20901exist anymore in the inferior. All @code{gdb.Frame} methods will throw
20902an exception if it is invalid at the time the method is called.
20903@end defmethod
20904
20905@defmethod Frame name
20906Returns the function name of the frame, or @code{None} if it can't be
20907obtained.
20908@end defmethod
20909
20910@defmethod Frame type
20911Returns the type of the frame. The value can be one of
20912@code{gdb.NORMAL_FRAME}, @code{gdb.DUMMY_FRAME}, @code{gdb.SIGTRAMP_FRAME}
20913or @code{gdb.SENTINEL_FRAME}.
20914@end defmethod
20915
20916@defmethod Frame unwind_stop_reason
20917Return an integer representing the reason why it's not possible to find
20918more frames toward the outermost frame. Use
20919@code{gdb.frame_stop_reason_string} to convert the value returned by this
20920function to a string.
20921@end defmethod
20922
20923@defmethod Frame pc
20924Returns the frame's resume address.
20925@end defmethod
20926
f3e9a817
PM
20927@defmethod Frame block
20928Return the frame's code block. @xref{Blocks In Python}.
20929@end defmethod
20930
20931@defmethod Frame function
20932Return the symbol for the function corresponding to this frame.
20933@xref{Symbols In Python}.
20934@end defmethod
20935
f8f6f20b
TJB
20936@defmethod Frame older
20937Return the frame that called this frame.
20938@end defmethod
20939
20940@defmethod Frame newer
20941Return the frame called by this frame.
20942@end defmethod
20943
f3e9a817
PM
20944@defmethod Frame find_sal
20945Return the frame's symtab and line object.
20946@xref{Symbol Tables In Python}.
20947@end defmethod
20948
dc00d89f
PM
20949@defmethod Frame read_var variable @r{[}block@r{]}
20950Return the value of @var{variable} in this frame. If the optional
20951argument @var{block} is provided, search for the variable from that
20952block; otherwise start at the frame's current block (which is
20953determined by the frame's current program counter). @var{variable}
20954must be a string or a @code{gdb.Symbol} object. @var{block} must be a
20955@code{gdb.Block} object.
f8f6f20b 20956@end defmethod
f3e9a817
PM
20957
20958@defmethod Frame select
20959Set this frame to be the selected frame. @xref{Stack, ,Examining the
20960Stack}.
20961@end defmethod
20962@end table
20963
20964@node Blocks In Python
20965@subsubsection Accessing frame blocks from Python.
20966
20967@cindex blocks in python
20968@tindex gdb.Block
20969
20970Within each frame, @value{GDBN} maintains information on each block
20971stored in that frame. These blocks are organized hierarchically, and
20972are represented individually in Python as a @code{gdb.Block}.
20973Please see @ref{Frames In Python}, for a more in-depth discussion on
20974frames. Furthermore, see @ref{Stack, ,Examining the Stack}, for more
20975detailed technical information on @value{GDBN}'s book-keeping of the
20976stack.
20977
20978The following block-related functions are available in the @code{gdb}
20979module:
20980
20981@findex gdb.block_for_pc
20982@defun block_for_pc pc
20983Return the @code{gdb.Block} containing the given @var{pc} value. If the
20984block cannot be found for the @var{pc} value specified, the function
20985will return @code{None}.
20986@end defun
20987
20988A @code{gdb.Block} object has the following attributes:
20989
20990@table @code
20991@defivar Block start
20992The start address of the block. This attribute is not writable.
20993@end defivar
20994
20995@defivar Block end
20996The end address of the block. This attribute is not writable.
20997@end defivar
20998
20999@defivar Block function
21000The name of the block represented as a @code{gdb.Symbol}. If the
21001block is not named, then this attribute holds @code{None}. This
21002attribute is not writable.
21003@end defivar
21004
21005@defivar Block superblock
21006The block containing this block. If this parent block does not exist,
21007this attribute holds @code{None}. This attribute is not writable.
21008@end defivar
21009@end table
21010
21011@node Symbols In Python
21012@subsubsection Python representation of Symbols.
21013
21014@cindex symbols in python
21015@tindex gdb.Symbol
21016
21017@value{GDBN} represents every variable, function and type as an
21018entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
21019Similarly, Python represents these symbols in @value{GDBN} with the
21020@code{gdb.Symbol} object.
21021
21022The following symbol-related functions are available in the @code{gdb}
21023module:
21024
21025@findex gdb.lookup_symbol
21026@defun lookup_symbol name [block] [domain]
21027This function searches for a symbol by name. The search scope can be
21028restricted to the parameters defined in the optional domain and block
21029arguments.
21030
21031@var{name} is the name of the symbol. It must be a string. The
21032optional @var{block} argument restricts the search to symbols visible
21033in that @var{block}. The @var{block} argument must be a
21034@code{gdb.Block} object. The optional @var{domain} argument restricts
21035the search to the domain type. The @var{domain} argument must be a
21036domain constant defined in the @code{gdb} module and described later
21037in this chapter.
21038@end defun
21039
21040A @code{gdb.Symbol} object has the following attributes:
21041
21042@table @code
21043@defivar Symbol symtab
21044The symbol table in which the symbol appears. This attribute is
21045represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
21046Python}. This attribute is not writable.
21047@end defivar
21048
21049@defivar Symbol name
21050The name of the symbol as a string. This attribute is not writable.
21051@end defivar
21052
21053@defivar Symbol linkage_name
21054The name of the symbol, as used by the linker (i.e., may be mangled).
21055This attribute is not writable.
21056@end defivar
21057
21058@defivar Symbol print_name
21059The name of the symbol in a form suitable for output. This is either
21060@code{name} or @code{linkage_name}, depending on whether the user
21061asked @value{GDBN} to display demangled or mangled names.
21062@end defivar
21063
21064@defivar Symbol addr_class
21065The address class of the symbol. This classifies how to find the value
21066of a symbol. Each address class is a constant defined in the
21067@code{gdb} module and described later in this chapter.
21068@end defivar
21069
21070@defivar Symbol is_argument
21071@code{True} if the symbol is an argument of a function.
21072@end defivar
21073
21074@defivar Symbol is_constant
21075@code{True} if the symbol is a constant.
21076@end defivar
21077
21078@defivar Symbol is_function
21079@code{True} if the symbol is a function or a method.
21080@end defivar
21081
21082@defivar Symbol is_variable
21083@code{True} if the symbol is a variable.
21084@end defivar
21085@end table
21086
21087The available domain categories in @code{gdb.Symbol} are represented
21088as constants in the @code{gdb} module:
21089
21090@table @code
21091@findex SYMBOL_UNDEF_DOMAIN
21092@findex gdb.SYMBOL_UNDEF_DOMAIN
21093@item SYMBOL_UNDEF_DOMAIN
21094This is used when a domain has not been discovered or none of the
21095following domains apply. This usually indicates an error either
21096in the symbol information or in @value{GDBN}'s handling of symbols.
21097@findex SYMBOL_VAR_DOMAIN
21098@findex gdb.SYMBOL_VAR_DOMAIN
21099@item SYMBOL_VAR_DOMAIN
21100This domain contains variables, function names, typedef names and enum
21101type values.
21102@findex SYMBOL_STRUCT_DOMAIN
21103@findex gdb.SYMBOL_STRUCT_DOMAIN
21104@item SYMBOL_STRUCT_DOMAIN
21105This domain holds struct, union and enum type names.
21106@findex SYMBOL_LABEL_DOMAIN
21107@findex gdb.SYMBOL_LABEL_DOMAIN
21108@item SYMBOL_LABEL_DOMAIN
21109This domain contains names of labels (for gotos).
21110@findex SYMBOL_VARIABLES_DOMAIN
21111@findex gdb.SYMBOL_VARIABLES_DOMAIN
21112@item SYMBOL_VARIABLES_DOMAIN
21113This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
21114contains everything minus functions and types.
21115@findex SYMBOL_FUNCTIONS_DOMAIN
21116@findex gdb.SYMBOL_FUNCTIONS_DOMAIN
21117@item SYMBOL_FUNCTION_DOMAIN
21118This domain contains all functions.
21119@findex SYMBOL_TYPES_DOMAIN
21120@findex gdb.SYMBOL_TYPES_DOMAIN
21121@item SYMBOL_TYPES_DOMAIN
21122This domain contains all types.
21123@end table
21124
21125The available address class categories in @code{gdb.Symbol} are represented
21126as constants in the @code{gdb} module:
21127
21128@table @code
21129@findex SYMBOL_LOC_UNDEF
21130@findex gdb.SYMBOL_LOC_UNDEF
21131@item SYMBOL_LOC_UNDEF
21132If this is returned by address class, it indicates an error either in
21133the symbol information or in @value{GDBN}'s handling of symbols.
21134@findex SYMBOL_LOC_CONST
21135@findex gdb.SYMBOL_LOC_CONST
21136@item SYMBOL_LOC_CONST
21137Value is constant int.
21138@findex SYMBOL_LOC_STATIC
21139@findex gdb.SYMBOL_LOC_STATIC
21140@item SYMBOL_LOC_STATIC
21141Value is at a fixed address.
21142@findex SYMBOL_LOC_REGISTER
21143@findex gdb.SYMBOL_LOC_REGISTER
21144@item SYMBOL_LOC_REGISTER
21145Value is in a register.
21146@findex SYMBOL_LOC_ARG
21147@findex gdb.SYMBOL_LOC_ARG
21148@item SYMBOL_LOC_ARG
21149Value is an argument. This value is at the offset stored within the
21150symbol inside the frame's argument list.
21151@findex SYMBOL_LOC_REF_ARG
21152@findex gdb.SYMBOL_LOC_REF_ARG
21153@item SYMBOL_LOC_REF_ARG
21154Value address is stored in the frame's argument list. Just like
21155@code{LOC_ARG} except that the value's address is stored at the
21156offset, not the value itself.
21157@findex SYMBOL_LOC_REGPARM_ADDR
21158@findex gdb.SYMBOL_LOC_REGPARM_ADDR
21159@item SYMBOL_LOC_REGPARM_ADDR
21160Value is a specified register. Just like @code{LOC_REGISTER} except
21161the register holds the address of the argument instead of the argument
21162itself.
21163@findex SYMBOL_LOC_LOCAL
21164@findex gdb.SYMBOL_LOC_LOCAL
21165@item SYMBOL_LOC_LOCAL
21166Value is a local variable.
21167@findex SYMBOL_LOC_TYPEDEF
21168@findex gdb.SYMBOL_LOC_TYPEDEF
21169@item SYMBOL_LOC_TYPEDEF
21170Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
21171have this class.
21172@findex SYMBOL_LOC_BLOCK
21173@findex gdb.SYMBOL_LOC_BLOCK
21174@item SYMBOL_LOC_BLOCK
21175Value is a block.
21176@findex SYMBOL_LOC_CONST_BYTES
21177@findex gdb.SYMBOL_LOC_CONST_BYTES
21178@item SYMBOL_LOC_CONST_BYTES
21179Value is a byte-sequence.
21180@findex SYMBOL_LOC_UNRESOLVED
21181@findex gdb.SYMBOL_LOC_UNRESOLVED
21182@item SYMBOL_LOC_UNRESOLVED
21183Value is at a fixed address, but the address of the variable has to be
21184determined from the minimal symbol table whenever the variable is
21185referenced.
21186@findex SYMBOL_LOC_OPTIMIZED_OUT
21187@findex gdb.SYMBOL_LOC_OPTIMIZED_OUT
21188@item SYMBOL_LOC_OPTIMIZED_OUT
21189The value does not actually exist in the program.
21190@findex SYMBOL_LOC_COMPUTED
21191@findex gdb.SYMBOL_LOC_COMPUTED
21192@item SYMBOL_LOC_COMPUTED
21193The value's address is a computed location.
21194@end table
21195
21196@node Symbol Tables In Python
21197@subsubsection Symbol table representation in Python.
21198
21199@cindex symbol tables in python
21200@tindex gdb.Symtab
21201@tindex gdb.Symtab_and_line
21202
21203Access to symbol table data maintained by @value{GDBN} on the inferior
21204is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
21205@code{gdb.Symtab}. Symbol table and line data for a frame is returned
21206from the @code{find_sal} method in @code{gdb.Frame} object.
21207@xref{Frames In Python}.
21208
21209For more information on @value{GDBN}'s symbol table management, see
21210@ref{Symbols, ,Examining the Symbol Table}, for more information.
21211
21212A @code{gdb.Symtab_and_line} object has the following attributes:
21213
21214@table @code
21215@defivar Symtab_and_line symtab
21216The symbol table object (@code{gdb.Symtab}) for this frame.
21217This attribute is not writable.
21218@end defivar
21219
21220@defivar Symtab_and_line pc
21221Indicates the current program counter address. This attribute is not
21222writable.
21223@end defivar
21224
21225@defivar Symtab_and_line line
21226Indicates the current line number for this object. This
21227attribute is not writable.
21228@end defivar
21229@end table
21230
21231A @code{gdb.Symtab} object has the following attributes:
21232
21233@table @code
21234@defivar Symtab filename
21235The symbol table's source filename. This attribute is not writable.
21236@end defivar
21237
21238@defivar Symtab objfile
21239The symbol table's backing object file. @xref{Objfiles In Python}.
21240This attribute is not writable.
21241@end defivar
21242@end table
21243
21244The following methods are provided:
21245
21246@table @code
21247@defmethod Symtab fullname
21248Return the symbol table's source absolute file name.
21249@end defmethod
f8f6f20b
TJB
21250@end table
21251
be759fcf
PM
21252@node Lazy Strings In Python
21253@subsubsection Python representation of lazy strings.
21254
21255@cindex lazy strings in python
21256@tindex gdb.LazyString
21257
21258A @dfn{lazy string} is a string whose contents is not retrieved or
21259encoded until it is needed.
21260
21261A @code{gdb.LazyString} is represented in @value{GDBN} as an
21262@code{address} that points to a region of memory, an @code{encoding}
21263that will be used to encode that region of memory, and a @code{length}
21264to delimit the region of memory that represents the string. The
21265difference between a @code{gdb.LazyString} and a string wrapped within
21266a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated
21267differently by @value{GDBN} when printing. A @code{gdb.LazyString} is
21268retrieved and encoded during printing, while a @code{gdb.Value}
21269wrapping a string is immediately retrieved and encoded on creation.
21270
21271A @code{gdb.LazyString} object has the following functions:
21272
21273@defmethod LazyString value
21274Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value
21275will point to the string in memory, but will lose all the delayed
21276retrieval, encoding and handling that @value{GDBN} applies to a
21277@code{gdb.LazyString}.
21278@end defmethod
21279
21280@defivar LazyString address
21281This attribute holds the address of the string. This attribute is not
21282writable.
21283@end defivar
21284
21285@defivar LazyString length
21286This attribute holds the length of the string in characters. If the
21287length is -1, then the string will be fetched and encoded up to the
21288first null of appropriate width. This attribute is not writable.
21289@end defivar
21290
21291@defivar LazyString encoding
21292This attribute holds the encoding that will be applied to the string
21293when the string is printed by @value{GDBN}. If the encoding is not
21294set, or contains an empty string, then @value{GDBN} will select the
21295most appropriate encoding when the string is printed. This attribute
21296is not writable.
21297@end defivar
21298
21299@defivar LazyString type
21300This attribute holds the type that is represented by the lazy string's
21301type. For a lazy string this will always be a pointer type. To
21302resolve this to the lazy string's character type, use the type's
21303@code{target} method. @xref{Types In Python}. This attribute is not
21304writable.
21305@end defivar
21306
21c294e6
AC
21307@node Interpreters
21308@chapter Command Interpreters
21309@cindex command interpreters
21310
21311@value{GDBN} supports multiple command interpreters, and some command
21312infrastructure to allow users or user interface writers to switch
21313between interpreters or run commands in other interpreters.
21314
21315@value{GDBN} currently supports two command interpreters, the console
21316interpreter (sometimes called the command-line interpreter or @sc{cli})
21317and the machine interface interpreter (or @sc{gdb/mi}). This manual
21318describes both of these interfaces in great detail.
21319
21320By default, @value{GDBN} will start with the console interpreter.
21321However, the user may choose to start @value{GDBN} with another
21322interpreter by specifying the @option{-i} or @option{--interpreter}
21323startup options. Defined interpreters include:
21324
21325@table @code
21326@item console
21327@cindex console interpreter
21328The traditional console or command-line interpreter. This is the most often
21329used interpreter with @value{GDBN}. With no interpreter specified at runtime,
21330@value{GDBN} will use this interpreter.
21331
21332@item mi
21333@cindex mi interpreter
21334The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
21335by programs wishing to use @value{GDBN} as a backend for a debugger GUI
21336or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
21337Interface}.
21338
21339@item mi2
21340@cindex mi2 interpreter
21341The current @sc{gdb/mi} interface.
21342
21343@item mi1
21344@cindex mi1 interpreter
21345The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
21346
21347@end table
21348
21349@cindex invoke another interpreter
21350The interpreter being used by @value{GDBN} may not be dynamically
21351switched at runtime. Although possible, this could lead to a very
21352precarious situation. Consider an IDE using @sc{gdb/mi}. If a user
21353enters the command "interpreter-set console" in a console view,
21354@value{GDBN} would switch to using the console interpreter, rendering
21355the IDE inoperable!
21356
21357@kindex interpreter-exec
21358Although you may only choose a single interpreter at startup, you may execute
21359commands in any interpreter from the current interpreter using the appropriate
21360command. If you are running the console interpreter, simply use the
21361@code{interpreter-exec} command:
21362
21363@smallexample
21364interpreter-exec mi "-data-list-register-names"
21365@end smallexample
21366
21367@sc{gdb/mi} has a similar command, although it is only available in versions of
21368@value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
21369
8e04817f
AC
21370@node TUI
21371@chapter @value{GDBN} Text User Interface
21372@cindex TUI
d0d5df6f 21373@cindex Text User Interface
c906108c 21374
8e04817f
AC
21375@menu
21376* TUI Overview:: TUI overview
21377* TUI Keys:: TUI key bindings
7cf36c78 21378* TUI Single Key Mode:: TUI single key mode
db2e3e2e 21379* TUI Commands:: TUI-specific commands
8e04817f
AC
21380* TUI Configuration:: TUI configuration variables
21381@end menu
c906108c 21382
46ba6afa 21383The @value{GDBN} Text User Interface (TUI) is a terminal
d0d5df6f
AC
21384interface which uses the @code{curses} library to show the source
21385file, the assembly output, the program registers and @value{GDBN}
46ba6afa
BW
21386commands in separate text windows. The TUI mode is supported only
21387on platforms where a suitable version of the @code{curses} library
21388is available.
d0d5df6f 21389
46ba6afa
BW
21390@pindex @value{GDBTUI}
21391The TUI mode is enabled by default when you invoke @value{GDBN} as
21392either @samp{@value{GDBTUI}} or @samp{@value{GDBP} -tui}.
21393You can also switch in and out of TUI mode while @value{GDBN} runs by
21394using various TUI commands and key bindings, such as @kbd{C-x C-a}.
21395@xref{TUI Keys, ,TUI Key Bindings}.
c906108c 21396
8e04817f 21397@node TUI Overview
79a6e687 21398@section TUI Overview
c906108c 21399
46ba6afa 21400In TUI mode, @value{GDBN} can display several text windows:
c906108c 21401
8e04817f
AC
21402@table @emph
21403@item command
21404This window is the @value{GDBN} command window with the @value{GDBN}
46ba6afa
BW
21405prompt and the @value{GDBN} output. The @value{GDBN} input is still
21406managed using readline.
c906108c 21407
8e04817f
AC
21408@item source
21409The source window shows the source file of the program. The current
46ba6afa 21410line and active breakpoints are displayed in this window.
c906108c 21411
8e04817f
AC
21412@item assembly
21413The assembly window shows the disassembly output of the program.
c906108c 21414
8e04817f 21415@item register
46ba6afa
BW
21416This window shows the processor registers. Registers are highlighted
21417when their values change.
c906108c
SS
21418@end table
21419
269c21fe 21420The source and assembly windows show the current program position
46ba6afa
BW
21421by highlighting the current line and marking it with a @samp{>} marker.
21422Breakpoints are indicated with two markers. The first marker
269c21fe
SC
21423indicates the breakpoint type:
21424
21425@table @code
21426@item B
21427Breakpoint which was hit at least once.
21428
21429@item b
21430Breakpoint which was never hit.
21431
21432@item H
21433Hardware breakpoint which was hit at least once.
21434
21435@item h
21436Hardware breakpoint which was never hit.
269c21fe
SC
21437@end table
21438
21439The second marker indicates whether the breakpoint is enabled or not:
21440
21441@table @code
21442@item +
21443Breakpoint is enabled.
21444
21445@item -
21446Breakpoint is disabled.
269c21fe
SC
21447@end table
21448
46ba6afa
BW
21449The source, assembly and register windows are updated when the current
21450thread changes, when the frame changes, or when the program counter
21451changes.
21452
21453These windows are not all visible at the same time. The command
21454window is always visible. The others can be arranged in several
21455layouts:
c906108c 21456
8e04817f
AC
21457@itemize @bullet
21458@item
46ba6afa 21459source only,
2df3850c 21460
8e04817f 21461@item
46ba6afa 21462assembly only,
8e04817f
AC
21463
21464@item
46ba6afa 21465source and assembly,
8e04817f
AC
21466
21467@item
46ba6afa 21468source and registers, or
c906108c 21469
8e04817f 21470@item
46ba6afa 21471assembly and registers.
8e04817f 21472@end itemize
c906108c 21473
46ba6afa 21474A status line above the command window shows the following information:
b7bb15bc
SC
21475
21476@table @emph
21477@item target
46ba6afa 21478Indicates the current @value{GDBN} target.
b7bb15bc
SC
21479(@pxref{Targets, ,Specifying a Debugging Target}).
21480
21481@item process
46ba6afa 21482Gives the current process or thread number.
b7bb15bc
SC
21483When no process is being debugged, this field is set to @code{No process}.
21484
21485@item function
21486Gives the current function name for the selected frame.
21487The name is demangled if demangling is turned on (@pxref{Print Settings}).
46ba6afa 21488When there is no symbol corresponding to the current program counter,
b7bb15bc
SC
21489the string @code{??} is displayed.
21490
21491@item line
21492Indicates the current line number for the selected frame.
46ba6afa 21493When the current line number is not known, the string @code{??} is displayed.
b7bb15bc
SC
21494
21495@item pc
21496Indicates the current program counter address.
b7bb15bc
SC
21497@end table
21498
8e04817f
AC
21499@node TUI Keys
21500@section TUI Key Bindings
21501@cindex TUI key bindings
c906108c 21502
8e04817f 21503The TUI installs several key bindings in the readline keymaps
46ba6afa 21504(@pxref{Command Line Editing}). The following key bindings
8e04817f 21505are installed for both TUI mode and the @value{GDBN} standard mode.
c906108c 21506
8e04817f
AC
21507@table @kbd
21508@kindex C-x C-a
21509@item C-x C-a
21510@kindex C-x a
21511@itemx C-x a
21512@kindex C-x A
21513@itemx C-x A
46ba6afa
BW
21514Enter or leave the TUI mode. When leaving the TUI mode,
21515the curses window management stops and @value{GDBN} operates using
21516its standard mode, writing on the terminal directly. When reentering
21517the TUI mode, control is given back to the curses windows.
8e04817f 21518The screen is then refreshed.
c906108c 21519
8e04817f
AC
21520@kindex C-x 1
21521@item C-x 1
21522Use a TUI layout with only one window. The layout will
21523either be @samp{source} or @samp{assembly}. When the TUI mode
21524is not active, it will switch to the TUI mode.
2df3850c 21525
8e04817f 21526Think of this key binding as the Emacs @kbd{C-x 1} binding.
c906108c 21527
8e04817f
AC
21528@kindex C-x 2
21529@item C-x 2
21530Use a TUI layout with at least two windows. When the current
46ba6afa 21531layout already has two windows, the next layout with two windows is used.
8e04817f
AC
21532When a new layout is chosen, one window will always be common to the
21533previous layout and the new one.
c906108c 21534
8e04817f 21535Think of it as the Emacs @kbd{C-x 2} binding.
2df3850c 21536
72ffddc9
SC
21537@kindex C-x o
21538@item C-x o
21539Change the active window. The TUI associates several key bindings
46ba6afa 21540(like scrolling and arrow keys) with the active window. This command
72ffddc9
SC
21541gives the focus to the next TUI window.
21542
21543Think of it as the Emacs @kbd{C-x o} binding.
21544
7cf36c78
SC
21545@kindex C-x s
21546@item C-x s
46ba6afa
BW
21547Switch in and out of the TUI SingleKey mode that binds single
21548keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}).
c906108c
SS
21549@end table
21550
46ba6afa 21551The following key bindings only work in the TUI mode:
5d161b24 21552
46ba6afa 21553@table @asis
8e04817f 21554@kindex PgUp
46ba6afa 21555@item @key{PgUp}
8e04817f 21556Scroll the active window one page up.
c906108c 21557
8e04817f 21558@kindex PgDn
46ba6afa 21559@item @key{PgDn}
8e04817f 21560Scroll the active window one page down.
c906108c 21561
8e04817f 21562@kindex Up
46ba6afa 21563@item @key{Up}
8e04817f 21564Scroll the active window one line up.
c906108c 21565
8e04817f 21566@kindex Down
46ba6afa 21567@item @key{Down}
8e04817f 21568Scroll the active window one line down.
c906108c 21569
8e04817f 21570@kindex Left
46ba6afa 21571@item @key{Left}
8e04817f 21572Scroll the active window one column left.
c906108c 21573
8e04817f 21574@kindex Right
46ba6afa 21575@item @key{Right}
8e04817f 21576Scroll the active window one column right.
c906108c 21577
8e04817f 21578@kindex C-L
46ba6afa 21579@item @kbd{C-L}
8e04817f 21580Refresh the screen.
8e04817f 21581@end table
c906108c 21582
46ba6afa
BW
21583Because the arrow keys scroll the active window in the TUI mode, they
21584are not available for their normal use by readline unless the command
21585window has the focus. When another window is active, you must use
21586other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b}
21587and @kbd{C-f} to control the command window.
8e04817f 21588
7cf36c78
SC
21589@node TUI Single Key Mode
21590@section TUI Single Key Mode
21591@cindex TUI single key mode
21592
46ba6afa
BW
21593The TUI also provides a @dfn{SingleKey} mode, which binds several
21594frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to
21595switch into this mode, where the following key bindings are used:
7cf36c78
SC
21596
21597@table @kbd
21598@kindex c @r{(SingleKey TUI key)}
21599@item c
21600continue
21601
21602@kindex d @r{(SingleKey TUI key)}
21603@item d
21604down
21605
21606@kindex f @r{(SingleKey TUI key)}
21607@item f
21608finish
21609
21610@kindex n @r{(SingleKey TUI key)}
21611@item n
21612next
21613
21614@kindex q @r{(SingleKey TUI key)}
21615@item q
46ba6afa 21616exit the SingleKey mode.
7cf36c78
SC
21617
21618@kindex r @r{(SingleKey TUI key)}
21619@item r
21620run
21621
21622@kindex s @r{(SingleKey TUI key)}
21623@item s
21624step
21625
21626@kindex u @r{(SingleKey TUI key)}
21627@item u
21628up
21629
21630@kindex v @r{(SingleKey TUI key)}
21631@item v
21632info locals
21633
21634@kindex w @r{(SingleKey TUI key)}
21635@item w
21636where
7cf36c78
SC
21637@end table
21638
21639Other keys temporarily switch to the @value{GDBN} command prompt.
21640The key that was pressed is inserted in the editing buffer so that
21641it is possible to type most @value{GDBN} commands without interaction
46ba6afa
BW
21642with the TUI SingleKey mode. Once the command is entered the TUI
21643SingleKey mode is restored. The only way to permanently leave
7f9087cb 21644this mode is by typing @kbd{q} or @kbd{C-x s}.
7cf36c78
SC
21645
21646
8e04817f 21647@node TUI Commands
db2e3e2e 21648@section TUI-specific Commands
8e04817f
AC
21649@cindex TUI commands
21650
21651The TUI has specific commands to control the text windows.
46ba6afa
BW
21652These commands are always available, even when @value{GDBN} is not in
21653the TUI mode. When @value{GDBN} is in the standard mode, most
21654of these commands will automatically switch to the TUI mode.
c906108c 21655
ff12863f
PA
21656Note that if @value{GDBN}'s @code{stdout} is not connected to a
21657terminal, or @value{GDBN} has been started with the machine interface
21658interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of
21659these commands will fail with an error, because it would not be
21660possible or desirable to enable curses window management.
21661
c906108c 21662@table @code
3d757584
SC
21663@item info win
21664@kindex info win
21665List and give the size of all displayed windows.
21666
8e04817f 21667@item layout next
4644b6e3 21668@kindex layout
8e04817f 21669Display the next layout.
2df3850c 21670
8e04817f 21671@item layout prev
8e04817f 21672Display the previous layout.
c906108c 21673
8e04817f 21674@item layout src
8e04817f 21675Display the source window only.
c906108c 21676
8e04817f 21677@item layout asm
8e04817f 21678Display the assembly window only.
c906108c 21679
8e04817f 21680@item layout split
8e04817f 21681Display the source and assembly window.
c906108c 21682
8e04817f 21683@item layout regs
8e04817f
AC
21684Display the register window together with the source or assembly window.
21685
46ba6afa 21686@item focus next
8e04817f 21687@kindex focus
46ba6afa
BW
21688Make the next window active for scrolling.
21689
21690@item focus prev
21691Make the previous window active for scrolling.
21692
21693@item focus src
21694Make the source window active for scrolling.
21695
21696@item focus asm
21697Make the assembly window active for scrolling.
21698
21699@item focus regs
21700Make the register window active for scrolling.
21701
21702@item focus cmd
21703Make the command window active for scrolling.
c906108c 21704
8e04817f
AC
21705@item refresh
21706@kindex refresh
7f9087cb 21707Refresh the screen. This is similar to typing @kbd{C-L}.
c906108c 21708
6a1b180d
SC
21709@item tui reg float
21710@kindex tui reg
21711Show the floating point registers in the register window.
21712
21713@item tui reg general
21714Show the general registers in the register window.
21715
21716@item tui reg next
21717Show the next register group. The list of register groups as well as
21718their order is target specific. The predefined register groups are the
21719following: @code{general}, @code{float}, @code{system}, @code{vector},
21720@code{all}, @code{save}, @code{restore}.
21721
21722@item tui reg system
21723Show the system registers in the register window.
21724
8e04817f
AC
21725@item update
21726@kindex update
21727Update the source window and the current execution point.
c906108c 21728
8e04817f
AC
21729@item winheight @var{name} +@var{count}
21730@itemx winheight @var{name} -@var{count}
21731@kindex winheight
21732Change the height of the window @var{name} by @var{count}
21733lines. Positive counts increase the height, while negative counts
21734decrease it.
2df3850c 21735
46ba6afa
BW
21736@item tabset @var{nchars}
21737@kindex tabset
c45da7e6 21738Set the width of tab stops to be @var{nchars} characters.
c906108c
SS
21739@end table
21740
8e04817f 21741@node TUI Configuration
79a6e687 21742@section TUI Configuration Variables
8e04817f 21743@cindex TUI configuration variables
c906108c 21744
46ba6afa 21745Several configuration variables control the appearance of TUI windows.
c906108c 21746
8e04817f
AC
21747@table @code
21748@item set tui border-kind @var{kind}
21749@kindex set tui border-kind
21750Select the border appearance for the source, assembly and register windows.
21751The possible values are the following:
21752@table @code
21753@item space
21754Use a space character to draw the border.
c906108c 21755
8e04817f 21756@item ascii
46ba6afa 21757Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border.
c906108c 21758
8e04817f
AC
21759@item acs
21760Use the Alternate Character Set to draw the border. The border is
21761drawn using character line graphics if the terminal supports them.
8e04817f 21762@end table
c78b4128 21763
8e04817f
AC
21764@item set tui border-mode @var{mode}
21765@kindex set tui border-mode
46ba6afa
BW
21766@itemx set tui active-border-mode @var{mode}
21767@kindex set tui active-border-mode
21768Select the display attributes for the borders of the inactive windows
21769or the active window. The @var{mode} can be one of the following:
8e04817f
AC
21770@table @code
21771@item normal
21772Use normal attributes to display the border.
c906108c 21773
8e04817f
AC
21774@item standout
21775Use standout mode.
c906108c 21776
8e04817f
AC
21777@item reverse
21778Use reverse video mode.
c906108c 21779
8e04817f
AC
21780@item half
21781Use half bright mode.
c906108c 21782
8e04817f
AC
21783@item half-standout
21784Use half bright and standout mode.
c906108c 21785
8e04817f
AC
21786@item bold
21787Use extra bright or bold mode.
c78b4128 21788
8e04817f
AC
21789@item bold-standout
21790Use extra bright or bold and standout mode.
8e04817f 21791@end table
8e04817f 21792@end table
c78b4128 21793
8e04817f
AC
21794@node Emacs
21795@chapter Using @value{GDBN} under @sc{gnu} Emacs
c78b4128 21796
8e04817f
AC
21797@cindex Emacs
21798@cindex @sc{gnu} Emacs
21799A special interface allows you to use @sc{gnu} Emacs to view (and
21800edit) the source files for the program you are debugging with
21801@value{GDBN}.
c906108c 21802
8e04817f
AC
21803To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
21804executable file you want to debug as an argument. This command starts
21805@value{GDBN} as a subprocess of Emacs, with input and output through a newly
21806created Emacs buffer.
21807@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c 21808
5e252a2e 21809Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two
8e04817f 21810things:
c906108c 21811
8e04817f
AC
21812@itemize @bullet
21813@item
5e252a2e
NR
21814All ``terminal'' input and output goes through an Emacs buffer, called
21815the GUD buffer.
c906108c 21816
8e04817f
AC
21817This applies both to @value{GDBN} commands and their output, and to the input
21818and output done by the program you are debugging.
bf0184be 21819
8e04817f
AC
21820This is useful because it means that you can copy the text of previous
21821commands and input them again; you can even use parts of the output
21822in this way.
bf0184be 21823
8e04817f
AC
21824All the facilities of Emacs' Shell mode are available for interacting
21825with your program. In particular, you can send signals the usual
21826way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
21827stop.
bf0184be
ND
21828
21829@item
8e04817f 21830@value{GDBN} displays source code through Emacs.
bf0184be 21831
8e04817f
AC
21832Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
21833source file for that frame and puts an arrow (@samp{=>}) at the
21834left margin of the current line. Emacs uses a separate buffer for
21835source display, and splits the screen to show both your @value{GDBN} session
21836and the source.
bf0184be 21837
8e04817f
AC
21838Explicit @value{GDBN} @code{list} or search commands still produce output as
21839usual, but you probably have no reason to use them from Emacs.
5e252a2e
NR
21840@end itemize
21841
21842We call this @dfn{text command mode}. Emacs 22.1, and later, also uses
21843a graphical mode, enabled by default, which provides further buffers
21844that can control the execution and describe the state of your program.
21845@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}.
c906108c 21846
64fabec2
AC
21847If you specify an absolute file name when prompted for the @kbd{M-x
21848gdb} argument, then Emacs sets your current working directory to where
21849your program resides. If you only specify the file name, then Emacs
21850sets your current working directory to to the directory associated
21851with the previous buffer. In this case, @value{GDBN} may find your
21852program by searching your environment's @code{PATH} variable, but on
21853some operating systems it might not find the source. So, although the
21854@value{GDBN} input and output session proceeds normally, the auxiliary
21855buffer does not display the current source and line of execution.
21856
21857The initial working directory of @value{GDBN} is printed on the top
5e252a2e
NR
21858line of the GUD buffer and this serves as a default for the commands
21859that specify files for @value{GDBN} to operate on. @xref{Files,
21860,Commands to Specify Files}.
64fabec2
AC
21861
21862By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
21863need to call @value{GDBN} by a different name (for example, if you
21864keep several configurations around, with different names) you can
21865customize the Emacs variable @code{gud-gdb-command-name} to run the
21866one you want.
8e04817f 21867
5e252a2e 21868In the GUD buffer, you can use these special Emacs commands in
8e04817f 21869addition to the standard Shell mode commands:
c906108c 21870
8e04817f
AC
21871@table @kbd
21872@item C-h m
5e252a2e 21873Describe the features of Emacs' GUD Mode.
c906108c 21874
64fabec2 21875@item C-c C-s
8e04817f
AC
21876Execute to another source line, like the @value{GDBN} @code{step} command; also
21877update the display window to show the current file and location.
c906108c 21878
64fabec2 21879@item C-c C-n
8e04817f
AC
21880Execute to next source line in this function, skipping all function
21881calls, like the @value{GDBN} @code{next} command. Then update the display window
21882to show the current file and location.
c906108c 21883
64fabec2 21884@item C-c C-i
8e04817f
AC
21885Execute one instruction, like the @value{GDBN} @code{stepi} command; update
21886display window accordingly.
c906108c 21887
8e04817f
AC
21888@item C-c C-f
21889Execute until exit from the selected stack frame, like the @value{GDBN}
21890@code{finish} command.
c906108c 21891
64fabec2 21892@item C-c C-r
8e04817f
AC
21893Continue execution of your program, like the @value{GDBN} @code{continue}
21894command.
b433d00b 21895
64fabec2 21896@item C-c <
8e04817f
AC
21897Go up the number of frames indicated by the numeric argument
21898(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
21899like the @value{GDBN} @code{up} command.
b433d00b 21900
64fabec2 21901@item C-c >
8e04817f
AC
21902Go down the number of frames indicated by the numeric argument, like the
21903@value{GDBN} @code{down} command.
8e04817f 21904@end table
c906108c 21905
7f9087cb 21906In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break})
8e04817f 21907tells @value{GDBN} to set a breakpoint on the source line point is on.
c906108c 21908
5e252a2e
NR
21909In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a
21910separate frame which shows a backtrace when the GUD buffer is current.
21911Move point to any frame in the stack and type @key{RET} to make it
21912become the current frame and display the associated source in the
21913source buffer. Alternatively, click @kbd{Mouse-2} to make the
21914selected frame become the current one. In graphical mode, the
21915speedbar displays watch expressions.
64fabec2 21916
8e04817f
AC
21917If you accidentally delete the source-display buffer, an easy way to get
21918it back is to type the command @code{f} in the @value{GDBN} buffer, to
21919request a frame display; when you run under Emacs, this recreates
21920the source buffer if necessary to show you the context of the current
21921frame.
c906108c 21922
8e04817f
AC
21923The source files displayed in Emacs are in ordinary Emacs buffers
21924which are visiting the source files in the usual way. You can edit
21925the files with these buffers if you wish; but keep in mind that @value{GDBN}
21926communicates with Emacs in terms of line numbers. If you add or
21927delete lines from the text, the line numbers that @value{GDBN} knows cease
21928to correspond properly with the code.
b383017d 21929
5e252a2e
NR
21930A more detailed description of Emacs' interaction with @value{GDBN} is
21931given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu}
21932Emacs Manual}).
c906108c 21933
8e04817f
AC
21934@c The following dropped because Epoch is nonstandard. Reactivate
21935@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
21936@ignore
21937@kindex Emacs Epoch environment
21938@kindex Epoch
21939@kindex inspect
c906108c 21940
8e04817f
AC
21941Version 18 of @sc{gnu} Emacs has a built-in window system
21942called the @code{epoch}
21943environment. Users of this environment can use a new command,
21944@code{inspect} which performs identically to @code{print} except that
21945each value is printed in its own window.
21946@end ignore
c906108c 21947
922fbb7b
AC
21948
21949@node GDB/MI
21950@chapter The @sc{gdb/mi} Interface
21951
21952@unnumberedsec Function and Purpose
21953
21954@cindex @sc{gdb/mi}, its purpose
6b5e8c01
NR
21955@sc{gdb/mi} is a line based machine oriented text interface to
21956@value{GDBN} and is activated by specifying using the
21957@option{--interpreter} command line option (@pxref{Mode Options}). It
21958is specifically intended to support the development of systems which
21959use the debugger as just one small component of a larger system.
922fbb7b
AC
21960
21961This chapter is a specification of the @sc{gdb/mi} interface. It is written
21962in the form of a reference manual.
21963
21964Note that @sc{gdb/mi} is still under construction, so some of the
af6eff6f
NR
21965features described below are incomplete and subject to change
21966(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}).
922fbb7b
AC
21967
21968@unnumberedsec Notation and Terminology
21969
21970@cindex notational conventions, for @sc{gdb/mi}
21971This chapter uses the following notation:
21972
21973@itemize @bullet
21974@item
21975@code{|} separates two alternatives.
21976
21977@item
21978@code{[ @var{something} ]} indicates that @var{something} is optional:
21979it may or may not be given.
21980
21981@item
21982@code{( @var{group} )*} means that @var{group} inside the parentheses
21983may repeat zero or more times.
21984
21985@item
21986@code{( @var{group} )+} means that @var{group} inside the parentheses
21987may repeat one or more times.
21988
21989@item
21990@code{"@var{string}"} means a literal @var{string}.
21991@end itemize
21992
21993@ignore
21994@heading Dependencies
21995@end ignore
21996
922fbb7b 21997@menu
c3b108f7 21998* GDB/MI General Design::
922fbb7b
AC
21999* GDB/MI Command Syntax::
22000* GDB/MI Compatibility with CLI::
af6eff6f 22001* GDB/MI Development and Front Ends::
922fbb7b 22002* GDB/MI Output Records::
ef21caaf 22003* GDB/MI Simple Examples::
922fbb7b 22004* GDB/MI Command Description Format::
ef21caaf 22005* GDB/MI Breakpoint Commands::
a2c02241
NR
22006* GDB/MI Program Context::
22007* GDB/MI Thread Commands::
22008* GDB/MI Program Execution::
22009* GDB/MI Stack Manipulation::
22010* GDB/MI Variable Objects::
922fbb7b 22011* GDB/MI Data Manipulation::
a2c02241
NR
22012* GDB/MI Tracepoint Commands::
22013* GDB/MI Symbol Query::
351ff01a 22014* GDB/MI File Commands::
922fbb7b
AC
22015@ignore
22016* GDB/MI Kod Commands::
22017* GDB/MI Memory Overlay Commands::
22018* GDB/MI Signal Handling Commands::
22019@end ignore
922fbb7b 22020* GDB/MI Target Manipulation::
a6b151f1 22021* GDB/MI File Transfer Commands::
ef21caaf 22022* GDB/MI Miscellaneous Commands::
922fbb7b
AC
22023@end menu
22024
c3b108f7
VP
22025@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22026@node GDB/MI General Design
22027@section @sc{gdb/mi} General Design
22028@cindex GDB/MI General Design
22029
22030Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three
22031parts---commands sent to @value{GDBN}, responses to those commands
22032and notifications. Each command results in exactly one response,
22033indicating either successful completion of the command, or an error.
22034For the commands that do not resume the target, the response contains the
22035requested information. For the commands that resume the target, the
22036response only indicates whether the target was successfully resumed.
22037Notifications is the mechanism for reporting changes in the state of the
22038target, or in @value{GDBN} state, that cannot conveniently be associated with
22039a command and reported as part of that command response.
22040
22041The important examples of notifications are:
22042@itemize @bullet
22043
22044@item
22045Exec notifications. These are used to report changes in
22046target state---when a target is resumed, or stopped. It would not
22047be feasible to include this information in response of resuming
22048commands, because one resume commands can result in multiple events in
22049different threads. Also, quite some time may pass before any event
22050happens in the target, while a frontend needs to know whether the resuming
22051command itself was successfully executed.
22052
22053@item
22054Console output, and status notifications. Console output
22055notifications are used to report output of CLI commands, as well as
22056diagnostics for other commands. Status notifications are used to
22057report the progress of a long-running operation. Naturally, including
22058this information in command response would mean no output is produced
22059until the command is finished, which is undesirable.
22060
22061@item
22062General notifications. Commands may have various side effects on
22063the @value{GDBN} or target state beyond their official purpose. For example,
22064a command may change the selected thread. Although such changes can
22065be included in command response, using notification allows for more
22066orthogonal frontend design.
22067
22068@end itemize
22069
22070There's no guarantee that whenever an MI command reports an error,
22071@value{GDBN} or the target are in any specific state, and especially,
22072the state is not reverted to the state before the MI command was
22073processed. Therefore, whenever an MI command results in an error,
22074we recommend that the frontend refreshes all the information shown in
22075the user interface.
22076
508094de
NR
22077
22078@menu
22079* Context management::
22080* Asynchronous and non-stop modes::
22081* Thread groups::
22082@end menu
22083
22084@node Context management
c3b108f7
VP
22085@subsection Context management
22086
22087In most cases when @value{GDBN} accesses the target, this access is
22088done in context of a specific thread and frame (@pxref{Frames}).
22089Often, even when accessing global data, the target requires that a thread
22090be specified. The CLI interface maintains the selected thread and frame,
22091and supplies them to target on each command. This is convenient,
22092because a command line user would not want to specify that information
22093explicitly on each command, and because user interacts with
22094@value{GDBN} via a single terminal, so no confusion is possible as
22095to what thread and frame are the current ones.
22096
22097In the case of MI, the concept of selected thread and frame is less
22098useful. First, a frontend can easily remember this information
22099itself. Second, a graphical frontend can have more than one window,
22100each one used for debugging a different thread, and the frontend might
22101want to access additional threads for internal purposes. This
22102increases the risk that by relying on implicitly selected thread, the
22103frontend may be operating on a wrong one. Therefore, each MI command
22104should explicitly specify which thread and frame to operate on. To
22105make it possible, each MI command accepts the @samp{--thread} and
22106@samp{--frame} options, the value to each is @value{GDBN} identifier
22107for thread and frame to operate on.
22108
22109Usually, each top-level window in a frontend allows the user to select
22110a thread and a frame, and remembers the user selection for further
22111operations. However, in some cases @value{GDBN} may suggest that the
22112current thread be changed. For example, when stopping on a breakpoint
22113it is reasonable to switch to the thread where breakpoint is hit. For
22114another example, if the user issues the CLI @samp{thread} command via
22115the frontend, it is desirable to change the frontend's selected thread to the
22116one specified by user. @value{GDBN} communicates the suggestion to
22117change current thread using the @samp{=thread-selected} notification.
22118No such notification is available for the selected frame at the moment.
22119
22120Note that historically, MI shares the selected thread with CLI, so
22121frontends used the @code{-thread-select} to execute commands in the
22122right context. However, getting this to work right is cumbersome. The
22123simplest way is for frontend to emit @code{-thread-select} command
22124before every command. This doubles the number of commands that need
22125to be sent. The alternative approach is to suppress @code{-thread-select}
22126if the selected thread in @value{GDBN} is supposed to be identical to the
22127thread the frontend wants to operate on. However, getting this
22128optimization right can be tricky. In particular, if the frontend
22129sends several commands to @value{GDBN}, and one of the commands changes the
22130selected thread, then the behaviour of subsequent commands will
22131change. So, a frontend should either wait for response from such
22132problematic commands, or explicitly add @code{-thread-select} for
22133all subsequent commands. No frontend is known to do this exactly
22134right, so it is suggested to just always pass the @samp{--thread} and
22135@samp{--frame} options.
22136
508094de 22137@node Asynchronous and non-stop modes
c3b108f7
VP
22138@subsection Asynchronous command execution and non-stop mode
22139
22140On some targets, @value{GDBN} is capable of processing MI commands
22141even while the target is running. This is called @dfn{asynchronous
22142command execution} (@pxref{Background Execution}). The frontend may
22143specify a preferrence for asynchronous execution using the
22144@code{-gdb-set target-async 1} command, which should be emitted before
22145either running the executable or attaching to the target. After the
22146frontend has started the executable or attached to the target, it can
22147find if asynchronous execution is enabled using the
22148@code{-list-target-features} command.
22149
22150Even if @value{GDBN} can accept a command while target is running,
22151many commands that access the target do not work when the target is
22152running. Therefore, asynchronous command execution is most useful
22153when combined with non-stop mode (@pxref{Non-Stop Mode}). Then,
22154it is possible to examine the state of one thread, while other threads
22155are running.
22156
22157When a given thread is running, MI commands that try to access the
22158target in the context of that thread may not work, or may work only on
22159some targets. In particular, commands that try to operate on thread's
22160stack will not work, on any target. Commands that read memory, or
22161modify breakpoints, may work or not work, depending on the target. Note
22162that even commands that operate on global state, such as @code{print},
22163@code{set}, and breakpoint commands, still access the target in the
22164context of a specific thread, so frontend should try to find a
22165stopped thread and perform the operation on that thread (using the
22166@samp{--thread} option).
22167
22168Which commands will work in the context of a running thread is
22169highly target dependent. However, the two commands
22170@code{-exec-interrupt}, to stop a thread, and @code{-thread-info},
22171to find the state of a thread, will always work.
22172
508094de 22173@node Thread groups
c3b108f7
VP
22174@subsection Thread groups
22175@value{GDBN} may be used to debug several processes at the same time.
22176On some platfroms, @value{GDBN} may support debugging of several
22177hardware systems, each one having several cores with several different
22178processes running on each core. This section describes the MI
22179mechanism to support such debugging scenarios.
22180
22181The key observation is that regardless of the structure of the
22182target, MI can have a global list of threads, because most commands that
22183accept the @samp{--thread} option do not need to know what process that
22184thread belongs to. Therefore, it is not necessary to introduce
22185neither additional @samp{--process} option, nor an notion of the
22186current process in the MI interface. The only strictly new feature
22187that is required is the ability to find how the threads are grouped
22188into processes.
22189
22190To allow the user to discover such grouping, and to support arbitrary
22191hierarchy of machines/cores/processes, MI introduces the concept of a
22192@dfn{thread group}. Thread group is a collection of threads and other
22193thread groups. A thread group always has a string identifier, a type,
22194and may have additional attributes specific to the type. A new
22195command, @code{-list-thread-groups}, returns the list of top-level
22196thread groups, which correspond to processes that @value{GDBN} is
22197debugging at the moment. By passing an identifier of a thread group
22198to the @code{-list-thread-groups} command, it is possible to obtain
22199the members of specific thread group.
22200
22201To allow the user to easily discover processes, and other objects, he
22202wishes to debug, a concept of @dfn{available thread group} is
22203introduced. Available thread group is an thread group that
22204@value{GDBN} is not debugging, but that can be attached to, using the
22205@code{-target-attach} command. The list of available top-level thread
22206groups can be obtained using @samp{-list-thread-groups --available}.
22207In general, the content of a thread group may be only retrieved only
22208after attaching to that thread group.
22209
a79b8f6e
VP
22210Thread groups are related to inferiors (@pxref{Inferiors and
22211Programs}). Each inferior corresponds to a thread group of a special
22212type @samp{process}, and some additional operations are permitted on
22213such thread groups.
22214
922fbb7b
AC
22215@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22216@node GDB/MI Command Syntax
22217@section @sc{gdb/mi} Command Syntax
22218
22219@menu
22220* GDB/MI Input Syntax::
22221* GDB/MI Output Syntax::
922fbb7b
AC
22222@end menu
22223
22224@node GDB/MI Input Syntax
22225@subsection @sc{gdb/mi} Input Syntax
22226
22227@cindex input syntax for @sc{gdb/mi}
22228@cindex @sc{gdb/mi}, input syntax
22229@table @code
22230@item @var{command} @expansion{}
22231@code{@var{cli-command} | @var{mi-command}}
22232
22233@item @var{cli-command} @expansion{}
22234@code{[ @var{token} ] @var{cli-command} @var{nl}}, where
22235@var{cli-command} is any existing @value{GDBN} CLI command.
22236
22237@item @var{mi-command} @expansion{}
22238@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
22239@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
22240
22241@item @var{token} @expansion{}
22242"any sequence of digits"
22243
22244@item @var{option} @expansion{}
22245@code{"-" @var{parameter} [ " " @var{parameter} ]}
22246
22247@item @var{parameter} @expansion{}
22248@code{@var{non-blank-sequence} | @var{c-string}}
22249
22250@item @var{operation} @expansion{}
22251@emph{any of the operations described in this chapter}
22252
22253@item @var{non-blank-sequence} @expansion{}
22254@emph{anything, provided it doesn't contain special characters such as
22255"-", @var{nl}, """ and of course " "}
22256
22257@item @var{c-string} @expansion{}
22258@code{""" @var{seven-bit-iso-c-string-content} """}
22259
22260@item @var{nl} @expansion{}
22261@code{CR | CR-LF}
22262@end table
22263
22264@noindent
22265Notes:
22266
22267@itemize @bullet
22268@item
22269The CLI commands are still handled by the @sc{mi} interpreter; their
22270output is described below.
22271
22272@item
22273The @code{@var{token}}, when present, is passed back when the command
22274finishes.
22275
22276@item
22277Some @sc{mi} commands accept optional arguments as part of the parameter
22278list. Each option is identified by a leading @samp{-} (dash) and may be
22279followed by an optional argument parameter. Options occur first in the
22280parameter list and can be delimited from normal parameters using
22281@samp{--} (this is useful when some parameters begin with a dash).
22282@end itemize
22283
22284Pragmatics:
22285
22286@itemize @bullet
22287@item
22288We want easy access to the existing CLI syntax (for debugging).
22289
22290@item
22291We want it to be easy to spot a @sc{mi} operation.
22292@end itemize
22293
22294@node GDB/MI Output Syntax
22295@subsection @sc{gdb/mi} Output Syntax
22296
22297@cindex output syntax of @sc{gdb/mi}
22298@cindex @sc{gdb/mi}, output syntax
22299The output from @sc{gdb/mi} consists of zero or more out-of-band records
22300followed, optionally, by a single result record. This result record
22301is for the most recent command. The sequence of output records is
594fe323 22302terminated by @samp{(gdb)}.
922fbb7b
AC
22303
22304If an input command was prefixed with a @code{@var{token}} then the
22305corresponding output for that command will also be prefixed by that same
22306@var{token}.
22307
22308@table @code
22309@item @var{output} @expansion{}
594fe323 22310@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
922fbb7b
AC
22311
22312@item @var{result-record} @expansion{}
22313@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
22314
22315@item @var{out-of-band-record} @expansion{}
22316@code{@var{async-record} | @var{stream-record}}
22317
22318@item @var{async-record} @expansion{}
22319@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
22320
22321@item @var{exec-async-output} @expansion{}
22322@code{[ @var{token} ] "*" @var{async-output}}
22323
22324@item @var{status-async-output} @expansion{}
22325@code{[ @var{token} ] "+" @var{async-output}}
22326
22327@item @var{notify-async-output} @expansion{}
22328@code{[ @var{token} ] "=" @var{async-output}}
22329
22330@item @var{async-output} @expansion{}
22331@code{@var{async-class} ( "," @var{result} )* @var{nl}}
22332
22333@item @var{result-class} @expansion{}
22334@code{"done" | "running" | "connected" | "error" | "exit"}
22335
22336@item @var{async-class} @expansion{}
22337@code{"stopped" | @var{others}} (where @var{others} will be added
22338depending on the needs---this is still in development).
22339
22340@item @var{result} @expansion{}
22341@code{ @var{variable} "=" @var{value}}
22342
22343@item @var{variable} @expansion{}
22344@code{ @var{string} }
22345
22346@item @var{value} @expansion{}
22347@code{ @var{const} | @var{tuple} | @var{list} }
22348
22349@item @var{const} @expansion{}
22350@code{@var{c-string}}
22351
22352@item @var{tuple} @expansion{}
22353@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
22354
22355@item @var{list} @expansion{}
22356@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
22357@var{result} ( "," @var{result} )* "]" }
22358
22359@item @var{stream-record} @expansion{}
22360@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
22361
22362@item @var{console-stream-output} @expansion{}
22363@code{"~" @var{c-string}}
22364
22365@item @var{target-stream-output} @expansion{}
22366@code{"@@" @var{c-string}}
22367
22368@item @var{log-stream-output} @expansion{}
22369@code{"&" @var{c-string}}
22370
22371@item @var{nl} @expansion{}
22372@code{CR | CR-LF}
22373
22374@item @var{token} @expansion{}
22375@emph{any sequence of digits}.
22376@end table
22377
22378@noindent
22379Notes:
22380
22381@itemize @bullet
22382@item
22383All output sequences end in a single line containing a period.
22384
22385@item
721c02de
VP
22386The @code{@var{token}} is from the corresponding request. Note that
22387for all async output, while the token is allowed by the grammar and
22388may be output by future versions of @value{GDBN} for select async
22389output messages, it is generally omitted. Frontends should treat
22390all async output as reporting general changes in the state of the
22391target and there should be no need to associate async output to any
22392prior command.
922fbb7b
AC
22393
22394@item
22395@cindex status output in @sc{gdb/mi}
22396@var{status-async-output} contains on-going status information about the
22397progress of a slow operation. It can be discarded. All status output is
22398prefixed by @samp{+}.
22399
22400@item
22401@cindex async output in @sc{gdb/mi}
22402@var{exec-async-output} contains asynchronous state change on the target
22403(stopped, started, disappeared). All async output is prefixed by
22404@samp{*}.
22405
22406@item
22407@cindex notify output in @sc{gdb/mi}
22408@var{notify-async-output} contains supplementary information that the
22409client should handle (e.g., a new breakpoint information). All notify
22410output is prefixed by @samp{=}.
22411
22412@item
22413@cindex console output in @sc{gdb/mi}
22414@var{console-stream-output} is output that should be displayed as is in the
22415console. It is the textual response to a CLI command. All the console
22416output is prefixed by @samp{~}.
22417
22418@item
22419@cindex target output in @sc{gdb/mi}
22420@var{target-stream-output} is the output produced by the target program.
22421All the target output is prefixed by @samp{@@}.
22422
22423@item
22424@cindex log output in @sc{gdb/mi}
22425@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
22426instance messages that should be displayed as part of an error log. All
22427the log output is prefixed by @samp{&}.
22428
22429@item
22430@cindex list output in @sc{gdb/mi}
22431New @sc{gdb/mi} commands should only output @var{lists} containing
22432@var{values}.
22433
22434
22435@end itemize
22436
22437@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
22438details about the various output records.
22439
922fbb7b
AC
22440@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22441@node GDB/MI Compatibility with CLI
22442@section @sc{gdb/mi} Compatibility with CLI
22443
22444@cindex compatibility, @sc{gdb/mi} and CLI
22445@cindex @sc{gdb/mi}, compatibility with CLI
922fbb7b 22446
a2c02241
NR
22447For the developers convenience CLI commands can be entered directly,
22448but there may be some unexpected behaviour. For example, commands
22449that query the user will behave as if the user replied yes, breakpoint
22450command lists are not executed and some CLI commands, such as
22451@code{if}, @code{when} and @code{define}, prompt for further input with
22452@samp{>}, which is not valid MI output.
ef21caaf
NR
22453
22454This feature may be removed at some stage in the future and it is
a2c02241
NR
22455recommended that front ends use the @code{-interpreter-exec} command
22456(@pxref{-interpreter-exec}).
922fbb7b 22457
af6eff6f
NR
22458@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22459@node GDB/MI Development and Front Ends
22460@section @sc{gdb/mi} Development and Front Ends
22461@cindex @sc{gdb/mi} development
22462
22463The application which takes the MI output and presents the state of the
22464program being debugged to the user is called a @dfn{front end}.
22465
22466Although @sc{gdb/mi} is still incomplete, it is currently being used
22467by a variety of front ends to @value{GDBN}. This makes it difficult
22468to introduce new functionality without breaking existing usage. This
22469section tries to minimize the problems by describing how the protocol
22470might change.
22471
22472Some changes in MI need not break a carefully designed front end, and
22473for these the MI version will remain unchanged. The following is a
22474list of changes that may occur within one level, so front ends should
22475parse MI output in a way that can handle them:
22476
22477@itemize @bullet
22478@item
22479New MI commands may be added.
22480
22481@item
22482New fields may be added to the output of any MI command.
22483
36ece8b3
NR
22484@item
22485The range of values for fields with specified values, e.g.,
9f708cb2 22486@code{in_scope} (@pxref{-var-update}) may be extended.
36ece8b3 22487
af6eff6f
NR
22488@c The format of field's content e.g type prefix, may change so parse it
22489@c at your own risk. Yes, in general?
22490
22491@c The order of fields may change? Shouldn't really matter but it might
22492@c resolve inconsistencies.
22493@end itemize
22494
22495If the changes are likely to break front ends, the MI version level
22496will be increased by one. This will allow the front end to parse the
22497output according to the MI version. Apart from mi0, new versions of
22498@value{GDBN} will not support old versions of MI and it will be the
22499responsibility of the front end to work with the new one.
22500
22501@c Starting with mi3, add a new command -mi-version that prints the MI
22502@c version?
22503
22504The best way to avoid unexpected changes in MI that might break your front
22505end is to make your project known to @value{GDBN} developers and
7a9a6b69 22506follow development on @email{gdb@@sourceware.org} and
fa0f268d 22507@email{gdb-patches@@sourceware.org}.
af6eff6f
NR
22508@cindex mailing lists
22509
922fbb7b
AC
22510@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22511@node GDB/MI Output Records
22512@section @sc{gdb/mi} Output Records
22513
22514@menu
22515* GDB/MI Result Records::
22516* GDB/MI Stream Records::
82f68b1c 22517* GDB/MI Async Records::
c3b108f7 22518* GDB/MI Frame Information::
dc146f7c 22519* GDB/MI Thread Information::
922fbb7b
AC
22520@end menu
22521
22522@node GDB/MI Result Records
22523@subsection @sc{gdb/mi} Result Records
22524
22525@cindex result records in @sc{gdb/mi}
22526@cindex @sc{gdb/mi}, result records
22527In addition to a number of out-of-band notifications, the response to a
22528@sc{gdb/mi} command includes one of the following result indications:
22529
22530@table @code
22531@findex ^done
22532@item "^done" [ "," @var{results} ]
22533The synchronous operation was successful, @code{@var{results}} are the return
22534values.
22535
22536@item "^running"
22537@findex ^running
8e9c5e02
VP
22538This result record is equivalent to @samp{^done}. Historically, it
22539was output instead of @samp{^done} if the command has resumed the
22540target. This behaviour is maintained for backward compatibility, but
22541all frontends should treat @samp{^done} and @samp{^running}
22542identically and rely on the @samp{*running} output record to determine
22543which threads are resumed.
922fbb7b 22544
ef21caaf
NR
22545@item "^connected"
22546@findex ^connected
3f94c067 22547@value{GDBN} has connected to a remote target.
ef21caaf 22548
922fbb7b
AC
22549@item "^error" "," @var{c-string}
22550@findex ^error
22551The operation failed. The @code{@var{c-string}} contains the corresponding
22552error message.
ef21caaf
NR
22553
22554@item "^exit"
22555@findex ^exit
3f94c067 22556@value{GDBN} has terminated.
ef21caaf 22557
922fbb7b
AC
22558@end table
22559
22560@node GDB/MI Stream Records
22561@subsection @sc{gdb/mi} Stream Records
22562
22563@cindex @sc{gdb/mi}, stream records
22564@cindex stream records in @sc{gdb/mi}
22565@value{GDBN} internally maintains a number of output streams: the console, the
22566target, and the log. The output intended for each of these streams is
22567funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
22568
22569Each stream record begins with a unique @dfn{prefix character} which
22570identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
22571Syntax}). In addition to the prefix, each stream record contains a
22572@code{@var{string-output}}. This is either raw text (with an implicit new
22573line) or a quoted C string (which does not contain an implicit newline).
22574
22575@table @code
22576@item "~" @var{string-output}
22577The console output stream contains text that should be displayed in the
22578CLI console window. It contains the textual responses to CLI commands.
22579
22580@item "@@" @var{string-output}
22581The target output stream contains any textual output from the running
ef21caaf
NR
22582target. This is only present when GDB's event loop is truly
22583asynchronous, which is currently only the case for remote targets.
922fbb7b
AC
22584
22585@item "&" @var{string-output}
22586The log stream contains debugging messages being produced by @value{GDBN}'s
22587internals.
22588@end table
22589
82f68b1c
VP
22590@node GDB/MI Async Records
22591@subsection @sc{gdb/mi} Async Records
922fbb7b 22592
82f68b1c
VP
22593@cindex async records in @sc{gdb/mi}
22594@cindex @sc{gdb/mi}, async records
22595@dfn{Async} records are used to notify the @sc{gdb/mi} client of
922fbb7b 22596additional changes that have occurred. Those changes can either be a
82f68b1c 22597consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of
922fbb7b
AC
22598target activity (e.g., target stopped).
22599
8eb41542 22600The following is the list of possible async records:
922fbb7b
AC
22601
22602@table @code
034dad6f 22603
e1ac3328
VP
22604@item *running,thread-id="@var{thread}"
22605The target is now running. The @var{thread} field tells which
22606specific thread is now running, and can be @samp{all} if all threads
22607are running. The frontend should assume that no interaction with a
22608running thread is possible after this notification is produced.
22609The frontend should not assume that this notification is output
22610only once for any command. @value{GDBN} may emit this notification
22611several times, either for different threads, because it cannot resume
22612all threads together, or even for a single thread, if the thread must
22613be stepped though some code before letting it run freely.
22614
dc146f7c 22615@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}"
82f68b1c
VP
22616The target has stopped. The @var{reason} field can have one of the
22617following values:
034dad6f
BR
22618
22619@table @code
22620@item breakpoint-hit
22621A breakpoint was reached.
22622@item watchpoint-trigger
22623A watchpoint was triggered.
22624@item read-watchpoint-trigger
22625A read watchpoint was triggered.
22626@item access-watchpoint-trigger
22627An access watchpoint was triggered.
22628@item function-finished
22629An -exec-finish or similar CLI command was accomplished.
22630@item location-reached
22631An -exec-until or similar CLI command was accomplished.
22632@item watchpoint-scope
22633A watchpoint has gone out of scope.
22634@item end-stepping-range
22635An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or
22636similar CLI command was accomplished.
22637@item exited-signalled
22638The inferior exited because of a signal.
22639@item exited
22640The inferior exited.
22641@item exited-normally
22642The inferior exited normally.
22643@item signal-received
22644A signal was received by the inferior.
922fbb7b
AC
22645@end table
22646
c3b108f7
VP
22647The @var{id} field identifies the thread that directly caused the stop
22648-- for example by hitting a breakpoint. Depending on whether all-stop
22649mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either
22650stop all threads, or only the thread that directly triggered the stop.
22651If all threads are stopped, the @var{stopped} field will have the
22652value of @code{"all"}. Otherwise, the value of the @var{stopped}
22653field will be a list of thread identifiers. Presently, this list will
22654always include a single thread, but frontend should be prepared to see
dc146f7c
VP
22655several threads in the list. The @var{core} field reports the
22656processor core on which the stop event has happened. This field may be absent
22657if such information is not available.
c3b108f7 22658
a79b8f6e
VP
22659@item =thread-group-added,id="@var{id}"
22660@itemx =thread-group-removed,id="@var{id}"
22661A thread group was either added or removed. The @var{id} field
22662contains the @value{GDBN} identifier of the thread group. When a thread
22663group is added, it generally might not be associated with a running
22664process. When a thread group is removed, its id becomes invalid and
22665cannot be used in any way.
22666
22667@item =thread-group-started,id="@var{id}",pid="@var{pid}"
22668A thread group became associated with a running program,
22669either because the program was just started or the thread group
22670was attached to a program. The @var{id} field contains the
22671@value{GDBN} identifier of the thread group. The @var{pid} field
22672contains process identifier, specific to the operating system.
22673
c3b108f7 22674@itemx =thread-group-exited,id="@var{id}"
a79b8f6e
VP
22675A thread group is no longer associated with a running program,
22676either because the program has exited, or because it was detached
c3b108f7
VP
22677from. The @var{id} field contains the @value{GDBN} identifier of the
22678thread group.
22679
22680@item =thread-created,id="@var{id}",group-id="@var{gid}"
22681@itemx =thread-exited,id="@var{id}",group-id="@var{gid}"
82f68b1c 22682A thread either was created, or has exited. The @var{id} field
c3b108f7
VP
22683contains the @value{GDBN} identifier of the thread. The @var{gid}
22684field identifies the thread group this thread belongs to.
66bb093b
VP
22685
22686@item =thread-selected,id="@var{id}"
22687Informs that the selected thread was changed as result of the last
22688command. This notification is not emitted as result of @code{-thread-select}
22689command but is emitted whenever an MI command that is not documented
22690to change the selected thread actually changes it. In particular,
22691invoking, directly or indirectly (via user-defined command), the CLI
22692@code{thread} command, will generate this notification.
22693
22694We suggest that in response to this notification, front ends
22695highlight the selected thread and cause subsequent commands to apply to
22696that thread.
22697
c86cf029
VP
22698@item =library-loaded,...
22699Reports that a new library file was loaded by the program. This
22700notification has 4 fields---@var{id}, @var{target-name},
134eb42c 22701@var{host-name}, and @var{symbols-loaded}. The @var{id} field is an
c86cf029
VP
22702opaque identifier of the library. For remote debugging case,
22703@var{target-name} and @var{host-name} fields give the name of the
134eb42c
VP
22704library file on the target, and on the host respectively. For native
22705debugging, both those fields have the same value. The
c86cf029 22706@var{symbols-loaded} field reports if the debug symbols for this
a79b8f6e
VP
22707library are loaded. The @var{thread-group} field, if present,
22708specifies the id of the thread group in whose context the library was loaded.
22709If the field is absent, it means the library was loaded in the context
22710of all present thread groups.
c86cf029
VP
22711
22712@item =library-unloaded,...
134eb42c 22713Reports that a library was unloaded by the program. This notification
c86cf029 22714has 3 fields---@var{id}, @var{target-name} and @var{host-name} with
a79b8f6e
VP
22715the same meaning as for the @code{=library-loaded} notification.
22716The @var{thread-group} field, if present, specifies the id of the
22717thread group in whose context the library was unloaded. If the field is
22718absent, it means the library was unloaded in the context of all present
22719thread groups.
c86cf029 22720
82f68b1c
VP
22721@end table
22722
c3b108f7
VP
22723@node GDB/MI Frame Information
22724@subsection @sc{gdb/mi} Frame Information
22725
22726Response from many MI commands includes an information about stack
22727frame. This information is a tuple that may have the following
22728fields:
22729
22730@table @code
22731@item level
22732The level of the stack frame. The innermost frame has the level of
22733zero. This field is always present.
22734
22735@item func
22736The name of the function corresponding to the frame. This field may
22737be absent if @value{GDBN} is unable to determine the function name.
22738
22739@item addr
22740The code address for the frame. This field is always present.
22741
22742@item file
22743The name of the source files that correspond to the frame's code
22744address. This field may be absent.
22745
22746@item line
22747The source line corresponding to the frames' code address. This field
22748may be absent.
22749
22750@item from
22751The name of the binary file (either executable or shared library) the
22752corresponds to the frame's code address. This field may be absent.
22753
22754@end table
82f68b1c 22755
dc146f7c
VP
22756@node GDB/MI Thread Information
22757@subsection @sc{gdb/mi} Thread Information
22758
22759Whenever @value{GDBN} has to report an information about a thread, it
22760uses a tuple with the following fields:
22761
22762@table @code
22763@item id
22764The numeric id assigned to the thread by @value{GDBN}. This field is
22765always present.
22766
22767@item target-id
22768Target-specific string identifying the thread. This field is always present.
22769
22770@item details
22771Additional information about the thread provided by the target.
22772It is supposed to be human-readable and not interpreted by the
22773frontend. This field is optional.
22774
22775@item state
22776Either @samp{stopped} or @samp{running}, depending on whether the
22777thread is presently running. This field is always present.
22778
22779@item core
22780The value of this field is an integer number of the processor core the
22781thread was last seen on. This field is optional.
22782@end table
22783
922fbb7b 22784
ef21caaf
NR
22785@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22786@node GDB/MI Simple Examples
22787@section Simple Examples of @sc{gdb/mi} Interaction
22788@cindex @sc{gdb/mi}, simple examples
22789
22790This subsection presents several simple examples of interaction using
22791the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
22792following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
22793the output received from @sc{gdb/mi}.
22794
d3e8051b 22795Note the line breaks shown in the examples are here only for
ef21caaf
NR
22796readability, they don't appear in the real output.
22797
79a6e687 22798@subheading Setting a Breakpoint
ef21caaf
NR
22799
22800Setting a breakpoint generates synchronous output which contains detailed
22801information of the breakpoint.
22802
22803@smallexample
22804-> -break-insert main
22805<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
22806 enabled="y",addr="0x08048564",func="main",file="myprog.c",
22807 fullname="/home/nickrob/myprog.c",line="68",times="0"@}
22808<- (gdb)
22809@end smallexample
22810
22811@subheading Program Execution
22812
22813Program execution generates asynchronous records and MI gives the
22814reason that execution stopped.
22815
22816@smallexample
22817-> -exec-run
22818<- ^running
22819<- (gdb)
a47ec5fe 22820<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
ef21caaf
NR
22821 frame=@{addr="0x08048564",func="main",
22822 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}],
22823 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@}
22824<- (gdb)
22825-> -exec-continue
22826<- ^running
22827<- (gdb)
22828<- *stopped,reason="exited-normally"
22829<- (gdb)
22830@end smallexample
22831
3f94c067 22832@subheading Quitting @value{GDBN}
ef21caaf 22833
3f94c067 22834Quitting @value{GDBN} just prints the result class @samp{^exit}.
ef21caaf
NR
22835
22836@smallexample
22837-> (gdb)
22838<- -gdb-exit
22839<- ^exit
22840@end smallexample
22841
a6b29f87
VP
22842Please note that @samp{^exit} is printed immediately, but it might
22843take some time for @value{GDBN} to actually exit. During that time, @value{GDBN}
22844performs necessary cleanups, including killing programs being debugged
22845or disconnecting from debug hardware, so the frontend should wait till
22846@value{GDBN} exits and should only forcibly kill @value{GDBN} if it
22847fails to exit in reasonable time.
22848
a2c02241 22849@subheading A Bad Command
ef21caaf
NR
22850
22851Here's what happens if you pass a non-existent command:
22852
22853@smallexample
22854-> -rubbish
22855<- ^error,msg="Undefined MI command: rubbish"
594fe323 22856<- (gdb)
ef21caaf
NR
22857@end smallexample
22858
22859
922fbb7b
AC
22860@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22861@node GDB/MI Command Description Format
22862@section @sc{gdb/mi} Command Description Format
22863
22864The remaining sections describe blocks of commands. Each block of
22865commands is laid out in a fashion similar to this section.
22866
922fbb7b
AC
22867@subheading Motivation
22868
22869The motivation for this collection of commands.
22870
22871@subheading Introduction
22872
22873A brief introduction to this collection of commands as a whole.
22874
22875@subheading Commands
22876
22877For each command in the block, the following is described:
22878
22879@subsubheading Synopsis
22880
22881@smallexample
22882 -command @var{args}@dots{}
22883@end smallexample
22884
922fbb7b
AC
22885@subsubheading Result
22886
265eeb58 22887@subsubheading @value{GDBN} Command
922fbb7b 22888
265eeb58 22889The corresponding @value{GDBN} CLI command(s), if any.
922fbb7b
AC
22890
22891@subsubheading Example
22892
ef21caaf
NR
22893Example(s) formatted for readability. Some of the described commands have
22894not been implemented yet and these are labeled N.A.@: (not available).
22895
22896
922fbb7b 22897@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ef21caaf
NR
22898@node GDB/MI Breakpoint Commands
22899@section @sc{gdb/mi} Breakpoint Commands
922fbb7b
AC
22900
22901@cindex breakpoint commands for @sc{gdb/mi}
22902@cindex @sc{gdb/mi}, breakpoint commands
22903This section documents @sc{gdb/mi} commands for manipulating
22904breakpoints.
22905
22906@subheading The @code{-break-after} Command
22907@findex -break-after
22908
22909@subsubheading Synopsis
22910
22911@smallexample
22912 -break-after @var{number} @var{count}
22913@end smallexample
22914
22915The breakpoint number @var{number} is not in effect until it has been
22916hit @var{count} times. To see how this is reflected in the output of
22917the @samp{-break-list} command, see the description of the
22918@samp{-break-list} command below.
22919
22920@subsubheading @value{GDBN} Command
22921
22922The corresponding @value{GDBN} command is @samp{ignore}.
22923
22924@subsubheading Example
22925
22926@smallexample
594fe323 22927(gdb)
922fbb7b 22928-break-insert main
a47ec5fe
AR
22929^done,bkpt=@{number="1",type="breakpoint",disp="keep",
22930enabled="y",addr="0x000100d0",func="main",file="hello.c",
948d5102 22931fullname="/home/foo/hello.c",line="5",times="0"@}
594fe323 22932(gdb)
922fbb7b
AC
22933-break-after 1 3
22934~
22935^done
594fe323 22936(gdb)
922fbb7b
AC
22937-break-list
22938^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
22939hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
22940@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
22941@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
22942@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
22943@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
22944@{width="40",alignment="2",col_name="what",colhdr="What"@}],
22945body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
22946addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
22947line="5",times="0",ignore="3"@}]@}
594fe323 22948(gdb)
922fbb7b
AC
22949@end smallexample
22950
22951@ignore
22952@subheading The @code{-break-catch} Command
22953@findex -break-catch
48cb2d85 22954@end ignore
922fbb7b
AC
22955
22956@subheading The @code{-break-commands} Command
22957@findex -break-commands
922fbb7b 22958
48cb2d85
VP
22959@subsubheading Synopsis
22960
22961@smallexample
22962 -break-commands @var{number} [ @var{command1} ... @var{commandN} ]
22963@end smallexample
22964
22965Specifies the CLI commands that should be executed when breakpoint
22966@var{number} is hit. The parameters @var{command1} to @var{commandN}
22967are the commands. If no command is specified, any previously-set
22968commands are cleared. @xref{Break Commands}. Typical use of this
22969functionality is tracing a program, that is, printing of values of
22970some variables whenever breakpoint is hit and then continuing.
22971
22972@subsubheading @value{GDBN} Command
22973
22974The corresponding @value{GDBN} command is @samp{commands}.
22975
22976@subsubheading Example
22977
22978@smallexample
22979(gdb)
22980-break-insert main
22981^done,bkpt=@{number="1",type="breakpoint",disp="keep",
22982enabled="y",addr="0x000100d0",func="main",file="hello.c",
22983fullname="/home/foo/hello.c",line="5",times="0"@}
22984(gdb)
22985-break-commands 1 "print v" "continue"
22986^done
22987(gdb)
22988@end smallexample
922fbb7b
AC
22989
22990@subheading The @code{-break-condition} Command
22991@findex -break-condition
22992
22993@subsubheading Synopsis
22994
22995@smallexample
22996 -break-condition @var{number} @var{expr}
22997@end smallexample
22998
22999Breakpoint @var{number} will stop the program only if the condition in
23000@var{expr} is true. The condition becomes part of the
23001@samp{-break-list} output (see the description of the @samp{-break-list}
23002command below).
23003
23004@subsubheading @value{GDBN} Command
23005
23006The corresponding @value{GDBN} command is @samp{condition}.
23007
23008@subsubheading Example
23009
23010@smallexample
594fe323 23011(gdb)
922fbb7b
AC
23012-break-condition 1 1
23013^done
594fe323 23014(gdb)
922fbb7b
AC
23015-break-list
23016^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
23017hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23018@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23019@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23020@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23021@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23022@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23023body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
23024addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
23025line="5",cond="1",times="0",ignore="3"@}]@}
594fe323 23026(gdb)
922fbb7b
AC
23027@end smallexample
23028
23029@subheading The @code{-break-delete} Command
23030@findex -break-delete
23031
23032@subsubheading Synopsis
23033
23034@smallexample
23035 -break-delete ( @var{breakpoint} )+
23036@end smallexample
23037
23038Delete the breakpoint(s) whose number(s) are specified in the argument
23039list. This is obviously reflected in the breakpoint list.
23040
79a6e687 23041@subsubheading @value{GDBN} Command
922fbb7b
AC
23042
23043The corresponding @value{GDBN} command is @samp{delete}.
23044
23045@subsubheading Example
23046
23047@smallexample
594fe323 23048(gdb)
922fbb7b
AC
23049-break-delete 1
23050^done
594fe323 23051(gdb)
922fbb7b
AC
23052-break-list
23053^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
23054hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23055@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23056@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23057@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23058@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23059@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23060body=[]@}
594fe323 23061(gdb)
922fbb7b
AC
23062@end smallexample
23063
23064@subheading The @code{-break-disable} Command
23065@findex -break-disable
23066
23067@subsubheading Synopsis
23068
23069@smallexample
23070 -break-disable ( @var{breakpoint} )+
23071@end smallexample
23072
23073Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
23074break list is now set to @samp{n} for the named @var{breakpoint}(s).
23075
23076@subsubheading @value{GDBN} Command
23077
23078The corresponding @value{GDBN} command is @samp{disable}.
23079
23080@subsubheading Example
23081
23082@smallexample
594fe323 23083(gdb)
922fbb7b
AC
23084-break-disable 2
23085^done
594fe323 23086(gdb)
922fbb7b
AC
23087-break-list
23088^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
23089hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23090@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23091@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23092@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23093@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23094@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23095body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
948d5102
NR
23096addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
23097line="5",times="0"@}]@}
594fe323 23098(gdb)
922fbb7b
AC
23099@end smallexample
23100
23101@subheading The @code{-break-enable} Command
23102@findex -break-enable
23103
23104@subsubheading Synopsis
23105
23106@smallexample
23107 -break-enable ( @var{breakpoint} )+
23108@end smallexample
23109
23110Enable (previously disabled) @var{breakpoint}(s).
23111
23112@subsubheading @value{GDBN} Command
23113
23114The corresponding @value{GDBN} command is @samp{enable}.
23115
23116@subsubheading Example
23117
23118@smallexample
594fe323 23119(gdb)
922fbb7b
AC
23120-break-enable 2
23121^done
594fe323 23122(gdb)
922fbb7b
AC
23123-break-list
23124^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
23125hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23126@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23127@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23128@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23129@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23130@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23131body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
23132addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
23133line="5",times="0"@}]@}
594fe323 23134(gdb)
922fbb7b
AC
23135@end smallexample
23136
23137@subheading The @code{-break-info} Command
23138@findex -break-info
23139
23140@subsubheading Synopsis
23141
23142@smallexample
23143 -break-info @var{breakpoint}
23144@end smallexample
23145
23146@c REDUNDANT???
23147Get information about a single breakpoint.
23148
79a6e687 23149@subsubheading @value{GDBN} Command
922fbb7b
AC
23150
23151The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
23152
23153@subsubheading Example
23154N.A.
23155
23156@subheading The @code{-break-insert} Command
23157@findex -break-insert
23158
23159@subsubheading Synopsis
23160
23161@smallexample
18148017 23162 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ]
922fbb7b 23163 [ -c @var{condition} ] [ -i @var{ignore-count} ]
afe8ab22 23164 [ -p @var{thread} ] [ @var{location} ]
922fbb7b
AC
23165@end smallexample
23166
23167@noindent
afe8ab22 23168If specified, @var{location}, can be one of:
922fbb7b
AC
23169
23170@itemize @bullet
23171@item function
23172@c @item +offset
23173@c @item -offset
23174@c @item linenum
23175@item filename:linenum
23176@item filename:function
23177@item *address
23178@end itemize
23179
23180The possible optional parameters of this command are:
23181
23182@table @samp
23183@item -t
948d5102 23184Insert a temporary breakpoint.
922fbb7b
AC
23185@item -h
23186Insert a hardware breakpoint.
23187@item -c @var{condition}
23188Make the breakpoint conditional on @var{condition}.
23189@item -i @var{ignore-count}
23190Initialize the @var{ignore-count}.
afe8ab22
VP
23191@item -f
23192If @var{location} cannot be parsed (for example if it
23193refers to unknown files or functions), create a pending
23194breakpoint. Without this flag, @value{GDBN} will report
23195an error, and won't create a breakpoint, if @var{location}
23196cannot be parsed.
41447f92
VP
23197@item -d
23198Create a disabled breakpoint.
18148017
VP
23199@item -a
23200Create a tracepoint. @xref{Tracepoints}. When this parameter
23201is used together with @samp{-h}, a fast tracepoint is created.
922fbb7b
AC
23202@end table
23203
23204@subsubheading Result
23205
23206The result is in the form:
23207
23208@smallexample
948d5102
NR
23209^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
23210enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filename}",
ef21caaf
NR
23211fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{threadno},]
23212times="@var{times}"@}
922fbb7b
AC
23213@end smallexample
23214
23215@noindent
948d5102
NR
23216where @var{number} is the @value{GDBN} number for this breakpoint,
23217@var{funcname} is the name of the function where the breakpoint was
23218inserted, @var{filename} is the name of the source file which contains
23219this function, @var{lineno} is the source line number within that file
23220and @var{times} the number of times that the breakpoint has been hit
23221(always 0 for -break-insert but may be greater for -break-info or -break-list
23222which use the same output).
922fbb7b
AC
23223
23224Note: this format is open to change.
23225@c An out-of-band breakpoint instead of part of the result?
23226
23227@subsubheading @value{GDBN} Command
23228
23229The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
23230@samp{hbreak}, @samp{thbreak}, and @samp{rbreak}.
23231
23232@subsubheading Example
23233
23234@smallexample
594fe323 23235(gdb)
922fbb7b 23236-break-insert main
948d5102
NR
23237^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
23238fullname="/home/foo/recursive2.c,line="4",times="0"@}
594fe323 23239(gdb)
922fbb7b 23240-break-insert -t foo
948d5102
NR
23241^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
23242fullname="/home/foo/recursive2.c,line="11",times="0"@}
594fe323 23243(gdb)
922fbb7b
AC
23244-break-list
23245^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
23246hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23247@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23248@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23249@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23250@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23251@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23252body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
23253addr="0x0001072c", func="main",file="recursive2.c",
23254fullname="/home/foo/recursive2.c,"line="4",times="0"@},
922fbb7b 23255bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
948d5102
NR
23256addr="0x00010774",func="foo",file="recursive2.c",
23257fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
594fe323 23258(gdb)
922fbb7b
AC
23259-break-insert -r foo.*
23260~int foo(int, int);
948d5102
NR
23261^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
23262"fullname="/home/foo/recursive2.c",line="11",times="0"@}
594fe323 23263(gdb)
922fbb7b
AC
23264@end smallexample
23265
23266@subheading The @code{-break-list} Command
23267@findex -break-list
23268
23269@subsubheading Synopsis
23270
23271@smallexample
23272 -break-list
23273@end smallexample
23274
23275Displays the list of inserted breakpoints, showing the following fields:
23276
23277@table @samp
23278@item Number
23279number of the breakpoint
23280@item Type
23281type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
23282@item Disposition
23283should the breakpoint be deleted or disabled when it is hit: @samp{keep}
23284or @samp{nokeep}
23285@item Enabled
23286is the breakpoint enabled or no: @samp{y} or @samp{n}
23287@item Address
23288memory location at which the breakpoint is set
23289@item What
23290logical location of the breakpoint, expressed by function name, file
23291name, line number
23292@item Times
23293number of times the breakpoint has been hit
23294@end table
23295
23296If there are no breakpoints or watchpoints, the @code{BreakpointTable}
23297@code{body} field is an empty list.
23298
23299@subsubheading @value{GDBN} Command
23300
23301The corresponding @value{GDBN} command is @samp{info break}.
23302
23303@subsubheading Example
23304
23305@smallexample
594fe323 23306(gdb)
922fbb7b
AC
23307-break-list
23308^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
23309hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23310@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23311@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23312@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23313@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23314@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23315body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
23316addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
23317bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
23318addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
23319line="13",times="0"@}]@}
594fe323 23320(gdb)
922fbb7b
AC
23321@end smallexample
23322
23323Here's an example of the result when there are no breakpoints:
23324
23325@smallexample
594fe323 23326(gdb)
922fbb7b
AC
23327-break-list
23328^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
23329hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23330@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23331@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23332@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23333@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23334@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23335body=[]@}
594fe323 23336(gdb)
922fbb7b
AC
23337@end smallexample
23338
18148017
VP
23339@subheading The @code{-break-passcount} Command
23340@findex -break-passcount
23341
23342@subsubheading Synopsis
23343
23344@smallexample
23345 -break-passcount @var{tracepoint-number} @var{passcount}
23346@end smallexample
23347
23348Set the passcount for tracepoint @var{tracepoint-number} to
23349@var{passcount}. If the breakpoint referred to by @var{tracepoint-number}
23350is not a tracepoint, error is emitted. This corresponds to CLI
23351command @samp{passcount}.
23352
922fbb7b
AC
23353@subheading The @code{-break-watch} Command
23354@findex -break-watch
23355
23356@subsubheading Synopsis
23357
23358@smallexample
23359 -break-watch [ -a | -r ]
23360@end smallexample
23361
23362Create a watchpoint. With the @samp{-a} option it will create an
d3e8051b 23363@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a
922fbb7b 23364read from or on a write to the memory location. With the @samp{-r}
d3e8051b 23365option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will
922fbb7b
AC
23366trigger only when the memory location is accessed for reading. Without
23367either of the options, the watchpoint created is a regular watchpoint,
d3e8051b 23368i.e., it will trigger when the memory location is accessed for writing.
79a6e687 23369@xref{Set Watchpoints, , Setting Watchpoints}.
922fbb7b
AC
23370
23371Note that @samp{-break-list} will report a single list of watchpoints and
23372breakpoints inserted.
23373
23374@subsubheading @value{GDBN} Command
23375
23376The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
23377@samp{rwatch}.
23378
23379@subsubheading Example
23380
23381Setting a watchpoint on a variable in the @code{main} function:
23382
23383@smallexample
594fe323 23384(gdb)
922fbb7b
AC
23385-break-watch x
23386^done,wpt=@{number="2",exp="x"@}
594fe323 23387(gdb)
922fbb7b
AC
23388-exec-continue
23389^running
0869d01b
NR
23390(gdb)
23391*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
922fbb7b 23392value=@{old="-268439212",new="55"@},
76ff342d 23393frame=@{func="main",args=[],file="recursive2.c",
948d5102 23394fullname="/home/foo/bar/recursive2.c",line="5"@}
594fe323 23395(gdb)
922fbb7b
AC
23396@end smallexample
23397
23398Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
23399the program execution twice: first for the variable changing value, then
23400for the watchpoint going out of scope.
23401
23402@smallexample
594fe323 23403(gdb)
922fbb7b
AC
23404-break-watch C
23405^done,wpt=@{number="5",exp="C"@}
594fe323 23406(gdb)
922fbb7b
AC
23407-exec-continue
23408^running
0869d01b
NR
23409(gdb)
23410*stopped,reason="watchpoint-trigger",
922fbb7b
AC
23411wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
23412frame=@{func="callee4",args=[],
76ff342d
DJ
23413file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23414fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 23415(gdb)
922fbb7b
AC
23416-exec-continue
23417^running
0869d01b
NR
23418(gdb)
23419*stopped,reason="watchpoint-scope",wpnum="5",
922fbb7b
AC
23420frame=@{func="callee3",args=[@{name="strarg",
23421value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
23422file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23423fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 23424(gdb)
922fbb7b
AC
23425@end smallexample
23426
23427Listing breakpoints and watchpoints, at different points in the program
23428execution. Note that once the watchpoint goes out of scope, it is
23429deleted.
23430
23431@smallexample
594fe323 23432(gdb)
922fbb7b
AC
23433-break-watch C
23434^done,wpt=@{number="2",exp="C"@}
594fe323 23435(gdb)
922fbb7b
AC
23436-break-list
23437^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
23438hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23439@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23440@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23441@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23442@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23443@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23444body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
23445addr="0x00010734",func="callee4",
948d5102
NR
23446file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23447fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
922fbb7b
AC
23448bkpt=@{number="2",type="watchpoint",disp="keep",
23449enabled="y",addr="",what="C",times="0"@}]@}
594fe323 23450(gdb)
922fbb7b
AC
23451-exec-continue
23452^running
0869d01b
NR
23453(gdb)
23454*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
922fbb7b
AC
23455value=@{old="-276895068",new="3"@},
23456frame=@{func="callee4",args=[],
76ff342d
DJ
23457file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23458fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 23459(gdb)
922fbb7b
AC
23460-break-list
23461^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
23462hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23463@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23464@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23465@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23466@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23467@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23468body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
23469addr="0x00010734",func="callee4",
948d5102
NR
23470file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23471fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
922fbb7b
AC
23472bkpt=@{number="2",type="watchpoint",disp="keep",
23473enabled="y",addr="",what="C",times="-5"@}]@}
594fe323 23474(gdb)
922fbb7b
AC
23475-exec-continue
23476^running
23477^done,reason="watchpoint-scope",wpnum="2",
23478frame=@{func="callee3",args=[@{name="strarg",
23479value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
23480file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23481fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 23482(gdb)
922fbb7b
AC
23483-break-list
23484^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
23485hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
23486@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
23487@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
23488@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
23489@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
23490@{width="40",alignment="2",col_name="what",colhdr="What"@}],
23491body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
23492addr="0x00010734",func="callee4",
948d5102
NR
23493file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23494fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
23495times="1"@}]@}
594fe323 23496(gdb)
922fbb7b
AC
23497@end smallexample
23498
23499@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
23500@node GDB/MI Program Context
23501@section @sc{gdb/mi} Program Context
922fbb7b 23502
a2c02241
NR
23503@subheading The @code{-exec-arguments} Command
23504@findex -exec-arguments
922fbb7b 23505
922fbb7b
AC
23506
23507@subsubheading Synopsis
23508
23509@smallexample
a2c02241 23510 -exec-arguments @var{args}
922fbb7b
AC
23511@end smallexample
23512
a2c02241
NR
23513Set the inferior program arguments, to be used in the next
23514@samp{-exec-run}.
922fbb7b 23515
a2c02241 23516@subsubheading @value{GDBN} Command
922fbb7b 23517
a2c02241 23518The corresponding @value{GDBN} command is @samp{set args}.
922fbb7b 23519
a2c02241 23520@subsubheading Example
922fbb7b 23521
fbc5282e
MK
23522@smallexample
23523(gdb)
23524-exec-arguments -v word
23525^done
23526(gdb)
23527@end smallexample
922fbb7b 23528
a2c02241 23529
9901a55b 23530@ignore
a2c02241
NR
23531@subheading The @code{-exec-show-arguments} Command
23532@findex -exec-show-arguments
23533
23534@subsubheading Synopsis
23535
23536@smallexample
23537 -exec-show-arguments
23538@end smallexample
23539
23540Print the arguments of the program.
922fbb7b
AC
23541
23542@subsubheading @value{GDBN} Command
23543
a2c02241 23544The corresponding @value{GDBN} command is @samp{show args}.
922fbb7b
AC
23545
23546@subsubheading Example
a2c02241 23547N.A.
9901a55b 23548@end ignore
922fbb7b 23549
922fbb7b 23550
a2c02241
NR
23551@subheading The @code{-environment-cd} Command
23552@findex -environment-cd
922fbb7b 23553
a2c02241 23554@subsubheading Synopsis
922fbb7b
AC
23555
23556@smallexample
a2c02241 23557 -environment-cd @var{pathdir}
922fbb7b
AC
23558@end smallexample
23559
a2c02241 23560Set @value{GDBN}'s working directory.
922fbb7b 23561
a2c02241 23562@subsubheading @value{GDBN} Command
922fbb7b 23563
a2c02241
NR
23564The corresponding @value{GDBN} command is @samp{cd}.
23565
23566@subsubheading Example
922fbb7b
AC
23567
23568@smallexample
594fe323 23569(gdb)
a2c02241
NR
23570-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
23571^done
594fe323 23572(gdb)
922fbb7b
AC
23573@end smallexample
23574
23575
a2c02241
NR
23576@subheading The @code{-environment-directory} Command
23577@findex -environment-directory
922fbb7b
AC
23578
23579@subsubheading Synopsis
23580
23581@smallexample
a2c02241 23582 -environment-directory [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
23583@end smallexample
23584
a2c02241
NR
23585Add directories @var{pathdir} to beginning of search path for source files.
23586If the @samp{-r} option is used, the search path is reset to the default
23587search path. If directories @var{pathdir} are supplied in addition to the
23588@samp{-r} option, the search path is first reset and then addition
23589occurs as normal.
23590Multiple directories may be specified, separated by blanks. Specifying
23591multiple directories in a single command
23592results in the directories added to the beginning of the
23593search path in the same order they were presented in the command.
23594If blanks are needed as
23595part of a directory name, double-quotes should be used around
23596the name. In the command output, the path will show up separated
d3e8051b 23597by the system directory-separator character. The directory-separator
a2c02241
NR
23598character must not be used
23599in any directory name.
23600If no directories are specified, the current search path is displayed.
922fbb7b
AC
23601
23602@subsubheading @value{GDBN} Command
23603
a2c02241 23604The corresponding @value{GDBN} command is @samp{dir}.
922fbb7b
AC
23605
23606@subsubheading Example
23607
922fbb7b 23608@smallexample
594fe323 23609(gdb)
a2c02241
NR
23610-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
23611^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 23612(gdb)
a2c02241
NR
23613-environment-directory ""
23614^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 23615(gdb)
a2c02241
NR
23616-environment-directory -r /home/jjohnstn/src/gdb /usr/src
23617^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
594fe323 23618(gdb)
a2c02241
NR
23619-environment-directory -r
23620^done,source-path="$cdir:$cwd"
594fe323 23621(gdb)
922fbb7b
AC
23622@end smallexample
23623
23624
a2c02241
NR
23625@subheading The @code{-environment-path} Command
23626@findex -environment-path
922fbb7b
AC
23627
23628@subsubheading Synopsis
23629
23630@smallexample
a2c02241 23631 -environment-path [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
23632@end smallexample
23633
a2c02241
NR
23634Add directories @var{pathdir} to beginning of search path for object files.
23635If the @samp{-r} option is used, the search path is reset to the original
23636search path that existed at gdb start-up. If directories @var{pathdir} are
23637supplied in addition to the
23638@samp{-r} option, the search path is first reset and then addition
23639occurs as normal.
23640Multiple directories may be specified, separated by blanks. Specifying
23641multiple directories in a single command
23642results in the directories added to the beginning of the
23643search path in the same order they were presented in the command.
23644If blanks are needed as
23645part of a directory name, double-quotes should be used around
23646the name. In the command output, the path will show up separated
d3e8051b 23647by the system directory-separator character. The directory-separator
a2c02241
NR
23648character must not be used
23649in any directory name.
23650If no directories are specified, the current path is displayed.
23651
922fbb7b
AC
23652
23653@subsubheading @value{GDBN} Command
23654
a2c02241 23655The corresponding @value{GDBN} command is @samp{path}.
922fbb7b
AC
23656
23657@subsubheading Example
23658
922fbb7b 23659@smallexample
594fe323 23660(gdb)
a2c02241
NR
23661-environment-path
23662^done,path="/usr/bin"
594fe323 23663(gdb)
a2c02241
NR
23664-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
23665^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
594fe323 23666(gdb)
a2c02241
NR
23667-environment-path -r /usr/local/bin
23668^done,path="/usr/local/bin:/usr/bin"
594fe323 23669(gdb)
922fbb7b
AC
23670@end smallexample
23671
23672
a2c02241
NR
23673@subheading The @code{-environment-pwd} Command
23674@findex -environment-pwd
922fbb7b
AC
23675
23676@subsubheading Synopsis
23677
23678@smallexample
a2c02241 23679 -environment-pwd
922fbb7b
AC
23680@end smallexample
23681
a2c02241 23682Show the current working directory.
922fbb7b 23683
79a6e687 23684@subsubheading @value{GDBN} Command
922fbb7b 23685
a2c02241 23686The corresponding @value{GDBN} command is @samp{pwd}.
922fbb7b
AC
23687
23688@subsubheading Example
23689
922fbb7b 23690@smallexample
594fe323 23691(gdb)
a2c02241
NR
23692-environment-pwd
23693^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
594fe323 23694(gdb)
922fbb7b
AC
23695@end smallexample
23696
a2c02241
NR
23697@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
23698@node GDB/MI Thread Commands
23699@section @sc{gdb/mi} Thread Commands
23700
23701
23702@subheading The @code{-thread-info} Command
23703@findex -thread-info
922fbb7b
AC
23704
23705@subsubheading Synopsis
23706
23707@smallexample
8e8901c5 23708 -thread-info [ @var{thread-id} ]
922fbb7b
AC
23709@end smallexample
23710
8e8901c5
VP
23711Reports information about either a specific thread, if
23712the @var{thread-id} parameter is present, or about all
23713threads. When printing information about all threads,
23714also reports the current thread.
23715
79a6e687 23716@subsubheading @value{GDBN} Command
922fbb7b 23717
8e8901c5
VP
23718The @samp{info thread} command prints the same information
23719about all threads.
922fbb7b
AC
23720
23721@subsubheading Example
922fbb7b
AC
23722
23723@smallexample
8e8901c5
VP
23724-thread-info
23725^done,threads=[
23726@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
c3b108f7 23727 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
8e8901c5
VP
23728@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
23729 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
c3b108f7 23730 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}],
8e8901c5
VP
23731current-thread-id="1"
23732(gdb)
922fbb7b
AC
23733@end smallexample
23734
c3b108f7
VP
23735The @samp{state} field may have the following values:
23736
23737@table @code
23738@item stopped
23739The thread is stopped. Frame information is available for stopped
23740threads.
23741
23742@item running
23743The thread is running. There's no frame information for running
23744threads.
23745
23746@end table
23747
a2c02241
NR
23748@subheading The @code{-thread-list-ids} Command
23749@findex -thread-list-ids
922fbb7b 23750
a2c02241 23751@subsubheading Synopsis
922fbb7b 23752
a2c02241
NR
23753@smallexample
23754 -thread-list-ids
23755@end smallexample
922fbb7b 23756
a2c02241
NR
23757Produces a list of the currently known @value{GDBN} thread ids. At the
23758end of the list it also prints the total number of such threads.
922fbb7b 23759
c3b108f7
VP
23760This command is retained for historical reasons, the
23761@code{-thread-info} command should be used instead.
23762
922fbb7b
AC
23763@subsubheading @value{GDBN} Command
23764
a2c02241 23765Part of @samp{info threads} supplies the same information.
922fbb7b
AC
23766
23767@subsubheading Example
23768
922fbb7b 23769@smallexample
594fe323 23770(gdb)
a2c02241
NR
23771-thread-list-ids
23772^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
592375cd 23773current-thread-id="1",number-of-threads="3"
594fe323 23774(gdb)
922fbb7b
AC
23775@end smallexample
23776
a2c02241
NR
23777
23778@subheading The @code{-thread-select} Command
23779@findex -thread-select
922fbb7b
AC
23780
23781@subsubheading Synopsis
23782
23783@smallexample
a2c02241 23784 -thread-select @var{threadnum}
922fbb7b
AC
23785@end smallexample
23786
a2c02241
NR
23787Make @var{threadnum} the current thread. It prints the number of the new
23788current thread, and the topmost frame for that thread.
922fbb7b 23789
c3b108f7
VP
23790This command is deprecated in favor of explicitly using the
23791@samp{--thread} option to each command.
23792
922fbb7b
AC
23793@subsubheading @value{GDBN} Command
23794
a2c02241 23795The corresponding @value{GDBN} command is @samp{thread}.
922fbb7b
AC
23796
23797@subsubheading Example
922fbb7b
AC
23798
23799@smallexample
594fe323 23800(gdb)
a2c02241
NR
23801-exec-next
23802^running
594fe323 23803(gdb)
a2c02241
NR
23804*stopped,reason="end-stepping-range",thread-id="2",line="187",
23805file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
594fe323 23806(gdb)
a2c02241
NR
23807-thread-list-ids
23808^done,
23809thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
23810number-of-threads="3"
594fe323 23811(gdb)
a2c02241
NR
23812-thread-select 3
23813^done,new-thread-id="3",
23814frame=@{level="0",func="vprintf",
23815args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
23816@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
594fe323 23817(gdb)
922fbb7b
AC
23818@end smallexample
23819
a2c02241
NR
23820@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
23821@node GDB/MI Program Execution
23822@section @sc{gdb/mi} Program Execution
922fbb7b 23823
ef21caaf 23824These are the asynchronous commands which generate the out-of-band
3f94c067 23825record @samp{*stopped}. Currently @value{GDBN} only really executes
ef21caaf
NR
23826asynchronously with remote targets and this interaction is mimicked in
23827other cases.
922fbb7b 23828
922fbb7b
AC
23829@subheading The @code{-exec-continue} Command
23830@findex -exec-continue
23831
23832@subsubheading Synopsis
23833
23834@smallexample
540aa8e7 23835 -exec-continue [--reverse] [--all|--thread-group N]
922fbb7b
AC
23836@end smallexample
23837
540aa8e7
MS
23838Resumes the execution of the inferior program, which will continue
23839to execute until it reaches a debugger stop event. If the
23840@samp{--reverse} option is specified, execution resumes in reverse until
23841it reaches a stop event. Stop events may include
23842@itemize @bullet
23843@item
23844breakpoints or watchpoints
23845@item
23846signals or exceptions
23847@item
23848the end of the process (or its beginning under @samp{--reverse})
23849@item
23850the end or beginning of a replay log if one is being used.
23851@end itemize
23852In all-stop mode (@pxref{All-Stop
23853Mode}), may resume only one thread, or all threads, depending on the
23854value of the @samp{scheduler-locking} variable. If @samp{--all} is
a79b8f6e 23855specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is
540aa8e7
MS
23856ignored in all-stop mode. If the @samp{--thread-group} options is
23857specified, then all threads in that thread group are resumed.
922fbb7b
AC
23858
23859@subsubheading @value{GDBN} Command
23860
23861The corresponding @value{GDBN} corresponding is @samp{continue}.
23862
23863@subsubheading Example
23864
23865@smallexample
23866-exec-continue
23867^running
594fe323 23868(gdb)
922fbb7b 23869@@Hello world
a47ec5fe
AR
23870*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{
23871func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
23872line="13"@}
594fe323 23873(gdb)
922fbb7b
AC
23874@end smallexample
23875
23876
23877@subheading The @code{-exec-finish} Command
23878@findex -exec-finish
23879
23880@subsubheading Synopsis
23881
23882@smallexample
540aa8e7 23883 -exec-finish [--reverse]
922fbb7b
AC
23884@end smallexample
23885
ef21caaf
NR
23886Resumes the execution of the inferior program until the current
23887function is exited. Displays the results returned by the function.
540aa8e7
MS
23888If the @samp{--reverse} option is specified, resumes the reverse
23889execution of the inferior program until the point where current
23890function was called.
922fbb7b
AC
23891
23892@subsubheading @value{GDBN} Command
23893
23894The corresponding @value{GDBN} command is @samp{finish}.
23895
23896@subsubheading Example
23897
23898Function returning @code{void}.
23899
23900@smallexample
23901-exec-finish
23902^running
594fe323 23903(gdb)
922fbb7b
AC
23904@@hello from foo
23905*stopped,reason="function-finished",frame=@{func="main",args=[],
948d5102 23906file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@}
594fe323 23907(gdb)
922fbb7b
AC
23908@end smallexample
23909
23910Function returning other than @code{void}. The name of the internal
23911@value{GDBN} variable storing the result is printed, together with the
23912value itself.
23913
23914@smallexample
23915-exec-finish
23916^running
594fe323 23917(gdb)
922fbb7b
AC
23918*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
23919args=[@{name="a",value="1"],@{name="b",value="9"@}@},
948d5102 23920file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
922fbb7b 23921gdb-result-var="$1",return-value="0"
594fe323 23922(gdb)
922fbb7b
AC
23923@end smallexample
23924
23925
23926@subheading The @code{-exec-interrupt} Command
23927@findex -exec-interrupt
23928
23929@subsubheading Synopsis
23930
23931@smallexample
c3b108f7 23932 -exec-interrupt [--all|--thread-group N]
922fbb7b
AC
23933@end smallexample
23934
ef21caaf
NR
23935Interrupts the background execution of the target. Note how the token
23936associated with the stop message is the one for the execution command
23937that has been interrupted. The token for the interrupt itself only
23938appears in the @samp{^done} output. If the user is trying to
922fbb7b
AC
23939interrupt a non-running program, an error message will be printed.
23940
c3b108f7
VP
23941Note that when asynchronous execution is enabled, this command is
23942asynchronous just like other execution commands. That is, first the
23943@samp{^done} response will be printed, and the target stop will be
23944reported after that using the @samp{*stopped} notification.
23945
23946In non-stop mode, only the context thread is interrupted by default.
a79b8f6e
VP
23947All threads (in all inferiors) will be interrupted if the
23948@samp{--all} option is specified. If the @samp{--thread-group}
23949option is specified, all threads in that group will be interrupted.
c3b108f7 23950
922fbb7b
AC
23951@subsubheading @value{GDBN} Command
23952
23953The corresponding @value{GDBN} command is @samp{interrupt}.
23954
23955@subsubheading Example
23956
23957@smallexample
594fe323 23958(gdb)
922fbb7b
AC
23959111-exec-continue
23960111^running
23961
594fe323 23962(gdb)
922fbb7b
AC
23963222-exec-interrupt
23964222^done
594fe323 23965(gdb)
922fbb7b 23966111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
76ff342d 23967frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
948d5102 23968fullname="/home/foo/bar/try.c",line="13"@}
594fe323 23969(gdb)
922fbb7b 23970
594fe323 23971(gdb)
922fbb7b
AC
23972-exec-interrupt
23973^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
594fe323 23974(gdb)
922fbb7b
AC
23975@end smallexample
23976
83eba9b7
VP
23977@subheading The @code{-exec-jump} Command
23978@findex -exec-jump
23979
23980@subsubheading Synopsis
23981
23982@smallexample
23983 -exec-jump @var{location}
23984@end smallexample
23985
23986Resumes execution of the inferior program at the location specified by
23987parameter. @xref{Specify Location}, for a description of the
23988different forms of @var{location}.
23989
23990@subsubheading @value{GDBN} Command
23991
23992The corresponding @value{GDBN} command is @samp{jump}.
23993
23994@subsubheading Example
23995
23996@smallexample
23997-exec-jump foo.c:10
23998*running,thread-id="all"
23999^running
24000@end smallexample
24001
922fbb7b
AC
24002
24003@subheading The @code{-exec-next} Command
24004@findex -exec-next
24005
24006@subsubheading Synopsis
24007
24008@smallexample
540aa8e7 24009 -exec-next [--reverse]
922fbb7b
AC
24010@end smallexample
24011
ef21caaf
NR
24012Resumes execution of the inferior program, stopping when the beginning
24013of the next source line is reached.
922fbb7b 24014
540aa8e7
MS
24015If the @samp{--reverse} option is specified, resumes reverse execution
24016of the inferior program, stopping at the beginning of the previous
24017source line. If you issue this command on the first line of a
24018function, it will take you back to the caller of that function, to the
24019source line where the function was called.
24020
24021
922fbb7b
AC
24022@subsubheading @value{GDBN} Command
24023
24024The corresponding @value{GDBN} command is @samp{next}.
24025
24026@subsubheading Example
24027
24028@smallexample
24029-exec-next
24030^running
594fe323 24031(gdb)
922fbb7b 24032*stopped,reason="end-stepping-range",line="8",file="hello.c"
594fe323 24033(gdb)
922fbb7b
AC
24034@end smallexample
24035
24036
24037@subheading The @code{-exec-next-instruction} Command
24038@findex -exec-next-instruction
24039
24040@subsubheading Synopsis
24041
24042@smallexample
540aa8e7 24043 -exec-next-instruction [--reverse]
922fbb7b
AC
24044@end smallexample
24045
ef21caaf
NR
24046Executes one machine instruction. If the instruction is a function
24047call, continues until the function returns. If the program stops at an
24048instruction in the middle of a source line, the address will be
24049printed as well.
922fbb7b 24050
540aa8e7
MS
24051If the @samp{--reverse} option is specified, resumes reverse execution
24052of the inferior program, stopping at the previous instruction. If the
24053previously executed instruction was a return from another function,
24054it will continue to execute in reverse until the call to that function
24055(from the current stack frame) is reached.
24056
922fbb7b
AC
24057@subsubheading @value{GDBN} Command
24058
24059The corresponding @value{GDBN} command is @samp{nexti}.
24060
24061@subsubheading Example
24062
24063@smallexample
594fe323 24064(gdb)
922fbb7b
AC
24065-exec-next-instruction
24066^running
24067
594fe323 24068(gdb)
922fbb7b
AC
24069*stopped,reason="end-stepping-range",
24070addr="0x000100d4",line="5",file="hello.c"
594fe323 24071(gdb)
922fbb7b
AC
24072@end smallexample
24073
24074
24075@subheading The @code{-exec-return} Command
24076@findex -exec-return
24077
24078@subsubheading Synopsis
24079
24080@smallexample
24081 -exec-return
24082@end smallexample
24083
24084Makes current function return immediately. Doesn't execute the inferior.
24085Displays the new current frame.
24086
24087@subsubheading @value{GDBN} Command
24088
24089The corresponding @value{GDBN} command is @samp{return}.
24090
24091@subsubheading Example
24092
24093@smallexample
594fe323 24094(gdb)
922fbb7b
AC
24095200-break-insert callee4
24096200^done,bkpt=@{number="1",addr="0x00010734",
24097file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 24098(gdb)
922fbb7b
AC
24099000-exec-run
24100000^running
594fe323 24101(gdb)
a47ec5fe 24102000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
922fbb7b 24103frame=@{func="callee4",args=[],
76ff342d
DJ
24104file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
24105fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 24106(gdb)
922fbb7b
AC
24107205-break-delete
24108205^done
594fe323 24109(gdb)
922fbb7b
AC
24110111-exec-return
24111111^done,frame=@{level="0",func="callee3",
24112args=[@{name="strarg",
24113value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
24114file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
24115fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 24116(gdb)
922fbb7b
AC
24117@end smallexample
24118
24119
24120@subheading The @code{-exec-run} Command
24121@findex -exec-run
24122
24123@subsubheading Synopsis
24124
24125@smallexample
a79b8f6e 24126 -exec-run [--all | --thread-group N]
922fbb7b
AC
24127@end smallexample
24128
ef21caaf
NR
24129Starts execution of the inferior from the beginning. The inferior
24130executes until either a breakpoint is encountered or the program
24131exits. In the latter case the output will include an exit code, if
24132the program has exited exceptionally.
922fbb7b 24133
a79b8f6e
VP
24134When no option is specified, the current inferior is started. If the
24135@samp{--thread-group} option is specified, it should refer to a thread
24136group of type @samp{process}, and that thread group will be started.
24137If the @samp{--all} option is specified, then all inferiors will be started.
24138
922fbb7b
AC
24139@subsubheading @value{GDBN} Command
24140
24141The corresponding @value{GDBN} command is @samp{run}.
24142
ef21caaf 24143@subsubheading Examples
922fbb7b
AC
24144
24145@smallexample
594fe323 24146(gdb)
922fbb7b
AC
24147-break-insert main
24148^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
594fe323 24149(gdb)
922fbb7b
AC
24150-exec-run
24151^running
594fe323 24152(gdb)
a47ec5fe 24153*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
76ff342d 24154frame=@{func="main",args=[],file="recursive2.c",
948d5102 24155fullname="/home/foo/bar/recursive2.c",line="4"@}
594fe323 24156(gdb)
922fbb7b
AC
24157@end smallexample
24158
ef21caaf
NR
24159@noindent
24160Program exited normally:
24161
24162@smallexample
594fe323 24163(gdb)
ef21caaf
NR
24164-exec-run
24165^running
594fe323 24166(gdb)
ef21caaf
NR
24167x = 55
24168*stopped,reason="exited-normally"
594fe323 24169(gdb)
ef21caaf
NR
24170@end smallexample
24171
24172@noindent
24173Program exited exceptionally:
24174
24175@smallexample
594fe323 24176(gdb)
ef21caaf
NR
24177-exec-run
24178^running
594fe323 24179(gdb)
ef21caaf
NR
24180x = 55
24181*stopped,reason="exited",exit-code="01"
594fe323 24182(gdb)
ef21caaf
NR
24183@end smallexample
24184
24185Another way the program can terminate is if it receives a signal such as
24186@code{SIGINT}. In this case, @sc{gdb/mi} displays this:
24187
24188@smallexample
594fe323 24189(gdb)
ef21caaf
NR
24190*stopped,reason="exited-signalled",signal-name="SIGINT",
24191signal-meaning="Interrupt"
24192@end smallexample
24193
922fbb7b 24194
a2c02241
NR
24195@c @subheading -exec-signal
24196
24197
24198@subheading The @code{-exec-step} Command
24199@findex -exec-step
922fbb7b
AC
24200
24201@subsubheading Synopsis
24202
24203@smallexample
540aa8e7 24204 -exec-step [--reverse]
922fbb7b
AC
24205@end smallexample
24206
a2c02241
NR
24207Resumes execution of the inferior program, stopping when the beginning
24208of the next source line is reached, if the next source line is not a
24209function call. If it is, stop at the first instruction of the called
540aa8e7
MS
24210function. If the @samp{--reverse} option is specified, resumes reverse
24211execution of the inferior program, stopping at the beginning of the
24212previously executed source line.
922fbb7b
AC
24213
24214@subsubheading @value{GDBN} Command
24215
a2c02241 24216The corresponding @value{GDBN} command is @samp{step}.
922fbb7b
AC
24217
24218@subsubheading Example
24219
24220Stepping into a function:
24221
24222@smallexample
24223-exec-step
24224^running
594fe323 24225(gdb)
922fbb7b
AC
24226*stopped,reason="end-stepping-range",
24227frame=@{func="foo",args=[@{name="a",value="10"@},
76ff342d 24228@{name="b",value="0"@}],file="recursive2.c",
948d5102 24229fullname="/home/foo/bar/recursive2.c",line="11"@}
594fe323 24230(gdb)
922fbb7b
AC
24231@end smallexample
24232
24233Regular stepping:
24234
24235@smallexample
24236-exec-step
24237^running
594fe323 24238(gdb)
922fbb7b 24239*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
594fe323 24240(gdb)
922fbb7b
AC
24241@end smallexample
24242
24243
24244@subheading The @code{-exec-step-instruction} Command
24245@findex -exec-step-instruction
24246
24247@subsubheading Synopsis
24248
24249@smallexample
540aa8e7 24250 -exec-step-instruction [--reverse]
922fbb7b
AC
24251@end smallexample
24252
540aa8e7
MS
24253Resumes the inferior which executes one machine instruction. If the
24254@samp{--reverse} option is specified, resumes reverse execution of the
24255inferior program, stopping at the previously executed instruction.
24256The output, once @value{GDBN} has stopped, will vary depending on
24257whether we have stopped in the middle of a source line or not. In the
24258former case, the address at which the program stopped will be printed
24259as well.
922fbb7b
AC
24260
24261@subsubheading @value{GDBN} Command
24262
24263The corresponding @value{GDBN} command is @samp{stepi}.
24264
24265@subsubheading Example
24266
24267@smallexample
594fe323 24268(gdb)
922fbb7b
AC
24269-exec-step-instruction
24270^running
24271
594fe323 24272(gdb)
922fbb7b 24273*stopped,reason="end-stepping-range",
76ff342d 24274frame=@{func="foo",args=[],file="try.c",
948d5102 24275fullname="/home/foo/bar/try.c",line="10"@}
594fe323 24276(gdb)
922fbb7b
AC
24277-exec-step-instruction
24278^running
24279
594fe323 24280(gdb)
922fbb7b 24281*stopped,reason="end-stepping-range",
76ff342d 24282frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
948d5102 24283fullname="/home/foo/bar/try.c",line="10"@}
594fe323 24284(gdb)
922fbb7b
AC
24285@end smallexample
24286
24287
24288@subheading The @code{-exec-until} Command
24289@findex -exec-until
24290
24291@subsubheading Synopsis
24292
24293@smallexample
24294 -exec-until [ @var{location} ]
24295@end smallexample
24296
ef21caaf
NR
24297Executes the inferior until the @var{location} specified in the
24298argument is reached. If there is no argument, the inferior executes
24299until a source line greater than the current one is reached. The
24300reason for stopping in this case will be @samp{location-reached}.
922fbb7b
AC
24301
24302@subsubheading @value{GDBN} Command
24303
24304The corresponding @value{GDBN} command is @samp{until}.
24305
24306@subsubheading Example
24307
24308@smallexample
594fe323 24309(gdb)
922fbb7b
AC
24310-exec-until recursive2.c:6
24311^running
594fe323 24312(gdb)
922fbb7b
AC
24313x = 55
24314*stopped,reason="location-reached",frame=@{func="main",args=[],
948d5102 24315file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@}
594fe323 24316(gdb)
922fbb7b
AC
24317@end smallexample
24318
24319@ignore
24320@subheading -file-clear
24321Is this going away????
24322@end ignore
24323
351ff01a 24324@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
24325@node GDB/MI Stack Manipulation
24326@section @sc{gdb/mi} Stack Manipulation Commands
351ff01a 24327
922fbb7b 24328
a2c02241
NR
24329@subheading The @code{-stack-info-frame} Command
24330@findex -stack-info-frame
922fbb7b
AC
24331
24332@subsubheading Synopsis
24333
24334@smallexample
a2c02241 24335 -stack-info-frame
922fbb7b
AC
24336@end smallexample
24337
a2c02241 24338Get info on the selected frame.
922fbb7b
AC
24339
24340@subsubheading @value{GDBN} Command
24341
a2c02241
NR
24342The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
24343(without arguments).
922fbb7b
AC
24344
24345@subsubheading Example
24346
24347@smallexample
594fe323 24348(gdb)
a2c02241
NR
24349-stack-info-frame
24350^done,frame=@{level="1",addr="0x0001076c",func="callee3",
24351file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
24352fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
594fe323 24353(gdb)
922fbb7b
AC
24354@end smallexample
24355
a2c02241
NR
24356@subheading The @code{-stack-info-depth} Command
24357@findex -stack-info-depth
922fbb7b
AC
24358
24359@subsubheading Synopsis
24360
24361@smallexample
a2c02241 24362 -stack-info-depth [ @var{max-depth} ]
922fbb7b
AC
24363@end smallexample
24364
a2c02241
NR
24365Return the depth of the stack. If the integer argument @var{max-depth}
24366is specified, do not count beyond @var{max-depth} frames.
922fbb7b
AC
24367
24368@subsubheading @value{GDBN} Command
24369
a2c02241 24370There's no equivalent @value{GDBN} command.
922fbb7b
AC
24371
24372@subsubheading Example
24373
a2c02241
NR
24374For a stack with frame levels 0 through 11:
24375
922fbb7b 24376@smallexample
594fe323 24377(gdb)
a2c02241
NR
24378-stack-info-depth
24379^done,depth="12"
594fe323 24380(gdb)
a2c02241
NR
24381-stack-info-depth 4
24382^done,depth="4"
594fe323 24383(gdb)
a2c02241
NR
24384-stack-info-depth 12
24385^done,depth="12"
594fe323 24386(gdb)
a2c02241
NR
24387-stack-info-depth 11
24388^done,depth="11"
594fe323 24389(gdb)
a2c02241
NR
24390-stack-info-depth 13
24391^done,depth="12"
594fe323 24392(gdb)
922fbb7b
AC
24393@end smallexample
24394
a2c02241
NR
24395@subheading The @code{-stack-list-arguments} Command
24396@findex -stack-list-arguments
922fbb7b
AC
24397
24398@subsubheading Synopsis
24399
24400@smallexample
3afae151 24401 -stack-list-arguments @var{print-values}
a2c02241 24402 [ @var{low-frame} @var{high-frame} ]
922fbb7b
AC
24403@end smallexample
24404
a2c02241
NR
24405Display a list of the arguments for the frames between @var{low-frame}
24406and @var{high-frame} (inclusive). If @var{low-frame} and
2f1acb09
VP
24407@var{high-frame} are not provided, list the arguments for the whole
24408call stack. If the two arguments are equal, show the single frame
24409at the corresponding level. It is an error if @var{low-frame} is
24410larger than the actual number of frames. On the other hand,
24411@var{high-frame} may be larger than the actual number of frames, in
24412which case only existing frames will be returned.
a2c02241 24413
3afae151
VP
24414If @var{print-values} is 0 or @code{--no-values}, print only the names of
24415the variables; if it is 1 or @code{--all-values}, print also their
24416values; and if it is 2 or @code{--simple-values}, print the name,
24417type and value for simple data types, and the name and type for arrays,
24418structures and unions.
922fbb7b 24419
b3372f91
VP
24420Use of this command to obtain arguments in a single frame is
24421deprecated in favor of the @samp{-stack-list-variables} command.
24422
922fbb7b
AC
24423@subsubheading @value{GDBN} Command
24424
a2c02241
NR
24425@value{GDBN} does not have an equivalent command. @code{gdbtk} has a
24426@samp{gdb_get_args} command which partially overlaps with the
24427functionality of @samp{-stack-list-arguments}.
922fbb7b
AC
24428
24429@subsubheading Example
922fbb7b 24430
a2c02241 24431@smallexample
594fe323 24432(gdb)
a2c02241
NR
24433-stack-list-frames
24434^done,
24435stack=[
24436frame=@{level="0",addr="0x00010734",func="callee4",
24437file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
24438fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
24439frame=@{level="1",addr="0x0001076c",func="callee3",
24440file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
24441fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
24442frame=@{level="2",addr="0x0001078c",func="callee2",
24443file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
24444fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
24445frame=@{level="3",addr="0x000107b4",func="callee1",
24446file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
24447fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
24448frame=@{level="4",addr="0x000107e0",func="main",
24449file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
24450fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
594fe323 24451(gdb)
a2c02241
NR
24452-stack-list-arguments 0
24453^done,
24454stack-args=[
24455frame=@{level="0",args=[]@},
24456frame=@{level="1",args=[name="strarg"]@},
24457frame=@{level="2",args=[name="intarg",name="strarg"]@},
24458frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
24459frame=@{level="4",args=[]@}]
594fe323 24460(gdb)
a2c02241
NR
24461-stack-list-arguments 1
24462^done,
24463stack-args=[
24464frame=@{level="0",args=[]@},
24465frame=@{level="1",
24466 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
24467frame=@{level="2",args=[
24468@{name="intarg",value="2"@},
24469@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
24470@{frame=@{level="3",args=[
24471@{name="intarg",value="2"@},
24472@{name="strarg",value="0x11940 \"A string argument.\""@},
24473@{name="fltarg",value="3.5"@}]@},
24474frame=@{level="4",args=[]@}]
594fe323 24475(gdb)
a2c02241
NR
24476-stack-list-arguments 0 2 2
24477^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
594fe323 24478(gdb)
a2c02241
NR
24479-stack-list-arguments 1 2 2
24480^done,stack-args=[frame=@{level="2",
24481args=[@{name="intarg",value="2"@},
24482@{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
594fe323 24483(gdb)
a2c02241
NR
24484@end smallexample
24485
24486@c @subheading -stack-list-exception-handlers
922fbb7b 24487
a2c02241
NR
24488
24489@subheading The @code{-stack-list-frames} Command
24490@findex -stack-list-frames
1abaf70c
BR
24491
24492@subsubheading Synopsis
24493
24494@smallexample
a2c02241 24495 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
1abaf70c
BR
24496@end smallexample
24497
a2c02241
NR
24498List the frames currently on the stack. For each frame it displays the
24499following info:
24500
24501@table @samp
24502@item @var{level}
d3e8051b 24503The frame number, 0 being the topmost frame, i.e., the innermost function.
a2c02241
NR
24504@item @var{addr}
24505The @code{$pc} value for that frame.
24506@item @var{func}
24507Function name.
24508@item @var{file}
24509File name of the source file where the function lives.
24510@item @var{line}
24511Line number corresponding to the @code{$pc}.
24512@end table
24513
24514If invoked without arguments, this command prints a backtrace for the
24515whole stack. If given two integer arguments, it shows the frames whose
24516levels are between the two arguments (inclusive). If the two arguments
2ab1eb7a
VP
24517are equal, it shows the single frame at the corresponding level. It is
24518an error if @var{low-frame} is larger than the actual number of
a5451f4e 24519frames. On the other hand, @var{high-frame} may be larger than the
2ab1eb7a 24520actual number of frames, in which case only existing frames will be returned.
1abaf70c
BR
24521
24522@subsubheading @value{GDBN} Command
24523
a2c02241 24524The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
1abaf70c
BR
24525
24526@subsubheading Example
24527
a2c02241
NR
24528Full stack backtrace:
24529
1abaf70c 24530@smallexample
594fe323 24531(gdb)
a2c02241
NR
24532-stack-list-frames
24533^done,stack=
24534[frame=@{level="0",addr="0x0001076c",func="foo",
24535 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@},
24536frame=@{level="1",addr="0x000107a4",func="foo",
24537 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24538frame=@{level="2",addr="0x000107a4",func="foo",
24539 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24540frame=@{level="3",addr="0x000107a4",func="foo",
24541 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24542frame=@{level="4",addr="0x000107a4",func="foo",
24543 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24544frame=@{level="5",addr="0x000107a4",func="foo",
24545 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24546frame=@{level="6",addr="0x000107a4",func="foo",
24547 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24548frame=@{level="7",addr="0x000107a4",func="foo",
24549 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24550frame=@{level="8",addr="0x000107a4",func="foo",
24551 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24552frame=@{level="9",addr="0x000107a4",func="foo",
24553 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24554frame=@{level="10",addr="0x000107a4",func="foo",
24555 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24556frame=@{level="11",addr="0x00010738",func="main",
24557 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}]
594fe323 24558(gdb)
1abaf70c
BR
24559@end smallexample
24560
a2c02241 24561Show frames between @var{low_frame} and @var{high_frame}:
1abaf70c 24562
a2c02241 24563@smallexample
594fe323 24564(gdb)
a2c02241
NR
24565-stack-list-frames 3 5
24566^done,stack=
24567[frame=@{level="3",addr="0x000107a4",func="foo",
24568 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24569frame=@{level="4",addr="0x000107a4",func="foo",
24570 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
24571frame=@{level="5",addr="0x000107a4",func="foo",
24572 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 24573(gdb)
a2c02241 24574@end smallexample
922fbb7b 24575
a2c02241 24576Show a single frame:
922fbb7b
AC
24577
24578@smallexample
594fe323 24579(gdb)
a2c02241
NR
24580-stack-list-frames 3 3
24581^done,stack=
24582[frame=@{level="3",addr="0x000107a4",func="foo",
24583 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 24584(gdb)
922fbb7b
AC
24585@end smallexample
24586
922fbb7b 24587
a2c02241
NR
24588@subheading The @code{-stack-list-locals} Command
24589@findex -stack-list-locals
57c22c6c 24590
a2c02241 24591@subsubheading Synopsis
922fbb7b
AC
24592
24593@smallexample
a2c02241 24594 -stack-list-locals @var{print-values}
922fbb7b
AC
24595@end smallexample
24596
a2c02241
NR
24597Display the local variable names for the selected frame. If
24598@var{print-values} is 0 or @code{--no-values}, print only the names of
24599the variables; if it is 1 or @code{--all-values}, print also their
24600values; and if it is 2 or @code{--simple-values}, print the name,
3afae151 24601type and value for simple data types, and the name and type for arrays,
a2c02241
NR
24602structures and unions. In this last case, a frontend can immediately
24603display the value of simple data types and create variable objects for
d3e8051b 24604other data types when the user wishes to explore their values in
a2c02241 24605more detail.
922fbb7b 24606
b3372f91
VP
24607This command is deprecated in favor of the
24608@samp{-stack-list-variables} command.
24609
922fbb7b
AC
24610@subsubheading @value{GDBN} Command
24611
a2c02241 24612@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
922fbb7b
AC
24613
24614@subsubheading Example
922fbb7b
AC
24615
24616@smallexample
594fe323 24617(gdb)
a2c02241
NR
24618-stack-list-locals 0
24619^done,locals=[name="A",name="B",name="C"]
594fe323 24620(gdb)
a2c02241
NR
24621-stack-list-locals --all-values
24622^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
24623 @{name="C",value="@{1, 2, 3@}"@}]
24624-stack-list-locals --simple-values
24625^done,locals=[@{name="A",type="int",value="1"@},
24626 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
594fe323 24627(gdb)
922fbb7b
AC
24628@end smallexample
24629
b3372f91
VP
24630@subheading The @code{-stack-list-variables} Command
24631@findex -stack-list-variables
24632
24633@subsubheading Synopsis
24634
24635@smallexample
24636 -stack-list-variables @var{print-values}
24637@end smallexample
24638
24639Display the names of local variables and function arguments for the selected frame. If
24640@var{print-values} is 0 or @code{--no-values}, print only the names of
24641the variables; if it is 1 or @code{--all-values}, print also their
24642values; and if it is 2 or @code{--simple-values}, print the name,
3afae151 24643type and value for simple data types, and the name and type for arrays,
b3372f91
VP
24644structures and unions.
24645
24646@subsubheading Example
24647
24648@smallexample
24649(gdb)
24650-stack-list-variables --thread 1 --frame 0 --all-values
4f412fd0 24651^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}]
b3372f91
VP
24652(gdb)
24653@end smallexample
24654
922fbb7b 24655
a2c02241
NR
24656@subheading The @code{-stack-select-frame} Command
24657@findex -stack-select-frame
922fbb7b
AC
24658
24659@subsubheading Synopsis
24660
24661@smallexample
a2c02241 24662 -stack-select-frame @var{framenum}
922fbb7b
AC
24663@end smallexample
24664
a2c02241
NR
24665Change the selected frame. Select a different frame @var{framenum} on
24666the stack.
922fbb7b 24667
c3b108f7
VP
24668This command in deprecated in favor of passing the @samp{--frame}
24669option to every command.
24670
922fbb7b
AC
24671@subsubheading @value{GDBN} Command
24672
a2c02241
NR
24673The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
24674@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
922fbb7b
AC
24675
24676@subsubheading Example
24677
24678@smallexample
594fe323 24679(gdb)
a2c02241 24680-stack-select-frame 2
922fbb7b 24681^done
594fe323 24682(gdb)
922fbb7b
AC
24683@end smallexample
24684
24685@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
24686@node GDB/MI Variable Objects
24687@section @sc{gdb/mi} Variable Objects
922fbb7b 24688
a1b5960f 24689@ignore
922fbb7b 24690
a2c02241 24691@subheading Motivation for Variable Objects in @sc{gdb/mi}
922fbb7b 24692
a2c02241
NR
24693For the implementation of a variable debugger window (locals, watched
24694expressions, etc.), we are proposing the adaptation of the existing code
24695used by @code{Insight}.
922fbb7b 24696
a2c02241 24697The two main reasons for that are:
922fbb7b 24698
a2c02241
NR
24699@enumerate 1
24700@item
24701It has been proven in practice (it is already on its second generation).
922fbb7b 24702
a2c02241
NR
24703@item
24704It will shorten development time (needless to say how important it is
24705now).
24706@end enumerate
922fbb7b 24707
a2c02241
NR
24708The original interface was designed to be used by Tcl code, so it was
24709slightly changed so it could be used through @sc{gdb/mi}. This section
24710describes the @sc{gdb/mi} operations that will be available and gives some
24711hints about their use.
922fbb7b 24712
a2c02241
NR
24713@emph{Note}: In addition to the set of operations described here, we
24714expect the @sc{gui} implementation of a variable window to require, at
24715least, the following operations:
922fbb7b 24716
a2c02241
NR
24717@itemize @bullet
24718@item @code{-gdb-show} @code{output-radix}
24719@item @code{-stack-list-arguments}
24720@item @code{-stack-list-locals}
24721@item @code{-stack-select-frame}
24722@end itemize
922fbb7b 24723
a1b5960f
VP
24724@end ignore
24725
c8b2f53c 24726@subheading Introduction to Variable Objects
922fbb7b 24727
a2c02241 24728@cindex variable objects in @sc{gdb/mi}
c8b2f53c
VP
24729
24730Variable objects are "object-oriented" MI interface for examining and
24731changing values of expressions. Unlike some other MI interfaces that
24732work with expressions, variable objects are specifically designed for
24733simple and efficient presentation in the frontend. A variable object
24734is identified by string name. When a variable object is created, the
24735frontend specifies the expression for that variable object. The
24736expression can be a simple variable, or it can be an arbitrary complex
24737expression, and can even involve CPU registers. After creating a
24738variable object, the frontend can invoke other variable object
24739operations---for example to obtain or change the value of a variable
24740object, or to change display format.
24741
24742Variable objects have hierarchical tree structure. Any variable object
24743that corresponds to a composite type, such as structure in C, has
24744a number of child variable objects, for example corresponding to each
24745element of a structure. A child variable object can itself have
24746children, recursively. Recursion ends when we reach
25d5ea92
VP
24747leaf variable objects, which always have built-in types. Child variable
24748objects are created only by explicit request, so if a frontend
24749is not interested in the children of a particular variable object, no
24750child will be created.
c8b2f53c
VP
24751
24752For a leaf variable object it is possible to obtain its value as a
24753string, or set the value from a string. String value can be also
24754obtained for a non-leaf variable object, but it's generally a string
24755that only indicates the type of the object, and does not list its
24756contents. Assignment to a non-leaf variable object is not allowed.
24757
24758A frontend does not need to read the values of all variable objects each time
24759the program stops. Instead, MI provides an update command that lists all
24760variable objects whose values has changed since the last update
24761operation. This considerably reduces the amount of data that must
25d5ea92
VP
24762be transferred to the frontend. As noted above, children variable
24763objects are created on demand, and only leaf variable objects have a
24764real value. As result, gdb will read target memory only for leaf
24765variables that frontend has created.
24766
24767The automatic update is not always desirable. For example, a frontend
24768might want to keep a value of some expression for future reference,
24769and never update it. For another example, fetching memory is
24770relatively slow for embedded targets, so a frontend might want
24771to disable automatic update for the variables that are either not
24772visible on the screen, or ``closed''. This is possible using so
24773called ``frozen variable objects''. Such variable objects are never
24774implicitly updated.
922fbb7b 24775
c3b108f7
VP
24776Variable objects can be either @dfn{fixed} or @dfn{floating}. For the
24777fixed variable object, the expression is parsed when the variable
24778object is created, including associating identifiers to specific
24779variables. The meaning of expression never changes. For a floating
24780variable object the values of variables whose names appear in the
24781expressions are re-evaluated every time in the context of the current
24782frame. Consider this example:
24783
24784@smallexample
24785void do_work(...)
24786@{
24787 struct work_state state;
24788
24789 if (...)
24790 do_work(...);
24791@}
24792@end smallexample
24793
24794If a fixed variable object for the @code{state} variable is created in
24795this function, and we enter the recursive call, the the variable
24796object will report the value of @code{state} in the top-level
24797@code{do_work} invocation. On the other hand, a floating variable
24798object will report the value of @code{state} in the current frame.
24799
24800If an expression specified when creating a fixed variable object
24801refers to a local variable, the variable object becomes bound to the
24802thread and frame in which the variable object is created. When such
24803variable object is updated, @value{GDBN} makes sure that the
24804thread/frame combination the variable object is bound to still exists,
24805and re-evaluates the variable object in context of that thread/frame.
24806
a2c02241
NR
24807The following is the complete set of @sc{gdb/mi} operations defined to
24808access this functionality:
922fbb7b 24809
a2c02241
NR
24810@multitable @columnfractions .4 .6
24811@item @strong{Operation}
24812@tab @strong{Description}
922fbb7b 24813
0cc7d26f
TT
24814@item @code{-enable-pretty-printing}
24815@tab enable Python-based pretty-printing
a2c02241
NR
24816@item @code{-var-create}
24817@tab create a variable object
24818@item @code{-var-delete}
22d8a470 24819@tab delete the variable object and/or its children
a2c02241
NR
24820@item @code{-var-set-format}
24821@tab set the display format of this variable
24822@item @code{-var-show-format}
24823@tab show the display format of this variable
24824@item @code{-var-info-num-children}
24825@tab tells how many children this object has
24826@item @code{-var-list-children}
24827@tab return a list of the object's children
24828@item @code{-var-info-type}
24829@tab show the type of this variable object
24830@item @code{-var-info-expression}
02142340
VP
24831@tab print parent-relative expression that this variable object represents
24832@item @code{-var-info-path-expression}
24833@tab print full expression that this variable object represents
a2c02241
NR
24834@item @code{-var-show-attributes}
24835@tab is this variable editable? does it exist here?
24836@item @code{-var-evaluate-expression}
24837@tab get the value of this variable
24838@item @code{-var-assign}
24839@tab set the value of this variable
24840@item @code{-var-update}
24841@tab update the variable and its children
25d5ea92
VP
24842@item @code{-var-set-frozen}
24843@tab set frozeness attribute
0cc7d26f
TT
24844@item @code{-var-set-update-range}
24845@tab set range of children to display on update
a2c02241 24846@end multitable
922fbb7b 24847
a2c02241
NR
24848In the next subsection we describe each operation in detail and suggest
24849how it can be used.
922fbb7b 24850
a2c02241 24851@subheading Description And Use of Operations on Variable Objects
922fbb7b 24852
0cc7d26f
TT
24853@subheading The @code{-enable-pretty-printing} Command
24854@findex -enable-pretty-printing
24855
24856@smallexample
24857-enable-pretty-printing
24858@end smallexample
24859
24860@value{GDBN} allows Python-based visualizers to affect the output of the
24861MI variable object commands. However, because there was no way to
24862implement this in a fully backward-compatible way, a front end must
24863request that this functionality be enabled.
24864
24865Once enabled, this feature cannot be disabled.
24866
24867Note that if Python support has not been compiled into @value{GDBN},
24868this command will still succeed (and do nothing).
24869
f43030c4
TT
24870This feature is currently (as of @value{GDBN} 7.0) experimental, and
24871may work differently in future versions of @value{GDBN}.
24872
a2c02241
NR
24873@subheading The @code{-var-create} Command
24874@findex -var-create
ef21caaf 24875
a2c02241 24876@subsubheading Synopsis
ef21caaf 24877
a2c02241
NR
24878@smallexample
24879 -var-create @{@var{name} | "-"@}
c3b108f7 24880 @{@var{frame-addr} | "*" | "@@"@} @var{expression}
a2c02241
NR
24881@end smallexample
24882
24883This operation creates a variable object, which allows the monitoring of
24884a variable, the result of an expression, a memory cell or a CPU
24885register.
ef21caaf 24886
a2c02241
NR
24887The @var{name} parameter is the string by which the object can be
24888referenced. It must be unique. If @samp{-} is specified, the varobj
24889system will generate a string ``varNNNNNN'' automatically. It will be
c3b108f7 24890unique provided that one does not specify @var{name} of that format.
a2c02241 24891The command fails if a duplicate name is found.
ef21caaf 24892
a2c02241
NR
24893The frame under which the expression should be evaluated can be
24894specified by @var{frame-addr}. A @samp{*} indicates that the current
c3b108f7
VP
24895frame should be used. A @samp{@@} indicates that a floating variable
24896object must be created.
922fbb7b 24897
a2c02241
NR
24898@var{expression} is any expression valid on the current language set (must not
24899begin with a @samp{*}), or one of the following:
922fbb7b 24900
a2c02241
NR
24901@itemize @bullet
24902@item
24903@samp{*@var{addr}}, where @var{addr} is the address of a memory cell
922fbb7b 24904
a2c02241
NR
24905@item
24906@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
922fbb7b 24907
a2c02241
NR
24908@item
24909@samp{$@var{regname}} --- a CPU register name
24910@end itemize
922fbb7b 24911
0cc7d26f
TT
24912@cindex dynamic varobj
24913A varobj's contents may be provided by a Python-based pretty-printer. In this
24914case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs
24915have slightly different semantics in some cases. If the
24916@code{-enable-pretty-printing} command is not sent, then @value{GDBN}
24917will never create a dynamic varobj. This ensures backward
24918compatibility for existing clients.
24919
a2c02241 24920@subsubheading Result
922fbb7b 24921
0cc7d26f
TT
24922This operation returns attributes of the newly-created varobj. These
24923are:
24924
24925@table @samp
24926@item name
24927The name of the varobj.
24928
24929@item numchild
24930The number of children of the varobj. This number is not necessarily
24931reliable for a dynamic varobj. Instead, you must examine the
24932@samp{has_more} attribute.
24933
24934@item value
24935The varobj's scalar value. For a varobj whose type is some sort of
24936aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value
24937will not be interesting.
24938
24939@item type
24940The varobj's type. This is a string representation of the type, as
24941would be printed by the @value{GDBN} CLI.
24942
24943@item thread-id
24944If a variable object is bound to a specific thread, then this is the
24945thread's identifier.
24946
24947@item has_more
24948For a dynamic varobj, this indicates whether there appear to be any
24949children available. For a non-dynamic varobj, this will be 0.
24950
24951@item dynamic
24952This attribute will be present and have the value @samp{1} if the
24953varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
24954then this attribute will not be present.
24955
24956@item displayhint
24957A dynamic varobj can supply a display hint to the front end. The
24958value comes directly from the Python pretty-printer object's
24959@code{display_hint} method. @xref{Pretty Printing}.
24960@end table
24961
24962Typical output will look like this:
922fbb7b
AC
24963
24964@smallexample
0cc7d26f
TT
24965 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}",
24966 has_more="@var{has_more}"
dcaaae04
NR
24967@end smallexample
24968
a2c02241
NR
24969
24970@subheading The @code{-var-delete} Command
24971@findex -var-delete
922fbb7b
AC
24972
24973@subsubheading Synopsis
24974
24975@smallexample
22d8a470 24976 -var-delete [ -c ] @var{name}
922fbb7b
AC
24977@end smallexample
24978
a2c02241 24979Deletes a previously created variable object and all of its children.
22d8a470 24980With the @samp{-c} option, just deletes the children.
922fbb7b 24981
a2c02241 24982Returns an error if the object @var{name} is not found.
922fbb7b 24983
922fbb7b 24984
a2c02241
NR
24985@subheading The @code{-var-set-format} Command
24986@findex -var-set-format
922fbb7b 24987
a2c02241 24988@subsubheading Synopsis
922fbb7b
AC
24989
24990@smallexample
a2c02241 24991 -var-set-format @var{name} @var{format-spec}
922fbb7b
AC
24992@end smallexample
24993
a2c02241
NR
24994Sets the output format for the value of the object @var{name} to be
24995@var{format-spec}.
24996
de051565 24997@anchor{-var-set-format}
a2c02241
NR
24998The syntax for the @var{format-spec} is as follows:
24999
25000@smallexample
25001 @var{format-spec} @expansion{}
25002 @{binary | decimal | hexadecimal | octal | natural@}
25003@end smallexample
25004
c8b2f53c
VP
25005The natural format is the default format choosen automatically
25006based on the variable type (like decimal for an @code{int}, hex
25007for pointers, etc.).
25008
25009For a variable with children, the format is set only on the
25010variable itself, and the children are not affected.
a2c02241
NR
25011
25012@subheading The @code{-var-show-format} Command
25013@findex -var-show-format
922fbb7b
AC
25014
25015@subsubheading Synopsis
25016
25017@smallexample
a2c02241 25018 -var-show-format @var{name}
922fbb7b
AC
25019@end smallexample
25020
a2c02241 25021Returns the format used to display the value of the object @var{name}.
922fbb7b 25022
a2c02241
NR
25023@smallexample
25024 @var{format} @expansion{}
25025 @var{format-spec}
25026@end smallexample
922fbb7b 25027
922fbb7b 25028
a2c02241
NR
25029@subheading The @code{-var-info-num-children} Command
25030@findex -var-info-num-children
25031
25032@subsubheading Synopsis
25033
25034@smallexample
25035 -var-info-num-children @var{name}
25036@end smallexample
25037
25038Returns the number of children of a variable object @var{name}:
25039
25040@smallexample
25041 numchild=@var{n}
25042@end smallexample
25043
0cc7d26f
TT
25044Note that this number is not completely reliable for a dynamic varobj.
25045It will return the current number of children, but more children may
25046be available.
25047
a2c02241
NR
25048
25049@subheading The @code{-var-list-children} Command
25050@findex -var-list-children
25051
25052@subsubheading Synopsis
25053
25054@smallexample
0cc7d26f 25055 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}]
a2c02241 25056@end smallexample
b569d230 25057@anchor{-var-list-children}
a2c02241
NR
25058
25059Return a list of the children of the specified variable object and
25060create variable objects for them, if they do not already exist. With
25061a single argument or if @var{print-values} has a value for of 0 or
25062@code{--no-values}, print only the names of the variables; if
25063@var{print-values} is 1 or @code{--all-values}, also print their
25064values; and if it is 2 or @code{--simple-values} print the name and
25065value for simple data types and just the name for arrays, structures
25066and unions.
922fbb7b 25067
0cc7d26f
TT
25068@var{from} and @var{to}, if specified, indicate the range of children
25069to report. If @var{from} or @var{to} is less than zero, the range is
25070reset and all children will be reported. Otherwise, children starting
25071at @var{from} (zero-based) and up to and excluding @var{to} will be
25072reported.
25073
25074If a child range is requested, it will only affect the current call to
25075@code{-var-list-children}, but not future calls to @code{-var-update}.
25076For this, you must instead use @code{-var-set-update-range}. The
25077intent of this approach is to enable a front end to implement any
25078update approach it likes; for example, scrolling a view may cause the
25079front end to request more children with @code{-var-list-children}, and
25080then the front end could call @code{-var-set-update-range} with a
25081different range to ensure that future updates are restricted to just
25082the visible items.
25083
b569d230
EZ
25084For each child the following results are returned:
25085
25086@table @var
25087
25088@item name
25089Name of the variable object created for this child.
25090
25091@item exp
25092The expression to be shown to the user by the front end to designate this child.
25093For example this may be the name of a structure member.
25094
0cc7d26f
TT
25095For a dynamic varobj, this value cannot be used to form an
25096expression. There is no way to do this at all with a dynamic varobj.
25097
b569d230
EZ
25098For C/C@t{++} structures there are several pseudo children returned to
25099designate access qualifiers. For these pseudo children @var{exp} is
25100@samp{public}, @samp{private}, or @samp{protected}. In this case the
25101type and value are not present.
25102
0cc7d26f
TT
25103A dynamic varobj will not report the access qualifying
25104pseudo-children, regardless of the language. This information is not
25105available at all with a dynamic varobj.
25106
b569d230 25107@item numchild
0cc7d26f
TT
25108Number of children this child has. For a dynamic varobj, this will be
251090.
b569d230
EZ
25110
25111@item type
25112The type of the child.
25113
25114@item value
25115If values were requested, this is the value.
25116
25117@item thread-id
25118If this variable object is associated with a thread, this is the thread id.
25119Otherwise this result is not present.
25120
25121@item frozen
25122If the variable object is frozen, this variable will be present with a value of 1.
25123@end table
25124
0cc7d26f
TT
25125The result may have its own attributes:
25126
25127@table @samp
25128@item displayhint
25129A dynamic varobj can supply a display hint to the front end. The
25130value comes directly from the Python pretty-printer object's
25131@code{display_hint} method. @xref{Pretty Printing}.
25132
25133@item has_more
25134This is an integer attribute which is nonzero if there are children
25135remaining after the end of the selected range.
25136@end table
25137
922fbb7b
AC
25138@subsubheading Example
25139
25140@smallexample
594fe323 25141(gdb)
a2c02241 25142 -var-list-children n
b569d230 25143 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 25144 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
594fe323 25145(gdb)
a2c02241 25146 -var-list-children --all-values n
b569d230 25147 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 25148 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
922fbb7b
AC
25149@end smallexample
25150
922fbb7b 25151
a2c02241
NR
25152@subheading The @code{-var-info-type} Command
25153@findex -var-info-type
922fbb7b 25154
a2c02241
NR
25155@subsubheading Synopsis
25156
25157@smallexample
25158 -var-info-type @var{name}
25159@end smallexample
25160
25161Returns the type of the specified variable @var{name}. The type is
25162returned as a string in the same format as it is output by the
25163@value{GDBN} CLI:
25164
25165@smallexample
25166 type=@var{typename}
25167@end smallexample
25168
25169
25170@subheading The @code{-var-info-expression} Command
25171@findex -var-info-expression
922fbb7b
AC
25172
25173@subsubheading Synopsis
25174
25175@smallexample
a2c02241 25176 -var-info-expression @var{name}
922fbb7b
AC
25177@end smallexample
25178
02142340
VP
25179Returns a string that is suitable for presenting this
25180variable object in user interface. The string is generally
25181not valid expression in the current language, and cannot be evaluated.
25182
25183For example, if @code{a} is an array, and variable object
25184@code{A} was created for @code{a}, then we'll get this output:
922fbb7b 25185
a2c02241 25186@smallexample
02142340
VP
25187(gdb) -var-info-expression A.1
25188^done,lang="C",exp="1"
a2c02241 25189@end smallexample
922fbb7b 25190
a2c02241 25191@noindent
02142340
VP
25192Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}.
25193
25194Note that the output of the @code{-var-list-children} command also
25195includes those expressions, so the @code{-var-info-expression} command
25196is of limited use.
25197
25198@subheading The @code{-var-info-path-expression} Command
25199@findex -var-info-path-expression
25200
25201@subsubheading Synopsis
25202
25203@smallexample
25204 -var-info-path-expression @var{name}
25205@end smallexample
25206
25207Returns an expression that can be evaluated in the current
25208context and will yield the same value that a variable object has.
25209Compare this with the @code{-var-info-expression} command, which
25210result can be used only for UI presentation. Typical use of
25211the @code{-var-info-path-expression} command is creating a
25212watchpoint from a variable object.
25213
0cc7d26f
TT
25214This command is currently not valid for children of a dynamic varobj,
25215and will give an error when invoked on one.
25216
02142340
VP
25217For example, suppose @code{C} is a C@t{++} class, derived from class
25218@code{Base}, and that the @code{Base} class has a member called
25219@code{m_size}. Assume a variable @code{c} is has the type of
25220@code{C} and a variable object @code{C} was created for variable
25221@code{c}. Then, we'll get this output:
25222@smallexample
25223(gdb) -var-info-path-expression C.Base.public.m_size
25224^done,path_expr=((Base)c).m_size)
25225@end smallexample
922fbb7b 25226
a2c02241
NR
25227@subheading The @code{-var-show-attributes} Command
25228@findex -var-show-attributes
922fbb7b 25229
a2c02241 25230@subsubheading Synopsis
922fbb7b 25231
a2c02241
NR
25232@smallexample
25233 -var-show-attributes @var{name}
25234@end smallexample
922fbb7b 25235
a2c02241 25236List attributes of the specified variable object @var{name}:
922fbb7b
AC
25237
25238@smallexample
a2c02241 25239 status=@var{attr} [ ( ,@var{attr} )* ]
922fbb7b
AC
25240@end smallexample
25241
a2c02241
NR
25242@noindent
25243where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
25244
25245@subheading The @code{-var-evaluate-expression} Command
25246@findex -var-evaluate-expression
25247
25248@subsubheading Synopsis
25249
25250@smallexample
de051565 25251 -var-evaluate-expression [-f @var{format-spec}] @var{name}
a2c02241
NR
25252@end smallexample
25253
25254Evaluates the expression that is represented by the specified variable
de051565
MK
25255object and returns its value as a string. The format of the string
25256can be specified with the @samp{-f} option. The possible values of
25257this option are the same as for @code{-var-set-format}
25258(@pxref{-var-set-format}). If the @samp{-f} option is not specified,
25259the current display format will be used. The current display format
25260can be changed using the @code{-var-set-format} command.
a2c02241
NR
25261
25262@smallexample
25263 value=@var{value}
25264@end smallexample
25265
25266Note that one must invoke @code{-var-list-children} for a variable
25267before the value of a child variable can be evaluated.
25268
25269@subheading The @code{-var-assign} Command
25270@findex -var-assign
25271
25272@subsubheading Synopsis
25273
25274@smallexample
25275 -var-assign @var{name} @var{expression}
25276@end smallexample
25277
25278Assigns the value of @var{expression} to the variable object specified
25279by @var{name}. The object must be @samp{editable}. If the variable's
25280value is altered by the assign, the variable will show up in any
25281subsequent @code{-var-update} list.
25282
25283@subsubheading Example
922fbb7b
AC
25284
25285@smallexample
594fe323 25286(gdb)
a2c02241
NR
25287-var-assign var1 3
25288^done,value="3"
594fe323 25289(gdb)
a2c02241
NR
25290-var-update *
25291^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
594fe323 25292(gdb)
922fbb7b
AC
25293@end smallexample
25294
a2c02241
NR
25295@subheading The @code{-var-update} Command
25296@findex -var-update
25297
25298@subsubheading Synopsis
25299
25300@smallexample
25301 -var-update [@var{print-values}] @{@var{name} | "*"@}
25302@end smallexample
25303
c8b2f53c
VP
25304Reevaluate the expressions corresponding to the variable object
25305@var{name} and all its direct and indirect children, and return the
36ece8b3
NR
25306list of variable objects whose values have changed; @var{name} must
25307be a root variable object. Here, ``changed'' means that the result of
25308@code{-var-evaluate-expression} before and after the
25309@code{-var-update} is different. If @samp{*} is used as the variable
9f708cb2
VP
25310object names, all existing variable objects are updated, except
25311for frozen ones (@pxref{-var-set-frozen}). The option
36ece8b3 25312@var{print-values} determines whether both names and values, or just
de051565 25313names are printed. The possible values of this option are the same
36ece8b3
NR
25314as for @code{-var-list-children} (@pxref{-var-list-children}). It is
25315recommended to use the @samp{--all-values} option, to reduce the
25316number of MI commands needed on each program stop.
c8b2f53c 25317
c3b108f7
VP
25318With the @samp{*} parameter, if a variable object is bound to a
25319currently running thread, it will not be updated, without any
25320diagnostic.
a2c02241 25321
0cc7d26f
TT
25322If @code{-var-set-update-range} was previously used on a varobj, then
25323only the selected range of children will be reported.
922fbb7b 25324
0cc7d26f
TT
25325@code{-var-update} reports all the changed varobjs in a tuple named
25326@samp{changelist}.
25327
25328Each item in the change list is itself a tuple holding:
25329
25330@table @samp
25331@item name
25332The name of the varobj.
25333
25334@item value
25335If values were requested for this update, then this field will be
25336present and will hold the value of the varobj.
922fbb7b 25337
0cc7d26f 25338@item in_scope
9f708cb2 25339@anchor{-var-update}
0cc7d26f 25340This field is a string which may take one of three values:
36ece8b3
NR
25341
25342@table @code
25343@item "true"
25344The variable object's current value is valid.
25345
25346@item "false"
25347The variable object does not currently hold a valid value but it may
25348hold one in the future if its associated expression comes back into
25349scope.
25350
25351@item "invalid"
25352The variable object no longer holds a valid value.
25353This can occur when the executable file being debugged has changed,
25354either through recompilation or by using the @value{GDBN} @code{file}
25355command. The front end should normally choose to delete these variable
25356objects.
25357@end table
25358
25359In the future new values may be added to this list so the front should
25360be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}.
25361
0cc7d26f
TT
25362@item type_changed
25363This is only present if the varobj is still valid. If the type
25364changed, then this will be the string @samp{true}; otherwise it will
25365be @samp{false}.
25366
25367@item new_type
25368If the varobj's type changed, then this field will be present and will
25369hold the new type.
25370
25371@item new_num_children
25372For a dynamic varobj, if the number of children changed, or if the
25373type changed, this will be the new number of children.
25374
25375The @samp{numchild} field in other varobj responses is generally not
25376valid for a dynamic varobj -- it will show the number of children that
25377@value{GDBN} knows about, but because dynamic varobjs lazily
25378instantiate their children, this will not reflect the number of
25379children which may be available.
25380
25381The @samp{new_num_children} attribute only reports changes to the
25382number of children known by @value{GDBN}. This is the only way to
25383detect whether an update has removed children (which necessarily can
25384only happen at the end of the update range).
25385
25386@item displayhint
25387The display hint, if any.
25388
25389@item has_more
25390This is an integer value, which will be 1 if there are more children
25391available outside the varobj's update range.
25392
25393@item dynamic
25394This attribute will be present and have the value @samp{1} if the
25395varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
25396then this attribute will not be present.
25397
25398@item new_children
25399If new children were added to a dynamic varobj within the selected
25400update range (as set by @code{-var-set-update-range}), then they will
25401be listed in this attribute.
25402@end table
25403
25404@subsubheading Example
25405
25406@smallexample
25407(gdb)
25408-var-assign var1 3
25409^done,value="3"
25410(gdb)
25411-var-update --all-values var1
25412^done,changelist=[@{name="var1",value="3",in_scope="true",
25413type_changed="false"@}]
25414(gdb)
25415@end smallexample
25416
25d5ea92
VP
25417@subheading The @code{-var-set-frozen} Command
25418@findex -var-set-frozen
9f708cb2 25419@anchor{-var-set-frozen}
25d5ea92
VP
25420
25421@subsubheading Synopsis
25422
25423@smallexample
9f708cb2 25424 -var-set-frozen @var{name} @var{flag}
25d5ea92
VP
25425@end smallexample
25426
9f708cb2 25427Set the frozenness flag on the variable object @var{name}. The
25d5ea92 25428@var{flag} parameter should be either @samp{1} to make the variable
9f708cb2 25429frozen or @samp{0} to make it unfrozen. If a variable object is
25d5ea92 25430frozen, then neither itself, nor any of its children, are
9f708cb2 25431implicitly updated by @code{-var-update} of
25d5ea92
VP
25432a parent variable or by @code{-var-update *}. Only
25433@code{-var-update} of the variable itself will update its value and
25434values of its children. After a variable object is unfrozen, it is
25435implicitly updated by all subsequent @code{-var-update} operations.
25436Unfreezing a variable does not update it, only subsequent
25437@code{-var-update} does.
25438
25439@subsubheading Example
25440
25441@smallexample
25442(gdb)
25443-var-set-frozen V 1
25444^done
25445(gdb)
25446@end smallexample
25447
0cc7d26f
TT
25448@subheading The @code{-var-set-update-range} command
25449@findex -var-set-update-range
25450@anchor{-var-set-update-range}
25451
25452@subsubheading Synopsis
25453
25454@smallexample
25455 -var-set-update-range @var{name} @var{from} @var{to}
25456@end smallexample
25457
25458Set the range of children to be returned by future invocations of
25459@code{-var-update}.
25460
25461@var{from} and @var{to} indicate the range of children to report. If
25462@var{from} or @var{to} is less than zero, the range is reset and all
25463children will be reported. Otherwise, children starting at @var{from}
25464(zero-based) and up to and excluding @var{to} will be reported.
25465
25466@subsubheading Example
25467
25468@smallexample
25469(gdb)
25470-var-set-update-range V 1 2
25471^done
25472@end smallexample
25473
b6313243
TT
25474@subheading The @code{-var-set-visualizer} command
25475@findex -var-set-visualizer
25476@anchor{-var-set-visualizer}
25477
25478@subsubheading Synopsis
25479
25480@smallexample
25481 -var-set-visualizer @var{name} @var{visualizer}
25482@end smallexample
25483
25484Set a visualizer for the variable object @var{name}.
25485
25486@var{visualizer} is the visualizer to use. The special value
25487@samp{None} means to disable any visualizer in use.
25488
25489If not @samp{None}, @var{visualizer} must be a Python expression.
25490This expression must evaluate to a callable object which accepts a
25491single argument. @value{GDBN} will call this object with the value of
25492the varobj @var{name} as an argument (this is done so that the same
25493Python pretty-printing code can be used for both the CLI and MI).
25494When called, this object must return an object which conforms to the
25495pretty-printing interface (@pxref{Pretty Printing}).
25496
25497The pre-defined function @code{gdb.default_visualizer} may be used to
25498select a visualizer by following the built-in process
25499(@pxref{Selecting Pretty-Printers}). This is done automatically when
25500a varobj is created, and so ordinarily is not needed.
25501
25502This feature is only available if Python support is enabled. The MI
25503command @code{-list-features} (@pxref{GDB/MI Miscellaneous Commands})
25504can be used to check this.
25505
25506@subsubheading Example
25507
25508Resetting the visualizer:
25509
25510@smallexample
25511(gdb)
25512-var-set-visualizer V None
25513^done
25514@end smallexample
25515
25516Reselecting the default (type-based) visualizer:
25517
25518@smallexample
25519(gdb)
25520-var-set-visualizer V gdb.default_visualizer
25521^done
25522@end smallexample
25523
25524Suppose @code{SomeClass} is a visualizer class. A lambda expression
25525can be used to instantiate this class for a varobj:
25526
25527@smallexample
25528(gdb)
25529-var-set-visualizer V "lambda val: SomeClass()"
25530^done
25531@end smallexample
25d5ea92 25532
a2c02241
NR
25533@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25534@node GDB/MI Data Manipulation
25535@section @sc{gdb/mi} Data Manipulation
922fbb7b 25536
a2c02241
NR
25537@cindex data manipulation, in @sc{gdb/mi}
25538@cindex @sc{gdb/mi}, data manipulation
25539This section describes the @sc{gdb/mi} commands that manipulate data:
25540examine memory and registers, evaluate expressions, etc.
25541
25542@c REMOVED FROM THE INTERFACE.
25543@c @subheading -data-assign
25544@c Change the value of a program variable. Plenty of side effects.
79a6e687 25545@c @subsubheading GDB Command
a2c02241
NR
25546@c set variable
25547@c @subsubheading Example
25548@c N.A.
25549
25550@subheading The @code{-data-disassemble} Command
25551@findex -data-disassemble
922fbb7b
AC
25552
25553@subsubheading Synopsis
25554
25555@smallexample
a2c02241
NR
25556 -data-disassemble
25557 [ -s @var{start-addr} -e @var{end-addr} ]
25558 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
25559 -- @var{mode}
922fbb7b
AC
25560@end smallexample
25561
a2c02241
NR
25562@noindent
25563Where:
25564
25565@table @samp
25566@item @var{start-addr}
25567is the beginning address (or @code{$pc})
25568@item @var{end-addr}
25569is the end address
25570@item @var{filename}
25571is the name of the file to disassemble
25572@item @var{linenum}
25573is the line number to disassemble around
25574@item @var{lines}
d3e8051b 25575is the number of disassembly lines to be produced. If it is -1,
a2c02241
NR
25576the whole function will be disassembled, in case no @var{end-addr} is
25577specified. If @var{end-addr} is specified as a non-zero value, and
25578@var{lines} is lower than the number of disassembly lines between
25579@var{start-addr} and @var{end-addr}, only @var{lines} lines are
25580displayed; if @var{lines} is higher than the number of lines between
25581@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
25582are displayed.
25583@item @var{mode}
25584is either 0 (meaning only disassembly) or 1 (meaning mixed source and
25585disassembly).
25586@end table
25587
25588@subsubheading Result
25589
25590The output for each instruction is composed of four fields:
25591
25592@itemize @bullet
25593@item Address
25594@item Func-name
25595@item Offset
25596@item Instruction
25597@end itemize
25598
25599Note that whatever included in the instruction field, is not manipulated
d3e8051b 25600directly by @sc{gdb/mi}, i.e., it is not possible to adjust its format.
922fbb7b
AC
25601
25602@subsubheading @value{GDBN} Command
25603
a2c02241 25604There's no direct mapping from this command to the CLI.
922fbb7b
AC
25605
25606@subsubheading Example
25607
a2c02241
NR
25608Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
25609
922fbb7b 25610@smallexample
594fe323 25611(gdb)
a2c02241
NR
25612-data-disassemble -s $pc -e "$pc + 20" -- 0
25613^done,
25614asm_insns=[
25615@{address="0x000107c0",func-name="main",offset="4",
25616inst="mov 2, %o0"@},
25617@{address="0x000107c4",func-name="main",offset="8",
25618inst="sethi %hi(0x11800), %o2"@},
25619@{address="0x000107c8",func-name="main",offset="12",
25620inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
25621@{address="0x000107cc",func-name="main",offset="16",
25622inst="sethi %hi(0x11800), %o2"@},
25623@{address="0x000107d0",func-name="main",offset="20",
25624inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
594fe323 25625(gdb)
a2c02241
NR
25626@end smallexample
25627
25628Disassemble the whole @code{main} function. Line 32 is part of
25629@code{main}.
25630
25631@smallexample
25632-data-disassemble -f basics.c -l 32 -- 0
25633^done,asm_insns=[
25634@{address="0x000107bc",func-name="main",offset="0",
25635inst="save %sp, -112, %sp"@},
25636@{address="0x000107c0",func-name="main",offset="4",
25637inst="mov 2, %o0"@},
25638@{address="0x000107c4",func-name="main",offset="8",
25639inst="sethi %hi(0x11800), %o2"@},
25640[@dots{}]
25641@{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
25642@{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
594fe323 25643(gdb)
922fbb7b
AC
25644@end smallexample
25645
a2c02241 25646Disassemble 3 instructions from the start of @code{main}:
922fbb7b 25647
a2c02241 25648@smallexample
594fe323 25649(gdb)
a2c02241
NR
25650-data-disassemble -f basics.c -l 32 -n 3 -- 0
25651^done,asm_insns=[
25652@{address="0x000107bc",func-name="main",offset="0",
25653inst="save %sp, -112, %sp"@},
25654@{address="0x000107c0",func-name="main",offset="4",
25655inst="mov 2, %o0"@},
25656@{address="0x000107c4",func-name="main",offset="8",
25657inst="sethi %hi(0x11800), %o2"@}]
594fe323 25658(gdb)
a2c02241
NR
25659@end smallexample
25660
25661Disassemble 3 instructions from the start of @code{main} in mixed mode:
25662
25663@smallexample
594fe323 25664(gdb)
a2c02241
NR
25665-data-disassemble -f basics.c -l 32 -n 3 -- 1
25666^done,asm_insns=[
25667src_and_asm_line=@{line="31",
25668file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
25669 testsuite/gdb.mi/basics.c",line_asm_insn=[
25670@{address="0x000107bc",func-name="main",offset="0",
25671inst="save %sp, -112, %sp"@}]@},
25672src_and_asm_line=@{line="32",
25673file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
25674 testsuite/gdb.mi/basics.c",line_asm_insn=[
25675@{address="0x000107c0",func-name="main",offset="4",
25676inst="mov 2, %o0"@},
25677@{address="0x000107c4",func-name="main",offset="8",
25678inst="sethi %hi(0x11800), %o2"@}]@}]
594fe323 25679(gdb)
a2c02241
NR
25680@end smallexample
25681
25682
25683@subheading The @code{-data-evaluate-expression} Command
25684@findex -data-evaluate-expression
922fbb7b
AC
25685
25686@subsubheading Synopsis
25687
25688@smallexample
a2c02241 25689 -data-evaluate-expression @var{expr}
922fbb7b
AC
25690@end smallexample
25691
a2c02241
NR
25692Evaluate @var{expr} as an expression. The expression could contain an
25693inferior function call. The function call will execute synchronously.
25694If the expression contains spaces, it must be enclosed in double quotes.
922fbb7b
AC
25695
25696@subsubheading @value{GDBN} Command
25697
a2c02241
NR
25698The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
25699@samp{call}. In @code{gdbtk} only, there's a corresponding
25700@samp{gdb_eval} command.
922fbb7b
AC
25701
25702@subsubheading Example
25703
a2c02241
NR
25704In the following example, the numbers that precede the commands are the
25705@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
25706Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
25707output.
25708
922fbb7b 25709@smallexample
a2c02241
NR
25710211-data-evaluate-expression A
25711211^done,value="1"
594fe323 25712(gdb)
a2c02241
NR
25713311-data-evaluate-expression &A
25714311^done,value="0xefffeb7c"
594fe323 25715(gdb)
a2c02241
NR
25716411-data-evaluate-expression A+3
25717411^done,value="4"
594fe323 25718(gdb)
a2c02241
NR
25719511-data-evaluate-expression "A + 3"
25720511^done,value="4"
594fe323 25721(gdb)
a2c02241 25722@end smallexample
922fbb7b
AC
25723
25724
a2c02241
NR
25725@subheading The @code{-data-list-changed-registers} Command
25726@findex -data-list-changed-registers
922fbb7b
AC
25727
25728@subsubheading Synopsis
25729
25730@smallexample
a2c02241 25731 -data-list-changed-registers
922fbb7b
AC
25732@end smallexample
25733
a2c02241 25734Display a list of the registers that have changed.
922fbb7b
AC
25735
25736@subsubheading @value{GDBN} Command
25737
a2c02241
NR
25738@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
25739has the corresponding command @samp{gdb_changed_register_list}.
922fbb7b
AC
25740
25741@subsubheading Example
922fbb7b 25742
a2c02241 25743On a PPC MBX board:
922fbb7b
AC
25744
25745@smallexample
594fe323 25746(gdb)
a2c02241
NR
25747-exec-continue
25748^running
922fbb7b 25749
594fe323 25750(gdb)
a47ec5fe
AR
25751*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{
25752func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
25753line="5"@}
594fe323 25754(gdb)
a2c02241
NR
25755-data-list-changed-registers
25756^done,changed-registers=["0","1","2","4","5","6","7","8","9",
25757"10","11","13","14","15","16","17","18","19","20","21","22","23",
25758"24","25","26","27","28","30","31","64","65","66","67","69"]
594fe323 25759(gdb)
a2c02241 25760@end smallexample
922fbb7b
AC
25761
25762
a2c02241
NR
25763@subheading The @code{-data-list-register-names} Command
25764@findex -data-list-register-names
922fbb7b
AC
25765
25766@subsubheading Synopsis
25767
25768@smallexample
a2c02241 25769 -data-list-register-names [ ( @var{regno} )+ ]
922fbb7b
AC
25770@end smallexample
25771
a2c02241
NR
25772Show a list of register names for the current target. If no arguments
25773are given, it shows a list of the names of all the registers. If
25774integer numbers are given as arguments, it will print a list of the
25775names of the registers corresponding to the arguments. To ensure
25776consistency between a register name and its number, the output list may
25777include empty register names.
922fbb7b
AC
25778
25779@subsubheading @value{GDBN} Command
25780
a2c02241
NR
25781@value{GDBN} does not have a command which corresponds to
25782@samp{-data-list-register-names}. In @code{gdbtk} there is a
25783corresponding command @samp{gdb_regnames}.
922fbb7b
AC
25784
25785@subsubheading Example
922fbb7b 25786
a2c02241
NR
25787For the PPC MBX board:
25788@smallexample
594fe323 25789(gdb)
a2c02241
NR
25790-data-list-register-names
25791^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
25792"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
25793"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
25794"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
25795"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
25796"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
25797"", "pc","ps","cr","lr","ctr","xer"]
594fe323 25798(gdb)
a2c02241
NR
25799-data-list-register-names 1 2 3
25800^done,register-names=["r1","r2","r3"]
594fe323 25801(gdb)
a2c02241 25802@end smallexample
922fbb7b 25803
a2c02241
NR
25804@subheading The @code{-data-list-register-values} Command
25805@findex -data-list-register-values
922fbb7b
AC
25806
25807@subsubheading Synopsis
25808
25809@smallexample
a2c02241 25810 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
922fbb7b
AC
25811@end smallexample
25812
a2c02241
NR
25813Display the registers' contents. @var{fmt} is the format according to
25814which the registers' contents are to be returned, followed by an optional
25815list of numbers specifying the registers to display. A missing list of
25816numbers indicates that the contents of all the registers must be returned.
25817
25818Allowed formats for @var{fmt} are:
25819
25820@table @code
25821@item x
25822Hexadecimal
25823@item o
25824Octal
25825@item t
25826Binary
25827@item d
25828Decimal
25829@item r
25830Raw
25831@item N
25832Natural
25833@end table
922fbb7b
AC
25834
25835@subsubheading @value{GDBN} Command
25836
a2c02241
NR
25837The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
25838all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
922fbb7b
AC
25839
25840@subsubheading Example
922fbb7b 25841
a2c02241
NR
25842For a PPC MBX board (note: line breaks are for readability only, they
25843don't appear in the actual output):
25844
25845@smallexample
594fe323 25846(gdb)
a2c02241
NR
25847-data-list-register-values r 64 65
25848^done,register-values=[@{number="64",value="0xfe00a300"@},
25849@{number="65",value="0x00029002"@}]
594fe323 25850(gdb)
a2c02241
NR
25851-data-list-register-values x
25852^done,register-values=[@{number="0",value="0xfe0043c8"@},
25853@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
25854@{number="3",value="0x0"@},@{number="4",value="0xa"@},
25855@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
25856@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
25857@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
25858@{number="11",value="0x1"@},@{number="12",value="0x0"@},
25859@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
25860@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
25861@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
25862@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
25863@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
25864@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
25865@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
25866@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
25867@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
25868@{number="31",value="0x0"@},@{number="32",value="0x0"@},
25869@{number="33",value="0x0"@},@{number="34",value="0x0"@},
25870@{number="35",value="0x0"@},@{number="36",value="0x0"@},
25871@{number="37",value="0x0"@},@{number="38",value="0x0"@},
25872@{number="39",value="0x0"@},@{number="40",value="0x0"@},
25873@{number="41",value="0x0"@},@{number="42",value="0x0"@},
25874@{number="43",value="0x0"@},@{number="44",value="0x0"@},
25875@{number="45",value="0x0"@},@{number="46",value="0x0"@},
25876@{number="47",value="0x0"@},@{number="48",value="0x0"@},
25877@{number="49",value="0x0"@},@{number="50",value="0x0"@},
25878@{number="51",value="0x0"@},@{number="52",value="0x0"@},
25879@{number="53",value="0x0"@},@{number="54",value="0x0"@},
25880@{number="55",value="0x0"@},@{number="56",value="0x0"@},
25881@{number="57",value="0x0"@},@{number="58",value="0x0"@},
25882@{number="59",value="0x0"@},@{number="60",value="0x0"@},
25883@{number="61",value="0x0"@},@{number="62",value="0x0"@},
25884@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
25885@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
25886@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
25887@{number="69",value="0x20002b03"@}]
594fe323 25888(gdb)
a2c02241 25889@end smallexample
922fbb7b 25890
a2c02241
NR
25891
25892@subheading The @code{-data-read-memory} Command
25893@findex -data-read-memory
922fbb7b
AC
25894
25895@subsubheading Synopsis
25896
25897@smallexample
a2c02241
NR
25898 -data-read-memory [ -o @var{byte-offset} ]
25899 @var{address} @var{word-format} @var{word-size}
25900 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
922fbb7b
AC
25901@end smallexample
25902
a2c02241
NR
25903@noindent
25904where:
922fbb7b 25905
a2c02241
NR
25906@table @samp
25907@item @var{address}
25908An expression specifying the address of the first memory word to be
25909read. Complex expressions containing embedded white space should be
25910quoted using the C convention.
922fbb7b 25911
a2c02241
NR
25912@item @var{word-format}
25913The format to be used to print the memory words. The notation is the
25914same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
79a6e687 25915,Output Formats}).
922fbb7b 25916
a2c02241
NR
25917@item @var{word-size}
25918The size of each memory word in bytes.
922fbb7b 25919
a2c02241
NR
25920@item @var{nr-rows}
25921The number of rows in the output table.
922fbb7b 25922
a2c02241
NR
25923@item @var{nr-cols}
25924The number of columns in the output table.
922fbb7b 25925
a2c02241
NR
25926@item @var{aschar}
25927If present, indicates that each row should include an @sc{ascii} dump. The
25928value of @var{aschar} is used as a padding character when a byte is not a
25929member of the printable @sc{ascii} character set (printable @sc{ascii}
25930characters are those whose code is between 32 and 126, inclusively).
922fbb7b 25931
a2c02241
NR
25932@item @var{byte-offset}
25933An offset to add to the @var{address} before fetching memory.
25934@end table
922fbb7b 25935
a2c02241
NR
25936This command displays memory contents as a table of @var{nr-rows} by
25937@var{nr-cols} words, each word being @var{word-size} bytes. In total,
25938@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
25939(returned as @samp{total-bytes}). Should less than the requested number
25940of bytes be returned by the target, the missing words are identified
25941using @samp{N/A}. The number of bytes read from the target is returned
25942in @samp{nr-bytes} and the starting address used to read memory in
25943@samp{addr}.
25944
25945The address of the next/previous row or page is available in
25946@samp{next-row} and @samp{prev-row}, @samp{next-page} and
25947@samp{prev-page}.
922fbb7b
AC
25948
25949@subsubheading @value{GDBN} Command
25950
a2c02241
NR
25951The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
25952@samp{gdb_get_mem} memory read command.
922fbb7b
AC
25953
25954@subsubheading Example
32e7087d 25955
a2c02241
NR
25956Read six bytes of memory starting at @code{bytes+6} but then offset by
25957@code{-6} bytes. Format as three rows of two columns. One byte per
25958word. Display each word in hex.
32e7087d
JB
25959
25960@smallexample
594fe323 25961(gdb)
a2c02241
NR
259629-data-read-memory -o -6 -- bytes+6 x 1 3 2
259639^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
25964next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
25965prev-page="0x0000138a",memory=[
25966@{addr="0x00001390",data=["0x00","0x01"]@},
25967@{addr="0x00001392",data=["0x02","0x03"]@},
25968@{addr="0x00001394",data=["0x04","0x05"]@}]
594fe323 25969(gdb)
32e7087d
JB
25970@end smallexample
25971
a2c02241
NR
25972Read two bytes of memory starting at address @code{shorts + 64} and
25973display as a single word formatted in decimal.
32e7087d 25974
32e7087d 25975@smallexample
594fe323 25976(gdb)
a2c02241
NR
259775-data-read-memory shorts+64 d 2 1 1
259785^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
25979next-row="0x00001512",prev-row="0x0000150e",
25980next-page="0x00001512",prev-page="0x0000150e",memory=[
25981@{addr="0x00001510",data=["128"]@}]
594fe323 25982(gdb)
32e7087d
JB
25983@end smallexample
25984
a2c02241
NR
25985Read thirty two bytes of memory starting at @code{bytes+16} and format
25986as eight rows of four columns. Include a string encoding with @samp{x}
25987used as the non-printable character.
922fbb7b
AC
25988
25989@smallexample
594fe323 25990(gdb)
a2c02241
NR
259914-data-read-memory bytes+16 x 1 8 4 x
259924^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
25993next-row="0x000013c0",prev-row="0x0000139c",
25994next-page="0x000013c0",prev-page="0x00001380",memory=[
25995@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
25996@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
25997@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
25998@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
25999@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
26000@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
26001@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
26002@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
594fe323 26003(gdb)
922fbb7b
AC
26004@end smallexample
26005
a2c02241
NR
26006@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26007@node GDB/MI Tracepoint Commands
26008@section @sc{gdb/mi} Tracepoint Commands
922fbb7b 26009
18148017
VP
26010The commands defined in this section implement MI support for
26011tracepoints. For detailed introduction, see @ref{Tracepoints}.
26012
26013@subheading The @code{-trace-find} Command
26014@findex -trace-find
26015
26016@subsubheading Synopsis
26017
26018@smallexample
26019 -trace-find @var{mode} [@var{parameters}@dots{}]
26020@end smallexample
26021
26022Find a trace frame using criteria defined by @var{mode} and
26023@var{parameters}. The following table lists permissible
26024modes and their parameters. For details of operation, see @ref{tfind}.
26025
26026@table @samp
26027
26028@item none
26029No parameters are required. Stops examining trace frames.
26030
26031@item frame-number
26032An integer is required as parameter. Selects tracepoint frame with
26033that index.
26034
26035@item tracepoint-number
26036An integer is required as parameter. Finds next
26037trace frame that corresponds to tracepoint with the specified number.
26038
26039@item pc
26040An address is required as parameter. Finds
26041next trace frame that corresponds to any tracepoint at the specified
26042address.
26043
26044@item pc-inside-range
26045Two addresses are required as parameters. Finds next trace
26046frame that corresponds to a tracepoint at an address inside the
26047specified range. Both bounds are considered to be inside the range.
26048
26049@item pc-outside-range
26050Two addresses are required as parameters. Finds
26051next trace frame that corresponds to a tracepoint at an address outside
26052the specified range. Both bounds are considered to be inside the range.
26053
26054@item line
26055Line specification is required as parameter. @xref{Specify Location}.
26056Finds next trace frame that corresponds to a tracepoint at
26057the specified location.
26058
26059@end table
26060
26061If @samp{none} was passed as @var{mode}, the response does not
26062have fields. Otherwise, the response may have the following fields:
26063
26064@table @samp
26065@item found
26066This field has either @samp{0} or @samp{1} as the value, depending
26067on whether a matching tracepoint was found.
26068
26069@item traceframe
26070The index of the found traceframe. This field is present iff
26071the @samp{found} field has value of @samp{1}.
26072
26073@item tracepoint
26074The index of the found tracepoint. This field is present iff
26075the @samp{found} field has value of @samp{1}.
26076
26077@item frame
26078The information about the frame corresponding to the found trace
26079frame. This field is present only if a trace frame was found.
cd64ee31 26080@xref{GDB/MI Frame Information}, for description of this field.
18148017
VP
26081
26082@end table
26083
7d13fe92
SS
26084@subsubheading @value{GDBN} Command
26085
26086The corresponding @value{GDBN} command is @samp{tfind}.
26087
18148017
VP
26088@subheading -trace-define-variable
26089@findex -trace-define-variable
26090
26091@subsubheading Synopsis
26092
26093@smallexample
26094 -trace-define-variable @var{name} [ @var{value} ]
26095@end smallexample
26096
26097Create trace variable @var{name} if it does not exist. If
26098@var{value} is specified, sets the initial value of the specified
26099trace variable to that value. Note that the @var{name} should start
26100with the @samp{$} character.
26101
7d13fe92
SS
26102@subsubheading @value{GDBN} Command
26103
26104The corresponding @value{GDBN} command is @samp{tvariable}.
26105
18148017
VP
26106@subheading -trace-list-variables
26107@findex -trace-list-variables
922fbb7b 26108
18148017 26109@subsubheading Synopsis
922fbb7b 26110
18148017
VP
26111@smallexample
26112 -trace-list-variables
26113@end smallexample
922fbb7b 26114
18148017
VP
26115Return a table of all defined trace variables. Each element of the
26116table has the following fields:
922fbb7b 26117
18148017
VP
26118@table @samp
26119@item name
26120The name of the trace variable. This field is always present.
922fbb7b 26121
18148017
VP
26122@item initial
26123The initial value. This is a 64-bit signed integer. This
26124field is always present.
922fbb7b 26125
18148017
VP
26126@item current
26127The value the trace variable has at the moment. This is a 64-bit
26128signed integer. This field is absent iff current value is
26129not defined, for example if the trace was never run, or is
26130presently running.
922fbb7b 26131
18148017 26132@end table
922fbb7b 26133
7d13fe92
SS
26134@subsubheading @value{GDBN} Command
26135
26136The corresponding @value{GDBN} command is @samp{tvariables}.
26137
18148017 26138@subsubheading Example
922fbb7b 26139
18148017
VP
26140@smallexample
26141(gdb)
26142-trace-list-variables
26143^done,trace-variables=@{nr_rows="1",nr_cols="3",
26144hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@},
26145 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@},
26146 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}],
26147body=[variable=@{name="$trace_timestamp",initial="0"@}
26148 variable=@{name="$foo",initial="10",current="15"@}]@}
26149(gdb)
26150@end smallexample
922fbb7b 26151
18148017
VP
26152@subheading -trace-save
26153@findex -trace-save
922fbb7b 26154
18148017
VP
26155@subsubheading Synopsis
26156
26157@smallexample
26158 -trace-save [-r ] @var{filename}
26159@end smallexample
26160
26161Saves the collected trace data to @var{filename}. Without the
26162@samp{-r} option, the data is downloaded from the target and saved
26163in a local file. With the @samp{-r} option the target is asked
26164to perform the save.
26165
7d13fe92
SS
26166@subsubheading @value{GDBN} Command
26167
26168The corresponding @value{GDBN} command is @samp{tsave}.
26169
18148017
VP
26170
26171@subheading -trace-start
26172@findex -trace-start
26173
26174@subsubheading Synopsis
26175
26176@smallexample
26177 -trace-start
26178@end smallexample
922fbb7b 26179
18148017
VP
26180Starts a tracing experiments. The result of this command does not
26181have any fields.
922fbb7b 26182
7d13fe92
SS
26183@subsubheading @value{GDBN} Command
26184
26185The corresponding @value{GDBN} command is @samp{tstart}.
26186
18148017
VP
26187@subheading -trace-status
26188@findex -trace-status
922fbb7b 26189
18148017
VP
26190@subsubheading Synopsis
26191
26192@smallexample
26193 -trace-status
26194@end smallexample
26195
26196Obtains the status of a tracing experiement. The result may include
26197the following fields:
26198
26199@table @samp
26200
26201@item supported
26202May have a value of either @samp{0}, when no tracing operations are
26203supported, @samp{1}, when all tracing operations are supported, or
26204@samp{file} when examining trace file. In the latter case, examining
26205of trace frame is possible but new tracing experiement cannot be
26206started. This field is always present.
26207
26208@item running
26209May have a value of either @samp{0} or @samp{1} depending on whether
26210tracing experiement is in progress on target. This field is present
26211if @samp{supported} field is not @samp{0}.
26212
26213@item stop-reason
26214Report the reason why the tracing was stopped last time. This field
26215may be absent iff tracing was never stopped on target yet. The
26216value of @samp{request} means the tracing was stopped as result of
26217the @code{-trace-stop} command. The value of @samp{overflow} means
26218the tracing buffer is full. The value of @samp{disconnection} means
26219tracing was automatically stopped when @value{GDBN} has disconnected.
26220The value of @samp{passcount} means tracing was stopped when a
26221tracepoint was passed a maximal number of times for that tracepoint.
26222This field is present if @samp{supported} field is not @samp{0}.
26223
26224@item stopping-tracepoint
26225The number of tracepoint whose passcount as exceeded. This field is
26226present iff the @samp{stop-reason} field has the value of
26227@samp{passcount}.
26228
26229@item frames
26230This field is an integer number of currently collected frames. This
26231field is optional.
26232
26233@item buffer-size
26234@itemx buffer-free
26235These fields tell the current size of the tracing buffer and the
26236remaining space. These field is optional.
26237
26238@end table
26239
7d13fe92
SS
26240@subsubheading @value{GDBN} Command
26241
26242The corresponding @value{GDBN} command is @samp{tstatus}.
26243
18148017
VP
26244@subheading -trace-stop
26245@findex -trace-stop
26246
26247@subsubheading Synopsis
26248
26249@smallexample
26250 -trace-stop
26251@end smallexample
922fbb7b 26252
18148017
VP
26253Stops a tracing experiment. The result of this command has the same
26254fields as @code{-trace-status}, except that the @samp{supported} and
26255@samp{running} fields are not output.
922fbb7b 26256
7d13fe92
SS
26257@subsubheading @value{GDBN} Command
26258
26259The corresponding @value{GDBN} command is @samp{tstop}.
26260
922fbb7b 26261
a2c02241
NR
26262@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26263@node GDB/MI Symbol Query
26264@section @sc{gdb/mi} Symbol Query Commands
922fbb7b
AC
26265
26266
9901a55b 26267@ignore
a2c02241
NR
26268@subheading The @code{-symbol-info-address} Command
26269@findex -symbol-info-address
922fbb7b
AC
26270
26271@subsubheading Synopsis
26272
26273@smallexample
a2c02241 26274 -symbol-info-address @var{symbol}
922fbb7b
AC
26275@end smallexample
26276
a2c02241 26277Describe where @var{symbol} is stored.
922fbb7b
AC
26278
26279@subsubheading @value{GDBN} Command
26280
a2c02241 26281The corresponding @value{GDBN} command is @samp{info address}.
922fbb7b
AC
26282
26283@subsubheading Example
26284N.A.
26285
26286
a2c02241
NR
26287@subheading The @code{-symbol-info-file} Command
26288@findex -symbol-info-file
922fbb7b
AC
26289
26290@subsubheading Synopsis
26291
26292@smallexample
a2c02241 26293 -symbol-info-file
922fbb7b
AC
26294@end smallexample
26295
a2c02241 26296Show the file for the symbol.
922fbb7b 26297
a2c02241 26298@subsubheading @value{GDBN} Command
922fbb7b 26299
a2c02241
NR
26300There's no equivalent @value{GDBN} command. @code{gdbtk} has
26301@samp{gdb_find_file}.
922fbb7b
AC
26302
26303@subsubheading Example
26304N.A.
26305
26306
a2c02241
NR
26307@subheading The @code{-symbol-info-function} Command
26308@findex -symbol-info-function
922fbb7b
AC
26309
26310@subsubheading Synopsis
26311
26312@smallexample
a2c02241 26313 -symbol-info-function
922fbb7b
AC
26314@end smallexample
26315
a2c02241 26316Show which function the symbol lives in.
922fbb7b
AC
26317
26318@subsubheading @value{GDBN} Command
26319
a2c02241 26320@samp{gdb_get_function} in @code{gdbtk}.
922fbb7b
AC
26321
26322@subsubheading Example
26323N.A.
26324
26325
a2c02241
NR
26326@subheading The @code{-symbol-info-line} Command
26327@findex -symbol-info-line
922fbb7b
AC
26328
26329@subsubheading Synopsis
26330
26331@smallexample
a2c02241 26332 -symbol-info-line
922fbb7b
AC
26333@end smallexample
26334
a2c02241 26335Show the core addresses of the code for a source line.
922fbb7b 26336
a2c02241 26337@subsubheading @value{GDBN} Command
922fbb7b 26338
a2c02241
NR
26339The corresponding @value{GDBN} command is @samp{info line}.
26340@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
922fbb7b
AC
26341
26342@subsubheading Example
a2c02241 26343N.A.
922fbb7b
AC
26344
26345
a2c02241
NR
26346@subheading The @code{-symbol-info-symbol} Command
26347@findex -symbol-info-symbol
07f31aa6
DJ
26348
26349@subsubheading Synopsis
26350
a2c02241
NR
26351@smallexample
26352 -symbol-info-symbol @var{addr}
26353@end smallexample
07f31aa6 26354
a2c02241 26355Describe what symbol is at location @var{addr}.
07f31aa6 26356
a2c02241 26357@subsubheading @value{GDBN} Command
07f31aa6 26358
a2c02241 26359The corresponding @value{GDBN} command is @samp{info symbol}.
07f31aa6
DJ
26360
26361@subsubheading Example
a2c02241 26362N.A.
07f31aa6
DJ
26363
26364
a2c02241
NR
26365@subheading The @code{-symbol-list-functions} Command
26366@findex -symbol-list-functions
922fbb7b
AC
26367
26368@subsubheading Synopsis
26369
26370@smallexample
a2c02241 26371 -symbol-list-functions
922fbb7b
AC
26372@end smallexample
26373
a2c02241 26374List the functions in the executable.
922fbb7b
AC
26375
26376@subsubheading @value{GDBN} Command
26377
a2c02241
NR
26378@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
26379@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
26380
26381@subsubheading Example
a2c02241 26382N.A.
9901a55b 26383@end ignore
922fbb7b
AC
26384
26385
a2c02241
NR
26386@subheading The @code{-symbol-list-lines} Command
26387@findex -symbol-list-lines
922fbb7b
AC
26388
26389@subsubheading Synopsis
26390
26391@smallexample
a2c02241 26392 -symbol-list-lines @var{filename}
922fbb7b
AC
26393@end smallexample
26394
a2c02241
NR
26395Print the list of lines that contain code and their associated program
26396addresses for the given source filename. The entries are sorted in
26397ascending PC order.
922fbb7b
AC
26398
26399@subsubheading @value{GDBN} Command
26400
a2c02241 26401There is no corresponding @value{GDBN} command.
922fbb7b
AC
26402
26403@subsubheading Example
a2c02241 26404@smallexample
594fe323 26405(gdb)
a2c02241
NR
26406-symbol-list-lines basics.c
26407^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
594fe323 26408(gdb)
a2c02241 26409@end smallexample
922fbb7b
AC
26410
26411
9901a55b 26412@ignore
a2c02241
NR
26413@subheading The @code{-symbol-list-types} Command
26414@findex -symbol-list-types
922fbb7b
AC
26415
26416@subsubheading Synopsis
26417
26418@smallexample
a2c02241 26419 -symbol-list-types
922fbb7b
AC
26420@end smallexample
26421
a2c02241 26422List all the type names.
922fbb7b
AC
26423
26424@subsubheading @value{GDBN} Command
26425
a2c02241
NR
26426The corresponding commands are @samp{info types} in @value{GDBN},
26427@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
26428
26429@subsubheading Example
26430N.A.
26431
26432
a2c02241
NR
26433@subheading The @code{-symbol-list-variables} Command
26434@findex -symbol-list-variables
922fbb7b
AC
26435
26436@subsubheading Synopsis
26437
26438@smallexample
a2c02241 26439 -symbol-list-variables
922fbb7b
AC
26440@end smallexample
26441
a2c02241 26442List all the global and static variable names.
922fbb7b
AC
26443
26444@subsubheading @value{GDBN} Command
26445
a2c02241 26446@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
26447
26448@subsubheading Example
26449N.A.
26450
26451
a2c02241
NR
26452@subheading The @code{-symbol-locate} Command
26453@findex -symbol-locate
922fbb7b
AC
26454
26455@subsubheading Synopsis
26456
26457@smallexample
a2c02241 26458 -symbol-locate
922fbb7b
AC
26459@end smallexample
26460
922fbb7b
AC
26461@subsubheading @value{GDBN} Command
26462
a2c02241 26463@samp{gdb_loc} in @code{gdbtk}.
922fbb7b
AC
26464
26465@subsubheading Example
26466N.A.
26467
26468
a2c02241
NR
26469@subheading The @code{-symbol-type} Command
26470@findex -symbol-type
922fbb7b
AC
26471
26472@subsubheading Synopsis
26473
26474@smallexample
a2c02241 26475 -symbol-type @var{variable}
922fbb7b
AC
26476@end smallexample
26477
a2c02241 26478Show type of @var{variable}.
922fbb7b 26479
a2c02241 26480@subsubheading @value{GDBN} Command
922fbb7b 26481
a2c02241
NR
26482The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
26483@samp{gdb_obj_variable}.
26484
26485@subsubheading Example
26486N.A.
9901a55b 26487@end ignore
a2c02241
NR
26488
26489
26490@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26491@node GDB/MI File Commands
26492@section @sc{gdb/mi} File Commands
26493
26494This section describes the GDB/MI commands to specify executable file names
26495and to read in and obtain symbol table information.
26496
26497@subheading The @code{-file-exec-and-symbols} Command
26498@findex -file-exec-and-symbols
26499
26500@subsubheading Synopsis
922fbb7b
AC
26501
26502@smallexample
a2c02241 26503 -file-exec-and-symbols @var{file}
922fbb7b
AC
26504@end smallexample
26505
a2c02241
NR
26506Specify the executable file to be debugged. This file is the one from
26507which the symbol table is also read. If no file is specified, the
26508command clears the executable and symbol information. If breakpoints
26509are set when using this command with no arguments, @value{GDBN} will produce
26510error messages. Otherwise, no output is produced, except a completion
26511notification.
26512
922fbb7b
AC
26513@subsubheading @value{GDBN} Command
26514
a2c02241 26515The corresponding @value{GDBN} command is @samp{file}.
922fbb7b
AC
26516
26517@subsubheading Example
26518
26519@smallexample
594fe323 26520(gdb)
a2c02241
NR
26521-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
26522^done
594fe323 26523(gdb)
922fbb7b
AC
26524@end smallexample
26525
922fbb7b 26526
a2c02241
NR
26527@subheading The @code{-file-exec-file} Command
26528@findex -file-exec-file
922fbb7b
AC
26529
26530@subsubheading Synopsis
26531
26532@smallexample
a2c02241 26533 -file-exec-file @var{file}
922fbb7b
AC
26534@end smallexample
26535
a2c02241
NR
26536Specify the executable file to be debugged. Unlike
26537@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
26538from this file. If used without argument, @value{GDBN} clears the information
26539about the executable file. No output is produced, except a completion
26540notification.
922fbb7b 26541
a2c02241
NR
26542@subsubheading @value{GDBN} Command
26543
26544The corresponding @value{GDBN} command is @samp{exec-file}.
922fbb7b
AC
26545
26546@subsubheading Example
a2c02241
NR
26547
26548@smallexample
594fe323 26549(gdb)
a2c02241
NR
26550-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
26551^done
594fe323 26552(gdb)
a2c02241 26553@end smallexample
922fbb7b
AC
26554
26555
9901a55b 26556@ignore
a2c02241
NR
26557@subheading The @code{-file-list-exec-sections} Command
26558@findex -file-list-exec-sections
922fbb7b
AC
26559
26560@subsubheading Synopsis
26561
26562@smallexample
a2c02241 26563 -file-list-exec-sections
922fbb7b
AC
26564@end smallexample
26565
a2c02241
NR
26566List the sections of the current executable file.
26567
922fbb7b
AC
26568@subsubheading @value{GDBN} Command
26569
a2c02241
NR
26570The @value{GDBN} command @samp{info file} shows, among the rest, the same
26571information as this command. @code{gdbtk} has a corresponding command
26572@samp{gdb_load_info}.
922fbb7b
AC
26573
26574@subsubheading Example
26575N.A.
9901a55b 26576@end ignore
922fbb7b
AC
26577
26578
a2c02241
NR
26579@subheading The @code{-file-list-exec-source-file} Command
26580@findex -file-list-exec-source-file
922fbb7b
AC
26581
26582@subsubheading Synopsis
26583
26584@smallexample
a2c02241 26585 -file-list-exec-source-file
922fbb7b
AC
26586@end smallexample
26587
a2c02241 26588List the line number, the current source file, and the absolute path
44288b44
NR
26589to the current source file for the current executable. The macro
26590information field has a value of @samp{1} or @samp{0} depending on
26591whether or not the file includes preprocessor macro information.
922fbb7b
AC
26592
26593@subsubheading @value{GDBN} Command
26594
a2c02241 26595The @value{GDBN} equivalent is @samp{info source}
922fbb7b
AC
26596
26597@subsubheading Example
26598
922fbb7b 26599@smallexample
594fe323 26600(gdb)
a2c02241 26601123-file-list-exec-source-file
44288b44 26602123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
594fe323 26603(gdb)
922fbb7b
AC
26604@end smallexample
26605
26606
a2c02241
NR
26607@subheading The @code{-file-list-exec-source-files} Command
26608@findex -file-list-exec-source-files
922fbb7b
AC
26609
26610@subsubheading Synopsis
26611
26612@smallexample
a2c02241 26613 -file-list-exec-source-files
922fbb7b
AC
26614@end smallexample
26615
a2c02241
NR
26616List the source files for the current executable.
26617
3f94c067
BW
26618It will always output the filename, but only when @value{GDBN} can find
26619the absolute file name of a source file, will it output the fullname.
922fbb7b
AC
26620
26621@subsubheading @value{GDBN} Command
26622
a2c02241
NR
26623The @value{GDBN} equivalent is @samp{info sources}.
26624@code{gdbtk} has an analogous command @samp{gdb_listfiles}.
922fbb7b
AC
26625
26626@subsubheading Example
922fbb7b 26627@smallexample
594fe323 26628(gdb)
a2c02241
NR
26629-file-list-exec-source-files
26630^done,files=[
26631@{file=foo.c,fullname=/home/foo.c@},
26632@{file=/home/bar.c,fullname=/home/bar.c@},
26633@{file=gdb_could_not_find_fullpath.c@}]
594fe323 26634(gdb)
922fbb7b
AC
26635@end smallexample
26636
9901a55b 26637@ignore
a2c02241
NR
26638@subheading The @code{-file-list-shared-libraries} Command
26639@findex -file-list-shared-libraries
922fbb7b 26640
a2c02241 26641@subsubheading Synopsis
922fbb7b 26642
a2c02241
NR
26643@smallexample
26644 -file-list-shared-libraries
26645@end smallexample
922fbb7b 26646
a2c02241 26647List the shared libraries in the program.
922fbb7b 26648
a2c02241 26649@subsubheading @value{GDBN} Command
922fbb7b 26650
a2c02241 26651The corresponding @value{GDBN} command is @samp{info shared}.
922fbb7b 26652
a2c02241
NR
26653@subsubheading Example
26654N.A.
922fbb7b
AC
26655
26656
a2c02241
NR
26657@subheading The @code{-file-list-symbol-files} Command
26658@findex -file-list-symbol-files
922fbb7b 26659
a2c02241 26660@subsubheading Synopsis
922fbb7b 26661
a2c02241
NR
26662@smallexample
26663 -file-list-symbol-files
26664@end smallexample
922fbb7b 26665
a2c02241 26666List symbol files.
922fbb7b 26667
a2c02241 26668@subsubheading @value{GDBN} Command
922fbb7b 26669
a2c02241 26670The corresponding @value{GDBN} command is @samp{info file} (part of it).
922fbb7b 26671
a2c02241
NR
26672@subsubheading Example
26673N.A.
9901a55b 26674@end ignore
922fbb7b 26675
922fbb7b 26676
a2c02241
NR
26677@subheading The @code{-file-symbol-file} Command
26678@findex -file-symbol-file
922fbb7b 26679
a2c02241 26680@subsubheading Synopsis
922fbb7b 26681
a2c02241
NR
26682@smallexample
26683 -file-symbol-file @var{file}
26684@end smallexample
922fbb7b 26685
a2c02241
NR
26686Read symbol table info from the specified @var{file} argument. When
26687used without arguments, clears @value{GDBN}'s symbol table info. No output is
26688produced, except for a completion notification.
922fbb7b 26689
a2c02241 26690@subsubheading @value{GDBN} Command
922fbb7b 26691
a2c02241 26692The corresponding @value{GDBN} command is @samp{symbol-file}.
922fbb7b 26693
a2c02241 26694@subsubheading Example
922fbb7b 26695
a2c02241 26696@smallexample
594fe323 26697(gdb)
a2c02241
NR
26698-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
26699^done
594fe323 26700(gdb)
a2c02241 26701@end smallexample
922fbb7b 26702
a2c02241 26703@ignore
a2c02241
NR
26704@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26705@node GDB/MI Memory Overlay Commands
26706@section @sc{gdb/mi} Memory Overlay Commands
922fbb7b 26707
a2c02241 26708The memory overlay commands are not implemented.
922fbb7b 26709
a2c02241 26710@c @subheading -overlay-auto
922fbb7b 26711
a2c02241 26712@c @subheading -overlay-list-mapping-state
922fbb7b 26713
a2c02241 26714@c @subheading -overlay-list-overlays
922fbb7b 26715
a2c02241 26716@c @subheading -overlay-map
922fbb7b 26717
a2c02241 26718@c @subheading -overlay-off
922fbb7b 26719
a2c02241 26720@c @subheading -overlay-on
922fbb7b 26721
a2c02241 26722@c @subheading -overlay-unmap
922fbb7b 26723
a2c02241
NR
26724@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26725@node GDB/MI Signal Handling Commands
26726@section @sc{gdb/mi} Signal Handling Commands
922fbb7b 26727
a2c02241 26728Signal handling commands are not implemented.
922fbb7b 26729
a2c02241 26730@c @subheading -signal-handle
922fbb7b 26731
a2c02241 26732@c @subheading -signal-list-handle-actions
922fbb7b 26733
a2c02241
NR
26734@c @subheading -signal-list-signal-types
26735@end ignore
922fbb7b 26736
922fbb7b 26737
a2c02241
NR
26738@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26739@node GDB/MI Target Manipulation
26740@section @sc{gdb/mi} Target Manipulation Commands
922fbb7b
AC
26741
26742
a2c02241
NR
26743@subheading The @code{-target-attach} Command
26744@findex -target-attach
922fbb7b
AC
26745
26746@subsubheading Synopsis
26747
26748@smallexample
c3b108f7 26749 -target-attach @var{pid} | @var{gid} | @var{file}
922fbb7b
AC
26750@end smallexample
26751
c3b108f7
VP
26752Attach to a process @var{pid} or a file @var{file} outside of
26753@value{GDBN}, or a thread group @var{gid}. If attaching to a thread
26754group, the id previously returned by
26755@samp{-list-thread-groups --available} must be used.
922fbb7b 26756
79a6e687 26757@subsubheading @value{GDBN} Command
922fbb7b 26758
a2c02241 26759The corresponding @value{GDBN} command is @samp{attach}.
922fbb7b 26760
a2c02241 26761@subsubheading Example
b56e7235
VP
26762@smallexample
26763(gdb)
26764-target-attach 34
26765=thread-created,id="1"
5ae4183a 26766*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@}
b56e7235
VP
26767^done
26768(gdb)
26769@end smallexample
a2c02241 26770
9901a55b 26771@ignore
a2c02241
NR
26772@subheading The @code{-target-compare-sections} Command
26773@findex -target-compare-sections
922fbb7b
AC
26774
26775@subsubheading Synopsis
26776
26777@smallexample
a2c02241 26778 -target-compare-sections [ @var{section} ]
922fbb7b
AC
26779@end smallexample
26780
a2c02241
NR
26781Compare data of section @var{section} on target to the exec file.
26782Without the argument, all sections are compared.
922fbb7b 26783
a2c02241 26784@subsubheading @value{GDBN} Command
922fbb7b 26785
a2c02241 26786The @value{GDBN} equivalent is @samp{compare-sections}.
922fbb7b 26787
a2c02241
NR
26788@subsubheading Example
26789N.A.
9901a55b 26790@end ignore
a2c02241
NR
26791
26792
26793@subheading The @code{-target-detach} Command
26794@findex -target-detach
922fbb7b
AC
26795
26796@subsubheading Synopsis
26797
26798@smallexample
c3b108f7 26799 -target-detach [ @var{pid} | @var{gid} ]
922fbb7b
AC
26800@end smallexample
26801
a2c02241 26802Detach from the remote target which normally resumes its execution.
c3b108f7
VP
26803If either @var{pid} or @var{gid} is specified, detaches from either
26804the specified process, or specified thread group. There's no output.
a2c02241 26805
79a6e687 26806@subsubheading @value{GDBN} Command
a2c02241
NR
26807
26808The corresponding @value{GDBN} command is @samp{detach}.
26809
26810@subsubheading Example
922fbb7b
AC
26811
26812@smallexample
594fe323 26813(gdb)
a2c02241
NR
26814-target-detach
26815^done
594fe323 26816(gdb)
922fbb7b
AC
26817@end smallexample
26818
26819
a2c02241
NR
26820@subheading The @code{-target-disconnect} Command
26821@findex -target-disconnect
922fbb7b
AC
26822
26823@subsubheading Synopsis
26824
123dc839 26825@smallexample
a2c02241 26826 -target-disconnect
123dc839 26827@end smallexample
922fbb7b 26828
a2c02241
NR
26829Disconnect from the remote target. There's no output and the target is
26830generally not resumed.
26831
79a6e687 26832@subsubheading @value{GDBN} Command
a2c02241
NR
26833
26834The corresponding @value{GDBN} command is @samp{disconnect}.
bc8ced35
NR
26835
26836@subsubheading Example
922fbb7b
AC
26837
26838@smallexample
594fe323 26839(gdb)
a2c02241
NR
26840-target-disconnect
26841^done
594fe323 26842(gdb)
922fbb7b
AC
26843@end smallexample
26844
26845
a2c02241
NR
26846@subheading The @code{-target-download} Command
26847@findex -target-download
922fbb7b
AC
26848
26849@subsubheading Synopsis
26850
26851@smallexample
a2c02241 26852 -target-download
922fbb7b
AC
26853@end smallexample
26854
a2c02241
NR
26855Loads the executable onto the remote target.
26856It prints out an update message every half second, which includes the fields:
26857
26858@table @samp
26859@item section
26860The name of the section.
26861@item section-sent
26862The size of what has been sent so far for that section.
26863@item section-size
26864The size of the section.
26865@item total-sent
26866The total size of what was sent so far (the current and the previous sections).
26867@item total-size
26868The size of the overall executable to download.
26869@end table
26870
26871@noindent
26872Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
26873@sc{gdb/mi} Output Syntax}).
26874
26875In addition, it prints the name and size of the sections, as they are
26876downloaded. These messages include the following fields:
26877
26878@table @samp
26879@item section
26880The name of the section.
26881@item section-size
26882The size of the section.
26883@item total-size
26884The size of the overall executable to download.
26885@end table
26886
26887@noindent
26888At the end, a summary is printed.
26889
26890@subsubheading @value{GDBN} Command
26891
26892The corresponding @value{GDBN} command is @samp{load}.
26893
26894@subsubheading Example
26895
26896Note: each status message appears on a single line. Here the messages
26897have been broken down so that they can fit onto a page.
922fbb7b
AC
26898
26899@smallexample
594fe323 26900(gdb)
a2c02241
NR
26901-target-download
26902+download,@{section=".text",section-size="6668",total-size="9880"@}
26903+download,@{section=".text",section-sent="512",section-size="6668",
26904total-sent="512",total-size="9880"@}
26905+download,@{section=".text",section-sent="1024",section-size="6668",
26906total-sent="1024",total-size="9880"@}
26907+download,@{section=".text",section-sent="1536",section-size="6668",
26908total-sent="1536",total-size="9880"@}
26909+download,@{section=".text",section-sent="2048",section-size="6668",
26910total-sent="2048",total-size="9880"@}
26911+download,@{section=".text",section-sent="2560",section-size="6668",
26912total-sent="2560",total-size="9880"@}
26913+download,@{section=".text",section-sent="3072",section-size="6668",
26914total-sent="3072",total-size="9880"@}
26915+download,@{section=".text",section-sent="3584",section-size="6668",
26916total-sent="3584",total-size="9880"@}
26917+download,@{section=".text",section-sent="4096",section-size="6668",
26918total-sent="4096",total-size="9880"@}
26919+download,@{section=".text",section-sent="4608",section-size="6668",
26920total-sent="4608",total-size="9880"@}
26921+download,@{section=".text",section-sent="5120",section-size="6668",
26922total-sent="5120",total-size="9880"@}
26923+download,@{section=".text",section-sent="5632",section-size="6668",
26924total-sent="5632",total-size="9880"@}
26925+download,@{section=".text",section-sent="6144",section-size="6668",
26926total-sent="6144",total-size="9880"@}
26927+download,@{section=".text",section-sent="6656",section-size="6668",
26928total-sent="6656",total-size="9880"@}
26929+download,@{section=".init",section-size="28",total-size="9880"@}
26930+download,@{section=".fini",section-size="28",total-size="9880"@}
26931+download,@{section=".data",section-size="3156",total-size="9880"@}
26932+download,@{section=".data",section-sent="512",section-size="3156",
26933total-sent="7236",total-size="9880"@}
26934+download,@{section=".data",section-sent="1024",section-size="3156",
26935total-sent="7748",total-size="9880"@}
26936+download,@{section=".data",section-sent="1536",section-size="3156",
26937total-sent="8260",total-size="9880"@}
26938+download,@{section=".data",section-sent="2048",section-size="3156",
26939total-sent="8772",total-size="9880"@}
26940+download,@{section=".data",section-sent="2560",section-size="3156",
26941total-sent="9284",total-size="9880"@}
26942+download,@{section=".data",section-sent="3072",section-size="3156",
26943total-sent="9796",total-size="9880"@}
26944^done,address="0x10004",load-size="9880",transfer-rate="6586",
26945write-rate="429"
594fe323 26946(gdb)
922fbb7b
AC
26947@end smallexample
26948
26949
9901a55b 26950@ignore
a2c02241
NR
26951@subheading The @code{-target-exec-status} Command
26952@findex -target-exec-status
922fbb7b
AC
26953
26954@subsubheading Synopsis
26955
26956@smallexample
a2c02241 26957 -target-exec-status
922fbb7b
AC
26958@end smallexample
26959
a2c02241
NR
26960Provide information on the state of the target (whether it is running or
26961not, for instance).
922fbb7b 26962
a2c02241 26963@subsubheading @value{GDBN} Command
922fbb7b 26964
a2c02241
NR
26965There's no equivalent @value{GDBN} command.
26966
26967@subsubheading Example
26968N.A.
922fbb7b 26969
a2c02241
NR
26970
26971@subheading The @code{-target-list-available-targets} Command
26972@findex -target-list-available-targets
922fbb7b
AC
26973
26974@subsubheading Synopsis
26975
26976@smallexample
a2c02241 26977 -target-list-available-targets
922fbb7b
AC
26978@end smallexample
26979
a2c02241 26980List the possible targets to connect to.
922fbb7b 26981
a2c02241 26982@subsubheading @value{GDBN} Command
922fbb7b 26983
a2c02241 26984The corresponding @value{GDBN} command is @samp{help target}.
922fbb7b 26985
a2c02241
NR
26986@subsubheading Example
26987N.A.
26988
26989
26990@subheading The @code{-target-list-current-targets} Command
26991@findex -target-list-current-targets
922fbb7b
AC
26992
26993@subsubheading Synopsis
26994
26995@smallexample
a2c02241 26996 -target-list-current-targets
922fbb7b
AC
26997@end smallexample
26998
a2c02241 26999Describe the current target.
922fbb7b 27000
a2c02241 27001@subsubheading @value{GDBN} Command
922fbb7b 27002
a2c02241
NR
27003The corresponding information is printed by @samp{info file} (among
27004other things).
922fbb7b 27005
a2c02241
NR
27006@subsubheading Example
27007N.A.
27008
27009
27010@subheading The @code{-target-list-parameters} Command
27011@findex -target-list-parameters
922fbb7b
AC
27012
27013@subsubheading Synopsis
27014
27015@smallexample
a2c02241 27016 -target-list-parameters
922fbb7b
AC
27017@end smallexample
27018
a2c02241 27019@c ????
9901a55b 27020@end ignore
a2c02241
NR
27021
27022@subsubheading @value{GDBN} Command
27023
27024No equivalent.
922fbb7b
AC
27025
27026@subsubheading Example
a2c02241
NR
27027N.A.
27028
27029
27030@subheading The @code{-target-select} Command
27031@findex -target-select
27032
27033@subsubheading Synopsis
922fbb7b
AC
27034
27035@smallexample
a2c02241 27036 -target-select @var{type} @var{parameters @dots{}}
922fbb7b
AC
27037@end smallexample
27038
a2c02241 27039Connect @value{GDBN} to the remote target. This command takes two args:
922fbb7b 27040
a2c02241
NR
27041@table @samp
27042@item @var{type}
75c99385 27043The type of target, for instance @samp{remote}, etc.
a2c02241
NR
27044@item @var{parameters}
27045Device names, host names and the like. @xref{Target Commands, ,
79a6e687 27046Commands for Managing Targets}, for more details.
a2c02241
NR
27047@end table
27048
27049The output is a connection notification, followed by the address at
27050which the target program is, in the following form:
922fbb7b
AC
27051
27052@smallexample
a2c02241
NR
27053^connected,addr="@var{address}",func="@var{function name}",
27054 args=[@var{arg list}]
922fbb7b
AC
27055@end smallexample
27056
a2c02241
NR
27057@subsubheading @value{GDBN} Command
27058
27059The corresponding @value{GDBN} command is @samp{target}.
265eeb58
NR
27060
27061@subsubheading Example
922fbb7b 27062
265eeb58 27063@smallexample
594fe323 27064(gdb)
75c99385 27065-target-select remote /dev/ttya
a2c02241 27066^connected,addr="0xfe00a300",func="??",args=[]
594fe323 27067(gdb)
265eeb58 27068@end smallexample
ef21caaf 27069
a6b151f1
DJ
27070@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27071@node GDB/MI File Transfer Commands
27072@section @sc{gdb/mi} File Transfer Commands
27073
27074
27075@subheading The @code{-target-file-put} Command
27076@findex -target-file-put
27077
27078@subsubheading Synopsis
27079
27080@smallexample
27081 -target-file-put @var{hostfile} @var{targetfile}
27082@end smallexample
27083
27084Copy file @var{hostfile} from the host system (the machine running
27085@value{GDBN}) to @var{targetfile} on the target system.
27086
27087@subsubheading @value{GDBN} Command
27088
27089The corresponding @value{GDBN} command is @samp{remote put}.
27090
27091@subsubheading Example
27092
27093@smallexample
27094(gdb)
27095-target-file-put localfile remotefile
27096^done
27097(gdb)
27098@end smallexample
27099
27100
1763a388 27101@subheading The @code{-target-file-get} Command
a6b151f1
DJ
27102@findex -target-file-get
27103
27104@subsubheading Synopsis
27105
27106@smallexample
27107 -target-file-get @var{targetfile} @var{hostfile}
27108@end smallexample
27109
27110Copy file @var{targetfile} from the target system to @var{hostfile}
27111on the host system.
27112
27113@subsubheading @value{GDBN} Command
27114
27115The corresponding @value{GDBN} command is @samp{remote get}.
27116
27117@subsubheading Example
27118
27119@smallexample
27120(gdb)
27121-target-file-get remotefile localfile
27122^done
27123(gdb)
27124@end smallexample
27125
27126
27127@subheading The @code{-target-file-delete} Command
27128@findex -target-file-delete
27129
27130@subsubheading Synopsis
27131
27132@smallexample
27133 -target-file-delete @var{targetfile}
27134@end smallexample
27135
27136Delete @var{targetfile} from the target system.
27137
27138@subsubheading @value{GDBN} Command
27139
27140The corresponding @value{GDBN} command is @samp{remote delete}.
27141
27142@subsubheading Example
27143
27144@smallexample
27145(gdb)
27146-target-file-delete remotefile
27147^done
27148(gdb)
27149@end smallexample
27150
27151
ef21caaf
NR
27152@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27153@node GDB/MI Miscellaneous Commands
27154@section Miscellaneous @sc{gdb/mi} Commands
27155
27156@c @subheading -gdb-complete
27157
27158@subheading The @code{-gdb-exit} Command
27159@findex -gdb-exit
27160
27161@subsubheading Synopsis
27162
27163@smallexample
27164 -gdb-exit
27165@end smallexample
27166
27167Exit @value{GDBN} immediately.
27168
27169@subsubheading @value{GDBN} Command
27170
27171Approximately corresponds to @samp{quit}.
27172
27173@subsubheading Example
27174
27175@smallexample
594fe323 27176(gdb)
ef21caaf
NR
27177-gdb-exit
27178^exit
27179@end smallexample
27180
a2c02241 27181
9901a55b 27182@ignore
a2c02241
NR
27183@subheading The @code{-exec-abort} Command
27184@findex -exec-abort
27185
27186@subsubheading Synopsis
27187
27188@smallexample
27189 -exec-abort
27190@end smallexample
27191
27192Kill the inferior running program.
27193
27194@subsubheading @value{GDBN} Command
27195
27196The corresponding @value{GDBN} command is @samp{kill}.
27197
27198@subsubheading Example
27199N.A.
9901a55b 27200@end ignore
a2c02241
NR
27201
27202
ef21caaf
NR
27203@subheading The @code{-gdb-set} Command
27204@findex -gdb-set
27205
27206@subsubheading Synopsis
27207
27208@smallexample
27209 -gdb-set
27210@end smallexample
27211
27212Set an internal @value{GDBN} variable.
27213@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
27214
27215@subsubheading @value{GDBN} Command
27216
27217The corresponding @value{GDBN} command is @samp{set}.
27218
27219@subsubheading Example
27220
27221@smallexample
594fe323 27222(gdb)
ef21caaf
NR
27223-gdb-set $foo=3
27224^done
594fe323 27225(gdb)
ef21caaf
NR
27226@end smallexample
27227
27228
27229@subheading The @code{-gdb-show} Command
27230@findex -gdb-show
27231
27232@subsubheading Synopsis
27233
27234@smallexample
27235 -gdb-show
27236@end smallexample
27237
27238Show the current value of a @value{GDBN} variable.
27239
79a6e687 27240@subsubheading @value{GDBN} Command
ef21caaf
NR
27241
27242The corresponding @value{GDBN} command is @samp{show}.
27243
27244@subsubheading Example
27245
27246@smallexample
594fe323 27247(gdb)
ef21caaf
NR
27248-gdb-show annotate
27249^done,value="0"
594fe323 27250(gdb)
ef21caaf
NR
27251@end smallexample
27252
27253@c @subheading -gdb-source
27254
27255
27256@subheading The @code{-gdb-version} Command
27257@findex -gdb-version
27258
27259@subsubheading Synopsis
27260
27261@smallexample
27262 -gdb-version
27263@end smallexample
27264
27265Show version information for @value{GDBN}. Used mostly in testing.
27266
27267@subsubheading @value{GDBN} Command
27268
27269The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by
27270default shows this information when you start an interactive session.
27271
27272@subsubheading Example
27273
27274@c This example modifies the actual output from GDB to avoid overfull
27275@c box in TeX.
27276@smallexample
594fe323 27277(gdb)
ef21caaf
NR
27278-gdb-version
27279~GNU gdb 5.2.1
27280~Copyright 2000 Free Software Foundation, Inc.
27281~GDB is free software, covered by the GNU General Public License, and
27282~you are welcome to change it and/or distribute copies of it under
27283~ certain conditions.
27284~Type "show copying" to see the conditions.
27285~There is absolutely no warranty for GDB. Type "show warranty" for
27286~ details.
27287~This GDB was configured as
27288 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
27289^done
594fe323 27290(gdb)
ef21caaf
NR
27291@end smallexample
27292
084344da
VP
27293@subheading The @code{-list-features} Command
27294@findex -list-features
27295
27296Returns a list of particular features of the MI protocol that
27297this version of gdb implements. A feature can be a command,
27298or a new field in an output of some command, or even an
27299important bugfix. While a frontend can sometimes detect presence
27300of a feature at runtime, it is easier to perform detection at debugger
27301startup.
27302
27303The command returns a list of strings, with each string naming an
27304available feature. Each returned string is just a name, it does not
27305have any internal structure. The list of possible feature names
27306is given below.
27307
27308Example output:
27309
27310@smallexample
27311(gdb) -list-features
27312^done,result=["feature1","feature2"]
27313@end smallexample
27314
27315The current list of features is:
27316
30e026bb
VP
27317@table @samp
27318@item frozen-varobjs
27319Indicates presence of the @code{-var-set-frozen} command, as well
27320as possible presense of the @code{frozen} field in the output
27321of @code{-varobj-create}.
27322@item pending-breakpoints
27323Indicates presence of the @option{-f} option to the @code{-break-insert} command.
b6313243
TT
27324@item python
27325Indicates presence of Python scripting support, Python-based
27326pretty-printing commands, and possible presence of the
27327@samp{display_hint} field in the output of @code{-var-list-children}
30e026bb
VP
27328@item thread-info
27329Indicates presence of the @code{-thread-info} command.
8b4ed427 27330
30e026bb 27331@end table
084344da 27332
c6ebd6cf
VP
27333@subheading The @code{-list-target-features} Command
27334@findex -list-target-features
27335
27336Returns a list of particular features that are supported by the
27337target. Those features affect the permitted MI commands, but
27338unlike the features reported by the @code{-list-features} command, the
27339features depend on which target GDB is using at the moment. Whenever
27340a target can change, due to commands such as @code{-target-select},
27341@code{-target-attach} or @code{-exec-run}, the list of target features
27342may change, and the frontend should obtain it again.
27343Example output:
27344
27345@smallexample
27346(gdb) -list-features
27347^done,result=["async"]
27348@end smallexample
27349
27350The current list of features is:
27351
27352@table @samp
27353@item async
27354Indicates that the target is capable of asynchronous command
27355execution, which means that @value{GDBN} will accept further commands
27356while the target is running.
27357
27358@end table
27359
c3b108f7
VP
27360@subheading The @code{-list-thread-groups} Command
27361@findex -list-thread-groups
27362
27363@subheading Synopsis
27364
27365@smallexample
dc146f7c 27366-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ]
c3b108f7
VP
27367@end smallexample
27368
dc146f7c
VP
27369Lists thread groups (@pxref{Thread groups}). When a single thread
27370group is passed as the argument, lists the children of that group.
27371When several thread group are passed, lists information about those
27372thread groups. Without any parameters, lists information about all
27373top-level thread groups.
27374
27375Normally, thread groups that are being debugged are reported.
27376With the @samp{--available} option, @value{GDBN} reports thread groups
27377available on the target.
27378
27379The output of this command may have either a @samp{threads} result or
27380a @samp{groups} result. The @samp{thread} result has a list of tuples
27381as value, with each tuple describing a thread (@pxref{GDB/MI Thread
27382Information}). The @samp{groups} result has a list of tuples as value,
27383each tuple describing a thread group. If top-level groups are
27384requested (that is, no parameter is passed), or when several groups
27385are passed, the output always has a @samp{groups} result. The format
27386of the @samp{group} result is described below.
27387
27388To reduce the number of roundtrips it's possible to list thread groups
27389together with their children, by passing the @samp{--recurse} option
27390and the recursion depth. Presently, only recursion depth of 1 is
27391permitted. If this option is present, then every reported thread group
27392will also include its children, either as @samp{group} or
27393@samp{threads} field.
27394
27395In general, any combination of option and parameters is permitted, with
27396the following caveats:
27397
27398@itemize @bullet
27399@item
27400When a single thread group is passed, the output will typically
27401be the @samp{threads} result. Because threads may not contain
27402anything, the @samp{recurse} option will be ignored.
27403
27404@item
27405When the @samp{--available} option is passed, limited information may
27406be available. In particular, the list of threads of a process might
27407be inaccessible. Further, specifying specific thread groups might
27408not give any performance advantage over listing all thread groups.
27409The frontend should assume that @samp{-list-thread-groups --available}
27410is always an expensive operation and cache the results.
27411
27412@end itemize
27413
27414The @samp{groups} result is a list of tuples, where each tuple may
27415have the following fields:
27416
27417@table @code
27418@item id
27419Identifier of the thread group. This field is always present.
a79b8f6e
VP
27420The identifier is an opaque string; frontends should not try to
27421convert it to an integer, even though it might look like one.
dc146f7c
VP
27422
27423@item type
27424The type of the thread group. At present, only @samp{process} is a
27425valid type.
27426
27427@item pid
27428The target-specific process identifier. This field is only present
a79b8f6e 27429for thread groups of type @samp{process} and only if the process exists.
c3b108f7 27430
dc146f7c
VP
27431@item num_children
27432The number of children this thread group has. This field may be
27433absent for an available thread group.
27434
27435@item threads
27436This field has a list of tuples as value, each tuple describing a
27437thread. It may be present if the @samp{--recurse} option is
27438specified, and it's actually possible to obtain the threads.
27439
27440@item cores
27441This field is a list of integers, each identifying a core that one
27442thread of the group is running on. This field may be absent if
27443such information is not available.
27444
a79b8f6e
VP
27445@item executable
27446The name of the executable file that corresponds to this thread group.
27447The field is only present for thread groups of type @samp{process},
27448and only if there is a corresponding executable file.
27449
dc146f7c 27450@end table
c3b108f7
VP
27451
27452@subheading Example
27453
27454@smallexample
27455@value{GDBP}
27456-list-thread-groups
27457^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}]
27458-list-thread-groups 17
27459^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
27460 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
27461@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
27462 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
27463 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]]
dc146f7c
VP
27464-list-thread-groups --available
27465^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}]
27466-list-thread-groups --available --recurse 1
27467 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
27468 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
27469 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..]
27470-list-thread-groups --available --recurse 1 17 18
27471^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
27472 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
27473 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...]
c3b108f7 27474@end smallexample
c6ebd6cf 27475
a79b8f6e
VP
27476
27477@subheading The @code{-add-inferior} Command
27478@findex -add-inferior
27479
27480@subheading Synopsis
27481
27482@smallexample
27483-add-inferior
27484@end smallexample
27485
27486Creates a new inferior (@pxref{Inferiors and Programs}). The created
27487inferior is not associated with any executable. Such association may
27488be established with the @samp{-file-exec-and-symbols} command
27489(@pxref{GDB/MI File Commands}). The command response has a single
27490field, @samp{thread-group}, whose value is the identifier of the
27491thread group corresponding to the new inferior.
27492
27493@subheading Example
27494
27495@smallexample
27496@value{GDBP}
27497-add-inferior
27498^done,thread-group="i3"
27499@end smallexample
27500
ef21caaf
NR
27501@subheading The @code{-interpreter-exec} Command
27502@findex -interpreter-exec
27503
27504@subheading Synopsis
27505
27506@smallexample
27507-interpreter-exec @var{interpreter} @var{command}
27508@end smallexample
a2c02241 27509@anchor{-interpreter-exec}
ef21caaf
NR
27510
27511Execute the specified @var{command} in the given @var{interpreter}.
27512
27513@subheading @value{GDBN} Command
27514
27515The corresponding @value{GDBN} command is @samp{interpreter-exec}.
27516
27517@subheading Example
27518
27519@smallexample
594fe323 27520(gdb)
ef21caaf
NR
27521-interpreter-exec console "break main"
27522&"During symbol reading, couldn't parse type; debugger out of date?.\n"
27523&"During symbol reading, bad structure-type format.\n"
27524~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
27525^done
594fe323 27526(gdb)
ef21caaf
NR
27527@end smallexample
27528
27529@subheading The @code{-inferior-tty-set} Command
27530@findex -inferior-tty-set
27531
27532@subheading Synopsis
27533
27534@smallexample
27535-inferior-tty-set /dev/pts/1
27536@end smallexample
27537
27538Set terminal for future runs of the program being debugged.
27539
27540@subheading @value{GDBN} Command
27541
27542The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1.
27543
27544@subheading Example
27545
27546@smallexample
594fe323 27547(gdb)
ef21caaf
NR
27548-inferior-tty-set /dev/pts/1
27549^done
594fe323 27550(gdb)
ef21caaf
NR
27551@end smallexample
27552
27553@subheading The @code{-inferior-tty-show} Command
27554@findex -inferior-tty-show
27555
27556@subheading Synopsis
27557
27558@smallexample
27559-inferior-tty-show
27560@end smallexample
27561
27562Show terminal for future runs of program being debugged.
27563
27564@subheading @value{GDBN} Command
27565
27566The corresponding @value{GDBN} command is @samp{show inferior-tty}.
27567
27568@subheading Example
27569
27570@smallexample
594fe323 27571(gdb)
ef21caaf
NR
27572-inferior-tty-set /dev/pts/1
27573^done
594fe323 27574(gdb)
ef21caaf
NR
27575-inferior-tty-show
27576^done,inferior_tty_terminal="/dev/pts/1"
594fe323 27577(gdb)
ef21caaf 27578@end smallexample
922fbb7b 27579
a4eefcd8
NR
27580@subheading The @code{-enable-timings} Command
27581@findex -enable-timings
27582
27583@subheading Synopsis
27584
27585@smallexample
27586-enable-timings [yes | no]
27587@end smallexample
27588
27589Toggle the printing of the wallclock, user and system times for an MI
27590command as a field in its output. This command is to help frontend
27591developers optimize the performance of their code. No argument is
27592equivalent to @samp{yes}.
27593
27594@subheading @value{GDBN} Command
27595
27596No equivalent.
27597
27598@subheading Example
27599
27600@smallexample
27601(gdb)
27602-enable-timings
27603^done
27604(gdb)
27605-break-insert main
27606^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
27607addr="0x080484ed",func="main",file="myprog.c",
27608fullname="/home/nickrob/myprog.c",line="73",times="0"@},
27609time=@{wallclock="0.05185",user="0.00800",system="0.00000"@}
27610(gdb)
27611-enable-timings no
27612^done
27613(gdb)
27614-exec-run
27615^running
27616(gdb)
a47ec5fe 27617*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
a4eefcd8
NR
27618frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@},
27619@{name="argv",value="0xbfb60364"@}],file="myprog.c",
27620fullname="/home/nickrob/myprog.c",line="73"@}
27621(gdb)
27622@end smallexample
27623
922fbb7b
AC
27624@node Annotations
27625@chapter @value{GDBN} Annotations
27626
086432e2
AC
27627This chapter describes annotations in @value{GDBN}. Annotations were
27628designed to interface @value{GDBN} to graphical user interfaces or other
27629similar programs which want to interact with @value{GDBN} at a
922fbb7b
AC
27630relatively high level.
27631
d3e8051b 27632The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2
AC
27633(@pxref{GDB/MI}).
27634
922fbb7b
AC
27635@ignore
27636This is Edition @value{EDITION}, @value{DATE}.
27637@end ignore
27638
27639@menu
27640* Annotations Overview:: What annotations are; the general syntax.
9e6c4bd5 27641* Server Prefix:: Issuing a command without affecting user state.
922fbb7b
AC
27642* Prompting:: Annotations marking @value{GDBN}'s need for input.
27643* Errors:: Annotations for error messages.
922fbb7b
AC
27644* Invalidation:: Some annotations describe things now invalid.
27645* Annotations for Running::
27646 Whether the program is running, how it stopped, etc.
27647* Source Annotations:: Annotations describing source code.
922fbb7b
AC
27648@end menu
27649
27650@node Annotations Overview
27651@section What is an Annotation?
27652@cindex annotations
27653
922fbb7b
AC
27654Annotations start with a newline character, two @samp{control-z}
27655characters, and the name of the annotation. If there is no additional
27656information associated with this annotation, the name of the annotation
27657is followed immediately by a newline. If there is additional
27658information, the name of the annotation is followed by a space, the
27659additional information, and a newline. The additional information
27660cannot contain newline characters.
27661
27662Any output not beginning with a newline and two @samp{control-z}
27663characters denotes literal output from @value{GDBN}. Currently there is
27664no need for @value{GDBN} to output a newline followed by two
27665@samp{control-z} characters, but if there was such a need, the
27666annotations could be extended with an @samp{escape} annotation which
27667means those three characters as output.
27668
086432e2
AC
27669The annotation @var{level}, which is specified using the
27670@option{--annotate} command line option (@pxref{Mode Options}), controls
27671how much information @value{GDBN} prints together with its prompt,
27672values of expressions, source lines, and other types of output. Level 0
d3e8051b 27673is for no annotations, level 1 is for use when @value{GDBN} is run as a
086432e2
AC
27674subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
27675for programs that control @value{GDBN}, and level 2 annotations have
27676been made obsolete (@pxref{Limitations, , Limitations of the Annotation
09d4efe1
EZ
27677Interface, annotate, GDB's Obsolete Annotations}).
27678
27679@table @code
27680@kindex set annotate
27681@item set annotate @var{level}
e09f16f9 27682The @value{GDBN} command @code{set annotate} sets the level of
09d4efe1 27683annotations to the specified @var{level}.
9c16f35a
EZ
27684
27685@item show annotate
27686@kindex show annotate
27687Show the current annotation level.
09d4efe1
EZ
27688@end table
27689
27690This chapter describes level 3 annotations.
086432e2 27691
922fbb7b
AC
27692A simple example of starting up @value{GDBN} with annotations is:
27693
27694@smallexample
086432e2
AC
27695$ @kbd{gdb --annotate=3}
27696GNU gdb 6.0
27697Copyright 2003 Free Software Foundation, Inc.
922fbb7b
AC
27698GDB is free software, covered by the GNU General Public License,
27699and you are welcome to change it and/or distribute copies of it
27700under certain conditions.
27701Type "show copying" to see the conditions.
27702There is absolutely no warranty for GDB. Type "show warranty"
27703for details.
086432e2 27704This GDB was configured as "i386-pc-linux-gnu"
922fbb7b
AC
27705
27706^Z^Zpre-prompt
f7dc1244 27707(@value{GDBP})
922fbb7b 27708^Z^Zprompt
086432e2 27709@kbd{quit}
922fbb7b
AC
27710
27711^Z^Zpost-prompt
b383017d 27712$
922fbb7b
AC
27713@end smallexample
27714
27715Here @samp{quit} is input to @value{GDBN}; the rest is output from
27716@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
27717denotes a @samp{control-z} character) are annotations; the rest is
27718output from @value{GDBN}.
27719
9e6c4bd5
NR
27720@node Server Prefix
27721@section The Server Prefix
27722@cindex server prefix
27723
27724If you prefix a command with @samp{server } then it will not affect
27725the command history, nor will it affect @value{GDBN}'s notion of which
27726command to repeat if @key{RET} is pressed on a line by itself. This
27727means that commands can be run behind a user's back by a front-end in
27728a transparent manner.
27729
d837706a
NR
27730The @code{server } prefix does not affect the recording of values into
27731the value history; to print a value without recording it into the
27732value history, use the @code{output} command instead of the
27733@code{print} command.
27734
27735Using this prefix also disables confirmation requests
27736(@pxref{confirmation requests}).
9e6c4bd5 27737
922fbb7b
AC
27738@node Prompting
27739@section Annotation for @value{GDBN} Input
27740
27741@cindex annotations for prompts
27742When @value{GDBN} prompts for input, it annotates this fact so it is possible
27743to know when to send output, when the output from a given command is
27744over, etc.
27745
27746Different kinds of input each have a different @dfn{input type}. Each
27747input type has three annotations: a @code{pre-} annotation, which
27748denotes the beginning of any prompt which is being output, a plain
27749annotation, which denotes the end of the prompt, and then a @code{post-}
27750annotation which denotes the end of any echo which may (or may not) be
27751associated with the input. For example, the @code{prompt} input type
27752features the following annotations:
27753
27754@smallexample
27755^Z^Zpre-prompt
27756^Z^Zprompt
27757^Z^Zpost-prompt
27758@end smallexample
27759
27760The input types are
27761
27762@table @code
e5ac9b53
EZ
27763@findex pre-prompt annotation
27764@findex prompt annotation
27765@findex post-prompt annotation
922fbb7b
AC
27766@item prompt
27767When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
27768
e5ac9b53
EZ
27769@findex pre-commands annotation
27770@findex commands annotation
27771@findex post-commands annotation
922fbb7b
AC
27772@item commands
27773When @value{GDBN} prompts for a set of commands, like in the @code{commands}
27774command. The annotations are repeated for each command which is input.
27775
e5ac9b53
EZ
27776@findex pre-overload-choice annotation
27777@findex overload-choice annotation
27778@findex post-overload-choice annotation
922fbb7b
AC
27779@item overload-choice
27780When @value{GDBN} wants the user to select between various overloaded functions.
27781
e5ac9b53
EZ
27782@findex pre-query annotation
27783@findex query annotation
27784@findex post-query annotation
922fbb7b
AC
27785@item query
27786When @value{GDBN} wants the user to confirm a potentially dangerous operation.
27787
e5ac9b53
EZ
27788@findex pre-prompt-for-continue annotation
27789@findex prompt-for-continue annotation
27790@findex post-prompt-for-continue annotation
922fbb7b
AC
27791@item prompt-for-continue
27792When @value{GDBN} is asking the user to press return to continue. Note: Don't
27793expect this to work well; instead use @code{set height 0} to disable
27794prompting. This is because the counting of lines is buggy in the
27795presence of annotations.
27796@end table
27797
27798@node Errors
27799@section Errors
27800@cindex annotations for errors, warnings and interrupts
27801
e5ac9b53 27802@findex quit annotation
922fbb7b
AC
27803@smallexample
27804^Z^Zquit
27805@end smallexample
27806
27807This annotation occurs right before @value{GDBN} responds to an interrupt.
27808
e5ac9b53 27809@findex error annotation
922fbb7b
AC
27810@smallexample
27811^Z^Zerror
27812@end smallexample
27813
27814This annotation occurs right before @value{GDBN} responds to an error.
27815
27816Quit and error annotations indicate that any annotations which @value{GDBN} was
27817in the middle of may end abruptly. For example, if a
27818@code{value-history-begin} annotation is followed by a @code{error}, one
27819cannot expect to receive the matching @code{value-history-end}. One
27820cannot expect not to receive it either, however; an error annotation
27821does not necessarily mean that @value{GDBN} is immediately returning all the way
27822to the top level.
27823
e5ac9b53 27824@findex error-begin annotation
922fbb7b
AC
27825A quit or error annotation may be preceded by
27826
27827@smallexample
27828^Z^Zerror-begin
27829@end smallexample
27830
27831Any output between that and the quit or error annotation is the error
27832message.
27833
27834Warning messages are not yet annotated.
27835@c If we want to change that, need to fix warning(), type_error(),
27836@c range_error(), and possibly other places.
27837
922fbb7b
AC
27838@node Invalidation
27839@section Invalidation Notices
27840
27841@cindex annotations for invalidation messages
27842The following annotations say that certain pieces of state may have
27843changed.
27844
27845@table @code
e5ac9b53 27846@findex frames-invalid annotation
922fbb7b
AC
27847@item ^Z^Zframes-invalid
27848
27849The frames (for example, output from the @code{backtrace} command) may
27850have changed.
27851
e5ac9b53 27852@findex breakpoints-invalid annotation
922fbb7b
AC
27853@item ^Z^Zbreakpoints-invalid
27854
27855The breakpoints may have changed. For example, the user just added or
27856deleted a breakpoint.
27857@end table
27858
27859@node Annotations for Running
27860@section Running the Program
27861@cindex annotations for running programs
27862
e5ac9b53
EZ
27863@findex starting annotation
27864@findex stopping annotation
922fbb7b 27865When the program starts executing due to a @value{GDBN} command such as
b383017d 27866@code{step} or @code{continue},
922fbb7b
AC
27867
27868@smallexample
27869^Z^Zstarting
27870@end smallexample
27871
b383017d 27872is output. When the program stops,
922fbb7b
AC
27873
27874@smallexample
27875^Z^Zstopped
27876@end smallexample
27877
27878is output. Before the @code{stopped} annotation, a variety of
27879annotations describe how the program stopped.
27880
27881@table @code
e5ac9b53 27882@findex exited annotation
922fbb7b
AC
27883@item ^Z^Zexited @var{exit-status}
27884The program exited, and @var{exit-status} is the exit status (zero for
27885successful exit, otherwise nonzero).
27886
e5ac9b53
EZ
27887@findex signalled annotation
27888@findex signal-name annotation
27889@findex signal-name-end annotation
27890@findex signal-string annotation
27891@findex signal-string-end annotation
922fbb7b
AC
27892@item ^Z^Zsignalled
27893The program exited with a signal. After the @code{^Z^Zsignalled}, the
27894annotation continues:
27895
27896@smallexample
27897@var{intro-text}
27898^Z^Zsignal-name
27899@var{name}
27900^Z^Zsignal-name-end
27901@var{middle-text}
27902^Z^Zsignal-string
27903@var{string}
27904^Z^Zsignal-string-end
27905@var{end-text}
27906@end smallexample
27907
27908@noindent
27909where @var{name} is the name of the signal, such as @code{SIGILL} or
27910@code{SIGSEGV}, and @var{string} is the explanation of the signal, such
27911as @code{Illegal Instruction} or @code{Segmentation fault}.
27912@var{intro-text}, @var{middle-text}, and @var{end-text} are for the
27913user's benefit and have no particular format.
27914
e5ac9b53 27915@findex signal annotation
922fbb7b
AC
27916@item ^Z^Zsignal
27917The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
27918just saying that the program received the signal, not that it was
27919terminated with it.
27920
e5ac9b53 27921@findex breakpoint annotation
922fbb7b
AC
27922@item ^Z^Zbreakpoint @var{number}
27923The program hit breakpoint number @var{number}.
27924
e5ac9b53 27925@findex watchpoint annotation
922fbb7b
AC
27926@item ^Z^Zwatchpoint @var{number}
27927The program hit watchpoint number @var{number}.
27928@end table
27929
27930@node Source Annotations
27931@section Displaying Source
27932@cindex annotations for source display
27933
e5ac9b53 27934@findex source annotation
922fbb7b
AC
27935The following annotation is used instead of displaying source code:
27936
27937@smallexample
27938^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
27939@end smallexample
27940
27941where @var{filename} is an absolute file name indicating which source
27942file, @var{line} is the line number within that file (where 1 is the
27943first line in the file), @var{character} is the character position
27944within the file (where 0 is the first character in the file) (for most
27945debug formats this will necessarily point to the beginning of a line),
27946@var{middle} is @samp{middle} if @var{addr} is in the middle of the
27947line, or @samp{beg} if @var{addr} is at the beginning of the line, and
27948@var{addr} is the address in the target program associated with the
27949source which is being displayed. @var{addr} is in the form @samp{0x}
27950followed by one or more lowercase hex digits (note that this does not
27951depend on the language).
27952
4efc6507
DE
27953@node JIT Interface
27954@chapter JIT Compilation Interface
27955@cindex just-in-time compilation
27956@cindex JIT compilation interface
27957
27958This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation
27959interface. A JIT compiler is a program or library that generates native
27960executable code at runtime and executes it, usually in order to achieve good
27961performance while maintaining platform independence.
27962
27963Programs that use JIT compilation are normally difficult to debug because
27964portions of their code are generated at runtime, instead of being loaded from
27965object files, which is where @value{GDBN} normally finds the program's symbols
27966and debug information. In order to debug programs that use JIT compilation,
27967@value{GDBN} has an interface that allows the program to register in-memory
27968symbol files with @value{GDBN} at runtime.
27969
27970If you are using @value{GDBN} to debug a program that uses this interface, then
27971it should work transparently so long as you have not stripped the binary. If
27972you are developing a JIT compiler, then the interface is documented in the rest
27973of this chapter. At this time, the only known client of this interface is the
27974LLVM JIT.
27975
27976Broadly speaking, the JIT interface mirrors the dynamic loader interface. The
27977JIT compiler communicates with @value{GDBN} by writing data into a global
27978variable and calling a fuction at a well-known symbol. When @value{GDBN}
27979attaches, it reads a linked list of symbol files from the global variable to
27980find existing code, and puts a breakpoint in the function so that it can find
27981out about additional code.
27982
27983@menu
27984* Declarations:: Relevant C struct declarations
27985* Registering Code:: Steps to register code
27986* Unregistering Code:: Steps to unregister code
27987@end menu
27988
27989@node Declarations
27990@section JIT Declarations
27991
27992These are the relevant struct declarations that a C program should include to
27993implement the interface:
27994
27995@smallexample
27996typedef enum
27997@{
27998 JIT_NOACTION = 0,
27999 JIT_REGISTER_FN,
28000 JIT_UNREGISTER_FN
28001@} jit_actions_t;
28002
28003struct jit_code_entry
28004@{
28005 struct jit_code_entry *next_entry;
28006 struct jit_code_entry *prev_entry;
28007 const char *symfile_addr;
28008 uint64_t symfile_size;
28009@};
28010
28011struct jit_descriptor
28012@{
28013 uint32_t version;
28014 /* This type should be jit_actions_t, but we use uint32_t
28015 to be explicit about the bitwidth. */
28016 uint32_t action_flag;
28017 struct jit_code_entry *relevant_entry;
28018 struct jit_code_entry *first_entry;
28019@};
28020
28021/* GDB puts a breakpoint in this function. */
28022void __attribute__((noinline)) __jit_debug_register_code() @{ @};
28023
28024/* Make sure to specify the version statically, because the
28025 debugger may check the version before we can set it. */
28026struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @};
28027@end smallexample
28028
28029If the JIT is multi-threaded, then it is important that the JIT synchronize any
28030modifications to this global data properly, which can easily be done by putting
28031a global mutex around modifications to these structures.
28032
28033@node Registering Code
28034@section Registering Code
28035
28036To register code with @value{GDBN}, the JIT should follow this protocol:
28037
28038@itemize @bullet
28039@item
28040Generate an object file in memory with symbols and other desired debug
28041information. The file must include the virtual addresses of the sections.
28042
28043@item
28044Create a code entry for the file, which gives the start and size of the symbol
28045file.
28046
28047@item
28048Add it to the linked list in the JIT descriptor.
28049
28050@item
28051Point the relevant_entry field of the descriptor at the entry.
28052
28053@item
28054Set @code{action_flag} to @code{JIT_REGISTER} and call
28055@code{__jit_debug_register_code}.
28056@end itemize
28057
28058When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the
28059@code{relevant_entry} pointer so it doesn't have to walk the list looking for
28060new code. However, the linked list must still be maintained in order to allow
28061@value{GDBN} to attach to a running process and still find the symbol files.
28062
28063@node Unregistering Code
28064@section Unregistering Code
28065
28066If code is freed, then the JIT should use the following protocol:
28067
28068@itemize @bullet
28069@item
28070Remove the code entry corresponding to the code from the linked list.
28071
28072@item
28073Point the @code{relevant_entry} field of the descriptor at the code entry.
28074
28075@item
28076Set @code{action_flag} to @code{JIT_UNREGISTER} and call
28077@code{__jit_debug_register_code}.
28078@end itemize
28079
28080If the JIT frees or recompiles code without unregistering it, then @value{GDBN}
28081and the JIT will leak the memory used for the associated symbol files.
28082
8e04817f
AC
28083@node GDB Bugs
28084@chapter Reporting Bugs in @value{GDBN}
28085@cindex bugs in @value{GDBN}
28086@cindex reporting bugs in @value{GDBN}
c906108c 28087
8e04817f 28088Your bug reports play an essential role in making @value{GDBN} reliable.
c906108c 28089
8e04817f
AC
28090Reporting a bug may help you by bringing a solution to your problem, or it
28091may not. But in any case the principal function of a bug report is to help
28092the entire community by making the next version of @value{GDBN} work better. Bug
28093reports are your contribution to the maintenance of @value{GDBN}.
c906108c 28094
8e04817f
AC
28095In order for a bug report to serve its purpose, you must include the
28096information that enables us to fix the bug.
c4555f82
SC
28097
28098@menu
8e04817f
AC
28099* Bug Criteria:: Have you found a bug?
28100* Bug Reporting:: How to report bugs
c4555f82
SC
28101@end menu
28102
8e04817f 28103@node Bug Criteria
79a6e687 28104@section Have You Found a Bug?
8e04817f 28105@cindex bug criteria
c4555f82 28106
8e04817f 28107If you are not sure whether you have found a bug, here are some guidelines:
c4555f82
SC
28108
28109@itemize @bullet
8e04817f
AC
28110@cindex fatal signal
28111@cindex debugger crash
28112@cindex crash of debugger
c4555f82 28113@item
8e04817f
AC
28114If the debugger gets a fatal signal, for any input whatever, that is a
28115@value{GDBN} bug. Reliable debuggers never crash.
28116
28117@cindex error on valid input
28118@item
28119If @value{GDBN} produces an error message for valid input, that is a
28120bug. (Note that if you're cross debugging, the problem may also be
28121somewhere in the connection to the target.)
c4555f82 28122
8e04817f 28123@cindex invalid input
c4555f82 28124@item
8e04817f
AC
28125If @value{GDBN} does not produce an error message for invalid input,
28126that is a bug. However, you should note that your idea of
28127``invalid input'' might be our idea of ``an extension'' or ``support
28128for traditional practice''.
28129
28130@item
28131If you are an experienced user of debugging tools, your suggestions
28132for improvement of @value{GDBN} are welcome in any case.
c4555f82
SC
28133@end itemize
28134
8e04817f 28135@node Bug Reporting
79a6e687 28136@section How to Report Bugs
8e04817f
AC
28137@cindex bug reports
28138@cindex @value{GDBN} bugs, reporting
28139
28140A number of companies and individuals offer support for @sc{gnu} products.
28141If you obtained @value{GDBN} from a support organization, we recommend you
28142contact that organization first.
28143
28144You can find contact information for many support companies and
28145individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
28146distribution.
28147@c should add a web page ref...
28148
c16158bc
JM
28149@ifset BUGURL
28150@ifset BUGURL_DEFAULT
129188f6 28151In any event, we also recommend that you submit bug reports for
d3e8051b 28152@value{GDBN}. The preferred method is to submit them directly using
129188f6
AC
28153@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
28154page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
28155be used.
8e04817f
AC
28156
28157@strong{Do not send bug reports to @samp{info-gdb}, or to
28158@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
28159not want to receive bug reports. Those that do have arranged to receive
28160@samp{bug-gdb}.
28161
28162The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
28163serves as a repeater. The mailing list and the newsgroup carry exactly
28164the same messages. Often people think of posting bug reports to the
28165newsgroup instead of mailing them. This appears to work, but it has one
28166problem which can be crucial: a newsgroup posting often lacks a mail
28167path back to the sender. Thus, if we need to ask for more information,
28168we may be unable to reach you. For this reason, it is better to send
28169bug reports to the mailing list.
c16158bc
JM
28170@end ifset
28171@ifclear BUGURL_DEFAULT
28172In any event, we also recommend that you submit bug reports for
28173@value{GDBN} to @value{BUGURL}.
28174@end ifclear
28175@end ifset
c4555f82 28176
8e04817f
AC
28177The fundamental principle of reporting bugs usefully is this:
28178@strong{report all the facts}. If you are not sure whether to state a
28179fact or leave it out, state it!
c4555f82 28180
8e04817f
AC
28181Often people omit facts because they think they know what causes the
28182problem and assume that some details do not matter. Thus, you might
28183assume that the name of the variable you use in an example does not matter.
28184Well, probably it does not, but one cannot be sure. Perhaps the bug is a
28185stray memory reference which happens to fetch from the location where that
28186name is stored in memory; perhaps, if the name were different, the contents
28187of that location would fool the debugger into doing the right thing despite
28188the bug. Play it safe and give a specific, complete example. That is the
28189easiest thing for you to do, and the most helpful.
c4555f82 28190
8e04817f
AC
28191Keep in mind that the purpose of a bug report is to enable us to fix the
28192bug. It may be that the bug has been reported previously, but neither
28193you nor we can know that unless your bug report is complete and
28194self-contained.
c4555f82 28195
8e04817f
AC
28196Sometimes people give a few sketchy facts and ask, ``Does this ring a
28197bell?'' Those bug reports are useless, and we urge everyone to
28198@emph{refuse to respond to them} except to chide the sender to report
28199bugs properly.
28200
28201To enable us to fix the bug, you should include all these things:
c4555f82
SC
28202
28203@itemize @bullet
28204@item
8e04817f
AC
28205The version of @value{GDBN}. @value{GDBN} announces it if you start
28206with no arguments; you can also print it at any time using @code{show
28207version}.
c4555f82 28208
8e04817f
AC
28209Without this, we will not know whether there is any point in looking for
28210the bug in the current version of @value{GDBN}.
c4555f82
SC
28211
28212@item
8e04817f
AC
28213The type of machine you are using, and the operating system name and
28214version number.
c4555f82
SC
28215
28216@item
c1468174 28217What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
8e04817f 28218``@value{GCC}--2.8.1''.
c4555f82
SC
28219
28220@item
8e04817f 28221What compiler (and its version) was used to compile the program you are
c1468174 28222debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
3f94c067
BW
28223C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version}
28224to get this information; for other compilers, see the documentation for
28225those compilers.
c4555f82 28226
8e04817f
AC
28227@item
28228The command arguments you gave the compiler to compile your example and
28229observe the bug. For example, did you use @samp{-O}? To guarantee
28230you will not omit something important, list them all. A copy of the
28231Makefile (or the output from make) is sufficient.
c4555f82 28232
8e04817f
AC
28233If we were to try to guess the arguments, we would probably guess wrong
28234and then we might not encounter the bug.
c4555f82 28235
8e04817f
AC
28236@item
28237A complete input script, and all necessary source files, that will
28238reproduce the bug.
c4555f82 28239
8e04817f
AC
28240@item
28241A description of what behavior you observe that you believe is
28242incorrect. For example, ``It gets a fatal signal.''
c4555f82 28243
8e04817f
AC
28244Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
28245will certainly notice it. But if the bug is incorrect output, we might
28246not notice unless it is glaringly wrong. You might as well not give us
28247a chance to make a mistake.
c4555f82 28248
8e04817f
AC
28249Even if the problem you experience is a fatal signal, you should still
28250say so explicitly. Suppose something strange is going on, such as, your
28251copy of @value{GDBN} is out of synch, or you have encountered a bug in
28252the C library on your system. (This has happened!) Your copy might
28253crash and ours would not. If you told us to expect a crash, then when
28254ours fails to crash, we would know that the bug was not happening for
28255us. If you had not told us to expect a crash, then we would not be able
28256to draw any conclusion from our observations.
c4555f82 28257
e0c07bf0
MC
28258@pindex script
28259@cindex recording a session script
28260To collect all this information, you can use a session recording program
28261such as @command{script}, which is available on many Unix systems.
28262Just run your @value{GDBN} session inside @command{script} and then
28263include the @file{typescript} file with your bug report.
28264
28265Another way to record a @value{GDBN} session is to run @value{GDBN}
28266inside Emacs and then save the entire buffer to a file.
28267
8e04817f
AC
28268@item
28269If you wish to suggest changes to the @value{GDBN} source, send us context
28270diffs. If you even discuss something in the @value{GDBN} source, refer to
28271it by context, not by line number.
c4555f82 28272
8e04817f
AC
28273The line numbers in our development sources will not match those in your
28274sources. Your line numbers would convey no useful information to us.
c4555f82 28275
8e04817f 28276@end itemize
c4555f82 28277
8e04817f 28278Here are some things that are not necessary:
c4555f82 28279
8e04817f
AC
28280@itemize @bullet
28281@item
28282A description of the envelope of the bug.
c4555f82 28283
8e04817f
AC
28284Often people who encounter a bug spend a lot of time investigating
28285which changes to the input file will make the bug go away and which
28286changes will not affect it.
c4555f82 28287
8e04817f
AC
28288This is often time consuming and not very useful, because the way we
28289will find the bug is by running a single example under the debugger
28290with breakpoints, not by pure deduction from a series of examples.
28291We recommend that you save your time for something else.
c4555f82 28292
8e04817f
AC
28293Of course, if you can find a simpler example to report @emph{instead}
28294of the original one, that is a convenience for us. Errors in the
28295output will be easier to spot, running under the debugger will take
28296less time, and so on.
c4555f82 28297
8e04817f
AC
28298However, simplification is not vital; if you do not want to do this,
28299report the bug anyway and send us the entire test case you used.
c4555f82 28300
8e04817f
AC
28301@item
28302A patch for the bug.
c4555f82 28303
8e04817f
AC
28304A patch for the bug does help us if it is a good one. But do not omit
28305the necessary information, such as the test case, on the assumption that
28306a patch is all we need. We might see problems with your patch and decide
28307to fix the problem another way, or we might not understand it at all.
c4555f82 28308
8e04817f
AC
28309Sometimes with a program as complicated as @value{GDBN} it is very hard to
28310construct an example that will make the program follow a certain path
28311through the code. If you do not send us the example, we will not be able
28312to construct one, so we will not be able to verify that the bug is fixed.
c4555f82 28313
8e04817f
AC
28314And if we cannot understand what bug you are trying to fix, or why your
28315patch should be an improvement, we will not install it. A test case will
28316help us to understand.
c4555f82 28317
8e04817f
AC
28318@item
28319A guess about what the bug is or what it depends on.
c4555f82 28320
8e04817f
AC
28321Such guesses are usually wrong. Even we cannot guess right about such
28322things without first using the debugger to find the facts.
28323@end itemize
c4555f82 28324
8e04817f
AC
28325@c The readline documentation is distributed with the readline code
28326@c and consists of the two following files:
28327@c rluser.texinfo
28328@c inc-hist.texinfo
28329@c Use -I with makeinfo to point to the appropriate directory,
28330@c environment var TEXINPUTS with TeX.
5bdf8622 28331@include rluser.texi
8e04817f 28332@include inc-hist.texinfo
c4555f82 28333
c4555f82 28334
8e04817f
AC
28335@node Formatting Documentation
28336@appendix Formatting Documentation
c4555f82 28337
8e04817f
AC
28338@cindex @value{GDBN} reference card
28339@cindex reference card
28340The @value{GDBN} 4 release includes an already-formatted reference card, ready
28341for printing with PostScript or Ghostscript, in the @file{gdb}
28342subdirectory of the main source directory@footnote{In
28343@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
28344release.}. If you can use PostScript or Ghostscript with your printer,
28345you can print the reference card immediately with @file{refcard.ps}.
c4555f82 28346
8e04817f
AC
28347The release also includes the source for the reference card. You
28348can format it, using @TeX{}, by typing:
c4555f82 28349
474c8240 28350@smallexample
8e04817f 28351make refcard.dvi
474c8240 28352@end smallexample
c4555f82 28353
8e04817f
AC
28354The @value{GDBN} reference card is designed to print in @dfn{landscape}
28355mode on US ``letter'' size paper;
28356that is, on a sheet 11 inches wide by 8.5 inches
28357high. You will need to specify this form of printing as an option to
28358your @sc{dvi} output program.
c4555f82 28359
8e04817f 28360@cindex documentation
c4555f82 28361
8e04817f
AC
28362All the documentation for @value{GDBN} comes as part of the machine-readable
28363distribution. The documentation is written in Texinfo format, which is
28364a documentation system that uses a single source file to produce both
28365on-line information and a printed manual. You can use one of the Info
28366formatting commands to create the on-line version of the documentation
28367and @TeX{} (or @code{texi2roff}) to typeset the printed version.
c4555f82 28368
8e04817f
AC
28369@value{GDBN} includes an already formatted copy of the on-line Info
28370version of this manual in the @file{gdb} subdirectory. The main Info
28371file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
28372subordinate files matching @samp{gdb.info*} in the same directory. If
28373necessary, you can print out these files, or read them with any editor;
28374but they are easier to read using the @code{info} subsystem in @sc{gnu}
28375Emacs or the standalone @code{info} program, available as part of the
28376@sc{gnu} Texinfo distribution.
c4555f82 28377
8e04817f
AC
28378If you want to format these Info files yourself, you need one of the
28379Info formatting programs, such as @code{texinfo-format-buffer} or
28380@code{makeinfo}.
c4555f82 28381
8e04817f
AC
28382If you have @code{makeinfo} installed, and are in the top level
28383@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
28384version @value{GDBVN}), you can make the Info file by typing:
c4555f82 28385
474c8240 28386@smallexample
8e04817f
AC
28387cd gdb
28388make gdb.info
474c8240 28389@end smallexample
c4555f82 28390
8e04817f
AC
28391If you want to typeset and print copies of this manual, you need @TeX{},
28392a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
28393Texinfo definitions file.
c4555f82 28394
8e04817f
AC
28395@TeX{} is a typesetting program; it does not print files directly, but
28396produces output files called @sc{dvi} files. To print a typeset
28397document, you need a program to print @sc{dvi} files. If your system
28398has @TeX{} installed, chances are it has such a program. The precise
28399command to use depends on your system; @kbd{lpr -d} is common; another
28400(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
28401require a file name without any extension or a @samp{.dvi} extension.
c4555f82 28402
8e04817f
AC
28403@TeX{} also requires a macro definitions file called
28404@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
28405written in Texinfo format. On its own, @TeX{} cannot either read or
28406typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
28407and is located in the @file{gdb-@var{version-number}/texinfo}
28408directory.
c4555f82 28409
8e04817f 28410If you have @TeX{} and a @sc{dvi} printer program installed, you can
d3e8051b 28411typeset and print this manual. First switch to the @file{gdb}
8e04817f
AC
28412subdirectory of the main source directory (for example, to
28413@file{gdb-@value{GDBVN}/gdb}) and type:
c4555f82 28414
474c8240 28415@smallexample
8e04817f 28416make gdb.dvi
474c8240 28417@end smallexample
c4555f82 28418
8e04817f 28419Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c4555f82 28420
8e04817f
AC
28421@node Installing GDB
28422@appendix Installing @value{GDBN}
8e04817f 28423@cindex installation
c4555f82 28424
7fa2210b
DJ
28425@menu
28426* Requirements:: Requirements for building @value{GDBN}
db2e3e2e 28427* Running Configure:: Invoking the @value{GDBN} @file{configure} script
7fa2210b
DJ
28428* Separate Objdir:: Compiling @value{GDBN} in another directory
28429* Config Names:: Specifying names for hosts and targets
28430* Configure Options:: Summary of options for configure
098b41a6 28431* System-wide configuration:: Having a system-wide init file
7fa2210b
DJ
28432@end menu
28433
28434@node Requirements
79a6e687 28435@section Requirements for Building @value{GDBN}
7fa2210b
DJ
28436@cindex building @value{GDBN}, requirements for
28437
28438Building @value{GDBN} requires various tools and packages to be available.
28439Other packages will be used only if they are found.
28440
79a6e687 28441@heading Tools/Packages Necessary for Building @value{GDBN}
7fa2210b
DJ
28442@table @asis
28443@item ISO C90 compiler
28444@value{GDBN} is written in ISO C90. It should be buildable with any
28445working C90 compiler, e.g.@: GCC.
28446
28447@end table
28448
79a6e687 28449@heading Tools/Packages Optional for Building @value{GDBN}
7fa2210b
DJ
28450@table @asis
28451@item Expat
123dc839 28452@anchor{Expat}
7fa2210b
DJ
28453@value{GDBN} can use the Expat XML parsing library. This library may be
28454included with your operating system distribution; if it is not, you
28455can get the latest version from @url{http://expat.sourceforge.net}.
db2e3e2e 28456The @file{configure} script will search for this library in several
7fa2210b
DJ
28457standard locations; if it is installed in an unusual path, you can
28458use the @option{--with-libexpat-prefix} option to specify its location.
28459
9cceb671
DJ
28460Expat is used for:
28461
28462@itemize @bullet
28463@item
28464Remote protocol memory maps (@pxref{Memory Map Format})
28465@item
28466Target descriptions (@pxref{Target Descriptions})
28467@item
28468Remote shared library lists (@pxref{Library List Format})
28469@item
28470MS-Windows shared libraries (@pxref{Shared Libraries})
28471@end itemize
7fa2210b 28472
31fffb02
CS
28473@item zlib
28474@cindex compressed debug sections
28475@value{GDBN} will use the @samp{zlib} library, if available, to read
28476compressed debug sections. Some linkers, such as GNU gold, are capable
28477of producing binaries with compressed debug sections. If @value{GDBN}
28478is compiled with @samp{zlib}, it will be able to read the debug
28479information in such binaries.
28480
28481The @samp{zlib} library is likely included with your operating system
28482distribution; if it is not, you can get the latest version from
28483@url{http://zlib.net}.
28484
6c7a06a3
TT
28485@item iconv
28486@value{GDBN}'s features related to character sets (@pxref{Character
28487Sets}) require a functioning @code{iconv} implementation. If you are
28488on a GNU system, then this is provided by the GNU C Library. Some
28489other systems also provide a working @code{iconv}.
28490
28491On systems with @code{iconv}, you can install GNU Libiconv. If you
28492have previously installed Libiconv, you can use the
28493@option{--with-libiconv-prefix} option to configure.
28494
28495@value{GDBN}'s top-level @file{configure} and @file{Makefile} will
28496arrange to build Libiconv if a directory named @file{libiconv} appears
28497in the top-most source directory. If Libiconv is built this way, and
28498if the operating system does not provide a suitable @code{iconv}
28499implementation, then the just-built library will automatically be used
28500by @value{GDBN}. One easy way to set this up is to download GNU
28501Libiconv, unpack it, and then rename the directory holding the
28502Libiconv source code to @samp{libiconv}.
7fa2210b
DJ
28503@end table
28504
28505@node Running Configure
db2e3e2e 28506@section Invoking the @value{GDBN} @file{configure} Script
7fa2210b 28507@cindex configuring @value{GDBN}
db2e3e2e 28508@value{GDBN} comes with a @file{configure} script that automates the process
8e04817f
AC
28509of preparing @value{GDBN} for installation; you can then use @code{make} to
28510build the @code{gdb} program.
28511@iftex
28512@c irrelevant in info file; it's as current as the code it lives with.
28513@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
28514look at the @file{README} file in the sources; we may have improved the
28515installation procedures since publishing this manual.}
28516@end iftex
c4555f82 28517
8e04817f
AC
28518The @value{GDBN} distribution includes all the source code you need for
28519@value{GDBN} in a single directory, whose name is usually composed by
28520appending the version number to @samp{gdb}.
c4555f82 28521
8e04817f
AC
28522For example, the @value{GDBN} version @value{GDBVN} distribution is in the
28523@file{gdb-@value{GDBVN}} directory. That directory contains:
c4555f82 28524
8e04817f
AC
28525@table @code
28526@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
28527script for configuring @value{GDBN} and all its supporting libraries
c4555f82 28528
8e04817f
AC
28529@item gdb-@value{GDBVN}/gdb
28530the source specific to @value{GDBN} itself
c4555f82 28531
8e04817f
AC
28532@item gdb-@value{GDBVN}/bfd
28533source for the Binary File Descriptor library
c906108c 28534
8e04817f
AC
28535@item gdb-@value{GDBVN}/include
28536@sc{gnu} include files
c906108c 28537
8e04817f
AC
28538@item gdb-@value{GDBVN}/libiberty
28539source for the @samp{-liberty} free software library
c906108c 28540
8e04817f
AC
28541@item gdb-@value{GDBVN}/opcodes
28542source for the library of opcode tables and disassemblers
c906108c 28543
8e04817f
AC
28544@item gdb-@value{GDBVN}/readline
28545source for the @sc{gnu} command-line interface
c906108c 28546
8e04817f
AC
28547@item gdb-@value{GDBVN}/glob
28548source for the @sc{gnu} filename pattern-matching subroutine
c906108c 28549
8e04817f
AC
28550@item gdb-@value{GDBVN}/mmalloc
28551source for the @sc{gnu} memory-mapped malloc package
28552@end table
c906108c 28553
db2e3e2e 28554The simplest way to configure and build @value{GDBN} is to run @file{configure}
8e04817f
AC
28555from the @file{gdb-@var{version-number}} source directory, which in
28556this example is the @file{gdb-@value{GDBVN}} directory.
c906108c 28557
8e04817f 28558First switch to the @file{gdb-@var{version-number}} source directory
db2e3e2e 28559if you are not already in it; then run @file{configure}. Pass the
8e04817f
AC
28560identifier for the platform on which @value{GDBN} will run as an
28561argument.
c906108c 28562
8e04817f 28563For example:
c906108c 28564
474c8240 28565@smallexample
8e04817f
AC
28566cd gdb-@value{GDBVN}
28567./configure @var{host}
28568make
474c8240 28569@end smallexample
c906108c 28570
8e04817f
AC
28571@noindent
28572where @var{host} is an identifier such as @samp{sun4} or
28573@samp{decstation}, that identifies the platform where @value{GDBN} will run.
db2e3e2e 28574(You can often leave off @var{host}; @file{configure} tries to guess the
8e04817f 28575correct value by examining your system.)
c906108c 28576
8e04817f
AC
28577Running @samp{configure @var{host}} and then running @code{make} builds the
28578@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
28579libraries, then @code{gdb} itself. The configured source files, and the
28580binaries, are left in the corresponding source directories.
c906108c 28581
8e04817f 28582@need 750
db2e3e2e 28583@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
8e04817f
AC
28584system does not recognize this automatically when you run a different
28585shell, you may need to run @code{sh} on it explicitly:
c906108c 28586
474c8240 28587@smallexample
8e04817f 28588sh configure @var{host}
474c8240 28589@end smallexample
c906108c 28590
db2e3e2e 28591If you run @file{configure} from a directory that contains source
8e04817f 28592directories for multiple libraries or programs, such as the
db2e3e2e
BW
28593@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN},
28594@file{configure}
8e04817f
AC
28595creates configuration files for every directory level underneath (unless
28596you tell it not to, with the @samp{--norecursion} option).
28597
db2e3e2e 28598You should run the @file{configure} script from the top directory in the
94e91d6d 28599source tree, the @file{gdb-@var{version-number}} directory. If you run
db2e3e2e 28600@file{configure} from one of the subdirectories, you will configure only
94e91d6d 28601that subdirectory. That is usually not what you want. In particular,
db2e3e2e 28602if you run the first @file{configure} from the @file{gdb} subdirectory
94e91d6d
MC
28603of the @file{gdb-@var{version-number}} directory, you will omit the
28604configuration of @file{bfd}, @file{readline}, and other sibling
28605directories of the @file{gdb} subdirectory. This leads to build errors
28606about missing include files such as @file{bfd/bfd.h}.
c906108c 28607
8e04817f
AC
28608You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
28609However, you should make sure that the shell on your path (named by
28610the @samp{SHELL} environment variable) is publicly readable. Remember
28611that @value{GDBN} uses the shell to start your program---some systems refuse to
28612let @value{GDBN} debug child processes whose programs are not readable.
c906108c 28613
8e04817f 28614@node Separate Objdir
79a6e687 28615@section Compiling @value{GDBN} in Another Directory
c906108c 28616
8e04817f
AC
28617If you want to run @value{GDBN} versions for several host or target machines,
28618you need a different @code{gdb} compiled for each combination of
db2e3e2e 28619host and target. @file{configure} is designed to make this easy by
8e04817f
AC
28620allowing you to generate each configuration in a separate subdirectory,
28621rather than in the source directory. If your @code{make} program
28622handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
28623@code{make} in each of these directories builds the @code{gdb}
28624program specified there.
c906108c 28625
db2e3e2e 28626To build @code{gdb} in a separate directory, run @file{configure}
8e04817f 28627with the @samp{--srcdir} option to specify where to find the source.
db2e3e2e
BW
28628(You also need to specify a path to find @file{configure}
28629itself from your working directory. If the path to @file{configure}
8e04817f
AC
28630would be the same as the argument to @samp{--srcdir}, you can leave out
28631the @samp{--srcdir} option; it is assumed.)
c906108c 28632
8e04817f
AC
28633For example, with version @value{GDBVN}, you can build @value{GDBN} in a
28634separate directory for a Sun 4 like this:
c906108c 28635
474c8240 28636@smallexample
8e04817f
AC
28637@group
28638cd gdb-@value{GDBVN}
28639mkdir ../gdb-sun4
28640cd ../gdb-sun4
28641../gdb-@value{GDBVN}/configure sun4
28642make
28643@end group
474c8240 28644@end smallexample
c906108c 28645
db2e3e2e 28646When @file{configure} builds a configuration using a remote source
8e04817f
AC
28647directory, it creates a tree for the binaries with the same structure
28648(and using the same names) as the tree under the source directory. In
28649the example, you'd find the Sun 4 library @file{libiberty.a} in the
28650directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
28651@file{gdb-sun4/gdb}.
c906108c 28652
94e91d6d
MC
28653Make sure that your path to the @file{configure} script has just one
28654instance of @file{gdb} in it. If your path to @file{configure} looks
28655like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
28656one subdirectory of @value{GDBN}, not the whole package. This leads to
28657build errors about missing include files such as @file{bfd/bfd.h}.
28658
8e04817f
AC
28659One popular reason to build several @value{GDBN} configurations in separate
28660directories is to configure @value{GDBN} for cross-compiling (where
28661@value{GDBN} runs on one machine---the @dfn{host}---while debugging
28662programs that run on another machine---the @dfn{target}).
28663You specify a cross-debugging target by
db2e3e2e 28664giving the @samp{--target=@var{target}} option to @file{configure}.
c906108c 28665
8e04817f
AC
28666When you run @code{make} to build a program or library, you must run
28667it in a configured directory---whatever directory you were in when you
db2e3e2e 28668called @file{configure} (or one of its subdirectories).
c906108c 28669
db2e3e2e 28670The @code{Makefile} that @file{configure} generates in each source
8e04817f
AC
28671directory also runs recursively. If you type @code{make} in a source
28672directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
28673directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
28674will build all the required libraries, and then build GDB.
c906108c 28675
8e04817f
AC
28676When you have multiple hosts or targets configured in separate
28677directories, you can run @code{make} on them in parallel (for example,
28678if they are NFS-mounted on each of the hosts); they will not interfere
28679with each other.
c906108c 28680
8e04817f 28681@node Config Names
79a6e687 28682@section Specifying Names for Hosts and Targets
c906108c 28683
db2e3e2e 28684The specifications used for hosts and targets in the @file{configure}
8e04817f
AC
28685script are based on a three-part naming scheme, but some short predefined
28686aliases are also supported. The full naming scheme encodes three pieces
28687of information in the following pattern:
c906108c 28688
474c8240 28689@smallexample
8e04817f 28690@var{architecture}-@var{vendor}-@var{os}
474c8240 28691@end smallexample
c906108c 28692
8e04817f
AC
28693For example, you can use the alias @code{sun4} as a @var{host} argument,
28694or as the value for @var{target} in a @code{--target=@var{target}}
28695option. The equivalent full name is @samp{sparc-sun-sunos4}.
c906108c 28696
db2e3e2e 28697The @file{configure} script accompanying @value{GDBN} does not provide
8e04817f 28698any query facility to list all supported host and target names or
db2e3e2e 28699aliases. @file{configure} calls the Bourne shell script
8e04817f
AC
28700@code{config.sub} to map abbreviations to full names; you can read the
28701script, if you wish, or you can use it to test your guesses on
28702abbreviations---for example:
c906108c 28703
8e04817f
AC
28704@smallexample
28705% sh config.sub i386-linux
28706i386-pc-linux-gnu
28707% sh config.sub alpha-linux
28708alpha-unknown-linux-gnu
28709% sh config.sub hp9k700
28710hppa1.1-hp-hpux
28711% sh config.sub sun4
28712sparc-sun-sunos4.1.1
28713% sh config.sub sun3
28714m68k-sun-sunos4.1.1
28715% sh config.sub i986v
28716Invalid configuration `i986v': machine `i986v' not recognized
28717@end smallexample
c906108c 28718
8e04817f
AC
28719@noindent
28720@code{config.sub} is also distributed in the @value{GDBN} source
28721directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
d700128c 28722
8e04817f 28723@node Configure Options
db2e3e2e 28724@section @file{configure} Options
c906108c 28725
db2e3e2e
BW
28726Here is a summary of the @file{configure} options and arguments that
28727are most often useful for building @value{GDBN}. @file{configure} also has
8e04817f 28728several other options not listed here. @inforef{What Configure
db2e3e2e 28729Does,,configure.info}, for a full explanation of @file{configure}.
c906108c 28730
474c8240 28731@smallexample
8e04817f
AC
28732configure @r{[}--help@r{]}
28733 @r{[}--prefix=@var{dir}@r{]}
28734 @r{[}--exec-prefix=@var{dir}@r{]}
28735 @r{[}--srcdir=@var{dirname}@r{]}
28736 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
28737 @r{[}--target=@var{target}@r{]}
28738 @var{host}
474c8240 28739@end smallexample
c906108c 28740
8e04817f
AC
28741@noindent
28742You may introduce options with a single @samp{-} rather than
28743@samp{--} if you prefer; but you may abbreviate option names if you use
28744@samp{--}.
c906108c 28745
8e04817f
AC
28746@table @code
28747@item --help
db2e3e2e 28748Display a quick summary of how to invoke @file{configure}.
c906108c 28749
8e04817f
AC
28750@item --prefix=@var{dir}
28751Configure the source to install programs and files under directory
28752@file{@var{dir}}.
c906108c 28753
8e04817f
AC
28754@item --exec-prefix=@var{dir}
28755Configure the source to install programs under directory
28756@file{@var{dir}}.
c906108c 28757
8e04817f
AC
28758@c avoid splitting the warning from the explanation:
28759@need 2000
28760@item --srcdir=@var{dirname}
28761@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
28762@code{make} that implements the @code{VPATH} feature.}@*
28763Use this option to make configurations in directories separate from the
28764@value{GDBN} source directories. Among other things, you can use this to
28765build (or maintain) several configurations simultaneously, in separate
db2e3e2e 28766directories. @file{configure} writes configuration-specific files in
8e04817f 28767the current directory, but arranges for them to use the source in the
db2e3e2e 28768directory @var{dirname}. @file{configure} creates directories under
8e04817f
AC
28769the working directory in parallel to the source directories below
28770@var{dirname}.
c906108c 28771
8e04817f 28772@item --norecursion
db2e3e2e 28773Configure only the directory level where @file{configure} is executed; do not
8e04817f 28774propagate configuration to subdirectories.
c906108c 28775
8e04817f
AC
28776@item --target=@var{target}
28777Configure @value{GDBN} for cross-debugging programs running on the specified
28778@var{target}. Without this option, @value{GDBN} is configured to debug
28779programs that run on the same machine (@var{host}) as @value{GDBN} itself.
c906108c 28780
8e04817f 28781There is no convenient way to generate a list of all available targets.
c906108c 28782
8e04817f
AC
28783@item @var{host} @dots{}
28784Configure @value{GDBN} to run on the specified @var{host}.
c906108c 28785
8e04817f
AC
28786There is no convenient way to generate a list of all available hosts.
28787@end table
c906108c 28788
8e04817f
AC
28789There are many other options available as well, but they are generally
28790needed for special purposes only.
c906108c 28791
098b41a6
JG
28792@node System-wide configuration
28793@section System-wide configuration and settings
28794@cindex system-wide init file
28795
28796@value{GDBN} can be configured to have a system-wide init file;
28797this file will be read and executed at startup (@pxref{Startup, , What
28798@value{GDBN} does during startup}).
28799
28800Here is the corresponding configure option:
28801
28802@table @code
28803@item --with-system-gdbinit=@var{file}
28804Specify that the default location of the system-wide init file is
28805@var{file}.
28806@end table
28807
28808If @value{GDBN} has been configured with the option @option{--prefix=$prefix},
28809it may be subject to relocation. Two possible cases:
28810
28811@itemize @bullet
28812@item
28813If the default location of this init file contains @file{$prefix},
28814it will be subject to relocation. Suppose that the configure options
28815are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit};
28816if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system
28817init file is looked for as @file{$install/etc/gdbinit} instead of
28818@file{$prefix/etc/gdbinit}.
28819
28820@item
28821By contrast, if the default location does not contain the prefix,
28822it will not be relocated. E.g.@: if @value{GDBN} has been configured with
28823@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit},
28824then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit},
28825wherever @value{GDBN} is installed.
28826@end itemize
28827
8e04817f
AC
28828@node Maintenance Commands
28829@appendix Maintenance Commands
28830@cindex maintenance commands
28831@cindex internal commands
c906108c 28832
8e04817f 28833In addition to commands intended for @value{GDBN} users, @value{GDBN}
09d4efe1
EZ
28834includes a number of commands intended for @value{GDBN} developers,
28835that are not documented elsewhere in this manual. These commands are
da316a69
EZ
28836provided here for reference. (For commands that turn on debugging
28837messages, see @ref{Debugging Output}.)
c906108c 28838
8e04817f 28839@table @code
09d4efe1 28840@kindex maint agent
782b2b07 28841@kindex maint agent-eval
09d4efe1 28842@item maint agent @var{expression}
782b2b07 28843@itemx maint agent-eval @var{expression}
09d4efe1
EZ
28844Translate the given @var{expression} into remote agent bytecodes.
28845This command is useful for debugging the Agent Expression mechanism
782b2b07
SS
28846(@pxref{Agent Expressions}). The @samp{agent} version produces an
28847expression useful for data collection, such as by tracepoints, while
28848@samp{maint agent-eval} produces an expression that evaluates directly
28849to a result. For instance, a collection expression for @code{globa +
28850globb} will include bytecodes to record four bytes of memory at each
28851of the addresses of @code{globa} and @code{globb}, while discarding
28852the result of the addition, while an evaluation expression will do the
28853addition and return the sum.
09d4efe1 28854
8e04817f
AC
28855@kindex maint info breakpoints
28856@item @anchor{maint info breakpoints}maint info breakpoints
28857Using the same format as @samp{info breakpoints}, display both the
28858breakpoints you've set explicitly, and those @value{GDBN} is using for
28859internal purposes. Internal breakpoints are shown with negative
28860breakpoint numbers. The type column identifies what kind of breakpoint
28861is shown:
c906108c 28862
8e04817f
AC
28863@table @code
28864@item breakpoint
28865Normal, explicitly set breakpoint.
c906108c 28866
8e04817f
AC
28867@item watchpoint
28868Normal, explicitly set watchpoint.
c906108c 28869
8e04817f
AC
28870@item longjmp
28871Internal breakpoint, used to handle correctly stepping through
28872@code{longjmp} calls.
c906108c 28873
8e04817f
AC
28874@item longjmp resume
28875Internal breakpoint at the target of a @code{longjmp}.
c906108c 28876
8e04817f
AC
28877@item until
28878Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
c906108c 28879
8e04817f
AC
28880@item finish
28881Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
c906108c 28882
8e04817f
AC
28883@item shlib events
28884Shared library events.
c906108c 28885
8e04817f 28886@end table
c906108c 28887
fff08868
HZ
28888@kindex set displaced-stepping
28889@kindex show displaced-stepping
237fc4c9
PA
28890@cindex displaced stepping support
28891@cindex out-of-line single-stepping
fff08868
HZ
28892@item set displaced-stepping
28893@itemx show displaced-stepping
237fc4c9 28894Control whether or not @value{GDBN} will do @dfn{displaced stepping}
fff08868
HZ
28895if the target supports it. Displaced stepping is a way to single-step
28896over breakpoints without removing them from the inferior, by executing
28897an out-of-line copy of the instruction that was originally at the
28898breakpoint location. It is also known as out-of-line single-stepping.
28899
28900@table @code
28901@item set displaced-stepping on
28902If the target architecture supports it, @value{GDBN} will use
28903displaced stepping to step over breakpoints.
28904
28905@item set displaced-stepping off
28906@value{GDBN} will not use displaced stepping to step over breakpoints,
28907even if such is supported by the target architecture.
28908
28909@cindex non-stop mode, and @samp{set displaced-stepping}
28910@item set displaced-stepping auto
28911This is the default mode. @value{GDBN} will use displaced stepping
28912only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target
28913architecture supports displaced stepping.
28914@end table
237fc4c9 28915
09d4efe1
EZ
28916@kindex maint check-symtabs
28917@item maint check-symtabs
28918Check the consistency of psymtabs and symtabs.
28919
28920@kindex maint cplus first_component
28921@item maint cplus first_component @var{name}
28922Print the first C@t{++} class/namespace component of @var{name}.
28923
28924@kindex maint cplus namespace
28925@item maint cplus namespace
28926Print the list of possible C@t{++} namespaces.
28927
28928@kindex maint demangle
28929@item maint demangle @var{name}
d3e8051b 28930Demangle a C@t{++} or Objective-C mangled @var{name}.
09d4efe1
EZ
28931
28932@kindex maint deprecate
28933@kindex maint undeprecate
28934@cindex deprecated commands
28935@item maint deprecate @var{command} @r{[}@var{replacement}@r{]}
28936@itemx maint undeprecate @var{command}
28937Deprecate or undeprecate the named @var{command}. Deprecated commands
28938cause @value{GDBN} to issue a warning when you use them. The optional
28939argument @var{replacement} says which newer command should be used in
28940favor of the deprecated one; if it is given, @value{GDBN} will mention
28941the replacement as part of the warning.
28942
28943@kindex maint dump-me
28944@item maint dump-me
721c2651 28945@cindex @code{SIGQUIT} signal, dump core of @value{GDBN}
09d4efe1 28946Cause a fatal signal in the debugger and force it to dump its core.
721c2651
EZ
28947This is supported only on systems which support aborting a program
28948with the @code{SIGQUIT} signal.
09d4efe1 28949
8d30a00d
AC
28950@kindex maint internal-error
28951@kindex maint internal-warning
09d4efe1
EZ
28952@item maint internal-error @r{[}@var{message-text}@r{]}
28953@itemx maint internal-warning @r{[}@var{message-text}@r{]}
8d30a00d
AC
28954Cause @value{GDBN} to call the internal function @code{internal_error}
28955or @code{internal_warning} and hence behave as though an internal error
28956or internal warning has been detected. In addition to reporting the
28957internal problem, these functions give the user the opportunity to
28958either quit @value{GDBN} or create a core file of the current
28959@value{GDBN} session.
28960
09d4efe1
EZ
28961These commands take an optional parameter @var{message-text} that is
28962used as the text of the error or warning message.
28963
d3e8051b 28964Here's an example of using @code{internal-error}:
09d4efe1 28965
8d30a00d 28966@smallexample
f7dc1244 28967(@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
8d30a00d
AC
28968@dots{}/maint.c:121: internal-error: testing, 1, 2
28969A problem internal to GDB has been detected. Further
28970debugging may prove unreliable.
28971Quit this debugging session? (y or n) @kbd{n}
28972Create a core file? (y or n) @kbd{n}
f7dc1244 28973(@value{GDBP})
8d30a00d
AC
28974@end smallexample
28975
3c16cced
PA
28976@cindex @value{GDBN} internal error
28977@cindex internal errors, control of @value{GDBN} behavior
28978
28979@kindex maint set internal-error
28980@kindex maint show internal-error
28981@kindex maint set internal-warning
28982@kindex maint show internal-warning
28983@item maint set internal-error @var{action} [ask|yes|no]
28984@itemx maint show internal-error @var{action}
28985@itemx maint set internal-warning @var{action} [ask|yes|no]
28986@itemx maint show internal-warning @var{action}
28987When @value{GDBN} reports an internal problem (error or warning) it
28988gives the user the opportunity to both quit @value{GDBN} and create a
28989core file of the current @value{GDBN} session. These commands let you
28990override the default behaviour for each particular @var{action},
28991described in the table below.
28992
28993@table @samp
28994@item quit
28995You can specify that @value{GDBN} should always (yes) or never (no)
28996quit. The default is to ask the user what to do.
28997
28998@item corefile
28999You can specify that @value{GDBN} should always (yes) or never (no)
29000create a core file. The default is to ask the user what to do.
29001@end table
29002
09d4efe1
EZ
29003@kindex maint packet
29004@item maint packet @var{text}
29005If @value{GDBN} is talking to an inferior via the serial protocol,
29006then this command sends the string @var{text} to the inferior, and
29007displays the response packet. @value{GDBN} supplies the initial
29008@samp{$} character, the terminating @samp{#} character, and the
29009checksum.
29010
29011@kindex maint print architecture
29012@item maint print architecture @r{[}@var{file}@r{]}
29013Print the entire architecture configuration. The optional argument
29014@var{file} names the file where the output goes.
8d30a00d 29015
81adfced
DJ
29016@kindex maint print c-tdesc
29017@item maint print c-tdesc
29018Print the current target description (@pxref{Target Descriptions}) as
29019a C source file. The created source file can be used in @value{GDBN}
29020when an XML parser is not available to parse the description.
29021
00905d52
AC
29022@kindex maint print dummy-frames
29023@item maint print dummy-frames
00905d52
AC
29024Prints the contents of @value{GDBN}'s internal dummy-frame stack.
29025
29026@smallexample
f7dc1244 29027(@value{GDBP}) @kbd{b add}
00905d52 29028@dots{}
f7dc1244 29029(@value{GDBP}) @kbd{print add(2,3)}
00905d52
AC
29030Breakpoint 2, add (a=2, b=3) at @dots{}
2903158 return (a + b);
29032The program being debugged stopped while in a function called from GDB.
29033@dots{}
f7dc1244 29034(@value{GDBP}) @kbd{maint print dummy-frames}
00905d52
AC
290350x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
29036 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@}
29037 call_lo=0x01014000 call_hi=0x01014001
f7dc1244 29038(@value{GDBP})
00905d52
AC
29039@end smallexample
29040
29041Takes an optional file parameter.
29042
0680b120
AC
29043@kindex maint print registers
29044@kindex maint print raw-registers
29045@kindex maint print cooked-registers
617073a9 29046@kindex maint print register-groups
09d4efe1
EZ
29047@item maint print registers @r{[}@var{file}@r{]}
29048@itemx maint print raw-registers @r{[}@var{file}@r{]}
29049@itemx maint print cooked-registers @r{[}@var{file}@r{]}
29050@itemx maint print register-groups @r{[}@var{file}@r{]}
0680b120
AC
29051Print @value{GDBN}'s internal register data structures.
29052
617073a9
AC
29053The command @code{maint print raw-registers} includes the contents of
29054the raw register cache; the command @code{maint print cooked-registers}
29055includes the (cooked) value of all registers; and the command
29056@code{maint print register-groups} includes the groups that each
29057register is a member of. @xref{Registers,, Registers, gdbint,
29058@value{GDBN} Internals}.
0680b120 29059
09d4efe1
EZ
29060These commands take an optional parameter, a file name to which to
29061write the information.
0680b120 29062
617073a9 29063@kindex maint print reggroups
09d4efe1
EZ
29064@item maint print reggroups @r{[}@var{file}@r{]}
29065Print @value{GDBN}'s internal register group data structures. The
29066optional argument @var{file} tells to what file to write the
29067information.
617073a9 29068
09d4efe1 29069The register groups info looks like this:
617073a9
AC
29070
29071@smallexample
f7dc1244 29072(@value{GDBP}) @kbd{maint print reggroups}
b383017d
RM
29073 Group Type
29074 general user
29075 float user
29076 all user
29077 vector user
29078 system user
29079 save internal
29080 restore internal
617073a9
AC
29081@end smallexample
29082
09d4efe1
EZ
29083@kindex flushregs
29084@item flushregs
29085This command forces @value{GDBN} to flush its internal register cache.
29086
29087@kindex maint print objfiles
29088@cindex info for known object files
29089@item maint print objfiles
29090Print a dump of all known object files. For each object file, this
29091command prints its name, address in memory, and all of its psymtabs
29092and symtabs.
29093
29094@kindex maint print statistics
29095@cindex bcache statistics
29096@item maint print statistics
29097This command prints, for each object file in the program, various data
29098about that object file followed by the byte cache (@dfn{bcache})
29099statistics for the object file. The objfile data includes the number
d3e8051b 29100of minimal, partial, full, and stabs symbols, the number of types
09d4efe1
EZ
29101defined by the objfile, the number of as yet unexpanded psym tables,
29102the number of line tables and string tables, and the amount of memory
29103used by the various tables. The bcache statistics include the counts,
29104sizes, and counts of duplicates of all and unique objects, max,
29105average, and median entry size, total memory used and its overhead and
29106savings, and various measures of the hash table size and chain
29107lengths.
29108
c7ba131e
JB
29109@kindex maint print target-stack
29110@cindex target stack description
29111@item maint print target-stack
29112A @dfn{target} is an interface between the debugger and a particular
29113kind of file or process. Targets can be stacked in @dfn{strata},
29114so that more than one target can potentially respond to a request.
29115In particular, memory accesses will walk down the stack of targets
29116until they find a target that is interested in handling that particular
29117address.
29118
29119This command prints a short description of each layer that was pushed on
29120the @dfn{target stack}, starting from the top layer down to the bottom one.
29121
09d4efe1
EZ
29122@kindex maint print type
29123@cindex type chain of a data type
29124@item maint print type @var{expr}
29125Print the type chain for a type specified by @var{expr}. The argument
29126can be either a type name or a symbol. If it is a symbol, the type of
29127that symbol is described. The type chain produced by this command is
29128a recursive definition of the data type as stored in @value{GDBN}'s
29129data structures, including its flags and contained types.
29130
29131@kindex maint set dwarf2 max-cache-age
29132@kindex maint show dwarf2 max-cache-age
29133@item maint set dwarf2 max-cache-age
29134@itemx maint show dwarf2 max-cache-age
29135Control the DWARF 2 compilation unit cache.
29136
29137@cindex DWARF 2 compilation units cache
29138In object files with inter-compilation-unit references, such as those
29139produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2
29140reader needs to frequently refer to previously read compilation units.
29141This setting controls how long a compilation unit will remain in the
29142cache if it is not referenced. A higher limit means that cached
29143compilation units will be stored in memory longer, and more total
29144memory will be used. Setting it to zero disables caching, which will
29145slow down @value{GDBN} startup, but reduce memory consumption.
29146
e7ba9c65
DJ
29147@kindex maint set profile
29148@kindex maint show profile
29149@cindex profiling GDB
29150@item maint set profile
29151@itemx maint show profile
29152Control profiling of @value{GDBN}.
29153
29154Profiling will be disabled until you use the @samp{maint set profile}
29155command to enable it. When you enable profiling, the system will begin
29156collecting timing and execution count data; when you disable profiling or
29157exit @value{GDBN}, the results will be written to a log file. Remember that
29158if you use profiling, @value{GDBN} will overwrite the profiling log file
29159(often called @file{gmon.out}). If you have a record of important profiling
29160data in a @file{gmon.out} file, be sure to move it to a safe location.
29161
29162Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
b383017d 29163compiled with the @samp{-pg} compiler option.
e7ba9c65 29164
cbe54154
PA
29165@kindex maint set show-debug-regs
29166@kindex maint show show-debug-regs
eac35c4e 29167@cindex hardware debug registers
cbe54154
PA
29168@item maint set show-debug-regs
29169@itemx maint show show-debug-regs
eac35c4e 29170Control whether to show variables that mirror the hardware debug
09d4efe1 29171registers. Use @code{ON} to enable, @code{OFF} to disable. If
3f94c067 29172enabled, the debug registers values are shown when @value{GDBN} inserts or
09d4efe1
EZ
29173removes a hardware breakpoint or watchpoint, and when the inferior
29174triggers a hardware-assisted breakpoint or watchpoint.
29175
29176@kindex maint space
29177@cindex memory used by commands
29178@item maint space
29179Control whether to display memory usage for each command. If set to a
29180nonzero value, @value{GDBN} will display how much memory each command
29181took, following the command's own output. This can also be requested
29182by invoking @value{GDBN} with the @option{--statistics} command-line
29183switch (@pxref{Mode Options}).
29184
29185@kindex maint time
29186@cindex time of command execution
29187@item maint time
29188Control whether to display the execution time for each command. If
29189set to a nonzero value, @value{GDBN} will display how much time it
29190took to execute each command, following the command's own output.
e2b7ddea
VP
29191The time is not printed for the commands that run the target, since
29192there's no mechanism currently to compute how much time was spend
29193by @value{GDBN} and how much time was spend by the program been debugged.
29194it's not possibly currently
09d4efe1
EZ
29195This can also be requested by invoking @value{GDBN} with the
29196@option{--statistics} command-line switch (@pxref{Mode Options}).
29197
29198@kindex maint translate-address
29199@item maint translate-address @r{[}@var{section}@r{]} @var{addr}
29200Find the symbol stored at the location specified by the address
29201@var{addr} and an optional section name @var{section}. If found,
29202@value{GDBN} prints the name of the closest symbol and an offset from
29203the symbol's location to the specified address. This is similar to
29204the @code{info address} command (@pxref{Symbols}), except that this
29205command also allows to find symbols in other sections.
ae038cb0 29206
c14c28ba
PP
29207If section was not specified, the section in which the symbol was found
29208is also printed. For dynamically linked executables, the name of
29209executable or shared library containing the symbol is printed as well.
29210
8e04817f 29211@end table
c906108c 29212
9c16f35a
EZ
29213The following command is useful for non-interactive invocations of
29214@value{GDBN}, such as in the test suite.
29215
29216@table @code
29217@item set watchdog @var{nsec}
29218@kindex set watchdog
29219@cindex watchdog timer
29220@cindex timeout for commands
29221Set the maximum number of seconds @value{GDBN} will wait for the
29222target operation to finish. If this time expires, @value{GDBN}
29223reports and error and the command is aborted.
29224
29225@item show watchdog
29226Show the current setting of the target wait timeout.
29227@end table
c906108c 29228
e0ce93ac 29229@node Remote Protocol
8e04817f 29230@appendix @value{GDBN} Remote Serial Protocol
c906108c 29231
ee2d5c50
AC
29232@menu
29233* Overview::
29234* Packets::
29235* Stop Reply Packets::
29236* General Query Packets::
a1dcb23a 29237* Architecture-Specific Protocol Details::
9d29849a 29238* Tracepoint Packets::
a6b151f1 29239* Host I/O Packets::
9a6253be 29240* Interrupts::
8b23ecc4
SL
29241* Notification Packets::
29242* Remote Non-Stop::
a6f3e723 29243* Packet Acknowledgment::
ee2d5c50 29244* Examples::
79a6e687 29245* File-I/O Remote Protocol Extension::
cfa9d6d9 29246* Library List Format::
79a6e687 29247* Memory Map Format::
dc146f7c 29248* Thread List Format::
ee2d5c50
AC
29249@end menu
29250
29251@node Overview
29252@section Overview
29253
8e04817f
AC
29254There may be occasions when you need to know something about the
29255protocol---for example, if there is only one serial port to your target
29256machine, you might want your program to do something special if it
29257recognizes a packet meant for @value{GDBN}.
c906108c 29258
d2c6833e 29259In the examples below, @samp{->} and @samp{<-} are used to indicate
bf06d120 29260transmitted and received data, respectively.
c906108c 29261
8e04817f
AC
29262@cindex protocol, @value{GDBN} remote serial
29263@cindex serial protocol, @value{GDBN} remote
29264@cindex remote serial protocol
8b23ecc4
SL
29265All @value{GDBN} commands and responses (other than acknowledgments
29266and notifications, see @ref{Notification Packets}) are sent as a
29267@var{packet}. A @var{packet} is introduced with the character
8e04817f
AC
29268@samp{$}, the actual @var{packet-data}, and the terminating character
29269@samp{#} followed by a two-digit @var{checksum}:
c906108c 29270
474c8240 29271@smallexample
8e04817f 29272@code{$}@var{packet-data}@code{#}@var{checksum}
474c8240 29273@end smallexample
8e04817f 29274@noindent
c906108c 29275
8e04817f
AC
29276@cindex checksum, for @value{GDBN} remote
29277@noindent
29278The two-digit @var{checksum} is computed as the modulo 256 sum of all
29279characters between the leading @samp{$} and the trailing @samp{#} (an
29280eight bit unsigned checksum).
c906108c 29281
8e04817f
AC
29282Implementors should note that prior to @value{GDBN} 5.0 the protocol
29283specification also included an optional two-digit @var{sequence-id}:
c906108c 29284
474c8240 29285@smallexample
8e04817f 29286@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
474c8240 29287@end smallexample
c906108c 29288
8e04817f
AC
29289@cindex sequence-id, for @value{GDBN} remote
29290@noindent
29291That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
29292has never output @var{sequence-id}s. Stubs that handle packets added
29293since @value{GDBN} 5.0 must not accept @var{sequence-id}.
c906108c 29294
8e04817f
AC
29295When either the host or the target machine receives a packet, the first
29296response expected is an acknowledgment: either @samp{+} (to indicate
29297the package was received correctly) or @samp{-} (to request
29298retransmission):
c906108c 29299
474c8240 29300@smallexample
d2c6833e
AC
29301-> @code{$}@var{packet-data}@code{#}@var{checksum}
29302<- @code{+}
474c8240 29303@end smallexample
8e04817f 29304@noindent
53a5351d 29305
a6f3e723
SL
29306The @samp{+}/@samp{-} acknowledgments can be disabled
29307once a connection is established.
29308@xref{Packet Acknowledgment}, for details.
29309
8e04817f
AC
29310The host (@value{GDBN}) sends @var{command}s, and the target (the
29311debugging stub incorporated in your program) sends a @var{response}. In
29312the case of step and continue @var{command}s, the response is only sent
8b23ecc4
SL
29313when the operation has completed, and the target has again stopped all
29314threads in all attached processes. This is the default all-stop mode
29315behavior, but the remote protocol also supports @value{GDBN}'s non-stop
29316execution mode; see @ref{Remote Non-Stop}, for details.
c906108c 29317
8e04817f
AC
29318@var{packet-data} consists of a sequence of characters with the
29319exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
29320exceptions).
c906108c 29321
ee2d5c50 29322@cindex remote protocol, field separator
0876f84a 29323Fields within the packet should be separated using @samp{,} @samp{;} or
8e04817f 29324@samp{:}. Except where otherwise noted all numbers are represented in
ee2d5c50 29325@sc{hex} with leading zeros suppressed.
c906108c 29326
8e04817f
AC
29327Implementors should note that prior to @value{GDBN} 5.0, the character
29328@samp{:} could not appear as the third character in a packet (as it
29329would potentially conflict with the @var{sequence-id}).
c906108c 29330
0876f84a
DJ
29331@cindex remote protocol, binary data
29332@anchor{Binary Data}
29333Binary data in most packets is encoded either as two hexadecimal
29334digits per byte of binary data. This allowed the traditional remote
29335protocol to work over connections which were only seven-bit clean.
29336Some packets designed more recently assume an eight-bit clean
29337connection, and use a more efficient encoding to send and receive
29338binary data.
29339
29340The binary data representation uses @code{7d} (@sc{ascii} @samp{@}})
29341as an escape character. Any escaped byte is transmitted as the escape
29342character followed by the original character XORed with @code{0x20}.
29343For example, the byte @code{0x7d} would be transmitted as the two
29344bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}),
29345@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii}
29346@samp{@}}) must always be escaped. Responses sent by the stub
29347must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it
29348is not interpreted as the start of a run-length encoded sequence
29349(described next).
29350
1d3811f6
DJ
29351Response @var{data} can be run-length encoded to save space.
29352Run-length encoding replaces runs of identical characters with one
29353instance of the repeated character, followed by a @samp{*} and a
29354repeat count. The repeat count is itself sent encoded, to avoid
29355binary characters in @var{data}: a value of @var{n} is sent as
29356@code{@var{n}+29}. For a repeat count greater or equal to 3, this
29357produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii}
29358code 32) for a repeat count of 3. (This is because run-length
29359encoding starts to win for counts 3 or more.) Thus, for example,
29360@samp{0* } is a run-length encoding of ``0000'': the space character
29361after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 =
293623}} more times.
29363
29364The printable characters @samp{#} and @samp{$} or with a numeric value
29365greater than 126 must not be used. Runs of six repeats (@samp{#}) or
29366seven repeats (@samp{$}) can be expanded using a repeat count of only
29367five (@samp{"}). For example, @samp{00000000} can be encoded as
29368@samp{0*"00}.
c906108c 29369
8e04817f
AC
29370The error response returned for some packets includes a two character
29371error number. That number is not well defined.
c906108c 29372
f8da2bff 29373@cindex empty response, for unsupported packets
8e04817f
AC
29374For any @var{command} not supported by the stub, an empty response
29375(@samp{$#00}) should be returned. That way it is possible to extend the
29376protocol. A newer @value{GDBN} can tell if a packet is supported based
29377on that response.
c906108c 29378
b383017d
RM
29379A stub is required to support the @samp{g}, @samp{G}, @samp{m}, @samp{M},
29380@samp{c}, and @samp{s} @var{command}s. All other @var{command}s are
8e04817f 29381optional.
c906108c 29382
ee2d5c50
AC
29383@node Packets
29384@section Packets
29385
29386The following table provides a complete list of all currently defined
29387@var{command}s and their corresponding response @var{data}.
79a6e687 29388@xref{File-I/O Remote Protocol Extension}, for details about the File
9c16f35a 29389I/O extension of the remote protocol.
ee2d5c50 29390
b8ff78ce
JB
29391Each packet's description has a template showing the packet's overall
29392syntax, followed by an explanation of the packet's meaning. We
29393include spaces in some of the templates for clarity; these are not
29394part of the packet's syntax. No @value{GDBN} packet uses spaces to
29395separate its components. For example, a template like @samp{foo
29396@var{bar} @var{baz}} describes a packet beginning with the three ASCII
29397bytes @samp{foo}, followed by a @var{bar}, followed directly by a
3f94c067 29398@var{baz}. @value{GDBN} does not transmit a space character between the
b8ff78ce
JB
29399@samp{foo} and the @var{bar}, or between the @var{bar} and the
29400@var{baz}.
29401
b90a069a
SL
29402@cindex @var{thread-id}, in remote protocol
29403@anchor{thread-id syntax}
29404Several packets and replies include a @var{thread-id} field to identify
29405a thread. Normally these are positive numbers with a target-specific
29406interpretation, formatted as big-endian hex strings. A @var{thread-id}
29407can also be a literal @samp{-1} to indicate all threads, or @samp{0} to
29408pick any thread.
29409
29410In addition, the remote protocol supports a multiprocess feature in
29411which the @var{thread-id} syntax is extended to optionally include both
29412process and thread ID fields, as @samp{p@var{pid}.@var{tid}}.
29413The @var{pid} (process) and @var{tid} (thread) components each have the
29414format described above: a positive number with target-specific
29415interpretation formatted as a big-endian hex string, literal @samp{-1}
29416to indicate all processes or threads (respectively), or @samp{0} to
29417indicate an arbitrary process or thread. Specifying just a process, as
29418@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an
29419error to specify all processes but a specific thread, such as
29420@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used
29421for those packets and replies explicitly documented to include a process
29422ID, rather than a @var{thread-id}.
29423
29424The multiprocess @var{thread-id} syntax extensions are only used if both
29425@value{GDBN} and the stub report support for the @samp{multiprocess}
29426feature using @samp{qSupported}. @xref{multiprocess extensions}, for
29427more information.
29428
8ffe2530
JB
29429Note that all packet forms beginning with an upper- or lower-case
29430letter, other than those described here, are reserved for future use.
29431
b8ff78ce 29432Here are the packet descriptions.
ee2d5c50 29433
b8ff78ce 29434@table @samp
ee2d5c50 29435
b8ff78ce
JB
29436@item !
29437@cindex @samp{!} packet
2d717e4f 29438@anchor{extended mode}
8e04817f
AC
29439Enable extended mode. In extended mode, the remote server is made
29440persistent. The @samp{R} packet is used to restart the program being
29441debugged.
ee2d5c50
AC
29442
29443Reply:
29444@table @samp
29445@item OK
8e04817f 29446The remote target both supports and has enabled extended mode.
ee2d5c50 29447@end table
c906108c 29448
b8ff78ce
JB
29449@item ?
29450@cindex @samp{?} packet
ee2d5c50 29451Indicate the reason the target halted. The reply is the same as for
8b23ecc4
SL
29452step and continue. This packet has a special interpretation when the
29453target is in non-stop mode; see @ref{Remote Non-Stop}.
c906108c 29454
ee2d5c50
AC
29455Reply:
29456@xref{Stop Reply Packets}, for the reply specifications.
29457
b8ff78ce
JB
29458@item A @var{arglen},@var{argnum},@var{arg},@dots{}
29459@cindex @samp{A} packet
29460Initialized @code{argv[]} array passed into program. @var{arglen}
29461specifies the number of bytes in the hex encoded byte stream
29462@var{arg}. See @code{gdbserver} for more details.
ee2d5c50
AC
29463
29464Reply:
29465@table @samp
29466@item OK
b8ff78ce
JB
29467The arguments were set.
29468@item E @var{NN}
29469An error occurred.
ee2d5c50
AC
29470@end table
29471
b8ff78ce
JB
29472@item b @var{baud}
29473@cindex @samp{b} packet
29474(Don't use this packet; its behavior is not well-defined.)
ee2d5c50
AC
29475Change the serial line speed to @var{baud}.
29476
29477JTC: @emph{When does the transport layer state change? When it's
29478received, or after the ACK is transmitted. In either case, there are
29479problems if the command or the acknowledgment packet is dropped.}
29480
29481Stan: @emph{If people really wanted to add something like this, and get
29482it working for the first time, they ought to modify ser-unix.c to send
29483some kind of out-of-band message to a specially-setup stub and have the
29484switch happen "in between" packets, so that from remote protocol's point
29485of view, nothing actually happened.}
29486
b8ff78ce
JB
29487@item B @var{addr},@var{mode}
29488@cindex @samp{B} packet
8e04817f 29489Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
2f870471
AC
29490breakpoint at @var{addr}.
29491
b8ff78ce 29492Don't use this packet. Use the @samp{Z} and @samp{z} packets instead
2f870471 29493(@pxref{insert breakpoint or watchpoint packet}).
c906108c 29494
bacec72f 29495@cindex @samp{bc} packet
0d772ac9
MS
29496@anchor{bc}
29497@item bc
bacec72f
MS
29498Backward continue. Execute the target system in reverse. No parameter.
29499@xref{Reverse Execution}, for more information.
29500
29501Reply:
29502@xref{Stop Reply Packets}, for the reply specifications.
29503
bacec72f 29504@cindex @samp{bs} packet
0d772ac9
MS
29505@anchor{bs}
29506@item bs
bacec72f
MS
29507Backward single step. Execute one instruction in reverse. No parameter.
29508@xref{Reverse Execution}, for more information.
29509
29510Reply:
29511@xref{Stop Reply Packets}, for the reply specifications.
29512
4f553f88 29513@item c @r{[}@var{addr}@r{]}
b8ff78ce
JB
29514@cindex @samp{c} packet
29515Continue. @var{addr} is address to resume. If @var{addr} is omitted,
29516resume at current address.
c906108c 29517
ee2d5c50
AC
29518Reply:
29519@xref{Stop Reply Packets}, for the reply specifications.
29520
4f553f88 29521@item C @var{sig}@r{[};@var{addr}@r{]}
b8ff78ce 29522@cindex @samp{C} packet
8e04817f 29523Continue with signal @var{sig} (hex signal number). If
b8ff78ce 29524@samp{;@var{addr}} is omitted, resume at same address.
c906108c 29525
ee2d5c50
AC
29526Reply:
29527@xref{Stop Reply Packets}, for the reply specifications.
c906108c 29528
b8ff78ce
JB
29529@item d
29530@cindex @samp{d} packet
ee2d5c50
AC
29531Toggle debug flag.
29532
b8ff78ce
JB
29533Don't use this packet; instead, define a general set packet
29534(@pxref{General Query Packets}).
ee2d5c50 29535
b8ff78ce 29536@item D
b90a069a 29537@itemx D;@var{pid}
b8ff78ce 29538@cindex @samp{D} packet
b90a069a
SL
29539The first form of the packet is used to detach @value{GDBN} from the
29540remote system. It is sent to the remote target
07f31aa6 29541before @value{GDBN} disconnects via the @code{detach} command.
ee2d5c50 29542
b90a069a
SL
29543The second form, including a process ID, is used when multiprocess
29544protocol extensions are enabled (@pxref{multiprocess extensions}), to
29545detach only a specific process. The @var{pid} is specified as a
29546big-endian hex string.
29547
ee2d5c50
AC
29548Reply:
29549@table @samp
10fac096
NW
29550@item OK
29551for success
b8ff78ce 29552@item E @var{NN}
10fac096 29553for an error
ee2d5c50 29554@end table
c906108c 29555
b8ff78ce
JB
29556@item F @var{RC},@var{EE},@var{CF};@var{XX}
29557@cindex @samp{F} packet
29558A reply from @value{GDBN} to an @samp{F} packet sent by the target.
29559This is part of the File-I/O protocol extension. @xref{File-I/O
79a6e687 29560Remote Protocol Extension}, for the specification.
ee2d5c50 29561
b8ff78ce 29562@item g
ee2d5c50 29563@anchor{read registers packet}
b8ff78ce 29564@cindex @samp{g} packet
ee2d5c50
AC
29565Read general registers.
29566
29567Reply:
29568@table @samp
29569@item @var{XX@dots{}}
8e04817f
AC
29570Each byte of register data is described by two hex digits. The bytes
29571with the register are transmitted in target byte order. The size of
b8ff78ce 29572each register and their position within the @samp{g} packet are
4a9bb1df
UW
29573determined by the @value{GDBN} internal gdbarch functions
29574@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The
b8ff78ce
JB
29575specification of several standard @samp{g} packets is specified below.
29576@item E @var{NN}
ee2d5c50
AC
29577for an error.
29578@end table
c906108c 29579
b8ff78ce
JB
29580@item G @var{XX@dots{}}
29581@cindex @samp{G} packet
29582Write general registers. @xref{read registers packet}, for a
29583description of the @var{XX@dots{}} data.
ee2d5c50
AC
29584
29585Reply:
29586@table @samp
29587@item OK
29588for success
b8ff78ce 29589@item E @var{NN}
ee2d5c50
AC
29590for an error
29591@end table
29592
b90a069a 29593@item H @var{c} @var{thread-id}
b8ff78ce 29594@cindex @samp{H} packet
8e04817f 29595Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
ee2d5c50
AC
29596@samp{G}, et.al.). @var{c} depends on the operation to be performed: it
29597should be @samp{c} for step and continue operations, @samp{g} for other
b90a069a
SL
29598operations. The thread designator @var{thread-id} has the format and
29599interpretation described in @ref{thread-id syntax}.
ee2d5c50
AC
29600
29601Reply:
29602@table @samp
29603@item OK
29604for success
b8ff78ce 29605@item E @var{NN}
ee2d5c50
AC
29606for an error
29607@end table
c906108c 29608
8e04817f
AC
29609@c FIXME: JTC:
29610@c 'H': How restrictive (or permissive) is the thread model. If a
29611@c thread is selected and stopped, are other threads allowed
29612@c to continue to execute? As I mentioned above, I think the
29613@c semantics of each command when a thread is selected must be
29614@c described. For example:
29615@c
29616@c 'g': If the stub supports threads and a specific thread is
29617@c selected, returns the register block from that thread;
29618@c otherwise returns current registers.
29619@c
29620@c 'G' If the stub supports threads and a specific thread is
29621@c selected, sets the registers of the register block of
29622@c that thread; otherwise sets current registers.
c906108c 29623
b8ff78ce 29624@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
ee2d5c50 29625@anchor{cycle step packet}
b8ff78ce
JB
29626@cindex @samp{i} packet
29627Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is
8e04817f
AC
29628present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
29629step starting at that address.
c906108c 29630
b8ff78ce
JB
29631@item I
29632@cindex @samp{I} packet
29633Signal, then cycle step. @xref{step with signal packet}. @xref{cycle
29634step packet}.
ee2d5c50 29635
b8ff78ce
JB
29636@item k
29637@cindex @samp{k} packet
29638Kill request.
c906108c 29639
ac282366 29640FIXME: @emph{There is no description of how to operate when a specific
ee2d5c50
AC
29641thread context has been selected (i.e.@: does 'k' kill only that
29642thread?)}.
c906108c 29643
b8ff78ce
JB
29644@item m @var{addr},@var{length}
29645@cindex @samp{m} packet
8e04817f 29646Read @var{length} bytes of memory starting at address @var{addr}.
fb031cdf
JB
29647Note that @var{addr} may not be aligned to any particular boundary.
29648
29649The stub need not use any particular size or alignment when gathering
29650data from memory for the response; even if @var{addr} is word-aligned
29651and @var{length} is a multiple of the word size, the stub is free to
29652use byte accesses, or not. For this reason, this packet may not be
29653suitable for accessing memory-mapped I/O devices.
c43c5473
JB
29654@cindex alignment of remote memory accesses
29655@cindex size of remote memory accesses
29656@cindex memory, alignment and size of remote accesses
c906108c 29657
ee2d5c50
AC
29658Reply:
29659@table @samp
29660@item @var{XX@dots{}}
599b237a 29661Memory contents; each byte is transmitted as a two-digit hexadecimal
b8ff78ce
JB
29662number. The reply may contain fewer bytes than requested if the
29663server was able to read only part of the region of memory.
29664@item E @var{NN}
ee2d5c50
AC
29665@var{NN} is errno
29666@end table
29667
b8ff78ce
JB
29668@item M @var{addr},@var{length}:@var{XX@dots{}}
29669@cindex @samp{M} packet
8e04817f 29670Write @var{length} bytes of memory starting at address @var{addr}.
b8ff78ce 29671@var{XX@dots{}} is the data; each byte is transmitted as a two-digit
599b237a 29672hexadecimal number.
ee2d5c50
AC
29673
29674Reply:
29675@table @samp
29676@item OK
29677for success
b8ff78ce 29678@item E @var{NN}
8e04817f
AC
29679for an error (this includes the case where only part of the data was
29680written).
ee2d5c50 29681@end table
c906108c 29682
b8ff78ce
JB
29683@item p @var{n}
29684@cindex @samp{p} packet
29685Read the value of register @var{n}; @var{n} is in hex.
2e868123
AC
29686@xref{read registers packet}, for a description of how the returned
29687register value is encoded.
ee2d5c50
AC
29688
29689Reply:
29690@table @samp
2e868123
AC
29691@item @var{XX@dots{}}
29692the register's value
b8ff78ce 29693@item E @var{NN}
2e868123
AC
29694for an error
29695@item
29696Indicating an unrecognized @var{query}.
ee2d5c50
AC
29697@end table
29698
b8ff78ce 29699@item P @var{n@dots{}}=@var{r@dots{}}
ee2d5c50 29700@anchor{write register packet}
b8ff78ce
JB
29701@cindex @samp{P} packet
29702Write register @var{n@dots{}} with value @var{r@dots{}}. The register
599b237a 29703number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex
8e04817f 29704digits for each byte in the register (target byte order).
c906108c 29705
ee2d5c50
AC
29706Reply:
29707@table @samp
29708@item OK
29709for success
b8ff78ce 29710@item E @var{NN}
ee2d5c50
AC
29711for an error
29712@end table
29713
5f3bebba
JB
29714@item q @var{name} @var{params}@dots{}
29715@itemx Q @var{name} @var{params}@dots{}
b8ff78ce 29716@cindex @samp{q} packet
b8ff78ce 29717@cindex @samp{Q} packet
5f3bebba
JB
29718General query (@samp{q}) and set (@samp{Q}). These packets are
29719described fully in @ref{General Query Packets}.
c906108c 29720
b8ff78ce
JB
29721@item r
29722@cindex @samp{r} packet
8e04817f 29723Reset the entire system.
c906108c 29724
b8ff78ce 29725Don't use this packet; use the @samp{R} packet instead.
ee2d5c50 29726
b8ff78ce
JB
29727@item R @var{XX}
29728@cindex @samp{R} packet
8e04817f 29729Restart the program being debugged. @var{XX}, while needed, is ignored.
2d717e4f 29730This packet is only available in extended mode (@pxref{extended mode}).
ee2d5c50 29731
8e04817f 29732The @samp{R} packet has no reply.
ee2d5c50 29733
4f553f88 29734@item s @r{[}@var{addr}@r{]}
b8ff78ce
JB
29735@cindex @samp{s} packet
29736Single step. @var{addr} is the address at which to resume. If
29737@var{addr} is omitted, resume at same address.
c906108c 29738
ee2d5c50
AC
29739Reply:
29740@xref{Stop Reply Packets}, for the reply specifications.
29741
4f553f88 29742@item S @var{sig}@r{[};@var{addr}@r{]}
ee2d5c50 29743@anchor{step with signal packet}
b8ff78ce
JB
29744@cindex @samp{S} packet
29745Step with signal. This is analogous to the @samp{C} packet, but
29746requests a single-step, rather than a normal resumption of execution.
c906108c 29747
ee2d5c50
AC
29748Reply:
29749@xref{Stop Reply Packets}, for the reply specifications.
29750
b8ff78ce
JB
29751@item t @var{addr}:@var{PP},@var{MM}
29752@cindex @samp{t} packet
8e04817f 29753Search backwards starting at address @var{addr} for a match with pattern
ee2d5c50
AC
29754@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes.
29755@var{addr} must be at least 3 digits.
c906108c 29756
b90a069a 29757@item T @var{thread-id}
b8ff78ce 29758@cindex @samp{T} packet
b90a069a 29759Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}.
c906108c 29760
ee2d5c50
AC
29761Reply:
29762@table @samp
29763@item OK
29764thread is still alive
b8ff78ce 29765@item E @var{NN}
ee2d5c50
AC
29766thread is dead
29767@end table
29768
b8ff78ce
JB
29769@item v
29770Packets starting with @samp{v} are identified by a multi-letter name,
29771up to the first @samp{;} or @samp{?} (or the end of the packet).
86d30acc 29772
2d717e4f
DJ
29773@item vAttach;@var{pid}
29774@cindex @samp{vAttach} packet
8b23ecc4
SL
29775Attach to a new process with the specified process ID @var{pid}.
29776The process ID is a
29777hexadecimal integer identifying the process. In all-stop mode, all
29778threads in the attached process are stopped; in non-stop mode, it may be
29779attached without being stopped if that is supported by the target.
29780
29781@c In non-stop mode, on a successful vAttach, the stub should set the
29782@c current thread to a thread of the newly-attached process. After
29783@c attaching, GDB queries for the attached process's thread ID with qC.
29784@c Also note that, from a user perspective, whether or not the
29785@c target is stopped on attach in non-stop mode depends on whether you
29786@c use the foreground or background version of the attach command, not
29787@c on what vAttach does; GDB does the right thing with respect to either
29788@c stopping or restarting threads.
2d717e4f
DJ
29789
29790This packet is only available in extended mode (@pxref{extended mode}).
29791
29792Reply:
29793@table @samp
29794@item E @var{nn}
29795for an error
29796@item @r{Any stop packet}
8b23ecc4
SL
29797for success in all-stop mode (@pxref{Stop Reply Packets})
29798@item OK
29799for success in non-stop mode (@pxref{Remote Non-Stop})
2d717e4f
DJ
29800@end table
29801
b90a069a 29802@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{}
b8ff78ce
JB
29803@cindex @samp{vCont} packet
29804Resume the inferior, specifying different actions for each thread.
b90a069a 29805If an action is specified with no @var{thread-id}, then it is applied to any
86d30acc 29806threads that don't have a specific action specified; if no default action is
8b23ecc4
SL
29807specified then other threads should remain stopped in all-stop mode and
29808in their current state in non-stop mode.
29809Specifying multiple
86d30acc 29810default actions is an error; specifying no actions is also an error.
b90a069a
SL
29811Thread IDs are specified using the syntax described in @ref{thread-id syntax}.
29812
29813Currently supported actions are:
86d30acc 29814
b8ff78ce 29815@table @samp
86d30acc
DJ
29816@item c
29817Continue.
b8ff78ce 29818@item C @var{sig}
8b23ecc4 29819Continue with signal @var{sig}. The signal @var{sig} should be two hex digits.
86d30acc
DJ
29820@item s
29821Step.
b8ff78ce 29822@item S @var{sig}
8b23ecc4
SL
29823Step with signal @var{sig}. The signal @var{sig} should be two hex digits.
29824@item t
29825Stop.
86d30acc
DJ
29826@end table
29827
8b23ecc4
SL
29828The optional argument @var{addr} normally associated with the
29829@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is
b8ff78ce 29830not supported in @samp{vCont}.
86d30acc 29831
08a0efd0
PA
29832The @samp{t} action is only relevant in non-stop mode
29833(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise.
8b23ecc4
SL
29834A stop reply should be generated for any affected thread not already stopped.
29835When a thread is stopped by means of a @samp{t} action,
29836the corresponding stop reply should indicate that the thread has stopped with
29837signal @samp{0}, regardless of whether the target uses some other signal
29838as an implementation detail.
29839
86d30acc
DJ
29840Reply:
29841@xref{Stop Reply Packets}, for the reply specifications.
29842
b8ff78ce
JB
29843@item vCont?
29844@cindex @samp{vCont?} packet
d3e8051b 29845Request a list of actions supported by the @samp{vCont} packet.
86d30acc
DJ
29846
29847Reply:
29848@table @samp
b8ff78ce
JB
29849@item vCont@r{[};@var{action}@dots{}@r{]}
29850The @samp{vCont} packet is supported. Each @var{action} is a supported
29851command in the @samp{vCont} packet.
86d30acc 29852@item
b8ff78ce 29853The @samp{vCont} packet is not supported.
86d30acc 29854@end table
ee2d5c50 29855
a6b151f1
DJ
29856@item vFile:@var{operation}:@var{parameter}@dots{}
29857@cindex @samp{vFile} packet
29858Perform a file operation on the target system. For details,
29859see @ref{Host I/O Packets}.
29860
68437a39
DJ
29861@item vFlashErase:@var{addr},@var{length}
29862@cindex @samp{vFlashErase} packet
29863Direct the stub to erase @var{length} bytes of flash starting at
29864@var{addr}. The region may enclose any number of flash blocks, but
29865its start and end must fall on block boundaries, as indicated by the
79a6e687
BW
29866flash block size appearing in the memory map (@pxref{Memory Map
29867Format}). @value{GDBN} groups flash memory programming operations
68437a39
DJ
29868together, and sends a @samp{vFlashDone} request after each group; the
29869stub is allowed to delay erase operation until the @samp{vFlashDone}
29870packet is received.
29871
b90a069a
SL
29872The stub must support @samp{vCont} if it reports support for
29873multiprocess extensions (@pxref{multiprocess extensions}). Note that in
29874this case @samp{vCont} actions can be specified to apply to all threads
29875in a process by using the @samp{p@var{pid}.-1} form of the
29876@var{thread-id}.
29877
68437a39
DJ
29878Reply:
29879@table @samp
29880@item OK
29881for success
29882@item E @var{NN}
29883for an error
29884@end table
29885
29886@item vFlashWrite:@var{addr}:@var{XX@dots{}}
29887@cindex @samp{vFlashWrite} packet
29888Direct the stub to write data to flash address @var{addr}. The data
29889is passed in binary form using the same encoding as for the @samp{X}
29890packet (@pxref{Binary Data}). The memory ranges specified by
29891@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
29892not overlap, and must appear in order of increasing addresses
29893(although @samp{vFlashErase} packets for higher addresses may already
29894have been received; the ordering is guaranteed only between
29895@samp{vFlashWrite} packets). If a packet writes to an address that was
29896neither erased by a preceding @samp{vFlashErase} packet nor by some other
29897target-specific method, the results are unpredictable.
29898
29899
29900Reply:
29901@table @samp
29902@item OK
29903for success
29904@item E.memtype
29905for vFlashWrite addressing non-flash memory
29906@item E @var{NN}
29907for an error
29908@end table
29909
29910@item vFlashDone
29911@cindex @samp{vFlashDone} packet
29912Indicate to the stub that flash programming operation is finished.
29913The stub is permitted to delay or batch the effects of a group of
29914@samp{vFlashErase} and @samp{vFlashWrite} packets until a
29915@samp{vFlashDone} packet is received. The contents of the affected
29916regions of flash memory are unpredictable until the @samp{vFlashDone}
29917request is completed.
29918
b90a069a
SL
29919@item vKill;@var{pid}
29920@cindex @samp{vKill} packet
29921Kill the process with the specified process ID. @var{pid} is a
29922hexadecimal integer identifying the process. This packet is used in
29923preference to @samp{k} when multiprocess protocol extensions are
29924supported; see @ref{multiprocess extensions}.
29925
29926Reply:
29927@table @samp
29928@item E @var{nn}
29929for an error
29930@item OK
29931for success
29932@end table
29933
2d717e4f
DJ
29934@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{}
29935@cindex @samp{vRun} packet
29936Run the program @var{filename}, passing it each @var{argument} on its
29937command line. The file and arguments are hex-encoded strings. If
29938@var{filename} is an empty string, the stub may use a default program
29939(e.g.@: the last program run). The program is created in the stopped
9b562ab8 29940state.
2d717e4f 29941
8b23ecc4
SL
29942@c FIXME: What about non-stop mode?
29943
2d717e4f
DJ
29944This packet is only available in extended mode (@pxref{extended mode}).
29945
29946Reply:
29947@table @samp
29948@item E @var{nn}
29949for an error
29950@item @r{Any stop packet}
29951for success (@pxref{Stop Reply Packets})
29952@end table
29953
8b23ecc4
SL
29954@item vStopped
29955@anchor{vStopped packet}
29956@cindex @samp{vStopped} packet
29957
29958In non-stop mode (@pxref{Remote Non-Stop}), acknowledge a previous stop
29959reply and prompt for the stub to report another one.
29960
29961Reply:
29962@table @samp
29963@item @r{Any stop packet}
29964if there is another unreported stop event (@pxref{Stop Reply Packets})
29965@item OK
29966if there are no unreported stop events
29967@end table
29968
b8ff78ce 29969@item X @var{addr},@var{length}:@var{XX@dots{}}
9a6253be 29970@anchor{X packet}
b8ff78ce
JB
29971@cindex @samp{X} packet
29972Write data to memory, where the data is transmitted in binary.
29973@var{addr} is address, @var{length} is number of bytes,
0876f84a 29974@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}).
c906108c 29975
ee2d5c50
AC
29976Reply:
29977@table @samp
29978@item OK
29979for success
b8ff78ce 29980@item E @var{NN}
ee2d5c50
AC
29981for an error
29982@end table
29983
a1dcb23a
DJ
29984@item z @var{type},@var{addr},@var{kind}
29985@itemx Z @var{type},@var{addr},@var{kind}
2f870471 29986@anchor{insert breakpoint or watchpoint packet}
b8ff78ce
JB
29987@cindex @samp{z} packet
29988@cindex @samp{Z} packets
29989Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
a1dcb23a 29990watchpoint starting at address @var{address} of kind @var{kind}.
ee2d5c50 29991
2f870471
AC
29992Each breakpoint and watchpoint packet @var{type} is documented
29993separately.
29994
512217c7
AC
29995@emph{Implementation notes: A remote target shall return an empty string
29996for an unrecognized breakpoint or watchpoint packet @var{type}. A
29997remote target shall support either both or neither of a given
b8ff78ce 29998@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To
2f870471
AC
29999avoid potential problems with duplicate packets, the operations should
30000be implemented in an idempotent way.}
30001
a1dcb23a
DJ
30002@item z0,@var{addr},@var{kind}
30003@itemx Z0,@var{addr},@var{kind}
b8ff78ce
JB
30004@cindex @samp{z0} packet
30005@cindex @samp{Z0} packet
30006Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address
a1dcb23a 30007@var{addr} of type @var{kind}.
2f870471
AC
30008
30009A memory breakpoint is implemented by replacing the instruction at
30010@var{addr} with a software breakpoint or trap instruction. The
a1dcb23a
DJ
30011@var{kind} is target-specific and typically indicates the size of
30012the breakpoint in bytes that should be inserted. E.g., the @sc{arm}
30013and @sc{mips} can insert either a 2 or 4 byte breakpoint. Some
30014architectures have additional meanings for @var{kind};
30015see @ref{Architecture-Specific Protocol Details}.
c906108c 30016
2f870471
AC
30017@emph{Implementation note: It is possible for a target to copy or move
30018code that contains memory breakpoints (e.g., when implementing
30019overlays). The behavior of this packet, in the presence of such a
30020target, is not defined.}
c906108c 30021
ee2d5c50
AC
30022Reply:
30023@table @samp
2f870471
AC
30024@item OK
30025success
30026@item
30027not supported
b8ff78ce 30028@item E @var{NN}
ee2d5c50 30029for an error
2f870471
AC
30030@end table
30031
a1dcb23a
DJ
30032@item z1,@var{addr},@var{kind}
30033@itemx Z1,@var{addr},@var{kind}
b8ff78ce
JB
30034@cindex @samp{z1} packet
30035@cindex @samp{Z1} packet
30036Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
a1dcb23a 30037address @var{addr}.
2f870471
AC
30038
30039A hardware breakpoint is implemented using a mechanism that is not
a1dcb23a
DJ
30040dependant on being able to modify the target's memory. @var{kind}
30041has the same meaning as in @samp{Z0} packets.
2f870471
AC
30042
30043@emph{Implementation note: A hardware breakpoint is not affected by code
30044movement.}
30045
30046Reply:
30047@table @samp
ee2d5c50 30048@item OK
2f870471
AC
30049success
30050@item
30051not supported
b8ff78ce 30052@item E @var{NN}
2f870471
AC
30053for an error
30054@end table
30055
a1dcb23a
DJ
30056@item z2,@var{addr},@var{kind}
30057@itemx Z2,@var{addr},@var{kind}
b8ff78ce
JB
30058@cindex @samp{z2} packet
30059@cindex @samp{Z2} packet
a1dcb23a
DJ
30060Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}.
30061@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
30062
30063Reply:
30064@table @samp
30065@item OK
30066success
30067@item
30068not supported
b8ff78ce 30069@item E @var{NN}
2f870471
AC
30070for an error
30071@end table
30072
a1dcb23a
DJ
30073@item z3,@var{addr},@var{kind}
30074@itemx Z3,@var{addr},@var{kind}
b8ff78ce
JB
30075@cindex @samp{z3} packet
30076@cindex @samp{Z3} packet
a1dcb23a
DJ
30077Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}.
30078@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
30079
30080Reply:
30081@table @samp
30082@item OK
30083success
30084@item
30085not supported
b8ff78ce 30086@item E @var{NN}
2f870471
AC
30087for an error
30088@end table
30089
a1dcb23a
DJ
30090@item z4,@var{addr},@var{kind}
30091@itemx Z4,@var{addr},@var{kind}
b8ff78ce
JB
30092@cindex @samp{z4} packet
30093@cindex @samp{Z4} packet
a1dcb23a
DJ
30094Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}.
30095@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
30096
30097Reply:
30098@table @samp
30099@item OK
30100success
30101@item
30102not supported
b8ff78ce 30103@item E @var{NN}
2f870471 30104for an error
ee2d5c50
AC
30105@end table
30106
30107@end table
c906108c 30108
ee2d5c50
AC
30109@node Stop Reply Packets
30110@section Stop Reply Packets
30111@cindex stop reply packets
c906108c 30112
8b23ecc4
SL
30113The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont},
30114@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can
30115receive any of the below as a reply. Except for @samp{?}
30116and @samp{vStopped}, that reply is only returned
b8ff78ce 30117when the target halts. In the below the exact meaning of @dfn{signal
89be2091
DJ
30118number} is defined by the header @file{include/gdb/signals.h} in the
30119@value{GDBN} source code.
c906108c 30120
b8ff78ce
JB
30121As in the description of request packets, we include spaces in the
30122reply templates for clarity; these are not part of the reply packet's
30123syntax. No @value{GDBN} stop reply packet uses spaces to separate its
30124components.
c906108c 30125
b8ff78ce 30126@table @samp
ee2d5c50 30127
b8ff78ce 30128@item S @var{AA}
599b237a 30129The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
30130number). This is equivalent to a @samp{T} response with no
30131@var{n}:@var{r} pairs.
c906108c 30132
b8ff78ce
JB
30133@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
30134@cindex @samp{T} packet reply
599b237a 30135The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
30136number). This is equivalent to an @samp{S} response, except that the
30137@samp{@var{n}:@var{r}} pairs can carry values of important registers
30138and other information directly in the stop reply packet, reducing
30139round-trip latency. Single-step and breakpoint traps are reported
30140this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows:
cfa9d6d9
DJ
30141
30142@itemize @bullet
b8ff78ce 30143@item
599b237a 30144If @var{n} is a hexadecimal number, it is a register number, and the
b8ff78ce
JB
30145corresponding @var{r} gives that register's value. @var{r} is a
30146series of bytes in target byte order, with each byte given by a
30147two-digit hex number.
cfa9d6d9 30148
b8ff78ce 30149@item
b90a069a
SL
30150If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of
30151the stopped thread, as specified in @ref{thread-id syntax}.
cfa9d6d9 30152
dc146f7c
VP
30153@item
30154If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of
30155the core on which the stop event was detected.
30156
b8ff78ce 30157@item
cfa9d6d9
DJ
30158If @var{n} is a recognized @dfn{stop reason}, it describes a more
30159specific event that stopped the target. The currently defined stop
30160reasons are listed below. @var{aa} should be @samp{05}, the trap
30161signal. At most one stop reason should be present.
30162
b8ff78ce
JB
30163@item
30164Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
30165and go on to the next; this allows us to extend the protocol in the
30166future.
cfa9d6d9
DJ
30167@end itemize
30168
30169The currently defined stop reasons are:
30170
30171@table @samp
30172@item watch
30173@itemx rwatch
30174@itemx awatch
30175The packet indicates a watchpoint hit, and @var{r} is the data address, in
30176hex.
30177
30178@cindex shared library events, remote reply
30179@item library
30180The packet indicates that the loaded libraries have changed.
30181@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new
30182list of loaded libraries. @var{r} is ignored.
bacec72f
MS
30183
30184@cindex replay log events, remote reply
30185@item replaylog
30186The packet indicates that the target cannot continue replaying
30187logged execution events, because it has reached the end (or the
30188beginning when executing backward) of the log. The value of @var{r}
30189will be either @samp{begin} or @samp{end}. @xref{Reverse Execution},
30190for more information.
cfa9d6d9 30191@end table
ee2d5c50 30192
b8ff78ce 30193@item W @var{AA}
b90a069a 30194@itemx W @var{AA} ; process:@var{pid}
8e04817f 30195The process exited, and @var{AA} is the exit status. This is only
ee2d5c50
AC
30196applicable to certain targets.
30197
b90a069a
SL
30198The second form of the response, including the process ID of the exited
30199process, can be used only when @value{GDBN} has reported support for
30200multiprocess protocol extensions; see @ref{multiprocess extensions}.
30201The @var{pid} is formatted as a big-endian hex string.
30202
b8ff78ce 30203@item X @var{AA}
b90a069a 30204@itemx X @var{AA} ; process:@var{pid}
8e04817f 30205The process terminated with signal @var{AA}.
c906108c 30206
b90a069a
SL
30207The second form of the response, including the process ID of the
30208terminated process, can be used only when @value{GDBN} has reported
30209support for multiprocess protocol extensions; see @ref{multiprocess
30210extensions}. The @var{pid} is formatted as a big-endian hex string.
30211
b8ff78ce
JB
30212@item O @var{XX}@dots{}
30213@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
30214written as the program's console output. This can happen at any time
30215while the program is running and the debugger should continue to wait
8b23ecc4 30216for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode.
0ce1b118 30217
b8ff78ce 30218@item F @var{call-id},@var{parameter}@dots{}
0ce1b118
CV
30219@var{call-id} is the identifier which says which host system call should
30220be called. This is just the name of the function. Translation into the
30221correct system call is only applicable as it's defined in @value{GDBN}.
79a6e687 30222@xref{File-I/O Remote Protocol Extension}, for a list of implemented
0ce1b118
CV
30223system calls.
30224
b8ff78ce
JB
30225@samp{@var{parameter}@dots{}} is a list of parameters as defined for
30226this very system call.
0ce1b118 30227
b8ff78ce
JB
30228The target replies with this packet when it expects @value{GDBN} to
30229call a host system call on behalf of the target. @value{GDBN} replies
30230with an appropriate @samp{F} packet and keeps up waiting for the next
30231reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S}
79a6e687
BW
30232or @samp{s} action is expected to be continued. @xref{File-I/O Remote
30233Protocol Extension}, for more details.
0ce1b118 30234
ee2d5c50
AC
30235@end table
30236
30237@node General Query Packets
30238@section General Query Packets
9c16f35a 30239@cindex remote query requests
c906108c 30240
5f3bebba
JB
30241Packets starting with @samp{q} are @dfn{general query packets};
30242packets starting with @samp{Q} are @dfn{general set packets}. General
30243query and set packets are a semi-unified form for retrieving and
30244sending information to and from the stub.
30245
30246The initial letter of a query or set packet is followed by a name
30247indicating what sort of thing the packet applies to. For example,
30248@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol
30249definitions with the stub. These packet names follow some
30250conventions:
30251
30252@itemize @bullet
30253@item
30254The name must not contain commas, colons or semicolons.
30255@item
30256Most @value{GDBN} query and set packets have a leading upper case
30257letter.
30258@item
30259The names of custom vendor packets should use a company prefix, in
30260lower case, followed by a period. For example, packets designed at
30261the Acme Corporation might begin with @samp{qacme.foo} (for querying
30262foos) or @samp{Qacme.bar} (for setting bars).
30263@end itemize
30264
aa56d27a
JB
30265The name of a query or set packet should be separated from any
30266parameters by a @samp{:}; the parameters themselves should be
30267separated by @samp{,} or @samp{;}. Stubs must be careful to match the
369af7bd
DJ
30268full packet name, and check for a separator or the end of the packet,
30269in case two packet names share a common prefix. New packets should not begin
30270with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL}
30271packets predate these conventions, and have arguments without any terminator
30272for the packet name; we suspect they are in widespread use in places that
30273are difficult to upgrade. The @samp{qC} packet has no arguments, but some
30274existing stubs (e.g.@: RedBoot) are known to not check for the end of the
30275packet.}.
c906108c 30276
b8ff78ce
JB
30277Like the descriptions of the other packets, each description here
30278has a template showing the packet's overall syntax, followed by an
30279explanation of the packet's meaning. We include spaces in some of the
30280templates for clarity; these are not part of the packet's syntax. No
30281@value{GDBN} packet uses spaces to separate its components.
30282
5f3bebba
JB
30283Here are the currently defined query and set packets:
30284
b8ff78ce 30285@table @samp
c906108c 30286
b8ff78ce 30287@item qC
9c16f35a 30288@cindex current thread, remote request
b8ff78ce 30289@cindex @samp{qC} packet
b90a069a 30290Return the current thread ID.
ee2d5c50
AC
30291
30292Reply:
30293@table @samp
b90a069a
SL
30294@item QC @var{thread-id}
30295Where @var{thread-id} is a thread ID as documented in
30296@ref{thread-id syntax}.
b8ff78ce 30297@item @r{(anything else)}
b90a069a 30298Any other reply implies the old thread ID.
ee2d5c50
AC
30299@end table
30300
b8ff78ce 30301@item qCRC:@var{addr},@var{length}
ff2587ec 30302@cindex CRC of memory block, remote request
b8ff78ce 30303@cindex @samp{qCRC} packet
99e008fe
EZ
30304Compute the CRC checksum of a block of memory using CRC-32 defined in
30305IEEE 802.3. The CRC is computed byte at a time, taking the most
30306significant bit of each byte first. The initial pattern code
30307@code{0xffffffff} is used to ensure leading zeros affect the CRC.
30308
30309@emph{Note:} This is the same CRC used in validating separate debug
30310files (@pxref{Separate Debug Files, , Debugging Information in Separate
30311Files}). However the algorithm is slightly different. When validating
30312separate debug files, the CRC is computed taking the @emph{least}
30313significant bit of each byte first, and the final result is inverted to
30314detect trailing zeros.
30315
ff2587ec
WZ
30316Reply:
30317@table @samp
b8ff78ce 30318@item E @var{NN}
ff2587ec 30319An error (such as memory fault)
b8ff78ce
JB
30320@item C @var{crc32}
30321The specified memory region's checksum is @var{crc32}.
ff2587ec
WZ
30322@end table
30323
b8ff78ce
JB
30324@item qfThreadInfo
30325@itemx qsThreadInfo
9c16f35a 30326@cindex list active threads, remote request
b8ff78ce
JB
30327@cindex @samp{qfThreadInfo} packet
30328@cindex @samp{qsThreadInfo} packet
b90a069a 30329Obtain a list of all active thread IDs from the target (OS). Since there
8e04817f
AC
30330may be too many active threads to fit into one reply packet, this query
30331works iteratively: it may require more than one query/reply sequence to
30332obtain the entire list of threads. The first query of the sequence will
b8ff78ce
JB
30333be the @samp{qfThreadInfo} query; subsequent queries in the
30334sequence will be the @samp{qsThreadInfo} query.
ee2d5c50 30335
b8ff78ce 30336NOTE: This packet replaces the @samp{qL} query (see below).
ee2d5c50
AC
30337
30338Reply:
30339@table @samp
b90a069a
SL
30340@item m @var{thread-id}
30341A single thread ID
30342@item m @var{thread-id},@var{thread-id}@dots{}
30343a comma-separated list of thread IDs
b8ff78ce
JB
30344@item l
30345(lower case letter @samp{L}) denotes end of list.
ee2d5c50
AC
30346@end table
30347
30348In response to each query, the target will reply with a list of one or
b90a069a 30349more thread IDs, separated by commas.
e1aac25b 30350@value{GDBN} will respond to each reply with a request for more thread
b8ff78ce 30351ids (using the @samp{qs} form of the query), until the target responds
b90a069a
SL
30352with @samp{l} (lower-case el, for @dfn{last}).
30353Refer to @ref{thread-id syntax}, for the format of the @var{thread-id}
30354fields.
c906108c 30355
b8ff78ce 30356@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
ff2587ec 30357@cindex get thread-local storage address, remote request
b8ff78ce 30358@cindex @samp{qGetTLSAddr} packet
ff2587ec
WZ
30359Fetch the address associated with thread local storage specified
30360by @var{thread-id}, @var{offset}, and @var{lm}.
30361
b90a069a
SL
30362@var{thread-id} is the thread ID associated with the
30363thread for which to fetch the TLS address. @xref{thread-id syntax}.
ff2587ec
WZ
30364
30365@var{offset} is the (big endian, hex encoded) offset associated with the
30366thread local variable. (This offset is obtained from the debug
30367information associated with the variable.)
30368
db2e3e2e 30369@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the
ff2587ec
WZ
30370the load module associated with the thread local storage. For example,
30371a @sc{gnu}/Linux system will pass the link map address of the shared
30372object associated with the thread local storage under consideration.
30373Other operating environments may choose to represent the load module
30374differently, so the precise meaning of this parameter will vary.
ee2d5c50
AC
30375
30376Reply:
b8ff78ce
JB
30377@table @samp
30378@item @var{XX}@dots{}
ff2587ec
WZ
30379Hex encoded (big endian) bytes representing the address of the thread
30380local storage requested.
30381
b8ff78ce
JB
30382@item E @var{nn}
30383An error occurred. @var{nn} are hex digits.
ff2587ec 30384
b8ff78ce
JB
30385@item
30386An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
ee2d5c50
AC
30387@end table
30388
b8ff78ce 30389@item qL @var{startflag} @var{threadcount} @var{nextthread}
8e04817f
AC
30390Obtain thread information from RTOS. Where: @var{startflag} (one hex
30391digit) is one to indicate the first query and zero to indicate a
30392subsequent query; @var{threadcount} (two hex digits) is the maximum
30393number of threads the response packet can contain; and @var{nextthread}
30394(eight hex digits), for subsequent queries (@var{startflag} is zero), is
30395returned in the response as @var{argthread}.
ee2d5c50 30396
b8ff78ce 30397Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
ee2d5c50
AC
30398
30399Reply:
30400@table @samp
b8ff78ce 30401@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
8e04817f
AC
30402Where: @var{count} (two hex digits) is the number of threads being
30403returned; @var{done} (one hex digit) is zero to indicate more threads
30404and one indicates no further threads; @var{argthreadid} (eight hex
b8ff78ce 30405digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
ee2d5c50 30406is a sequence of thread IDs from the target. @var{threadid} (eight hex
8e04817f 30407digits). See @code{remote.c:parse_threadlist_response()}.
ee2d5c50 30408@end table
c906108c 30409
b8ff78ce 30410@item qOffsets
9c16f35a 30411@cindex section offsets, remote request
b8ff78ce 30412@cindex @samp{qOffsets} packet
31d99776
DJ
30413Get section offsets that the target used when relocating the downloaded
30414image.
c906108c 30415
ee2d5c50
AC
30416Reply:
30417@table @samp
31d99776
DJ
30418@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]}
30419Relocate the @code{Text} section by @var{xxx} from its original address.
30420Relocate the @code{Data} section by @var{yyy} from its original address.
30421If the object file format provides segment information (e.g.@: @sc{elf}
30422@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire
30423segments by the supplied offsets.
30424
30425@emph{Note: while a @code{Bss} offset may be included in the response,
30426@value{GDBN} ignores this and instead applies the @code{Data} offset
30427to the @code{Bss} section.}
30428
30429@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]}
30430Relocate the first segment of the object file, which conventionally
30431contains program code, to a starting address of @var{xxx}. If
30432@samp{DataSeg} is specified, relocate the second segment, which
30433conventionally contains modifiable data, to a starting address of
30434@var{yyy}. @value{GDBN} will report an error if the object file
30435does not contain segment information, or does not contain at least
30436as many segments as mentioned in the reply. Extra segments are
30437kept at fixed offsets relative to the last relocated segment.
ee2d5c50
AC
30438@end table
30439
b90a069a 30440@item qP @var{mode} @var{thread-id}
9c16f35a 30441@cindex thread information, remote request
b8ff78ce 30442@cindex @samp{qP} packet
b90a069a
SL
30443Returns information on @var{thread-id}. Where: @var{mode} is a hex
30444encoded 32 bit mode; @var{thread-id} is a thread ID
30445(@pxref{thread-id syntax}).
ee2d5c50 30446
aa56d27a
JB
30447Don't use this packet; use the @samp{qThreadExtraInfo} query instead
30448(see below).
30449
b8ff78ce 30450Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
c906108c 30451
8b23ecc4
SL
30452@item QNonStop:1
30453@item QNonStop:0
30454@cindex non-stop mode, remote request
30455@cindex @samp{QNonStop} packet
30456@anchor{QNonStop}
30457Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode.
30458@xref{Remote Non-Stop}, for more information.
30459
30460Reply:
30461@table @samp
30462@item OK
30463The request succeeded.
30464
30465@item E @var{nn}
30466An error occurred. @var{nn} are hex digits.
30467
30468@item
30469An empty reply indicates that @samp{QNonStop} is not supported by
30470the stub.
30471@end table
30472
30473This packet is not probed by default; the remote stub must request it,
30474by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
30475Use of this packet is controlled by the @code{set non-stop} command;
30476@pxref{Non-Stop Mode}.
30477
89be2091
DJ
30478@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
30479@cindex pass signals to inferior, remote request
30480@cindex @samp{QPassSignals} packet
23181151 30481@anchor{QPassSignals}
89be2091
DJ
30482Each listed @var{signal} should be passed directly to the inferior process.
30483Signals are numbered identically to continue packets and stop replies
30484(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
30485strictly greater than the previous item. These signals do not need to stop
30486the inferior, or be reported to @value{GDBN}. All other signals should be
30487reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not
30488combine; any earlier @samp{QPassSignals} list is completely replaced by the
30489new list. This packet improves performance when using @samp{handle
30490@var{signal} nostop noprint pass}.
30491
30492Reply:
30493@table @samp
30494@item OK
30495The request succeeded.
30496
30497@item E @var{nn}
30498An error occurred. @var{nn} are hex digits.
30499
30500@item
30501An empty reply indicates that @samp{QPassSignals} is not supported by
30502the stub.
30503@end table
30504
30505Use of this packet is controlled by the @code{set remote pass-signals}
79a6e687 30506command (@pxref{Remote Configuration, set remote pass-signals}).
89be2091
DJ
30507This packet is not probed by default; the remote stub must request it,
30508by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
30509
b8ff78ce 30510@item qRcmd,@var{command}
ff2587ec 30511@cindex execute remote command, remote request
b8ff78ce 30512@cindex @samp{qRcmd} packet
ff2587ec 30513@var{command} (hex encoded) is passed to the local interpreter for
b8ff78ce
JB
30514execution. Invalid commands should be reported using the output
30515string. Before the final result packet, the target may also respond
30516with a number of intermediate @samp{O@var{output}} console output
30517packets. @emph{Implementors should note that providing access to a
30518stubs's interpreter may have security implications}.
fa93a9d8 30519
ff2587ec
WZ
30520Reply:
30521@table @samp
30522@item OK
30523A command response with no output.
30524@item @var{OUTPUT}
30525A command response with the hex encoded output string @var{OUTPUT}.
b8ff78ce 30526@item E @var{NN}
ff2587ec 30527Indicate a badly formed request.
b8ff78ce
JB
30528@item
30529An empty reply indicates that @samp{qRcmd} is not recognized.
ff2587ec 30530@end table
fa93a9d8 30531
aa56d27a
JB
30532(Note that the @code{qRcmd} packet's name is separated from the
30533command by a @samp{,}, not a @samp{:}, contrary to the naming
30534conventions above. Please don't use this packet as a model for new
30535packets.)
30536
08388c79
DE
30537@item qSearch:memory:@var{address};@var{length};@var{search-pattern}
30538@cindex searching memory, in remote debugging
30539@cindex @samp{qSearch:memory} packet
30540@anchor{qSearch memory}
30541Search @var{length} bytes at @var{address} for @var{search-pattern}.
30542@var{address} and @var{length} are encoded in hex.
30543@var{search-pattern} is a sequence of bytes, hex encoded.
30544
30545Reply:
30546@table @samp
30547@item 0
30548The pattern was not found.
30549@item 1,address
30550The pattern was found at @var{address}.
30551@item E @var{NN}
30552A badly formed request or an error was encountered while searching memory.
30553@item
30554An empty reply indicates that @samp{qSearch:memory} is not recognized.
30555@end table
30556
a6f3e723
SL
30557@item QStartNoAckMode
30558@cindex @samp{QStartNoAckMode} packet
30559@anchor{QStartNoAckMode}
30560Request that the remote stub disable the normal @samp{+}/@samp{-}
30561protocol acknowledgments (@pxref{Packet Acknowledgment}).
30562
30563Reply:
30564@table @samp
30565@item OK
30566The stub has switched to no-acknowledgment mode.
30567@value{GDBN} acknowledges this reponse,
30568but neither the stub nor @value{GDBN} shall send or expect further
30569@samp{+}/@samp{-} acknowledgments in the current connection.
30570@item
30571An empty reply indicates that the stub does not support no-acknowledgment mode.
30572@end table
30573
be2a5f71
DJ
30574@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]}
30575@cindex supported packets, remote query
30576@cindex features of the remote protocol
30577@cindex @samp{qSupported} packet
0876f84a 30578@anchor{qSupported}
be2a5f71
DJ
30579Tell the remote stub about features supported by @value{GDBN}, and
30580query the stub for features it supports. This packet allows
30581@value{GDBN} and the remote stub to take advantage of each others'
30582features. @samp{qSupported} also consolidates multiple feature probes
30583at startup, to improve @value{GDBN} performance---a single larger
30584packet performs better than multiple smaller probe packets on
30585high-latency links. Some features may enable behavior which must not
30586be on by default, e.g.@: because it would confuse older clients or
30587stubs. Other features may describe packets which could be
30588automatically probed for, but are not. These features must be
30589reported before @value{GDBN} will use them. This ``default
30590unsupported'' behavior is not appropriate for all packets, but it
30591helps to keep the initial connection time under control with new
30592versions of @value{GDBN} which support increasing numbers of packets.
30593
30594Reply:
30595@table @samp
30596@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{}
30597The stub supports or does not support each returned @var{stubfeature},
30598depending on the form of each @var{stubfeature} (see below for the
30599possible forms).
30600@item
30601An empty reply indicates that @samp{qSupported} is not recognized,
30602or that no features needed to be reported to @value{GDBN}.
30603@end table
30604
30605The allowed forms for each feature (either a @var{gdbfeature} in the
30606@samp{qSupported} packet, or a @var{stubfeature} in the response)
30607are:
30608
30609@table @samp
30610@item @var{name}=@var{value}
30611The remote protocol feature @var{name} is supported, and associated
30612with the specified @var{value}. The format of @var{value} depends
30613on the feature, but it must not include a semicolon.
30614@item @var{name}+
30615The remote protocol feature @var{name} is supported, and does not
30616need an associated value.
30617@item @var{name}-
30618The remote protocol feature @var{name} is not supported.
30619@item @var{name}?
30620The remote protocol feature @var{name} may be supported, and
30621@value{GDBN} should auto-detect support in some other way when it is
30622needed. This form will not be used for @var{gdbfeature} notifications,
30623but may be used for @var{stubfeature} responses.
30624@end table
30625
30626Whenever the stub receives a @samp{qSupported} request, the
30627supplied set of @value{GDBN} features should override any previous
30628request. This allows @value{GDBN} to put the stub in a known
30629state, even if the stub had previously been communicating with
30630a different version of @value{GDBN}.
30631
b90a069a
SL
30632The following values of @var{gdbfeature} (for the packet sent by @value{GDBN})
30633are defined:
30634
30635@table @samp
30636@item multiprocess
30637This feature indicates whether @value{GDBN} supports multiprocess
30638extensions to the remote protocol. @value{GDBN} does not use such
30639extensions unless the stub also reports that it supports them by
30640including @samp{multiprocess+} in its @samp{qSupported} reply.
30641@xref{multiprocess extensions}, for details.
c8d5aac9
L
30642
30643@item xmlRegisters
30644This feature indicates that @value{GDBN} supports the XML target
30645description. If the stub sees @samp{xmlRegisters=} with target
30646specific strings separated by a comma, it will report register
30647description.
b90a069a
SL
30648@end table
30649
30650Stubs should ignore any unknown values for
be2a5f71
DJ
30651@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported}
30652packet supports receiving packets of unlimited length (earlier
b90a069a 30653versions of @value{GDBN} may reject overly long responses). Additional values
be2a5f71
DJ
30654for @var{gdbfeature} may be defined in the future to let the stub take
30655advantage of new features in @value{GDBN}, e.g.@: incompatible
b90a069a
SL
30656improvements in the remote protocol---the @samp{multiprocess} feature is
30657an example of such a feature. The stub's reply should be independent
be2a5f71
DJ
30658of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN}
30659describes all the features it supports, and then the stub replies with
30660all the features it supports.
30661
30662Similarly, @value{GDBN} will silently ignore unrecognized stub feature
30663responses, as long as each response uses one of the standard forms.
30664
30665Some features are flags. A stub which supports a flag feature
30666should respond with a @samp{+} form response. Other features
30667require values, and the stub should respond with an @samp{=}
30668form response.
30669
30670Each feature has a default value, which @value{GDBN} will use if
30671@samp{qSupported} is not available or if the feature is not mentioned
30672in the @samp{qSupported} response. The default values are fixed; a
30673stub is free to omit any feature responses that match the defaults.
30674
30675Not all features can be probed, but for those which can, the probing
30676mechanism is useful: in some cases, a stub's internal
30677architecture may not allow the protocol layer to know some information
30678about the underlying target in advance. This is especially common in
30679stubs which may be configured for multiple targets.
30680
30681These are the currently defined stub features and their properties:
30682
cfa9d6d9 30683@multitable @columnfractions 0.35 0.2 0.12 0.2
be2a5f71
DJ
30684@c NOTE: The first row should be @headitem, but we do not yet require
30685@c a new enough version of Texinfo (4.7) to use @headitem.
0876f84a 30686@item Feature Name
be2a5f71
DJ
30687@tab Value Required
30688@tab Default
30689@tab Probe Allowed
30690
30691@item @samp{PacketSize}
30692@tab Yes
30693@tab @samp{-}
30694@tab No
30695
0876f84a
DJ
30696@item @samp{qXfer:auxv:read}
30697@tab No
30698@tab @samp{-}
30699@tab Yes
30700
23181151
DJ
30701@item @samp{qXfer:features:read}
30702@tab No
30703@tab @samp{-}
30704@tab Yes
30705
cfa9d6d9
DJ
30706@item @samp{qXfer:libraries:read}
30707@tab No
30708@tab @samp{-}
30709@tab Yes
30710
68437a39
DJ
30711@item @samp{qXfer:memory-map:read}
30712@tab No
30713@tab @samp{-}
30714@tab Yes
30715
0e7f50da
UW
30716@item @samp{qXfer:spu:read}
30717@tab No
30718@tab @samp{-}
30719@tab Yes
30720
30721@item @samp{qXfer:spu:write}
30722@tab No
30723@tab @samp{-}
30724@tab Yes
30725
4aa995e1
PA
30726@item @samp{qXfer:siginfo:read}
30727@tab No
30728@tab @samp{-}
30729@tab Yes
30730
30731@item @samp{qXfer:siginfo:write}
30732@tab No
30733@tab @samp{-}
30734@tab Yes
30735
dc146f7c
VP
30736@item @samp{qXfer:threads:read}
30737@tab No
30738@tab @samp{-}
30739@tab Yes
30740
30741
8b23ecc4
SL
30742@item @samp{QNonStop}
30743@tab No
30744@tab @samp{-}
30745@tab Yes
30746
89be2091
DJ
30747@item @samp{QPassSignals}
30748@tab No
30749@tab @samp{-}
30750@tab Yes
30751
a6f3e723
SL
30752@item @samp{QStartNoAckMode}
30753@tab No
30754@tab @samp{-}
30755@tab Yes
30756
b90a069a
SL
30757@item @samp{multiprocess}
30758@tab No
30759@tab @samp{-}
30760@tab No
30761
782b2b07
SS
30762@item @samp{ConditionalTracepoints}
30763@tab No
30764@tab @samp{-}
30765@tab No
30766
0d772ac9
MS
30767@item @samp{ReverseContinue}
30768@tab No
2f8132f3 30769@tab @samp{-}
0d772ac9
MS
30770@tab No
30771
30772@item @samp{ReverseStep}
30773@tab No
2f8132f3 30774@tab @samp{-}
0d772ac9
MS
30775@tab No
30776
409873ef
SS
30777@item @samp{TracepointSource}
30778@tab No
30779@tab @samp{-}
30780@tab No
30781
be2a5f71
DJ
30782@end multitable
30783
30784These are the currently defined stub features, in more detail:
30785
30786@table @samp
30787@cindex packet size, remote protocol
30788@item PacketSize=@var{bytes}
30789The remote stub can accept packets up to at least @var{bytes} in
30790length. @value{GDBN} will send packets up to this size for bulk
30791transfers, and will never send larger packets. This is a limit on the
30792data characters in the packet, including the frame and checksum.
30793There is no trailing NUL byte in a remote protocol packet; if the stub
30794stores packets in a NUL-terminated format, it should allow an extra
30795byte in its buffer for the NUL. If this stub feature is not supported,
30796@value{GDBN} guesses based on the size of the @samp{g} packet response.
30797
0876f84a
DJ
30798@item qXfer:auxv:read
30799The remote stub understands the @samp{qXfer:auxv:read} packet
30800(@pxref{qXfer auxiliary vector read}).
30801
23181151
DJ
30802@item qXfer:features:read
30803The remote stub understands the @samp{qXfer:features:read} packet
30804(@pxref{qXfer target description read}).
30805
cfa9d6d9
DJ
30806@item qXfer:libraries:read
30807The remote stub understands the @samp{qXfer:libraries:read} packet
30808(@pxref{qXfer library list read}).
30809
23181151
DJ
30810@item qXfer:memory-map:read
30811The remote stub understands the @samp{qXfer:memory-map:read} packet
30812(@pxref{qXfer memory map read}).
30813
0e7f50da
UW
30814@item qXfer:spu:read
30815The remote stub understands the @samp{qXfer:spu:read} packet
30816(@pxref{qXfer spu read}).
30817
30818@item qXfer:spu:write
30819The remote stub understands the @samp{qXfer:spu:write} packet
30820(@pxref{qXfer spu write}).
30821
4aa995e1
PA
30822@item qXfer:siginfo:read
30823The remote stub understands the @samp{qXfer:siginfo:read} packet
30824(@pxref{qXfer siginfo read}).
30825
30826@item qXfer:siginfo:write
30827The remote stub understands the @samp{qXfer:siginfo:write} packet
30828(@pxref{qXfer siginfo write}).
30829
dc146f7c
VP
30830@item qXfer:threads:read
30831The remote stub understands the @samp{qXfer:threads:read} packet
30832(@pxref{qXfer threads read}).
30833
8b23ecc4
SL
30834@item QNonStop
30835The remote stub understands the @samp{QNonStop} packet
30836(@pxref{QNonStop}).
30837
23181151
DJ
30838@item QPassSignals
30839The remote stub understands the @samp{QPassSignals} packet
30840(@pxref{QPassSignals}).
30841
a6f3e723
SL
30842@item QStartNoAckMode
30843The remote stub understands the @samp{QStartNoAckMode} packet and
30844prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}.
30845
b90a069a
SL
30846@item multiprocess
30847@anchor{multiprocess extensions}
30848@cindex multiprocess extensions, in remote protocol
30849The remote stub understands the multiprocess extensions to the remote
30850protocol syntax. The multiprocess extensions affect the syntax of
30851thread IDs in both packets and replies (@pxref{thread-id syntax}), and
30852add process IDs to the @samp{D} packet and @samp{W} and @samp{X}
30853replies. Note that reporting this feature indicates support for the
30854syntactic extensions only, not that the stub necessarily supports
30855debugging of more than one process at a time. The stub must not use
30856multiprocess extensions in packet replies unless @value{GDBN} has also
30857indicated it supports them in its @samp{qSupported} request.
30858
07e059b5
VP
30859@item qXfer:osdata:read
30860The remote stub understands the @samp{qXfer:osdata:read} packet
30861((@pxref{qXfer osdata read}).
30862
782b2b07
SS
30863@item ConditionalTracepoints
30864The remote stub accepts and implements conditional expressions defined
30865for tracepoints (@pxref{Tracepoint Conditions}).
30866
0d772ac9
MS
30867@item ReverseContinue
30868The remote stub accepts and implements the reverse continue packet
30869(@pxref{bc}).
30870
30871@item ReverseStep
30872The remote stub accepts and implements the reverse step packet
30873(@pxref{bs}).
30874
409873ef
SS
30875@item TracepointSource
30876The remote stub understands the @samp{QTDPsrc} packet that supplies
30877the source form of tracepoint definitions.
30878
be2a5f71
DJ
30879@end table
30880
b8ff78ce 30881@item qSymbol::
ff2587ec 30882@cindex symbol lookup, remote request
b8ff78ce 30883@cindex @samp{qSymbol} packet
ff2587ec
WZ
30884Notify the target that @value{GDBN} is prepared to serve symbol lookup
30885requests. Accept requests from the target for the values of symbols.
fa93a9d8
JB
30886
30887Reply:
ff2587ec 30888@table @samp
b8ff78ce 30889@item OK
ff2587ec 30890The target does not need to look up any (more) symbols.
b8ff78ce 30891@item qSymbol:@var{sym_name}
ff2587ec
WZ
30892The target requests the value of symbol @var{sym_name} (hex encoded).
30893@value{GDBN} may provide the value by using the
b8ff78ce
JB
30894@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
30895below.
ff2587ec 30896@end table
83761cbd 30897
b8ff78ce 30898@item qSymbol:@var{sym_value}:@var{sym_name}
ff2587ec
WZ
30899Set the value of @var{sym_name} to @var{sym_value}.
30900
30901@var{sym_name} (hex encoded) is the name of a symbol whose value the
30902target has previously requested.
30903
30904@var{sym_value} (hex) is the value for symbol @var{sym_name}. If
30905@value{GDBN} cannot supply a value for @var{sym_name}, then this field
30906will be empty.
30907
30908Reply:
30909@table @samp
b8ff78ce 30910@item OK
ff2587ec 30911The target does not need to look up any (more) symbols.
b8ff78ce 30912@item qSymbol:@var{sym_name}
ff2587ec
WZ
30913The target requests the value of a new symbol @var{sym_name} (hex
30914encoded). @value{GDBN} will continue to supply the values of symbols
30915(if available), until the target ceases to request them.
fa93a9d8 30916@end table
0abb7bc7 30917
00bf0b85 30918@item qTBuffer
4daf5ac0 30919@item QTBuffer
d5551862
SS
30920@item QTDisconnected
30921@itemx QTDP
409873ef 30922@itemx QTDPsrc
d5551862 30923@itemx QTDV
00bf0b85
SS
30924@itemx qTfP
30925@itemx qTfV
9d29849a
JB
30926@itemx QTFrame
30927@xref{Tracepoint Packets}.
30928
b90a069a 30929@item qThreadExtraInfo,@var{thread-id}
ff2587ec 30930@cindex thread attributes info, remote request
b8ff78ce
JB
30931@cindex @samp{qThreadExtraInfo} packet
30932Obtain a printable string description of a thread's attributes from
b90a069a
SL
30933the target OS. @var{thread-id} is a thread ID;
30934see @ref{thread-id syntax}. This
b8ff78ce
JB
30935string may contain anything that the target OS thinks is interesting
30936for @value{GDBN} to tell the user about the thread. The string is
30937displayed in @value{GDBN}'s @code{info threads} display. Some
30938examples of possible thread extra info strings are @samp{Runnable}, or
30939@samp{Blocked on Mutex}.
ff2587ec
WZ
30940
30941Reply:
30942@table @samp
b8ff78ce
JB
30943@item @var{XX}@dots{}
30944Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
30945comprising the printable string containing the extra information about
30946the thread's attributes.
ff2587ec 30947@end table
814e32d7 30948
aa56d27a
JB
30949(Note that the @code{qThreadExtraInfo} packet's name is separated from
30950the command by a @samp{,}, not a @samp{:}, contrary to the naming
30951conventions above. Please don't use this packet as a model for new
30952packets.)
30953
00bf0b85
SS
30954@item QTSave
30955@item qTsP
30956@item qTsV
d5551862 30957@itemx QTStart
9d29849a
JB
30958@itemx QTStop
30959@itemx QTinit
30960@itemx QTro
30961@itemx qTStatus
d5551862 30962@itemx qTV
9d29849a
JB
30963@xref{Tracepoint Packets}.
30964
0876f84a
DJ
30965@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
30966@cindex read special object, remote request
30967@cindex @samp{qXfer} packet
68437a39 30968@anchor{qXfer read}
0876f84a
DJ
30969Read uninterpreted bytes from the target's special data area
30970identified by the keyword @var{object}. Request @var{length} bytes
30971starting at @var{offset} bytes into the data. The content and
0e7f50da 30972encoding of @var{annex} is specific to @var{object}; it can supply
0876f84a
DJ
30973additional details about what data to access.
30974
30975Here are the specific requests of this form defined so far. All
30976@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply
30977formats, listed below.
30978
30979@table @samp
30980@item qXfer:auxv:read::@var{offset},@var{length}
30981@anchor{qXfer auxiliary vector read}
30982Access the target's @dfn{auxiliary vector}. @xref{OS Information,
427c3a89 30983auxiliary vector}. Note @var{annex} must be empty.
0876f84a
DJ
30984
30985This packet is not probed by default; the remote stub must request it,
89be2091 30986by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
0876f84a 30987
23181151
DJ
30988@item qXfer:features:read:@var{annex}:@var{offset},@var{length}
30989@anchor{qXfer target description read}
30990Access the @dfn{target description}. @xref{Target Descriptions}. The
30991annex specifies which XML document to access. The main description is
30992always loaded from the @samp{target.xml} annex.
30993
30994This packet is not probed by default; the remote stub must request it,
30995by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
30996
cfa9d6d9
DJ
30997@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length}
30998@anchor{qXfer library list read}
30999Access the target's list of loaded libraries. @xref{Library List Format}.
31000The annex part of the generic @samp{qXfer} packet must be empty
31001(@pxref{qXfer read}).
31002
31003Targets which maintain a list of libraries in the program's memory do
31004not need to implement this packet; it is designed for platforms where
31005the operating system manages the list of loaded libraries.
31006
31007This packet is not probed by default; the remote stub must request it,
31008by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
31009
68437a39
DJ
31010@item qXfer:memory-map:read::@var{offset},@var{length}
31011@anchor{qXfer memory map read}
79a6e687 31012Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The
68437a39
DJ
31013annex part of the generic @samp{qXfer} packet must be empty
31014(@pxref{qXfer read}).
31015
0e7f50da
UW
31016This packet is not probed by default; the remote stub must request it,
31017by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
31018
4aa995e1
PA
31019@item qXfer:siginfo:read::@var{offset},@var{length}
31020@anchor{qXfer siginfo read}
31021Read contents of the extra signal information on the target
31022system. The annex part of the generic @samp{qXfer} packet must be
31023empty (@pxref{qXfer read}).
31024
31025This packet is not probed by default; the remote stub must request it,
31026by supplying an appropriate @samp{qSupported} response
31027(@pxref{qSupported}).
31028
0e7f50da
UW
31029@item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
31030@anchor{qXfer spu read}
31031Read contents of an @code{spufs} file on the target system. The
31032annex specifies which file to read; it must be of the form
31033@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
31034in the target process, and @var{name} identifes the @code{spufs} file
31035in that context to be accessed.
31036
68437a39 31037This packet is not probed by default; the remote stub must request it,
07e059b5
VP
31038by supplying an appropriate @samp{qSupported} response
31039(@pxref{qSupported}).
31040
dc146f7c
VP
31041@item qXfer:threads:read::@var{offset},@var{length}
31042@anchor{qXfer threads read}
31043Access the list of threads on target. @xref{Thread List Format}. The
31044annex part of the generic @samp{qXfer} packet must be empty
31045(@pxref{qXfer read}).
31046
31047This packet is not probed by default; the remote stub must request it,
31048by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
31049
07e059b5
VP
31050@item qXfer:osdata:read::@var{offset},@var{length}
31051@anchor{qXfer osdata read}
31052Access the target's @dfn{operating system information}.
31053@xref{Operating System Information}.
31054
68437a39
DJ
31055@end table
31056
0876f84a
DJ
31057Reply:
31058@table @samp
31059@item m @var{data}
31060Data @var{data} (@pxref{Binary Data}) has been read from the
31061target. There may be more data at a higher address (although
31062it is permitted to return @samp{m} even for the last valid
31063block of data, as long as at least one byte of data was read).
31064@var{data} may have fewer bytes than the @var{length} in the
31065request.
31066
31067@item l @var{data}
31068Data @var{data} (@pxref{Binary Data}) has been read from the target.
31069There is no more data to be read. @var{data} may have fewer bytes
31070than the @var{length} in the request.
31071
31072@item l
31073The @var{offset} in the request is at the end of the data.
31074There is no more data to be read.
31075
31076@item E00
31077The request was malformed, or @var{annex} was invalid.
31078
31079@item E @var{nn}
31080The offset was invalid, or there was an error encountered reading the data.
31081@var{nn} is a hex-encoded @code{errno} value.
31082
31083@item
31084An empty reply indicates the @var{object} string was not recognized by
31085the stub, or that the object does not support reading.
31086@end table
31087
31088@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
31089@cindex write data into object, remote request
4aa995e1 31090@anchor{qXfer write}
0876f84a
DJ
31091Write uninterpreted bytes into the target's special data area
31092identified by the keyword @var{object}, starting at @var{offset} bytes
0e7f50da 31093into the data. @var{data}@dots{} is the binary-encoded data
0876f84a 31094(@pxref{Binary Data}) to be written. The content and encoding of @var{annex}
0e7f50da 31095is specific to @var{object}; it can supply additional details about what data
0876f84a
DJ
31096to access.
31097
0e7f50da
UW
31098Here are the specific requests of this form defined so far. All
31099@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply
31100formats, listed below.
31101
31102@table @samp
4aa995e1
PA
31103@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{}
31104@anchor{qXfer siginfo write}
31105Write @var{data} to the extra signal information on the target system.
31106The annex part of the generic @samp{qXfer} packet must be
31107empty (@pxref{qXfer write}).
31108
31109This packet is not probed by default; the remote stub must request it,
31110by supplying an appropriate @samp{qSupported} response
31111(@pxref{qSupported}).
31112
84fcdf95 31113@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
0e7f50da
UW
31114@anchor{qXfer spu write}
31115Write @var{data} to an @code{spufs} file on the target system. The
31116annex specifies which file to write; it must be of the form
31117@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
31118in the target process, and @var{name} identifes the @code{spufs} file
31119in that context to be accessed.
31120
31121This packet is not probed by default; the remote stub must request it,
31122by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
31123@end table
0876f84a
DJ
31124
31125Reply:
31126@table @samp
31127@item @var{nn}
31128@var{nn} (hex encoded) is the number of bytes written.
31129This may be fewer bytes than supplied in the request.
31130
31131@item E00
31132The request was malformed, or @var{annex} was invalid.
31133
31134@item E @var{nn}
31135The offset was invalid, or there was an error encountered writing the data.
31136@var{nn} is a hex-encoded @code{errno} value.
31137
31138@item
31139An empty reply indicates the @var{object} string was not
31140recognized by the stub, or that the object does not support writing.
31141@end table
31142
31143@item qXfer:@var{object}:@var{operation}:@dots{}
31144Requests of this form may be added in the future. When a stub does
31145not recognize the @var{object} keyword, or its support for
31146@var{object} does not recognize the @var{operation} keyword, the stub
31147must respond with an empty packet.
31148
0b16c5cf
PA
31149@item qAttached:@var{pid}
31150@cindex query attached, remote request
31151@cindex @samp{qAttached} packet
31152Return an indication of whether the remote server attached to an
31153existing process or created a new process. When the multiprocess
31154protocol extensions are supported (@pxref{multiprocess extensions}),
31155@var{pid} is an integer in hexadecimal format identifying the target
31156process. Otherwise, @value{GDBN} will omit the @var{pid} field and
31157the query packet will be simplified as @samp{qAttached}.
31158
31159This query is used, for example, to know whether the remote process
31160should be detached or killed when a @value{GDBN} session is ended with
31161the @code{quit} command.
31162
31163Reply:
31164@table @samp
31165@item 1
31166The remote server attached to an existing process.
31167@item 0
31168The remote server created a new process.
31169@item E @var{NN}
31170A badly formed request or an error was encountered.
31171@end table
31172
ee2d5c50
AC
31173@end table
31174
a1dcb23a
DJ
31175@node Architecture-Specific Protocol Details
31176@section Architecture-Specific Protocol Details
31177
31178This section describes how the remote protocol is applied to specific
31179target architectures. Also see @ref{Standard Target Features}, for
31180details of XML target descriptions for each architecture.
31181
31182@subsection ARM
31183
31184@subsubsection Breakpoint Kinds
31185
31186These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
31187
31188@table @r
31189
31190@item 2
3119116-bit Thumb mode breakpoint.
31192
31193@item 3
3119432-bit Thumb mode (Thumb-2) breakpoint.
31195
31196@item 4
3119732-bit ARM mode breakpoint.
31198
31199@end table
31200
31201@subsection MIPS
31202
31203@subsubsection Register Packet Format
eb12ee30 31204
b8ff78ce 31205The following @code{g}/@code{G} packets have previously been defined.
ee2d5c50
AC
31206In the below, some thirty-two bit registers are transferred as
31207sixty-four bits. Those registers should be zero/sign extended (which?)
599b237a
BW
31208to fill the space allocated. Register bytes are transferred in target
31209byte order. The two nibbles within a register byte are transferred
ee2d5c50 31210most-significant - least-significant.
eb12ee30 31211
ee2d5c50 31212@table @r
eb12ee30 31213
8e04817f 31214@item MIPS32
ee2d5c50 31215
599b237a 31216All registers are transferred as thirty-two bit quantities in the order:
8e04817f
AC
3121732 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
31218registers; fsr; fir; fp.
eb12ee30 31219
8e04817f 31220@item MIPS64
ee2d5c50 31221
599b237a 31222All registers are transferred as sixty-four bit quantities (including
8e04817f
AC
31223thirty-two bit registers such as @code{sr}). The ordering is the same
31224as @code{MIPS32}.
eb12ee30 31225
ee2d5c50
AC
31226@end table
31227
9d29849a
JB
31228@node Tracepoint Packets
31229@section Tracepoint Packets
31230@cindex tracepoint packets
31231@cindex packets, tracepoint
31232
31233Here we describe the packets @value{GDBN} uses to implement
31234tracepoints (@pxref{Tracepoints}).
31235
31236@table @samp
31237
7a697b8d 31238@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]}
9d29849a
JB
31239Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena}
31240is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then
31241the tracepoint is disabled. @var{step} is the tracepoint's step
7a697b8d
SS
31242count, and @var{pass} is its pass count. If an @samp{F} is present,
31243then the tracepoint is to be a fast tracepoint, and the @var{flen} is
31244the number of bytes that the target should copy elsewhere to make room
31245for the tracepoint. If an @samp{X} is present, it introduces a
31246tracepoint condition, which consists of a hexadecimal length, followed
31247by a comma and hex-encoded bytes, in a manner similar to action
31248encodings as described below. If the trailing @samp{-} is present,
31249further @samp{QTDP} packets will follow to specify this tracepoint's
31250actions.
9d29849a
JB
31251
31252Replies:
31253@table @samp
31254@item OK
31255The packet was understood and carried out.
31256@item
31257The packet was not recognized.
31258@end table
31259
31260@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]}
31261Define actions to be taken when a tracepoint is hit. @var{n} and
31262@var{addr} must be the same as in the initial @samp{QTDP} packet for
31263this tracepoint. This packet may only be sent immediately after
31264another @samp{QTDP} packet that ended with a @samp{-}. If the
31265trailing @samp{-} is present, further @samp{QTDP} packets will follow,
31266specifying more actions for this tracepoint.
31267
31268In the series of action packets for a given tracepoint, at most one
31269can have an @samp{S} before its first @var{action}. If such a packet
31270is sent, it and the following packets define ``while-stepping''
31271actions. Any prior packets define ordinary actions --- that is, those
31272taken when the tracepoint is first hit. If no action packet has an
31273@samp{S}, then all the packets in the series specify ordinary
31274tracepoint actions.
31275
31276The @samp{@var{action}@dots{}} portion of the packet is a series of
31277actions, concatenated without separators. Each action has one of the
31278following forms:
31279
31280@table @samp
31281
31282@item R @var{mask}
31283Collect the registers whose bits are set in @var{mask}. @var{mask} is
599b237a 31284a hexadecimal number whose @var{i}'th bit is set if register number
9d29849a
JB
31285@var{i} should be collected. (The least significant bit is numbered
31286zero.) Note that @var{mask} may be any number of digits long; it may
31287not fit in a 32-bit word.
31288
31289@item M @var{basereg},@var{offset},@var{len}
31290Collect @var{len} bytes of memory starting at the address in register
31291number @var{basereg}, plus @var{offset}. If @var{basereg} is
31292@samp{-1}, then the range has a fixed address: @var{offset} is the
31293address of the lowest byte to collect. The @var{basereg},
599b237a 31294@var{offset}, and @var{len} parameters are all unsigned hexadecimal
9d29849a
JB
31295values (the @samp{-1} value for @var{basereg} is a special case).
31296
31297@item X @var{len},@var{expr}
31298Evaluate @var{expr}, whose length is @var{len}, and collect memory as
31299it directs. @var{expr} is an agent expression, as described in
31300@ref{Agent Expressions}. Each byte of the expression is encoded as a
31301two-digit hex number in the packet; @var{len} is the number of bytes
31302in the expression (and thus one-half the number of hex digits in the
31303packet).
31304
31305@end table
31306
31307Any number of actions may be packed together in a single @samp{QTDP}
31308packet, as long as the packet does not exceed the maximum packet
c1947b85
JB
31309length (400 bytes, for many stubs). There may be only one @samp{R}
31310action per tracepoint, and it must precede any @samp{M} or @samp{X}
31311actions. Any registers referred to by @samp{M} and @samp{X} actions
31312must be collected by a preceding @samp{R} action. (The
31313``while-stepping'' actions are treated as if they were attached to a
31314separate tracepoint, as far as these restrictions are concerned.)
9d29849a
JB
31315
31316Replies:
31317@table @samp
31318@item OK
31319The packet was understood and carried out.
31320@item
31321The packet was not recognized.
31322@end table
31323
409873ef
SS
31324@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes}
31325@cindex @samp{QTDPsrc} packet
31326Specify a source string of tracepoint @var{n} at address @var{addr}.
31327This is useful to get accurate reproduction of the tracepoints
31328originally downloaded at the beginning of the trace run. @var{type}
31329is the name of the tracepoint part, such as @samp{cond} for the
31330tracepoint's conditional expression (see below for a list of types), while
31331@var{bytes} is the string, encoded in hexadecimal.
31332
31333@var{start} is the offset of the @var{bytes} within the overall source
31334string, while @var{slen} is the total length of the source string.
31335This is intended for handling source strings that are longer than will
31336fit in a single packet.
31337@c Add detailed example when this info is moved into a dedicated
31338@c tracepoint descriptions section.
31339
31340The available string types are @samp{at} for the location,
31341@samp{cond} for the conditional, and @samp{cmd} for an action command.
31342@value{GDBN} sends a separate packet for each command in the action
31343list, in the same order in which the commands are stored in the list.
31344
31345The target does not need to do anything with source strings except
31346report them back as part of the replies to the @samp{qTfP}/@samp{qTsP}
31347query packets.
31348
31349Although this packet is optional, and @value{GDBN} will only send it
31350if the target replies with @samp{TracepointSource} @xref{General
31351Query Packets}, it makes both disconnected tracing and trace files
31352much easier to use. Otherwise the user must be careful that the
31353tracepoints in effect while looking at trace frames are identical to
31354the ones in effect during the trace run; even a small discrepancy
31355could cause @samp{tdump} not to work, or a particular trace frame not
31356be found.
31357
f61e138d
SS
31358@item QTDV:@var{n}:@var{value}
31359@cindex define trace state variable, remote request
31360@cindex @samp{QTDV} packet
31361Create a new trace state variable, number @var{n}, with an initial
31362value of @var{value}, which is a 64-bit signed integer. Both @var{n}
31363and @var{value} are encoded as hexadecimal values. @value{GDBN} has
31364the option of not using this packet for initial values of zero; the
31365target should simply create the trace state variables as they are
31366mentioned in expressions.
31367
9d29849a
JB
31368@item QTFrame:@var{n}
31369Select the @var{n}'th tracepoint frame from the buffer, and use the
31370register and memory contents recorded there to answer subsequent
31371request packets from @value{GDBN}.
31372
31373A successful reply from the stub indicates that the stub has found the
31374requested frame. The response is a series of parts, concatenated
31375without separators, describing the frame we selected. Each part has
31376one of the following forms:
31377
31378@table @samp
31379@item F @var{f}
31380The selected frame is number @var{n} in the trace frame buffer;
599b237a 31381@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there
9d29849a
JB
31382was no frame matching the criteria in the request packet.
31383
31384@item T @var{t}
31385The selected trace frame records a hit of tracepoint number @var{t};
599b237a 31386@var{t} is a hexadecimal number.
9d29849a
JB
31387
31388@end table
31389
31390@item QTFrame:pc:@var{addr}
31391Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
31392currently selected frame whose PC is @var{addr};
599b237a 31393@var{addr} is a hexadecimal number.
9d29849a
JB
31394
31395@item QTFrame:tdp:@var{t}
31396Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
31397currently selected frame that is a hit of tracepoint @var{t}; @var{t}
599b237a 31398is a hexadecimal number.
9d29849a
JB
31399
31400@item QTFrame:range:@var{start}:@var{end}
31401Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
31402currently selected frame whose PC is between @var{start} (inclusive)
081dfbf7 31403and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal
9d29849a
JB
31404numbers.
31405
31406@item QTFrame:outside:@var{start}:@var{end}
31407Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first
081dfbf7 31408frame @emph{outside} the given range of addresses (exclusive).
9d29849a
JB
31409
31410@item QTStart
31411Begin the tracepoint experiment. Begin collecting data from tracepoint
31412hits in the trace frame buffer.
31413
31414@item QTStop
31415End the tracepoint experiment. Stop collecting trace frames.
31416
31417@item QTinit
31418Clear the table of tracepoints, and empty the trace frame buffer.
31419
31420@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{}
31421Establish the given ranges of memory as ``transparent''. The stub
31422will answer requests for these ranges from memory's current contents,
31423if they were not collected as part of the tracepoint hit.
31424
31425@value{GDBN} uses this to mark read-only regions of memory, like those
31426containing program code. Since these areas never change, they should
31427still have the same contents they did when the tracepoint was hit, so
31428there's no reason for the stub to refuse to provide their contents.
31429
d5551862
SS
31430@item QTDisconnected:@var{value}
31431Set the choice to what to do with the tracing run when @value{GDBN}
31432disconnects from the target. A @var{value} of 1 directs the target to
31433continue the tracing run, while 0 tells the target to stop tracing if
31434@value{GDBN} is no longer in the picture.
31435
9d29849a
JB
31436@item qTStatus
31437Ask the stub if there is a trace experiment running right now.
31438
4daf5ac0
SS
31439The reply has the form:
31440
31441@table @samp
31442
31443@item T@var{running}@r{[};@var{field}@r{]}@dots{}
31444@var{running} is a single digit @code{1} if the trace is presently
31445running, or @code{0} if not. It is followed by semicolon-separated
31446optional fields that an agent may use to report additional status.
31447
31448@end table
31449
31450If the trace is not running, the agent may report any of several
31451explanations as one of the optional fields:
31452
31453@table @samp
31454
31455@item tnotrun:0
31456No trace has been run yet.
31457
31458@item tstop:0
31459The trace was stopped by a user-originated stop command.
31460
31461@item tfull:0
31462The trace stopped because the trace buffer filled up.
31463
31464@item tdisconnected:0
31465The trace stopped because @value{GDBN} disconnected from the target.
31466
31467@item tpasscount:@var{tpnum}
31468The trace stopped because tracepoint @var{tpnum} exceeded its pass count.
31469
6c28cbf2
SS
31470@item terror:@var{text}:@var{tpnum}
31471The trace stopped because tracepoint @var{tpnum} had an error. The
31472string @var{text} is available to describe the nature of the error
31473(for instance, a divide by zero in the condition expression).
99b5e152 31474@var{text} is hex encoded.
6c28cbf2 31475
4daf5ac0
SS
31476@item tunknown:0
31477The trace stopped for some other reason.
31478
31479@end table
31480
31481Additional optional fields supply statistical information. Although
31482not required, they are extremely useful for users monitoring the
31483progress of a trace run. If a trace has stopped, and these numbers
31484are reported, they must reflect the state of the just-stopped trace.
31485
9d29849a 31486@table @samp
4daf5ac0
SS
31487
31488@item tframes:@var{n}
31489The number of trace frames in the buffer.
31490
31491@item tcreated:@var{n}
31492The total number of trace frames created during the run. This may
31493be larger than the trace frame count, if the buffer is circular.
31494
31495@item tsize:@var{n}
31496The total size of the trace buffer, in bytes.
31497
31498@item tfree:@var{n}
31499The number of bytes still unused in the buffer.
31500
9d29849a
JB
31501@end table
31502
f61e138d
SS
31503@item qTV:@var{var}
31504@cindex trace state variable value, remote request
31505@cindex @samp{qTV} packet
31506Ask the stub for the value of the trace state variable number @var{var}.
31507
31508Replies:
31509@table @samp
31510@item V@var{value}
31511The value of the variable is @var{value}. This will be the current
31512value of the variable if the user is examining a running target, or a
31513saved value if the variable was collected in the trace frame that the
31514user is looking at. Note that multiple requests may result in
31515different reply values, such as when requesting values while the
31516program is running.
31517
31518@item U
31519The value of the variable is unknown. This would occur, for example,
31520if the user is examining a trace frame in which the requested variable
31521was not collected.
9d29849a
JB
31522@end table
31523
d5551862
SS
31524@item qTfP
31525@itemx qTsP
31526These packets request data about tracepoints that are being used by
31527the target. @value{GDBN} sends @code{qTfP} to get the first piece
31528of data, and multiple @code{qTsP} to get additional pieces. Replies
31529to these packets generally take the form of the @code{QTDP} packets
31530that define tracepoints. (FIXME add detailed syntax)
31531
00bf0b85
SS
31532@item qTfV
31533@itemx qTsV
31534These packets request data about trace state variables that are on the
31535target. @value{GDBN} sends @code{qTfV} to get the first vari of data,
31536and multiple @code{qTsV} to get additional variables. Replies to
31537these packets follow the syntax of the @code{QTDV} packets that define
31538trace state variables.
31539
31540@item QTSave:@var{filename}
31541This packet directs the target to save trace data to the file name
31542@var{filename} in the target's filesystem. @var{filename} is encoded
31543as a hex string; the interpretation of the file name (relative vs
31544absolute, wild cards, etc) is up to the target.
31545
31546@item qTBuffer:@var{offset},@var{len}
31547Return up to @var{len} bytes of the current contents of trace buffer,
31548starting at @var{offset}. The trace buffer is treated as if it were
31549a contiguous collection of traceframes, as per the trace file format.
31550The reply consists as many hex-encoded bytes as the target can deliver
31551in a packet; it is not an error to return fewer than were asked for.
31552A reply consisting of just @code{l} indicates that no bytes are
31553available.
31554
4daf5ac0
SS
31555@item QTBuffer:circular:@var{value}
31556This packet directs the target to use a circular trace buffer if
31557@var{value} is 1, or a linear buffer if the value is 0.
31558
f61e138d 31559@end table
9d29849a 31560
a6b151f1
DJ
31561@node Host I/O Packets
31562@section Host I/O Packets
31563@cindex Host I/O, remote protocol
31564@cindex file transfer, remote protocol
31565
31566The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O
31567operations on the far side of a remote link. For example, Host I/O is
31568used to upload and download files to a remote target with its own
31569filesystem. Host I/O uses the same constant values and data structure
31570layout as the target-initiated File-I/O protocol. However, the
31571Host I/O packets are structured differently. The target-initiated
31572protocol relies on target memory to store parameters and buffers.
31573Host I/O requests are initiated by @value{GDBN}, and the
31574target's memory is not involved. @xref{File-I/O Remote Protocol
31575Extension}, for more details on the target-initiated protocol.
31576
31577The Host I/O request packets all encode a single operation along with
31578its arguments. They have this format:
31579
31580@table @samp
31581
31582@item vFile:@var{operation}: @var{parameter}@dots{}
31583@var{operation} is the name of the particular request; the target
31584should compare the entire packet name up to the second colon when checking
31585for a supported operation. The format of @var{parameter} depends on
31586the operation. Numbers are always passed in hexadecimal. Negative
31587numbers have an explicit minus sign (i.e.@: two's complement is not
31588used). Strings (e.g.@: filenames) are encoded as a series of
31589hexadecimal bytes. The last argument to a system call may be a
31590buffer of escaped binary data (@pxref{Binary Data}).
31591
31592@end table
31593
31594The valid responses to Host I/O packets are:
31595
31596@table @samp
31597
31598@item F @var{result} [, @var{errno}] [; @var{attachment}]
31599@var{result} is the integer value returned by this operation, usually
31600non-negative for success and -1 for errors. If an error has occured,
31601@var{errno} will be included in the result. @var{errno} will have a
31602value defined by the File-I/O protocol (@pxref{Errno Values}). For
31603operations which return data, @var{attachment} supplies the data as a
31604binary buffer. Binary buffers in response packets are escaped in the
31605normal way (@pxref{Binary Data}). See the individual packet
31606documentation for the interpretation of @var{result} and
31607@var{attachment}.
31608
31609@item
31610An empty response indicates that this operation is not recognized.
31611
31612@end table
31613
31614These are the supported Host I/O operations:
31615
31616@table @samp
31617@item vFile:open: @var{pathname}, @var{flags}, @var{mode}
31618Open a file at @var{pathname} and return a file descriptor for it, or
31619return -1 if an error occurs. @var{pathname} is a string,
31620@var{flags} is an integer indicating a mask of open flags
31621(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask
31622of mode bits to use if the file is created (@pxref{mode_t Values}).
c1c25a1a 31623@xref{open}, for details of the open flags and mode values.
a6b151f1
DJ
31624
31625@item vFile:close: @var{fd}
31626Close the open file corresponding to @var{fd} and return 0, or
31627-1 if an error occurs.
31628
31629@item vFile:pread: @var{fd}, @var{count}, @var{offset}
31630Read data from the open file corresponding to @var{fd}. Up to
31631@var{count} bytes will be read from the file, starting at @var{offset}
31632relative to the start of the file. The target may read fewer bytes;
31633common reasons include packet size limits and an end-of-file
31634condition. The number of bytes read is returned. Zero should only be
31635returned for a successful read at the end of the file, or if
31636@var{count} was zero.
31637
31638The data read should be returned as a binary attachment on success.
31639If zero bytes were read, the response should include an empty binary
31640attachment (i.e.@: a trailing semicolon). The return value is the
31641number of target bytes read; the binary attachment may be longer if
31642some characters were escaped.
31643
31644@item vFile:pwrite: @var{fd}, @var{offset}, @var{data}
31645Write @var{data} (a binary buffer) to the open file corresponding
31646to @var{fd}. Start the write at @var{offset} from the start of the
31647file. Unlike many @code{write} system calls, there is no
31648separate @var{count} argument; the length of @var{data} in the
31649packet is used. @samp{vFile:write} returns the number of bytes written,
31650which may be shorter than the length of @var{data}, or -1 if an
31651error occurred.
31652
31653@item vFile:unlink: @var{pathname}
31654Delete the file at @var{pathname} on the target. Return 0,
31655or -1 if an error occurs. @var{pathname} is a string.
31656
31657@end table
31658
9a6253be
KB
31659@node Interrupts
31660@section Interrupts
31661@cindex interrupts (remote protocol)
31662
31663When a program on the remote target is running, @value{GDBN} may
9a7071a8
JB
31664attempt to interrupt it by sending a @samp{Ctrl-C}, @code{BREAK} or
31665a @code{BREAK} followed by @code{g},
31666control of which is specified via @value{GDBN}'s @samp{interrupt-sequence}.
9a6253be
KB
31667
31668The precise meaning of @code{BREAK} is defined by the transport
8775bb90
MS
31669mechanism and may, in fact, be undefined. @value{GDBN} does not
31670currently define a @code{BREAK} mechanism for any of the network
31671interfaces except for TCP, in which case @value{GDBN} sends the
31672@code{telnet} BREAK sequence.
9a6253be
KB
31673
31674@samp{Ctrl-C}, on the other hand, is defined and implemented for all
31675transport mechanisms. It is represented by sending the single byte
31676@code{0x03} without any of the usual packet overhead described in
31677the Overview section (@pxref{Overview}). When a @code{0x03} byte is
31678transmitted as part of a packet, it is considered to be packet data
31679and does @emph{not} represent an interrupt. E.g., an @samp{X} packet
0876f84a 31680(@pxref{X packet}), used for binary downloads, may include an unescaped
9a6253be
KB
31681@code{0x03} as part of its packet.
31682
9a7071a8
JB
31683@code{BREAK} followed by @code{g} is also known as Magic SysRq g.
31684When Linux kernel receives this sequence from serial port,
31685it stops execution and connects to gdb.
31686
9a6253be
KB
31687Stubs are not required to recognize these interrupt mechanisms and the
31688precise meaning associated with receipt of the interrupt is
8b23ecc4
SL
31689implementation defined. If the target supports debugging of multiple
31690threads and/or processes, it should attempt to interrupt all
31691currently-executing threads and processes.
31692If the stub is successful at interrupting the
31693running program, it should send one of the stop
31694reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result
31695of successfully stopping the program in all-stop mode, and a stop reply
31696for each stopped thread in non-stop mode.
31697Interrupts received while the
31698program is stopped are discarded.
31699
31700@node Notification Packets
31701@section Notification Packets
31702@cindex notification packets
31703@cindex packets, notification
31704
31705The @value{GDBN} remote serial protocol includes @dfn{notifications},
31706packets that require no acknowledgment. Both the GDB and the stub
31707may send notifications (although the only notifications defined at
31708present are sent by the stub). Notifications carry information
31709without incurring the round-trip latency of an acknowledgment, and so
31710are useful for low-impact communications where occasional packet loss
31711is not a problem.
31712
31713A notification packet has the form @samp{% @var{data} #
31714@var{checksum}}, where @var{data} is the content of the notification,
31715and @var{checksum} is a checksum of @var{data}, computed and formatted
31716as for ordinary @value{GDBN} packets. A notification's @var{data}
31717never contains @samp{$}, @samp{%} or @samp{#} characters. Upon
31718receiving a notification, the recipient sends no @samp{+} or @samp{-}
31719to acknowledge the notification's receipt or to report its corruption.
31720
31721Every notification's @var{data} begins with a name, which contains no
31722colon characters, followed by a colon character.
31723
31724Recipients should silently ignore corrupted notifications and
31725notifications they do not understand. Recipients should restart
31726timeout periods on receipt of a well-formed notification, whether or
31727not they understand it.
31728
31729Senders should only send the notifications described here when this
31730protocol description specifies that they are permitted. In the
31731future, we may extend the protocol to permit existing notifications in
31732new contexts; this rule helps older senders avoid confusing newer
31733recipients.
31734
31735(Older versions of @value{GDBN} ignore bytes received until they see
31736the @samp{$} byte that begins an ordinary packet, so new stubs may
31737transmit notifications without fear of confusing older clients. There
31738are no notifications defined for @value{GDBN} to send at the moment, but we
31739assume that most older stubs would ignore them, as well.)
31740
31741The following notification packets from the stub to @value{GDBN} are
31742defined:
31743
31744@table @samp
31745@item Stop: @var{reply}
31746Report an asynchronous stop event in non-stop mode.
31747The @var{reply} has the form of a stop reply, as
31748described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop},
31749for information on how these notifications are acknowledged by
31750@value{GDBN}.
31751@end table
31752
31753@node Remote Non-Stop
31754@section Remote Protocol Support for Non-Stop Mode
31755
31756@value{GDBN}'s remote protocol supports non-stop debugging of
31757multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub
31758supports non-stop mode, it should report that to @value{GDBN} by including
31759@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}).
31760
31761@value{GDBN} typically sends a @samp{QNonStop} packet only when
31762establishing a new connection with the stub. Entering non-stop mode
31763does not alter the state of any currently-running threads, but targets
31764must stop all threads in any already-attached processes when entering
31765all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to
31766probe the target state after a mode change.
31767
31768In non-stop mode, when an attached process encounters an event that
31769would otherwise be reported with a stop reply, it uses the
31770asynchronous notification mechanism (@pxref{Notification Packets}) to
31771inform @value{GDBN}. In contrast to all-stop mode, where all threads
31772in all processes are stopped when a stop reply is sent, in non-stop
31773mode only the thread reporting the stop event is stopped. That is,
31774when reporting a @samp{S} or @samp{T} response to indicate completion
31775of a step operation, hitting a breakpoint, or a fault, only the
31776affected thread is stopped; any other still-running threads continue
31777to run. When reporting a @samp{W} or @samp{X} response, all running
31778threads belonging to other attached processes continue to run.
31779
31780Only one stop reply notification at a time may be pending; if
31781additional stop events occur before @value{GDBN} has acknowledged the
31782previous notification, they must be queued by the stub for later
31783synchronous transmission in response to @samp{vStopped} packets from
31784@value{GDBN}. Because the notification mechanism is unreliable,
31785the stub is permitted to resend a stop reply notification
31786if it believes @value{GDBN} may not have received it. @value{GDBN}
31787ignores additional stop reply notifications received before it has
31788finished processing a previous notification and the stub has completed
31789sending any queued stop events.
31790
31791Otherwise, @value{GDBN} must be prepared to receive a stop reply
31792notification at any time. Specifically, they may appear when
31793@value{GDBN} is not otherwise reading input from the stub, or when
31794@value{GDBN} is expecting to read a normal synchronous response or a
31795@samp{+}/@samp{-} acknowledgment to a packet it has sent.
31796Notification packets are distinct from any other communication from
31797the stub so there is no ambiguity.
31798
31799After receiving a stop reply notification, @value{GDBN} shall
31800acknowledge it by sending a @samp{vStopped} packet (@pxref{vStopped packet})
31801as a regular, synchronous request to the stub. Such acknowledgment
31802is not required to happen immediately, as @value{GDBN} is permitted to
31803send other, unrelated packets to the stub first, which the stub should
31804process normally.
31805
31806Upon receiving a @samp{vStopped} packet, if the stub has other queued
31807stop events to report to @value{GDBN}, it shall respond by sending a
31808normal stop reply response. @value{GDBN} shall then send another
31809@samp{vStopped} packet to solicit further responses; again, it is
31810permitted to send other, unrelated packets as well which the stub
31811should process normally.
31812
31813If the stub receives a @samp{vStopped} packet and there are no
31814additional stop events to report, the stub shall return an @samp{OK}
31815response. At this point, if further stop events occur, the stub shall
31816send a new stop reply notification, @value{GDBN} shall accept the
31817notification, and the process shall be repeated.
31818
31819In non-stop mode, the target shall respond to the @samp{?} packet as
31820follows. First, any incomplete stop reply notification/@samp{vStopped}
31821sequence in progress is abandoned. The target must begin a new
31822sequence reporting stop events for all stopped threads, whether or not
31823it has previously reported those events to @value{GDBN}. The first
31824stop reply is sent as a synchronous reply to the @samp{?} packet, and
31825subsequent stop replies are sent as responses to @samp{vStopped} packets
31826using the mechanism described above. The target must not send
31827asynchronous stop reply notifications until the sequence is complete.
31828If all threads are running when the target receives the @samp{?} packet,
31829or if the target is not attached to any process, it shall respond
31830@samp{OK}.
9a6253be 31831
a6f3e723
SL
31832@node Packet Acknowledgment
31833@section Packet Acknowledgment
31834
31835@cindex acknowledgment, for @value{GDBN} remote
31836@cindex packet acknowledgment, for @value{GDBN} remote
31837By default, when either the host or the target machine receives a packet,
31838the first response expected is an acknowledgment: either @samp{+} (to indicate
31839the package was received correctly) or @samp{-} (to request retransmission).
31840This mechanism allows the @value{GDBN} remote protocol to operate over
31841unreliable transport mechanisms, such as a serial line.
31842
31843In cases where the transport mechanism is itself reliable (such as a pipe or
31844TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant.
31845It may be desirable to disable them in that case to reduce communication
31846overhead, or for other reasons. This can be accomplished by means of the
31847@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}.
31848
31849When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or
31850expect @samp{+}/@samp{-} protocol acknowledgments. The packet
31851and response format still includes the normal checksum, as described in
31852@ref{Overview}, but the checksum may be ignored by the receiver.
31853
31854If the stub supports @samp{QStartNoAckMode} and prefers to operate in
31855no-acknowledgment mode, it should report that to @value{GDBN}
31856by including @samp{QStartNoAckMode+} in its response to @samp{qSupported};
31857@pxref{qSupported}.
31858If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been
31859disabled via the @code{set remote noack-packet off} command
31860(@pxref{Remote Configuration}),
31861@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub.
31862Only then may the stub actually turn off packet acknowledgments.
31863@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK}
31864response, which can be safely ignored by the stub.
31865
31866Note that @code{set remote noack-packet} command only affects negotiation
31867between @value{GDBN} and the stub when subsequent connections are made;
31868it does not affect the protocol acknowledgment state for any current
31869connection.
31870Since @samp{+}/@samp{-} acknowledgments are enabled by default when a
31871new connection is established,
31872there is also no protocol request to re-enable the acknowledgments
31873for the current connection, once disabled.
31874
ee2d5c50
AC
31875@node Examples
31876@section Examples
eb12ee30 31877
8e04817f
AC
31878Example sequence of a target being re-started. Notice how the restart
31879does not get any direct output:
eb12ee30 31880
474c8240 31881@smallexample
d2c6833e
AC
31882-> @code{R00}
31883<- @code{+}
8e04817f 31884@emph{target restarts}
d2c6833e 31885-> @code{?}
8e04817f 31886<- @code{+}
d2c6833e
AC
31887<- @code{T001:1234123412341234}
31888-> @code{+}
474c8240 31889@end smallexample
eb12ee30 31890
8e04817f 31891Example sequence of a target being stepped by a single instruction:
eb12ee30 31892
474c8240 31893@smallexample
d2c6833e 31894-> @code{G1445@dots{}}
8e04817f 31895<- @code{+}
d2c6833e
AC
31896-> @code{s}
31897<- @code{+}
31898@emph{time passes}
31899<- @code{T001:1234123412341234}
8e04817f 31900-> @code{+}
d2c6833e 31901-> @code{g}
8e04817f 31902<- @code{+}
d2c6833e
AC
31903<- @code{1455@dots{}}
31904-> @code{+}
474c8240 31905@end smallexample
eb12ee30 31906
79a6e687
BW
31907@node File-I/O Remote Protocol Extension
31908@section File-I/O Remote Protocol Extension
0ce1b118
CV
31909@cindex File-I/O remote protocol extension
31910
31911@menu
31912* File-I/O Overview::
79a6e687
BW
31913* Protocol Basics::
31914* The F Request Packet::
31915* The F Reply Packet::
31916* The Ctrl-C Message::
0ce1b118 31917* Console I/O::
79a6e687 31918* List of Supported Calls::
db2e3e2e 31919* Protocol-specific Representation of Datatypes::
0ce1b118
CV
31920* Constants::
31921* File-I/O Examples::
31922@end menu
31923
31924@node File-I/O Overview
31925@subsection File-I/O Overview
31926@cindex file-i/o overview
31927
9c16f35a 31928The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the
fc320d37 31929target to use the host's file system and console I/O to perform various
0ce1b118 31930system calls. System calls on the target system are translated into a
fc320d37
SL
31931remote protocol packet to the host system, which then performs the needed
31932actions and returns a response packet to the target system.
0ce1b118
CV
31933This simulates file system operations even on targets that lack file systems.
31934
fc320d37
SL
31935The protocol is defined to be independent of both the host and target systems.
31936It uses its own internal representation of datatypes and values. Both
0ce1b118 31937@value{GDBN} and the target's @value{GDBN} stub are responsible for
fc320d37
SL
31938translating the system-dependent value representations into the internal
31939protocol representations when data is transmitted.
0ce1b118 31940
fc320d37
SL
31941The communication is synchronous. A system call is possible only when
31942@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S}
31943or @samp{s} packets. While @value{GDBN} handles the request for a system call,
0ce1b118 31944the target is stopped to allow deterministic access to the target's
fc320d37
SL
31945memory. Therefore File-I/O is not interruptible by target signals. On
31946the other hand, it is possible to interrupt File-I/O by a user interrupt
c8aa23ab 31947(@samp{Ctrl-C}) within @value{GDBN}.
0ce1b118
CV
31948
31949The target's request to perform a host system call does not finish
31950the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
31951after finishing the system call, the target returns to continuing the
31952previous activity (continue, step). No additional continue or step
31953request from @value{GDBN} is required.
31954
31955@smallexample
f7dc1244 31956(@value{GDBP}) continue
0ce1b118
CV
31957 <- target requests 'system call X'
31958 target is stopped, @value{GDBN} executes system call
3f94c067
BW
31959 -> @value{GDBN} returns result
31960 ... target continues, @value{GDBN} returns to wait for the target
0ce1b118
CV
31961 <- target hits breakpoint and sends a Txx packet
31962@end smallexample
31963
fc320d37
SL
31964The protocol only supports I/O on the console and to regular files on
31965the host file system. Character or block special devices, pipes,
31966named pipes, sockets or any other communication method on the host
0ce1b118
CV
31967system are not supported by this protocol.
31968
8b23ecc4
SL
31969File I/O is not supported in non-stop mode.
31970
79a6e687
BW
31971@node Protocol Basics
31972@subsection Protocol Basics
0ce1b118
CV
31973@cindex protocol basics, file-i/o
31974
fc320d37
SL
31975The File-I/O protocol uses the @code{F} packet as the request as well
31976as reply packet. Since a File-I/O system call can only occur when
31977@value{GDBN} is waiting for a response from the continuing or stepping target,
31978the File-I/O request is a reply that @value{GDBN} has to expect as a result
31979of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
0ce1b118
CV
31980This @code{F} packet contains all information needed to allow @value{GDBN}
31981to call the appropriate host system call:
31982
31983@itemize @bullet
b383017d 31984@item
0ce1b118
CV
31985A unique identifier for the requested system call.
31986
31987@item
31988All parameters to the system call. Pointers are given as addresses
31989in the target memory address space. Pointers to strings are given as
b383017d 31990pointer/length pair. Numerical values are given as they are.
db2e3e2e 31991Numerical control flags are given in a protocol-specific representation.
0ce1b118
CV
31992
31993@end itemize
31994
fc320d37 31995At this point, @value{GDBN} has to perform the following actions.
0ce1b118
CV
31996
31997@itemize @bullet
b383017d 31998@item
fc320d37
SL
31999If the parameters include pointer values to data needed as input to a
32000system call, @value{GDBN} requests this data from the target with a
0ce1b118
CV
32001standard @code{m} packet request. This additional communication has to be
32002expected by the target implementation and is handled as any other @code{m}
32003packet.
32004
32005@item
32006@value{GDBN} translates all value from protocol representation to host
32007representation as needed. Datatypes are coerced into the host types.
32008
32009@item
fc320d37 32010@value{GDBN} calls the system call.
0ce1b118
CV
32011
32012@item
32013It then coerces datatypes back to protocol representation.
32014
32015@item
fc320d37
SL
32016If the system call is expected to return data in buffer space specified
32017by pointer parameters to the call, the data is transmitted to the
0ce1b118
CV
32018target using a @code{M} or @code{X} packet. This packet has to be expected
32019by the target implementation and is handled as any other @code{M} or @code{X}
32020packet.
32021
32022@end itemize
32023
32024Eventually @value{GDBN} replies with another @code{F} packet which contains all
32025necessary information for the target to continue. This at least contains
32026
32027@itemize @bullet
32028@item
32029Return value.
32030
32031@item
32032@code{errno}, if has been changed by the system call.
32033
32034@item
32035``Ctrl-C'' flag.
32036
32037@end itemize
32038
32039After having done the needed type and value coercion, the target continues
32040the latest continue or step action.
32041
79a6e687
BW
32042@node The F Request Packet
32043@subsection The @code{F} Request Packet
0ce1b118
CV
32044@cindex file-i/o request packet
32045@cindex @code{F} request packet
32046
32047The @code{F} request packet has the following format:
32048
32049@table @samp
fc320d37 32050@item F@var{call-id},@var{parameter@dots{}}
0ce1b118
CV
32051
32052@var{call-id} is the identifier to indicate the host system call to be called.
32053This is just the name of the function.
32054
fc320d37
SL
32055@var{parameter@dots{}} are the parameters to the system call.
32056Parameters are hexadecimal integer values, either the actual values in case
32057of scalar datatypes, pointers to target buffer space in case of compound
32058datatypes and unspecified memory areas, or pointer/length pairs in case
32059of string parameters. These are appended to the @var{call-id} as a
32060comma-delimited list. All values are transmitted in ASCII
32061string representation, pointer/length pairs separated by a slash.
0ce1b118 32062
b383017d 32063@end table
0ce1b118 32064
fc320d37 32065
0ce1b118 32066
79a6e687
BW
32067@node The F Reply Packet
32068@subsection The @code{F} Reply Packet
0ce1b118
CV
32069@cindex file-i/o reply packet
32070@cindex @code{F} reply packet
32071
32072The @code{F} reply packet has the following format:
32073
32074@table @samp
32075
d3bdde98 32076@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment}
0ce1b118
CV
32077
32078@var{retcode} is the return code of the system call as hexadecimal value.
32079
db2e3e2e
BW
32080@var{errno} is the @code{errno} set by the call, in protocol-specific
32081representation.
0ce1b118
CV
32082This parameter can be omitted if the call was successful.
32083
fc320d37
SL
32084@var{Ctrl-C flag} is only sent if the user requested a break. In this
32085case, @var{errno} must be sent as well, even if the call was successful.
32086The @var{Ctrl-C flag} itself consists of the character @samp{C}:
0ce1b118
CV
32087
32088@smallexample
32089F0,0,C
32090@end smallexample
32091
32092@noindent
fc320d37 32093or, if the call was interrupted before the host call has been performed:
0ce1b118
CV
32094
32095@smallexample
32096F-1,4,C
32097@end smallexample
32098
32099@noindent
db2e3e2e 32100assuming 4 is the protocol-specific representation of @code{EINTR}.
0ce1b118
CV
32101
32102@end table
32103
0ce1b118 32104
79a6e687
BW
32105@node The Ctrl-C Message
32106@subsection The @samp{Ctrl-C} Message
0ce1b118
CV
32107@cindex ctrl-c message, in file-i/o protocol
32108
c8aa23ab 32109If the @samp{Ctrl-C} flag is set in the @value{GDBN}
79a6e687 32110reply packet (@pxref{The F Reply Packet}),
fc320d37 32111the target should behave as if it had
0ce1b118 32112gotten a break message. The meaning for the target is ``system call
fc320d37 32113interrupted by @code{SIGINT}''. Consequentially, the target should actually stop
0ce1b118 32114(as with a break message) and return to @value{GDBN} with a @code{T02}
c8aa23ab 32115packet.
fc320d37
SL
32116
32117It's important for the target to know in which
32118state the system call was interrupted. There are two possible cases:
0ce1b118
CV
32119
32120@itemize @bullet
32121@item
32122The system call hasn't been performed on the host yet.
32123
32124@item
32125The system call on the host has been finished.
32126
32127@end itemize
32128
32129These two states can be distinguished by the target by the value of the
32130returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
32131call hasn't been performed. This is equivalent to the @code{EINTR} handling
32132on POSIX systems. In any other case, the target may presume that the
fc320d37 32133system call has been finished --- successfully or not --- and should behave
0ce1b118
CV
32134as if the break message arrived right after the system call.
32135
fc320d37 32136@value{GDBN} must behave reliably. If the system call has not been called
0ce1b118
CV
32137yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
32138@code{errno} in the packet. If the system call on the host has been finished
fc320d37
SL
32139before the user requests a break, the full action must be finished by
32140@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary.
32141The @code{F} packet may only be sent when either nothing has happened
0ce1b118
CV
32142or the full action has been completed.
32143
32144@node Console I/O
32145@subsection Console I/O
32146@cindex console i/o as part of file-i/o
32147
d3e8051b 32148By default and if not explicitly closed by the target system, the file
0ce1b118
CV
32149descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
32150on the @value{GDBN} console is handled as any other file output operation
32151(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
32152by @value{GDBN} so that after the target read request from file descriptor
321530 all following typing is buffered until either one of the following
32154conditions is met:
32155
32156@itemize @bullet
32157@item
c8aa23ab 32158The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the
0ce1b118
CV
32159@code{read}
32160system call is treated as finished.
32161
32162@item
7f9087cb 32163The user presses @key{RET}. This is treated as end of input with a trailing
fc320d37 32164newline.
0ce1b118
CV
32165
32166@item
c8aa23ab
EZ
32167The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing
32168character (neither newline nor @samp{Ctrl-D}) is appended to the input.
0ce1b118
CV
32169
32170@end itemize
32171
fc320d37
SL
32172If the user has typed more characters than fit in the buffer given to
32173the @code{read} call, the trailing characters are buffered in @value{GDBN} until
32174either another @code{read(0, @dots{})} is requested by the target, or debugging
32175is stopped at the user's request.
0ce1b118 32176
0ce1b118 32177
79a6e687
BW
32178@node List of Supported Calls
32179@subsection List of Supported Calls
0ce1b118
CV
32180@cindex list of supported file-i/o calls
32181
32182@menu
32183* open::
32184* close::
32185* read::
32186* write::
32187* lseek::
32188* rename::
32189* unlink::
32190* stat/fstat::
32191* gettimeofday::
32192* isatty::
32193* system::
32194@end menu
32195
32196@node open
32197@unnumberedsubsubsec open
32198@cindex open, file-i/o system call
32199
fc320d37
SL
32200@table @asis
32201@item Synopsis:
0ce1b118 32202@smallexample
0ce1b118
CV
32203int open(const char *pathname, int flags);
32204int open(const char *pathname, int flags, mode_t mode);
0ce1b118
CV
32205@end smallexample
32206
fc320d37
SL
32207@item Request:
32208@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}}
32209
0ce1b118 32210@noindent
fc320d37 32211@var{flags} is the bitwise @code{OR} of the following values:
0ce1b118
CV
32212
32213@table @code
b383017d 32214@item O_CREAT
0ce1b118
CV
32215If the file does not exist it will be created. The host
32216rules apply as far as file ownership and time stamps
32217are concerned.
32218
b383017d 32219@item O_EXCL
fc320d37 32220When used with @code{O_CREAT}, if the file already exists it is
0ce1b118
CV
32221an error and open() fails.
32222
b383017d 32223@item O_TRUNC
0ce1b118 32224If the file already exists and the open mode allows
fc320d37
SL
32225writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be
32226truncated to zero length.
0ce1b118 32227
b383017d 32228@item O_APPEND
0ce1b118
CV
32229The file is opened in append mode.
32230
b383017d 32231@item O_RDONLY
0ce1b118
CV
32232The file is opened for reading only.
32233
b383017d 32234@item O_WRONLY
0ce1b118
CV
32235The file is opened for writing only.
32236
b383017d 32237@item O_RDWR
0ce1b118 32238The file is opened for reading and writing.
fc320d37 32239@end table
0ce1b118
CV
32240
32241@noindent
fc320d37 32242Other bits are silently ignored.
0ce1b118 32243
0ce1b118
CV
32244
32245@noindent
fc320d37 32246@var{mode} is the bitwise @code{OR} of the following values:
0ce1b118
CV
32247
32248@table @code
b383017d 32249@item S_IRUSR
0ce1b118
CV
32250User has read permission.
32251
b383017d 32252@item S_IWUSR
0ce1b118
CV
32253User has write permission.
32254
b383017d 32255@item S_IRGRP
0ce1b118
CV
32256Group has read permission.
32257
b383017d 32258@item S_IWGRP
0ce1b118
CV
32259Group has write permission.
32260
b383017d 32261@item S_IROTH
0ce1b118
CV
32262Others have read permission.
32263
b383017d 32264@item S_IWOTH
0ce1b118 32265Others have write permission.
fc320d37 32266@end table
0ce1b118
CV
32267
32268@noindent
fc320d37 32269Other bits are silently ignored.
0ce1b118 32270
0ce1b118 32271
fc320d37
SL
32272@item Return value:
32273@code{open} returns the new file descriptor or -1 if an error
32274occurred.
0ce1b118 32275
fc320d37 32276@item Errors:
0ce1b118
CV
32277
32278@table @code
b383017d 32279@item EEXIST
fc320d37 32280@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used.
0ce1b118 32281
b383017d 32282@item EISDIR
fc320d37 32283@var{pathname} refers to a directory.
0ce1b118 32284
b383017d 32285@item EACCES
0ce1b118
CV
32286The requested access is not allowed.
32287
32288@item ENAMETOOLONG
fc320d37 32289@var{pathname} was too long.
0ce1b118 32290
b383017d 32291@item ENOENT
fc320d37 32292A directory component in @var{pathname} does not exist.
0ce1b118 32293
b383017d 32294@item ENODEV
fc320d37 32295@var{pathname} refers to a device, pipe, named pipe or socket.
0ce1b118 32296
b383017d 32297@item EROFS
fc320d37 32298@var{pathname} refers to a file on a read-only filesystem and
0ce1b118
CV
32299write access was requested.
32300
b383017d 32301@item EFAULT
fc320d37 32302@var{pathname} is an invalid pointer value.
0ce1b118 32303
b383017d 32304@item ENOSPC
0ce1b118
CV
32305No space on device to create the file.
32306
b383017d 32307@item EMFILE
0ce1b118
CV
32308The process already has the maximum number of files open.
32309
b383017d 32310@item ENFILE
0ce1b118
CV
32311The limit on the total number of files open on the system
32312has been reached.
32313
b383017d 32314@item EINTR
0ce1b118
CV
32315The call was interrupted by the user.
32316@end table
32317
fc320d37
SL
32318@end table
32319
0ce1b118
CV
32320@node close
32321@unnumberedsubsubsec close
32322@cindex close, file-i/o system call
32323
fc320d37
SL
32324@table @asis
32325@item Synopsis:
0ce1b118 32326@smallexample
0ce1b118 32327int close(int fd);
fc320d37 32328@end smallexample
0ce1b118 32329
fc320d37
SL
32330@item Request:
32331@samp{Fclose,@var{fd}}
0ce1b118 32332
fc320d37
SL
32333@item Return value:
32334@code{close} returns zero on success, or -1 if an error occurred.
0ce1b118 32335
fc320d37 32336@item Errors:
0ce1b118
CV
32337
32338@table @code
b383017d 32339@item EBADF
fc320d37 32340@var{fd} isn't a valid open file descriptor.
0ce1b118 32341
b383017d 32342@item EINTR
0ce1b118
CV
32343The call was interrupted by the user.
32344@end table
32345
fc320d37
SL
32346@end table
32347
0ce1b118
CV
32348@node read
32349@unnumberedsubsubsec read
32350@cindex read, file-i/o system call
32351
fc320d37
SL
32352@table @asis
32353@item Synopsis:
0ce1b118 32354@smallexample
0ce1b118 32355int read(int fd, void *buf, unsigned int count);
fc320d37 32356@end smallexample
0ce1b118 32357
fc320d37
SL
32358@item Request:
32359@samp{Fread,@var{fd},@var{bufptr},@var{count}}
0ce1b118 32360
fc320d37 32361@item Return value:
0ce1b118
CV
32362On success, the number of bytes read is returned.
32363Zero indicates end of file. If count is zero, read
b383017d 32364returns zero as well. On error, -1 is returned.
0ce1b118 32365
fc320d37 32366@item Errors:
0ce1b118
CV
32367
32368@table @code
b383017d 32369@item EBADF
fc320d37 32370@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
32371reading.
32372
b383017d 32373@item EFAULT
fc320d37 32374@var{bufptr} is an invalid pointer value.
0ce1b118 32375
b383017d 32376@item EINTR
0ce1b118
CV
32377The call was interrupted by the user.
32378@end table
32379
fc320d37
SL
32380@end table
32381
0ce1b118
CV
32382@node write
32383@unnumberedsubsubsec write
32384@cindex write, file-i/o system call
32385
fc320d37
SL
32386@table @asis
32387@item Synopsis:
0ce1b118 32388@smallexample
0ce1b118 32389int write(int fd, const void *buf, unsigned int count);
fc320d37 32390@end smallexample
0ce1b118 32391
fc320d37
SL
32392@item Request:
32393@samp{Fwrite,@var{fd},@var{bufptr},@var{count}}
0ce1b118 32394
fc320d37 32395@item Return value:
0ce1b118
CV
32396On success, the number of bytes written are returned.
32397Zero indicates nothing was written. On error, -1
32398is returned.
32399
fc320d37 32400@item Errors:
0ce1b118
CV
32401
32402@table @code
b383017d 32403@item EBADF
fc320d37 32404@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
32405writing.
32406
b383017d 32407@item EFAULT
fc320d37 32408@var{bufptr} is an invalid pointer value.
0ce1b118 32409
b383017d 32410@item EFBIG
0ce1b118 32411An attempt was made to write a file that exceeds the
db2e3e2e 32412host-specific maximum file size allowed.
0ce1b118 32413
b383017d 32414@item ENOSPC
0ce1b118
CV
32415No space on device to write the data.
32416
b383017d 32417@item EINTR
0ce1b118
CV
32418The call was interrupted by the user.
32419@end table
32420
fc320d37
SL
32421@end table
32422
0ce1b118
CV
32423@node lseek
32424@unnumberedsubsubsec lseek
32425@cindex lseek, file-i/o system call
32426
fc320d37
SL
32427@table @asis
32428@item Synopsis:
0ce1b118 32429@smallexample
0ce1b118 32430long lseek (int fd, long offset, int flag);
0ce1b118
CV
32431@end smallexample
32432
fc320d37
SL
32433@item Request:
32434@samp{Flseek,@var{fd},@var{offset},@var{flag}}
32435
32436@var{flag} is one of:
0ce1b118
CV
32437
32438@table @code
b383017d 32439@item SEEK_SET
fc320d37 32440The offset is set to @var{offset} bytes.
0ce1b118 32441
b383017d 32442@item SEEK_CUR
fc320d37 32443The offset is set to its current location plus @var{offset}
0ce1b118
CV
32444bytes.
32445
b383017d 32446@item SEEK_END
fc320d37 32447The offset is set to the size of the file plus @var{offset}
0ce1b118
CV
32448bytes.
32449@end table
32450
fc320d37 32451@item Return value:
0ce1b118
CV
32452On success, the resulting unsigned offset in bytes from
32453the beginning of the file is returned. Otherwise, a
32454value of -1 is returned.
32455
fc320d37 32456@item Errors:
0ce1b118
CV
32457
32458@table @code
b383017d 32459@item EBADF
fc320d37 32460@var{fd} is not a valid open file descriptor.
0ce1b118 32461
b383017d 32462@item ESPIPE
fc320d37 32463@var{fd} is associated with the @value{GDBN} console.
0ce1b118 32464
b383017d 32465@item EINVAL
fc320d37 32466@var{flag} is not a proper value.
0ce1b118 32467
b383017d 32468@item EINTR
0ce1b118
CV
32469The call was interrupted by the user.
32470@end table
32471
fc320d37
SL
32472@end table
32473
0ce1b118
CV
32474@node rename
32475@unnumberedsubsubsec rename
32476@cindex rename, file-i/o system call
32477
fc320d37
SL
32478@table @asis
32479@item Synopsis:
0ce1b118 32480@smallexample
0ce1b118 32481int rename(const char *oldpath, const char *newpath);
fc320d37 32482@end smallexample
0ce1b118 32483
fc320d37
SL
32484@item Request:
32485@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}}
0ce1b118 32486
fc320d37 32487@item Return value:
0ce1b118
CV
32488On success, zero is returned. On error, -1 is returned.
32489
fc320d37 32490@item Errors:
0ce1b118
CV
32491
32492@table @code
b383017d 32493@item EISDIR
fc320d37 32494@var{newpath} is an existing directory, but @var{oldpath} is not a
0ce1b118
CV
32495directory.
32496
b383017d 32497@item EEXIST
fc320d37 32498@var{newpath} is a non-empty directory.
0ce1b118 32499
b383017d 32500@item EBUSY
fc320d37 32501@var{oldpath} or @var{newpath} is a directory that is in use by some
0ce1b118
CV
32502process.
32503
b383017d 32504@item EINVAL
0ce1b118
CV
32505An attempt was made to make a directory a subdirectory
32506of itself.
32507
b383017d 32508@item ENOTDIR
fc320d37
SL
32509A component used as a directory in @var{oldpath} or new
32510path is not a directory. Or @var{oldpath} is a directory
32511and @var{newpath} exists but is not a directory.
0ce1b118 32512
b383017d 32513@item EFAULT
fc320d37 32514@var{oldpathptr} or @var{newpathptr} are invalid pointer values.
0ce1b118 32515
b383017d 32516@item EACCES
0ce1b118
CV
32517No access to the file or the path of the file.
32518
32519@item ENAMETOOLONG
b383017d 32520
fc320d37 32521@var{oldpath} or @var{newpath} was too long.
0ce1b118 32522
b383017d 32523@item ENOENT
fc320d37 32524A directory component in @var{oldpath} or @var{newpath} does not exist.
0ce1b118 32525
b383017d 32526@item EROFS
0ce1b118
CV
32527The file is on a read-only filesystem.
32528
b383017d 32529@item ENOSPC
0ce1b118
CV
32530The device containing the file has no room for the new
32531directory entry.
32532
b383017d 32533@item EINTR
0ce1b118
CV
32534The call was interrupted by the user.
32535@end table
32536
fc320d37
SL
32537@end table
32538
0ce1b118
CV
32539@node unlink
32540@unnumberedsubsubsec unlink
32541@cindex unlink, file-i/o system call
32542
fc320d37
SL
32543@table @asis
32544@item Synopsis:
0ce1b118 32545@smallexample
0ce1b118 32546int unlink(const char *pathname);
fc320d37 32547@end smallexample
0ce1b118 32548
fc320d37
SL
32549@item Request:
32550@samp{Funlink,@var{pathnameptr}/@var{len}}
0ce1b118 32551
fc320d37 32552@item Return value:
0ce1b118
CV
32553On success, zero is returned. On error, -1 is returned.
32554
fc320d37 32555@item Errors:
0ce1b118
CV
32556
32557@table @code
b383017d 32558@item EACCES
0ce1b118
CV
32559No access to the file or the path of the file.
32560
b383017d 32561@item EPERM
0ce1b118
CV
32562The system does not allow unlinking of directories.
32563
b383017d 32564@item EBUSY
fc320d37 32565The file @var{pathname} cannot be unlinked because it's
0ce1b118
CV
32566being used by another process.
32567
b383017d 32568@item EFAULT
fc320d37 32569@var{pathnameptr} is an invalid pointer value.
0ce1b118
CV
32570
32571@item ENAMETOOLONG
fc320d37 32572@var{pathname} was too long.
0ce1b118 32573
b383017d 32574@item ENOENT
fc320d37 32575A directory component in @var{pathname} does not exist.
0ce1b118 32576
b383017d 32577@item ENOTDIR
0ce1b118
CV
32578A component of the path is not a directory.
32579
b383017d 32580@item EROFS
0ce1b118
CV
32581The file is on a read-only filesystem.
32582
b383017d 32583@item EINTR
0ce1b118
CV
32584The call was interrupted by the user.
32585@end table
32586
fc320d37
SL
32587@end table
32588
0ce1b118
CV
32589@node stat/fstat
32590@unnumberedsubsubsec stat/fstat
32591@cindex fstat, file-i/o system call
32592@cindex stat, file-i/o system call
32593
fc320d37
SL
32594@table @asis
32595@item Synopsis:
0ce1b118 32596@smallexample
0ce1b118
CV
32597int stat(const char *pathname, struct stat *buf);
32598int fstat(int fd, struct stat *buf);
fc320d37 32599@end smallexample
0ce1b118 32600
fc320d37
SL
32601@item Request:
32602@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@*
32603@samp{Ffstat,@var{fd},@var{bufptr}}
0ce1b118 32604
fc320d37 32605@item Return value:
0ce1b118
CV
32606On success, zero is returned. On error, -1 is returned.
32607
fc320d37 32608@item Errors:
0ce1b118
CV
32609
32610@table @code
b383017d 32611@item EBADF
fc320d37 32612@var{fd} is not a valid open file.
0ce1b118 32613
b383017d 32614@item ENOENT
fc320d37 32615A directory component in @var{pathname} does not exist or the
0ce1b118
CV
32616path is an empty string.
32617
b383017d 32618@item ENOTDIR
0ce1b118
CV
32619A component of the path is not a directory.
32620
b383017d 32621@item EFAULT
fc320d37 32622@var{pathnameptr} is an invalid pointer value.
0ce1b118 32623
b383017d 32624@item EACCES
0ce1b118
CV
32625No access to the file or the path of the file.
32626
32627@item ENAMETOOLONG
fc320d37 32628@var{pathname} was too long.
0ce1b118 32629
b383017d 32630@item EINTR
0ce1b118
CV
32631The call was interrupted by the user.
32632@end table
32633
fc320d37
SL
32634@end table
32635
0ce1b118
CV
32636@node gettimeofday
32637@unnumberedsubsubsec gettimeofday
32638@cindex gettimeofday, file-i/o system call
32639
fc320d37
SL
32640@table @asis
32641@item Synopsis:
0ce1b118 32642@smallexample
0ce1b118 32643int gettimeofday(struct timeval *tv, void *tz);
fc320d37 32644@end smallexample
0ce1b118 32645
fc320d37
SL
32646@item Request:
32647@samp{Fgettimeofday,@var{tvptr},@var{tzptr}}
0ce1b118 32648
fc320d37 32649@item Return value:
0ce1b118
CV
32650On success, 0 is returned, -1 otherwise.
32651
fc320d37 32652@item Errors:
0ce1b118
CV
32653
32654@table @code
b383017d 32655@item EINVAL
fc320d37 32656@var{tz} is a non-NULL pointer.
0ce1b118 32657
b383017d 32658@item EFAULT
fc320d37
SL
32659@var{tvptr} and/or @var{tzptr} is an invalid pointer value.
32660@end table
32661
0ce1b118
CV
32662@end table
32663
32664@node isatty
32665@unnumberedsubsubsec isatty
32666@cindex isatty, file-i/o system call
32667
fc320d37
SL
32668@table @asis
32669@item Synopsis:
0ce1b118 32670@smallexample
0ce1b118 32671int isatty(int fd);
fc320d37 32672@end smallexample
0ce1b118 32673
fc320d37
SL
32674@item Request:
32675@samp{Fisatty,@var{fd}}
0ce1b118 32676
fc320d37
SL
32677@item Return value:
32678Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise.
0ce1b118 32679
fc320d37 32680@item Errors:
0ce1b118
CV
32681
32682@table @code
b383017d 32683@item EINTR
0ce1b118
CV
32684The call was interrupted by the user.
32685@end table
32686
fc320d37
SL
32687@end table
32688
32689Note that the @code{isatty} call is treated as a special case: it returns
326901 to the target if the file descriptor is attached
32691to the @value{GDBN} console, 0 otherwise. Implementing through system calls
32692would require implementing @code{ioctl} and would be more complex than
32693needed.
32694
32695
0ce1b118
CV
32696@node system
32697@unnumberedsubsubsec system
32698@cindex system, file-i/o system call
32699
fc320d37
SL
32700@table @asis
32701@item Synopsis:
0ce1b118 32702@smallexample
0ce1b118 32703int system(const char *command);
fc320d37 32704@end smallexample
0ce1b118 32705
fc320d37
SL
32706@item Request:
32707@samp{Fsystem,@var{commandptr}/@var{len}}
0ce1b118 32708
fc320d37 32709@item Return value:
5600ea19
NS
32710If @var{len} is zero, the return value indicates whether a shell is
32711available. A zero return value indicates a shell is not available.
32712For non-zero @var{len}, the value returned is -1 on error and the
32713return status of the command otherwise. Only the exit status of the
32714command is returned, which is extracted from the host's @code{system}
32715return value by calling @code{WEXITSTATUS(retval)}. In case
32716@file{/bin/sh} could not be executed, 127 is returned.
0ce1b118 32717
fc320d37 32718@item Errors:
0ce1b118
CV
32719
32720@table @code
b383017d 32721@item EINTR
0ce1b118
CV
32722The call was interrupted by the user.
32723@end table
32724
fc320d37
SL
32725@end table
32726
32727@value{GDBN} takes over the full task of calling the necessary host calls
32728to perform the @code{system} call. The return value of @code{system} on
32729the host is simplified before it's returned
32730to the target. Any termination signal information from the child process
32731is discarded, and the return value consists
32732entirely of the exit status of the called command.
32733
32734Due to security concerns, the @code{system} call is by default refused
32735by @value{GDBN}. The user has to allow this call explicitly with the
32736@code{set remote system-call-allowed 1} command.
32737
32738@table @code
32739@item set remote system-call-allowed
32740@kindex set remote system-call-allowed
32741Control whether to allow the @code{system} calls in the File I/O
32742protocol for the remote target. The default is zero (disabled).
32743
32744@item show remote system-call-allowed
32745@kindex show remote system-call-allowed
32746Show whether the @code{system} calls are allowed in the File I/O
32747protocol.
32748@end table
32749
db2e3e2e
BW
32750@node Protocol-specific Representation of Datatypes
32751@subsection Protocol-specific Representation of Datatypes
32752@cindex protocol-specific representation of datatypes, in file-i/o protocol
0ce1b118
CV
32753
32754@menu
79a6e687
BW
32755* Integral Datatypes::
32756* Pointer Values::
32757* Memory Transfer::
0ce1b118
CV
32758* struct stat::
32759* struct timeval::
32760@end menu
32761
79a6e687
BW
32762@node Integral Datatypes
32763@unnumberedsubsubsec Integral Datatypes
0ce1b118
CV
32764@cindex integral datatypes, in file-i/o protocol
32765
fc320d37
SL
32766The integral datatypes used in the system calls are @code{int},
32767@code{unsigned int}, @code{long}, @code{unsigned long},
32768@code{mode_t}, and @code{time_t}.
0ce1b118 32769
fc320d37 32770@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
0ce1b118
CV
32771implemented as 32 bit values in this protocol.
32772
fc320d37 32773@code{long} and @code{unsigned long} are implemented as 64 bit types.
b383017d 32774
0ce1b118
CV
32775@xref{Limits}, for corresponding MIN and MAX values (similar to those
32776in @file{limits.h}) to allow range checking on host and target.
32777
32778@code{time_t} datatypes are defined as seconds since the Epoch.
32779
32780All integral datatypes transferred as part of a memory read or write of a
32781structured datatype e.g.@: a @code{struct stat} have to be given in big endian
32782byte order.
32783
79a6e687
BW
32784@node Pointer Values
32785@unnumberedsubsubsec Pointer Values
0ce1b118
CV
32786@cindex pointer values, in file-i/o protocol
32787
32788Pointers to target data are transmitted as they are. An exception
32789is made for pointers to buffers for which the length isn't
32790transmitted as part of the function call, namely strings. Strings
32791are transmitted as a pointer/length pair, both as hex values, e.g.@:
32792
32793@smallexample
32794@code{1aaf/12}
32795@end smallexample
32796
32797@noindent
32798which is a pointer to data of length 18 bytes at position 0x1aaf.
32799The length is defined as the full string length in bytes, including
fc320d37
SL
32800the trailing null byte. For example, the string @code{"hello world"}
32801at address 0x123456 is transmitted as
0ce1b118
CV
32802
32803@smallexample
fc320d37 32804@code{123456/d}
0ce1b118
CV
32805@end smallexample
32806
79a6e687
BW
32807@node Memory Transfer
32808@unnumberedsubsubsec Memory Transfer
fc320d37
SL
32809@cindex memory transfer, in file-i/o protocol
32810
32811Structured data which is transferred using a memory read or write (for
db2e3e2e 32812example, a @code{struct stat}) is expected to be in a protocol-specific format
fc320d37
SL
32813with all scalar multibyte datatypes being big endian. Translation to
32814this representation needs to be done both by the target before the @code{F}
32815packet is sent, and by @value{GDBN} before
32816it transfers memory to the target. Transferred pointers to structured
32817data should point to the already-coerced data at any time.
0ce1b118 32818
0ce1b118
CV
32819
32820@node struct stat
32821@unnumberedsubsubsec struct stat
32822@cindex struct stat, in file-i/o protocol
32823
fc320d37
SL
32824The buffer of type @code{struct stat} used by the target and @value{GDBN}
32825is defined as follows:
0ce1b118
CV
32826
32827@smallexample
32828struct stat @{
32829 unsigned int st_dev; /* device */
32830 unsigned int st_ino; /* inode */
32831 mode_t st_mode; /* protection */
32832 unsigned int st_nlink; /* number of hard links */
32833 unsigned int st_uid; /* user ID of owner */
32834 unsigned int st_gid; /* group ID of owner */
32835 unsigned int st_rdev; /* device type (if inode device) */
32836 unsigned long st_size; /* total size, in bytes */
32837 unsigned long st_blksize; /* blocksize for filesystem I/O */
32838 unsigned long st_blocks; /* number of blocks allocated */
32839 time_t st_atime; /* time of last access */
32840 time_t st_mtime; /* time of last modification */
32841 time_t st_ctime; /* time of last change */
32842@};
32843@end smallexample
32844
fc320d37 32845The integral datatypes conform to the definitions given in the
79a6e687 32846appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
32847structure is of size 64 bytes.
32848
32849The values of several fields have a restricted meaning and/or
32850range of values.
32851
fc320d37 32852@table @code
0ce1b118 32853
fc320d37
SL
32854@item st_dev
32855A value of 0 represents a file, 1 the console.
0ce1b118 32856
fc320d37
SL
32857@item st_ino
32858No valid meaning for the target. Transmitted unchanged.
0ce1b118 32859
fc320d37
SL
32860@item st_mode
32861Valid mode bits are described in @ref{Constants}. Any other
32862bits have currently no meaning for the target.
0ce1b118 32863
fc320d37
SL
32864@item st_uid
32865@itemx st_gid
32866@itemx st_rdev
32867No valid meaning for the target. Transmitted unchanged.
0ce1b118 32868
fc320d37
SL
32869@item st_atime
32870@itemx st_mtime
32871@itemx st_ctime
32872These values have a host and file system dependent
32873accuracy. Especially on Windows hosts, the file system may not
32874support exact timing values.
32875@end table
0ce1b118 32876
fc320d37
SL
32877The target gets a @code{struct stat} of the above representation and is
32878responsible for coercing it to the target representation before
0ce1b118
CV
32879continuing.
32880
fc320d37
SL
32881Note that due to size differences between the host, target, and protocol
32882representations of @code{struct stat} members, these members could eventually
0ce1b118
CV
32883get truncated on the target.
32884
32885@node struct timeval
32886@unnumberedsubsubsec struct timeval
32887@cindex struct timeval, in file-i/o protocol
32888
fc320d37 32889The buffer of type @code{struct timeval} used by the File-I/O protocol
0ce1b118
CV
32890is defined as follows:
32891
32892@smallexample
b383017d 32893struct timeval @{
0ce1b118
CV
32894 time_t tv_sec; /* second */
32895 long tv_usec; /* microsecond */
32896@};
32897@end smallexample
32898
fc320d37 32899The integral datatypes conform to the definitions given in the
79a6e687 32900appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
32901structure is of size 8 bytes.
32902
32903@node Constants
32904@subsection Constants
32905@cindex constants, in file-i/o protocol
32906
32907The following values are used for the constants inside of the
fc320d37 32908protocol. @value{GDBN} and target are responsible for translating these
0ce1b118
CV
32909values before and after the call as needed.
32910
32911@menu
79a6e687
BW
32912* Open Flags::
32913* mode_t Values::
32914* Errno Values::
32915* Lseek Flags::
0ce1b118
CV
32916* Limits::
32917@end menu
32918
79a6e687
BW
32919@node Open Flags
32920@unnumberedsubsubsec Open Flags
0ce1b118
CV
32921@cindex open flags, in file-i/o protocol
32922
32923All values are given in hexadecimal representation.
32924
32925@smallexample
32926 O_RDONLY 0x0
32927 O_WRONLY 0x1
32928 O_RDWR 0x2
32929 O_APPEND 0x8
32930 O_CREAT 0x200
32931 O_TRUNC 0x400
32932 O_EXCL 0x800
32933@end smallexample
32934
79a6e687
BW
32935@node mode_t Values
32936@unnumberedsubsubsec mode_t Values
0ce1b118
CV
32937@cindex mode_t values, in file-i/o protocol
32938
32939All values are given in octal representation.
32940
32941@smallexample
32942 S_IFREG 0100000
32943 S_IFDIR 040000
32944 S_IRUSR 0400
32945 S_IWUSR 0200
32946 S_IXUSR 0100
32947 S_IRGRP 040
32948 S_IWGRP 020
32949 S_IXGRP 010
32950 S_IROTH 04
32951 S_IWOTH 02
32952 S_IXOTH 01
32953@end smallexample
32954
79a6e687
BW
32955@node Errno Values
32956@unnumberedsubsubsec Errno Values
0ce1b118
CV
32957@cindex errno values, in file-i/o protocol
32958
32959All values are given in decimal representation.
32960
32961@smallexample
32962 EPERM 1
32963 ENOENT 2
32964 EINTR 4
32965 EBADF 9
32966 EACCES 13
32967 EFAULT 14
32968 EBUSY 16
32969 EEXIST 17
32970 ENODEV 19
32971 ENOTDIR 20
32972 EISDIR 21
32973 EINVAL 22
32974 ENFILE 23
32975 EMFILE 24
32976 EFBIG 27
32977 ENOSPC 28
32978 ESPIPE 29
32979 EROFS 30
32980 ENAMETOOLONG 91
32981 EUNKNOWN 9999
32982@end smallexample
32983
fc320d37 32984 @code{EUNKNOWN} is used as a fallback error value if a host system returns
0ce1b118
CV
32985 any error value not in the list of supported error numbers.
32986
79a6e687
BW
32987@node Lseek Flags
32988@unnumberedsubsubsec Lseek Flags
0ce1b118
CV
32989@cindex lseek flags, in file-i/o protocol
32990
32991@smallexample
32992 SEEK_SET 0
32993 SEEK_CUR 1
32994 SEEK_END 2
32995@end smallexample
32996
32997@node Limits
32998@unnumberedsubsubsec Limits
32999@cindex limits, in file-i/o protocol
33000
33001All values are given in decimal representation.
33002
33003@smallexample
33004 INT_MIN -2147483648
33005 INT_MAX 2147483647
33006 UINT_MAX 4294967295
33007 LONG_MIN -9223372036854775808
33008 LONG_MAX 9223372036854775807
33009 ULONG_MAX 18446744073709551615
33010@end smallexample
33011
33012@node File-I/O Examples
33013@subsection File-I/O Examples
33014@cindex file-i/o examples
33015
33016Example sequence of a write call, file descriptor 3, buffer is at target
33017address 0x1234, 6 bytes should be written:
33018
33019@smallexample
33020<- @code{Fwrite,3,1234,6}
33021@emph{request memory read from target}
33022-> @code{m1234,6}
33023<- XXXXXX
33024@emph{return "6 bytes written"}
33025-> @code{F6}
33026@end smallexample
33027
33028Example sequence of a read call, file descriptor 3, buffer is at target
33029address 0x1234, 6 bytes should be read:
33030
33031@smallexample
33032<- @code{Fread,3,1234,6}
33033@emph{request memory write to target}
33034-> @code{X1234,6:XXXXXX}
33035@emph{return "6 bytes read"}
33036-> @code{F6}
33037@end smallexample
33038
33039Example sequence of a read call, call fails on the host due to invalid
fc320d37 33040file descriptor (@code{EBADF}):
0ce1b118
CV
33041
33042@smallexample
33043<- @code{Fread,3,1234,6}
33044-> @code{F-1,9}
33045@end smallexample
33046
c8aa23ab 33047Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on
0ce1b118
CV
33048host is called:
33049
33050@smallexample
33051<- @code{Fread,3,1234,6}
33052-> @code{F-1,4,C}
33053<- @code{T02}
33054@end smallexample
33055
c8aa23ab 33056Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on
0ce1b118
CV
33057host is called:
33058
33059@smallexample
33060<- @code{Fread,3,1234,6}
33061-> @code{X1234,6:XXXXXX}
33062<- @code{T02}
33063@end smallexample
33064
cfa9d6d9
DJ
33065@node Library List Format
33066@section Library List Format
33067@cindex library list format, remote protocol
33068
33069On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the
33070same process as your application to manage libraries. In this case,
33071@value{GDBN} can use the loader's symbol table and normal memory
33072operations to maintain a list of shared libraries. On other
33073platforms, the operating system manages loaded libraries.
33074@value{GDBN} can not retrieve the list of currently loaded libraries
33075through memory operations, so it uses the @samp{qXfer:libraries:read}
33076packet (@pxref{qXfer library list read}) instead. The remote stub
33077queries the target's operating system and reports which libraries
33078are loaded.
33079
33080The @samp{qXfer:libraries:read} packet returns an XML document which
33081lists loaded libraries and their offsets. Each library has an
1fddbabb
PA
33082associated name and one or more segment or section base addresses,
33083which report where the library was loaded in memory.
33084
33085For the common case of libraries that are fully linked binaries, the
33086library should have a list of segments. If the target supports
33087dynamic linking of a relocatable object file, its library XML element
33088should instead include a list of allocated sections. The segment or
33089section bases are start addresses, not relocation offsets; they do not
33090depend on the library's link-time base addresses.
cfa9d6d9 33091
9cceb671
DJ
33092@value{GDBN} must be linked with the Expat library to support XML
33093library lists. @xref{Expat}.
33094
cfa9d6d9
DJ
33095A simple memory map, with one loaded library relocated by a single
33096offset, looks like this:
33097
33098@smallexample
33099<library-list>
33100 <library name="/lib/libc.so.6">
33101 <segment address="0x10000000"/>
33102 </library>
33103</library-list>
33104@end smallexample
33105
1fddbabb
PA
33106Another simple memory map, with one loaded library with three
33107allocated sections (.text, .data, .bss), looks like this:
33108
33109@smallexample
33110<library-list>
33111 <library name="sharedlib.o">
33112 <section address="0x10000000"/>
33113 <section address="0x20000000"/>
33114 <section address="0x30000000"/>
33115 </library>
33116</library-list>
33117@end smallexample
33118
cfa9d6d9
DJ
33119The format of a library list is described by this DTD:
33120
33121@smallexample
33122<!-- library-list: Root element with versioning -->
33123<!ELEMENT library-list (library)*>
33124<!ATTLIST library-list version CDATA #FIXED "1.0">
1fddbabb 33125<!ELEMENT library (segment*, section*)>
cfa9d6d9
DJ
33126<!ATTLIST library name CDATA #REQUIRED>
33127<!ELEMENT segment EMPTY>
33128<!ATTLIST segment address CDATA #REQUIRED>
1fddbabb
PA
33129<!ELEMENT section EMPTY>
33130<!ATTLIST section address CDATA #REQUIRED>
cfa9d6d9
DJ
33131@end smallexample
33132
1fddbabb
PA
33133In addition, segments and section descriptors cannot be mixed within a
33134single library element, and you must supply at least one segment or
33135section for each library.
33136
79a6e687
BW
33137@node Memory Map Format
33138@section Memory Map Format
68437a39
DJ
33139@cindex memory map format
33140
33141To be able to write into flash memory, @value{GDBN} needs to obtain a
33142memory map from the target. This section describes the format of the
33143memory map.
33144
33145The memory map is obtained using the @samp{qXfer:memory-map:read}
33146(@pxref{qXfer memory map read}) packet and is an XML document that
9cceb671
DJ
33147lists memory regions.
33148
33149@value{GDBN} must be linked with the Expat library to support XML
33150memory maps. @xref{Expat}.
33151
33152The top-level structure of the document is shown below:
68437a39
DJ
33153
33154@smallexample
33155<?xml version="1.0"?>
33156<!DOCTYPE memory-map
33157 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
33158 "http://sourceware.org/gdb/gdb-memory-map.dtd">
33159<memory-map>
33160 region...
33161</memory-map>
33162@end smallexample
33163
33164Each region can be either:
33165
33166@itemize
33167
33168@item
33169A region of RAM starting at @var{addr} and extending for @var{length}
33170bytes from there:
33171
33172@smallexample
33173<memory type="ram" start="@var{addr}" length="@var{length}"/>
33174@end smallexample
33175
33176
33177@item
33178A region of read-only memory:
33179
33180@smallexample
33181<memory type="rom" start="@var{addr}" length="@var{length}"/>
33182@end smallexample
33183
33184
33185@item
33186A region of flash memory, with erasure blocks @var{blocksize}
33187bytes in length:
33188
33189@smallexample
33190<memory type="flash" start="@var{addr}" length="@var{length}">
33191 <property name="blocksize">@var{blocksize}</property>
33192</memory>
33193@end smallexample
33194
33195@end itemize
33196
33197Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
33198by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
33199packets to write to addresses in such ranges.
33200
33201The formal DTD for memory map format is given below:
33202
33203@smallexample
33204<!-- ................................................... -->
33205<!-- Memory Map XML DTD ................................ -->
33206<!-- File: memory-map.dtd .............................. -->
33207<!-- .................................... .............. -->
33208<!-- memory-map.dtd -->
33209<!-- memory-map: Root element with versioning -->
33210<!ELEMENT memory-map (memory | property)>
33211<!ATTLIST memory-map version CDATA #FIXED "1.0.0">
33212<!ELEMENT memory (property)>
33213<!-- memory: Specifies a memory region,
33214 and its type, or device. -->
33215<!ATTLIST memory type CDATA #REQUIRED
33216 start CDATA #REQUIRED
33217 length CDATA #REQUIRED
33218 device CDATA #IMPLIED>
33219<!-- property: Generic attribute tag -->
33220<!ELEMENT property (#PCDATA | property)*>
33221<!ATTLIST property name CDATA #REQUIRED>
33222@end smallexample
33223
dc146f7c
VP
33224@node Thread List Format
33225@section Thread List Format
33226@cindex thread list format
33227
33228To efficiently update the list of threads and their attributes,
33229@value{GDBN} issues the @samp{qXfer:threads:read} packet
33230(@pxref{qXfer threads read}) and obtains the XML document with
33231the following structure:
33232
33233@smallexample
33234<?xml version="1.0"?>
33235<threads>
33236 <thread id="id" core="0">
33237 ... description ...
33238 </thread>
33239</threads>
33240@end smallexample
33241
33242Each @samp{thread} element must have the @samp{id} attribute that
33243identifies the thread (@pxref{thread-id syntax}). The
33244@samp{core} attribute, if present, specifies which processor core
33245the thread was last executing on. The content of the of @samp{thread}
33246element is interpreted as human-readable auxilliary information.
33247
f418dd93
DJ
33248@include agentexpr.texi
33249
00bf0b85
SS
33250@node Trace File Format
33251@appendix Trace File Format
33252@cindex trace file format
33253
33254The trace file comes in three parts: a header, a textual description
33255section, and a trace frame section with binary data.
33256
33257The header has the form @code{\x7fTRACE0\n}. The first byte is
33258@code{0x7f} so as to indicate that the file contains binary data,
33259while the @code{0} is a version number that may have different values
33260in the future.
33261
33262The description section consists of multiple lines of @sc{ascii} text
33263separated by newline characters (@code{0xa}). The lines may include a
33264variety of optional descriptive or context-setting information, such
33265as tracepoint definitions or register set size. @value{GDBN} will
33266ignore any line that it does not recognize. An empty line marks the end
33267of this section.
33268
33269@c FIXME add some specific types of data
33270
33271The trace frame section consists of a number of consecutive frames.
33272Each frame begins with a two-byte tracepoint number, followed by a
33273four-byte size giving the amount of data in the frame. The data in
33274the frame consists of a number of blocks, each introduced by a
33275character indicating its type (at least register, memory, and trace
33276state variable). The data in this section is raw binary, not a
33277hexadecimal or other encoding; its endianness matches the target's
33278endianness.
33279
33280@c FIXME bi-arch may require endianness/arch info in description section
33281
33282@table @code
33283@item R @var{bytes}
33284Register block. The number and ordering of bytes matches that of a
33285@code{g} packet in the remote protocol. Note that these are the
33286actual bytes, in target order and @value{GDBN} register order, not a
33287hexadecimal encoding.
33288
33289@item M @var{address} @var{length} @var{bytes}...
33290Memory block. This is a contiguous block of memory, at the 8-byte
33291address @var{address}, with a 2-byte length @var{length}, followed by
33292@var{length} bytes.
33293
33294@item V @var{number} @var{value}
33295Trace state variable block. This records the 8-byte signed value
33296@var{value} of trace state variable numbered @var{number}.
33297
33298@end table
33299
33300Future enhancements of the trace file format may include additional types
33301of blocks.
33302
23181151
DJ
33303@node Target Descriptions
33304@appendix Target Descriptions
33305@cindex target descriptions
33306
33307@strong{Warning:} target descriptions are still under active development,
33308and the contents and format may change between @value{GDBN} releases.
33309The format is expected to stabilize in the future.
33310
33311One of the challenges of using @value{GDBN} to debug embedded systems
33312is that there are so many minor variants of each processor
33313architecture in use. It is common practice for vendors to start with
33314a standard processor core --- ARM, PowerPC, or MIPS, for example ---
33315and then make changes to adapt it to a particular market niche. Some
33316architectures have hundreds of variants, available from dozens of
33317vendors. This leads to a number of problems:
33318
33319@itemize @bullet
33320@item
33321With so many different customized processors, it is difficult for
33322the @value{GDBN} maintainers to keep up with the changes.
33323@item
33324Since individual variants may have short lifetimes or limited
33325audiences, it may not be worthwhile to carry information about every
33326variant in the @value{GDBN} source tree.
33327@item
33328When @value{GDBN} does support the architecture of the embedded system
33329at hand, the task of finding the correct architecture name to give the
33330@command{set architecture} command can be error-prone.
33331@end itemize
33332
33333To address these problems, the @value{GDBN} remote protocol allows a
33334target system to not only identify itself to @value{GDBN}, but to
33335actually describe its own features. This lets @value{GDBN} support
33336processor variants it has never seen before --- to the extent that the
33337descriptions are accurate, and that @value{GDBN} understands them.
33338
9cceb671
DJ
33339@value{GDBN} must be linked with the Expat library to support XML
33340target descriptions. @xref{Expat}.
123dc839 33341
23181151
DJ
33342@menu
33343* Retrieving Descriptions:: How descriptions are fetched from a target.
33344* Target Description Format:: The contents of a target description.
123dc839
DJ
33345* Predefined Target Types:: Standard types available for target
33346 descriptions.
33347* Standard Target Features:: Features @value{GDBN} knows about.
23181151
DJ
33348@end menu
33349
33350@node Retrieving Descriptions
33351@section Retrieving Descriptions
33352
33353Target descriptions can be read from the target automatically, or
33354specified by the user manually. The default behavior is to read the
33355description from the target. @value{GDBN} retrieves it via the remote
33356protocol using @samp{qXfer} requests (@pxref{General Query Packets,
33357qXfer}). The @var{annex} in the @samp{qXfer} packet will be
33358@samp{target.xml}. The contents of the @samp{target.xml} annex are an
33359XML document, of the form described in @ref{Target Description
33360Format}.
33361
33362Alternatively, you can specify a file to read for the target description.
33363If a file is set, the target will not be queried. The commands to
33364specify a file are:
33365
33366@table @code
33367@cindex set tdesc filename
33368@item set tdesc filename @var{path}
33369Read the target description from @var{path}.
33370
33371@cindex unset tdesc filename
33372@item unset tdesc filename
33373Do not read the XML target description from a file. @value{GDBN}
33374will use the description supplied by the current target.
33375
33376@cindex show tdesc filename
33377@item show tdesc filename
33378Show the filename to read for a target description, if any.
33379@end table
33380
33381
33382@node Target Description Format
33383@section Target Description Format
33384@cindex target descriptions, XML format
33385
33386A target description annex is an @uref{http://www.w3.org/XML/, XML}
33387document which complies with the Document Type Definition provided in
33388the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This
33389means you can use generally available tools like @command{xmllint} to
33390check that your feature descriptions are well-formed and valid.
33391However, to help people unfamiliar with XML write descriptions for
33392their targets, we also describe the grammar here.
33393
123dc839
DJ
33394Target descriptions can identify the architecture of the remote target
33395and (for some architectures) provide information about custom register
08d16641
PA
33396sets. They can also identify the OS ABI of the remote target.
33397@value{GDBN} can use this information to autoconfigure for your
123dc839 33398target, or to warn you if you connect to an unsupported target.
23181151
DJ
33399
33400Here is a simple target description:
33401
123dc839 33402@smallexample
1780a0ed 33403<target version="1.0">
23181151
DJ
33404 <architecture>i386:x86-64</architecture>
33405</target>
123dc839 33406@end smallexample
23181151
DJ
33407
33408@noindent
33409This minimal description only says that the target uses
33410the x86-64 architecture.
33411
123dc839
DJ
33412A target description has the following overall form, with [ ] marking
33413optional elements and @dots{} marking repeatable elements. The elements
33414are explained further below.
23181151 33415
123dc839 33416@smallexample
23181151
DJ
33417<?xml version="1.0"?>
33418<!DOCTYPE target SYSTEM "gdb-target.dtd">
1780a0ed 33419<target version="1.0">
123dc839 33420 @r{[}@var{architecture}@r{]}
08d16641 33421 @r{[}@var{osabi}@r{]}
e35359c5 33422 @r{[}@var{compatible}@r{]}
123dc839 33423 @r{[}@var{feature}@dots{}@r{]}
23181151 33424</target>
123dc839 33425@end smallexample
23181151
DJ
33426
33427@noindent
33428The description is generally insensitive to whitespace and line
33429breaks, under the usual common-sense rules. The XML version
33430declaration and document type declaration can generally be omitted
33431(@value{GDBN} does not require them), but specifying them may be
1780a0ed
DJ
33432useful for XML validation tools. The @samp{version} attribute for
33433@samp{<target>} may also be omitted, but we recommend
33434including it; if future versions of @value{GDBN} use an incompatible
33435revision of @file{gdb-target.dtd}, they will detect and report
33436the version mismatch.
23181151 33437
108546a0
DJ
33438@subsection Inclusion
33439@cindex target descriptions, inclusion
33440@cindex XInclude
33441@ifnotinfo
33442@cindex <xi:include>
33443@end ifnotinfo
33444
33445It can sometimes be valuable to split a target description up into
33446several different annexes, either for organizational purposes, or to
33447share files between different possible target descriptions. You can
33448divide a description into multiple files by replacing any element of
33449the target description with an inclusion directive of the form:
33450
123dc839 33451@smallexample
108546a0 33452<xi:include href="@var{document}"/>
123dc839 33453@end smallexample
108546a0
DJ
33454
33455@noindent
33456When @value{GDBN} encounters an element of this form, it will retrieve
33457the named XML @var{document}, and replace the inclusion directive with
33458the contents of that document. If the current description was read
33459using @samp{qXfer}, then so will be the included document;
33460@var{document} will be interpreted as the name of an annex. If the
33461current description was read from a file, @value{GDBN} will look for
33462@var{document} as a file in the same directory where it found the
33463original description.
33464
123dc839
DJ
33465@subsection Architecture
33466@cindex <architecture>
33467
33468An @samp{<architecture>} element has this form:
33469
33470@smallexample
33471 <architecture>@var{arch}</architecture>
33472@end smallexample
33473
e35359c5
UW
33474@var{arch} is one of the architectures from the set accepted by
33475@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
123dc839 33476
08d16641
PA
33477@subsection OS ABI
33478@cindex @code{<osabi>}
33479
33480This optional field was introduced in @value{GDBN} version 7.0.
33481Previous versions of @value{GDBN} ignore it.
33482
33483An @samp{<osabi>} element has this form:
33484
33485@smallexample
33486 <osabi>@var{abi-name}</osabi>
33487@end smallexample
33488
33489@var{abi-name} is an OS ABI name from the same selection accepted by
33490@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}).
33491
e35359c5
UW
33492@subsection Compatible Architecture
33493@cindex @code{<compatible>}
33494
33495This optional field was introduced in @value{GDBN} version 7.0.
33496Previous versions of @value{GDBN} ignore it.
33497
33498A @samp{<compatible>} element has this form:
33499
33500@smallexample
33501 <compatible>@var{arch}</compatible>
33502@end smallexample
33503
33504@var{arch} is one of the architectures from the set accepted by
33505@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
33506
33507A @samp{<compatible>} element is used to specify that the target
33508is able to run binaries in some other than the main target architecture
33509given by the @samp{<architecture>} element. For example, on the
33510Cell Broadband Engine, the main architecture is @code{powerpc:common}
33511or @code{powerpc:common64}, but the system is able to run binaries
33512in the @code{spu} architecture as well. The way to describe this
33513capability with @samp{<compatible>} is as follows:
33514
33515@smallexample
33516 <architecture>powerpc:common</architecture>
33517 <compatible>spu</compatible>
33518@end smallexample
33519
123dc839
DJ
33520@subsection Features
33521@cindex <feature>
33522
33523Each @samp{<feature>} describes some logical portion of the target
33524system. Features are currently used to describe available CPU
33525registers and the types of their contents. A @samp{<feature>} element
33526has this form:
33527
33528@smallexample
33529<feature name="@var{name}">
33530 @r{[}@var{type}@dots{}@r{]}
33531 @var{reg}@dots{}
33532</feature>
33533@end smallexample
33534
33535@noindent
33536Each feature's name should be unique within the description. The name
33537of a feature does not matter unless @value{GDBN} has some special
33538knowledge of the contents of that feature; if it does, the feature
33539should have its standard name. @xref{Standard Target Features}.
33540
33541@subsection Types
33542
33543Any register's value is a collection of bits which @value{GDBN} must
33544interpret. The default interpretation is a two's complement integer,
33545but other types can be requested by name in the register description.
33546Some predefined types are provided by @value{GDBN} (@pxref{Predefined
33547Target Types}), and the description can define additional composite types.
33548
33549Each type element must have an @samp{id} attribute, which gives
33550a unique (within the containing @samp{<feature>}) name to the type.
33551Types must be defined before they are used.
33552
33553@cindex <vector>
33554Some targets offer vector registers, which can be treated as arrays
33555of scalar elements. These types are written as @samp{<vector>} elements,
33556specifying the array element type, @var{type}, and the number of elements,
33557@var{count}:
33558
33559@smallexample
33560<vector id="@var{id}" type="@var{type}" count="@var{count}"/>
33561@end smallexample
33562
33563@cindex <union>
33564If a register's value is usefully viewed in multiple ways, define it
33565with a union type containing the useful representations. The
33566@samp{<union>} element contains one or more @samp{<field>} elements,
33567each of which has a @var{name} and a @var{type}:
33568
33569@smallexample
33570<union id="@var{id}">
33571 <field name="@var{name}" type="@var{type}"/>
33572 @dots{}
33573</union>
33574@end smallexample
33575
f5dff777
DJ
33576@cindex <struct>
33577If a register's value is composed from several separate values, define
33578it with a structure type. There are two forms of the @samp{<struct>}
33579element; a @samp{<struct>} element must either contain only bitfields
33580or contain no bitfields. If the structure contains only bitfields,
33581its total size in bytes must be specified, each bitfield must have an
33582explicit start and end, and bitfields are automatically assigned an
33583integer type. The field's @var{start} should be less than or
33584equal to its @var{end}, and zero represents the least significant bit.
33585
33586@smallexample
33587<struct id="@var{id}" size="@var{size}">
33588 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
33589 @dots{}
33590</struct>
33591@end smallexample
33592
33593If the structure contains no bitfields, then each field has an
33594explicit type, and no implicit padding is added.
33595
33596@smallexample
33597<struct id="@var{id}">
33598 <field name="@var{name}" type="@var{type}"/>
33599 @dots{}
33600</struct>
33601@end smallexample
33602
33603@cindex <flags>
33604If a register's value is a series of single-bit flags, define it with
33605a flags type. The @samp{<flags>} element has an explicit @var{size}
33606and contains one or more @samp{<field>} elements. Each field has a
33607@var{name}, a @var{start}, and an @var{end}. Only single-bit flags
33608are supported.
33609
33610@smallexample
33611<flags id="@var{id}" size="@var{size}">
33612 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
33613 @dots{}
33614</flags>
33615@end smallexample
33616
123dc839
DJ
33617@subsection Registers
33618@cindex <reg>
33619
33620Each register is represented as an element with this form:
33621
33622@smallexample
33623<reg name="@var{name}"
33624 bitsize="@var{size}"
33625 @r{[}regnum="@var{num}"@r{]}
33626 @r{[}save-restore="@var{save-restore}"@r{]}
33627 @r{[}type="@var{type}"@r{]}
33628 @r{[}group="@var{group}"@r{]}/>
33629@end smallexample
33630
33631@noindent
33632The components are as follows:
33633
33634@table @var
33635
33636@item name
33637The register's name; it must be unique within the target description.
33638
33639@item bitsize
33640The register's size, in bits.
33641
33642@item regnum
33643The register's number. If omitted, a register's number is one greater
33644than that of the previous register (either in the current feature or in
33645a preceeding feature); the first register in the target description
33646defaults to zero. This register number is used to read or write
33647the register; e.g.@: it is used in the remote @code{p} and @code{P}
33648packets, and registers appear in the @code{g} and @code{G} packets
33649in order of increasing register number.
33650
33651@item save-restore
33652Whether the register should be preserved across inferior function
33653calls; this must be either @code{yes} or @code{no}. The default is
33654@code{yes}, which is appropriate for most registers except for
33655some system control registers; this is not related to the target's
33656ABI.
33657
33658@item type
33659The type of the register. @var{type} may be a predefined type, a type
33660defined in the current feature, or one of the special types @code{int}
33661and @code{float}. @code{int} is an integer type of the correct size
33662for @var{bitsize}, and @code{float} is a floating point type (in the
33663architecture's normal floating point format) of the correct size for
33664@var{bitsize}. The default is @code{int}.
33665
33666@item group
33667The register group to which this register belongs. @var{group} must
33668be either @code{general}, @code{float}, or @code{vector}. If no
33669@var{group} is specified, @value{GDBN} will not display the register
33670in @code{info registers}.
33671
33672@end table
33673
33674@node Predefined Target Types
33675@section Predefined Target Types
33676@cindex target descriptions, predefined types
33677
33678Type definitions in the self-description can build up composite types
33679from basic building blocks, but can not define fundamental types. Instead,
33680standard identifiers are provided by @value{GDBN} for the fundamental
33681types. The currently supported types are:
33682
33683@table @code
33684
33685@item int8
33686@itemx int16
33687@itemx int32
33688@itemx int64
7cc46491 33689@itemx int128
123dc839
DJ
33690Signed integer types holding the specified number of bits.
33691
33692@item uint8
33693@itemx uint16
33694@itemx uint32
33695@itemx uint64
7cc46491 33696@itemx uint128
123dc839
DJ
33697Unsigned integer types holding the specified number of bits.
33698
33699@item code_ptr
33700@itemx data_ptr
33701Pointers to unspecified code and data. The program counter and
33702any dedicated return address register may be marked as code
33703pointers; printing a code pointer converts it into a symbolic
33704address. The stack pointer and any dedicated address registers
33705may be marked as data pointers.
33706
6e3bbd1a
PB
33707@item ieee_single
33708Single precision IEEE floating point.
33709
33710@item ieee_double
33711Double precision IEEE floating point.
33712
123dc839
DJ
33713@item arm_fpa_ext
33714The 12-byte extended precision format used by ARM FPA registers.
33715
075b51b7
L
33716@item i387_ext
33717The 10-byte extended precision format used by x87 registers.
33718
33719@item i386_eflags
3372032bit @sc{eflags} register used by x86.
33721
33722@item i386_mxcsr
3372332bit @sc{mxcsr} register used by x86.
33724
123dc839
DJ
33725@end table
33726
33727@node Standard Target Features
33728@section Standard Target Features
33729@cindex target descriptions, standard features
33730
33731A target description must contain either no registers or all the
33732target's registers. If the description contains no registers, then
33733@value{GDBN} will assume a default register layout, selected based on
33734the architecture. If the description contains any registers, the
33735default layout will not be used; the standard registers must be
33736described in the target description, in such a way that @value{GDBN}
33737can recognize them.
33738
33739This is accomplished by giving specific names to feature elements
33740which contain standard registers. @value{GDBN} will look for features
33741with those names and verify that they contain the expected registers;
33742if any known feature is missing required registers, or if any required
33743feature is missing, @value{GDBN} will reject the target
33744description. You can add additional registers to any of the
33745standard features --- @value{GDBN} will display them just as if
33746they were added to an unrecognized feature.
33747
33748This section lists the known features and their expected contents.
33749Sample XML documents for these features are included in the
33750@value{GDBN} source tree, in the directory @file{gdb/features}.
33751
33752Names recognized by @value{GDBN} should include the name of the
33753company or organization which selected the name, and the overall
33754architecture to which the feature applies; so e.g.@: the feature
33755containing ARM core registers is named @samp{org.gnu.gdb.arm.core}.
33756
ff6f572f
DJ
33757The names of registers are not case sensitive for the purpose
33758of recognizing standard features, but @value{GDBN} will only display
33759registers using the capitalization used in the description.
33760
e9c17194
VP
33761@menu
33762* ARM Features::
3bb8d5c3 33763* i386 Features::
1e26b4f8 33764* MIPS Features::
e9c17194 33765* M68K Features::
1e26b4f8 33766* PowerPC Features::
e9c17194
VP
33767@end menu
33768
33769
33770@node ARM Features
123dc839
DJ
33771@subsection ARM Features
33772@cindex target descriptions, ARM features
33773
33774The @samp{org.gnu.gdb.arm.core} feature is required for ARM targets.
33775It should contain registers @samp{r0} through @samp{r13}, @samp{sp},
33776@samp{lr}, @samp{pc}, and @samp{cpsr}.
33777
33778The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it
33779should contain registers @samp{f0} through @samp{f7} and @samp{fps}.
33780
ff6f572f
DJ
33781The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present,
33782it should contain at least registers @samp{wR0} through @samp{wR15} and
33783@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon},
33784@samp{wCSSF}, and @samp{wCASF} registers are optional.
23181151 33785
58d6951d
DJ
33786The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it
33787should contain at least registers @samp{d0} through @samp{d15}. If
33788they are present, @samp{d16} through @samp{d31} should also be included.
33789@value{GDBN} will synthesize the single-precision registers from
33790halves of the double-precision registers.
33791
33792The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not
33793need to contain registers; it instructs @value{GDBN} to display the
33794VFP double-precision registers as vectors and to synthesize the
33795quad-precision registers from pairs of double-precision registers.
33796If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also
33797be present and include 32 double-precision registers.
33798
3bb8d5c3
L
33799@node i386 Features
33800@subsection i386 Features
33801@cindex target descriptions, i386 features
33802
33803The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64
33804targets. It should describe the following registers:
33805
33806@itemize @minus
33807@item
33808@samp{eax} through @samp{edi} plus @samp{eip} for i386
33809@item
33810@samp{rax} through @samp{r15} plus @samp{rip} for amd64
33811@item
33812@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es},
33813@samp{fs}, @samp{gs}
33814@item
33815@samp{st0} through @samp{st7}
33816@item
33817@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff},
33818@samp{foseg}, @samp{fooff} and @samp{fop}
33819@end itemize
33820
33821The register sets may be different, depending on the target.
33822
33823The @samp{org.gnu.gdb.i386.sse} feature is required. It should
33824describe registers:
33825
33826@itemize @minus
33827@item
33828@samp{xmm0} through @samp{xmm7} for i386
33829@item
33830@samp{xmm0} through @samp{xmm15} for amd64
33831@item
33832@samp{mxcsr}
33833@end itemize
33834
f68eb612
L
33835The @samp{org.gnu.gdb.i386.avx} feature is optional. It should
33836describe the upper 128 bits of @sc{ymm} registers:
33837
33838@itemize @minus
33839@item
33840@samp{ymm0h} through @samp{ymm7h} for i386
33841@item
33842@samp{ymm0h} through @samp{ymm15h} for amd64
33843@item
33844@end itemize
33845
3bb8d5c3
L
33846The @samp{org.gnu.gdb.i386.linux} feature is optional. It should
33847describe a single register, @samp{orig_eax}.
33848
1e26b4f8 33849@node MIPS Features
f8b73d13
DJ
33850@subsection MIPS Features
33851@cindex target descriptions, MIPS features
33852
33853The @samp{org.gnu.gdb.mips.cpu} feature is required for MIPS targets.
33854It should contain registers @samp{r0} through @samp{r31}, @samp{lo},
33855@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending
33856on the target.
33857
33858The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should
33859contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause}
33860registers. They may be 32-bit or 64-bit depending on the target.
33861
33862The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though
33863it may be optional in a future version of @value{GDBN}. It should
33864contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and
33865@samp{fir}. They may be 32-bit or 64-bit depending on the target.
33866
822b6570
DJ
33867The @samp{org.gnu.gdb.mips.linux} feature is optional. It should
33868contain a single register, @samp{restart}, which is used by the
33869Linux kernel to control restartable syscalls.
33870
e9c17194
VP
33871@node M68K Features
33872@subsection M68K Features
33873@cindex target descriptions, M68K features
33874
33875@table @code
33876@item @samp{org.gnu.gdb.m68k.core}
33877@itemx @samp{org.gnu.gdb.coldfire.core}
33878@itemx @samp{org.gnu.gdb.fido.core}
33879One of those features must be always present.
249e1128 33880The feature that is present determines which flavor of m68k is
e9c17194
VP
33881used. The feature that is present should contain registers
33882@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp},
33883@samp{sp}, @samp{ps} and @samp{pc}.
33884
33885@item @samp{org.gnu.gdb.coldfire.fp}
33886This feature is optional. If present, it should contain registers
33887@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
33888@samp{fpiaddr}.
33889@end table
33890
1e26b4f8 33891@node PowerPC Features
7cc46491
DJ
33892@subsection PowerPC Features
33893@cindex target descriptions, PowerPC features
33894
33895The @samp{org.gnu.gdb.power.core} feature is required for PowerPC
33896targets. It should contain registers @samp{r0} through @samp{r31},
33897@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and
33898@samp{xer}. They may be 32-bit or 64-bit depending on the target.
33899
33900The @samp{org.gnu.gdb.power.fpu} feature is optional. It should
33901contain registers @samp{f0} through @samp{f31} and @samp{fpscr}.
33902
33903The @samp{org.gnu.gdb.power.altivec} feature is optional. It should
33904contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
33905and @samp{vrsave}.
33906
677c5bb1
LM
33907The @samp{org.gnu.gdb.power.vsx} feature is optional. It should
33908contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN}
33909will combine these registers with the floating point registers
33910(@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0}
aeac0ff9 33911through @samp{vr31}) to present the 128-bit wide registers @samp{vs0}
677c5bb1
LM
33912through @samp{vs63}, the set of vector registers for POWER7.
33913
7cc46491
DJ
33914The @samp{org.gnu.gdb.power.spe} feature is optional. It should
33915contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
33916@samp{spefscr}. SPE targets should provide 32-bit registers in
33917@samp{org.gnu.gdb.power.core} and provide the upper halves in
33918@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine
33919these to present registers @samp{ev0} through @samp{ev31} to the
33920user.
33921
07e059b5
VP
33922@node Operating System Information
33923@appendix Operating System Information
33924@cindex operating system information
33925
33926@menu
33927* Process list::
33928@end menu
33929
33930Users of @value{GDBN} often wish to obtain information about the state of
33931the operating system running on the target---for example the list of
33932processes, or the list of open files. This section describes the
33933mechanism that makes it possible. This mechanism is similar to the
33934target features mechanism (@pxref{Target Descriptions}), but focuses
33935on a different aspect of target.
33936
33937Operating system information is retrived from the target via the
33938remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata
33939read}). The object name in the request should be @samp{osdata}, and
33940the @var{annex} identifies the data to be fetched.
33941
33942@node Process list
33943@appendixsection Process list
33944@cindex operating system information, process list
33945
33946When requesting the process list, the @var{annex} field in the
33947@samp{qXfer} request should be @samp{processes}. The returned data is
33948an XML document. The formal syntax of this document is defined in
33949@file{gdb/features/osdata.dtd}.
33950
33951An example document is:
33952
33953@smallexample
33954<?xml version="1.0"?>
33955<!DOCTYPE target SYSTEM "osdata.dtd">
33956<osdata type="processes">
33957 <item>
33958 <column name="pid">1</column>
33959 <column name="user">root</column>
33960 <column name="command">/sbin/init</column>
dc146f7c 33961 <column name="cores">1,2,3</column>
07e059b5
VP
33962 </item>
33963</osdata>
33964@end smallexample
33965
33966Each item should include a column whose name is @samp{pid}. The value
33967of that column should identify the process on the target. The
33968@samp{user} and @samp{command} columns are optional, and will be
dc146f7c
VP
33969displayed by @value{GDBN}. The @samp{cores} column, if present,
33970should contain a comma-separated list of cores that this process
33971is running on. Target may provide additional columns,
07e059b5
VP
33972which @value{GDBN} currently ignores.
33973
aab4e0ec 33974@include gpl.texi
eb12ee30 33975
2154891a 33976@raisesections
6826cf00 33977@include fdl.texi
2154891a 33978@lowersections
6826cf00 33979
6d2ebf8b 33980@node Index
c906108c
SS
33981@unnumbered Index
33982
33983@printindex cp
33984
33985@tex
33986% I think something like @colophon should be in texinfo. In the
33987% meantime:
33988\long\def\colophon{\hbox to0pt{}\vfill
33989\centerline{The body of this manual is set in}
33990\centerline{\fontname\tenrm,}
33991\centerline{with headings in {\bf\fontname\tenbf}}
33992\centerline{and examples in {\tt\fontname\tentt}.}
33993\centerline{{\it\fontname\tenit\/},}
33994\centerline{{\bf\fontname\tenbf}, and}
33995\centerline{{\sl\fontname\tensl\/}}
33996\centerline{are used for emphasis.}\vfill}
33997\page\colophon
33998% Blame: doc@cygnus.com, 1991.
33999@end tex
34000
c906108c 34001@bye
This page took 5.110148 seconds and 4 git commands to generate.