*** empty log message ***
[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,
a67ec3f4 3@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
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,
491998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
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
a67ec3f4 123Copyright (C) 1988-2009 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
aab4e0ec
AC
177* Copying:: GNU General Public License says
178 how you can copy and share GDB
6826cf00 179* GNU Free Documentation License:: The license for this documentation
6d2ebf8b
SS
180* Index:: Index
181@end menu
182
6c0e9fb3 183@end ifnottex
c906108c 184
449f3b6c 185@contents
449f3b6c 186
6d2ebf8b 187@node Summary
c906108c
SS
188@unnumbered Summary of @value{GDBN}
189
190The purpose of a debugger such as @value{GDBN} is to allow you to see what is
191going on ``inside'' another program while it executes---or what another
192program was doing at the moment it crashed.
193
194@value{GDBN} can do four main kinds of things (plus other things in support of
195these) to help you catch bugs in the act:
196
197@itemize @bullet
198@item
199Start your program, specifying anything that might affect its behavior.
200
201@item
202Make your program stop on specified conditions.
203
204@item
205Examine what has happened, when your program has stopped.
206
207@item
208Change things in your program, so you can experiment with correcting the
209effects of one bug and go on to learn about another.
210@end itemize
211
49efadf5 212You can use @value{GDBN} to debug programs written in C and C@t{++}.
79a6e687 213For more information, see @ref{Supported Languages,,Supported Languages}.
c906108c
SS
214For more information, see @ref{C,,C and C++}.
215
cce74817 216@cindex Modula-2
e632838e
AC
217Support for Modula-2 is partial. For information on Modula-2, see
218@ref{Modula-2,,Modula-2}.
c906108c 219
cce74817
JM
220@cindex Pascal
221Debugging Pascal programs which use sets, subranges, file variables, or
222nested functions does not currently work. @value{GDBN} does not support
223entering expressions, printing values, or similar features using Pascal
224syntax.
c906108c 225
c906108c
SS
226@cindex Fortran
227@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 228it may be necessary to refer to some variables with a trailing
cce74817 229underscore.
c906108c 230
b37303ee
AF
231@value{GDBN} can be used to debug programs written in Objective-C,
232using either the Apple/NeXT or the GNU Objective-C runtime.
233
c906108c
SS
234@menu
235* Free Software:: Freely redistributable software
236* Contributors:: Contributors to GDB
237@end menu
238
6d2ebf8b 239@node Free Software
79a6e687 240@unnumberedsec Free Software
c906108c 241
5d161b24 242@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
c906108c
SS
243General Public License
244(GPL). The GPL gives you the freedom to copy or adapt a licensed
245program---but every person getting a copy also gets with it the
246freedom to modify that copy (which means that they must get access to
247the source code), and the freedom to distribute further copies.
248Typical software companies use copyrights to limit your freedoms; the
249Free Software Foundation uses the GPL to preserve these freedoms.
250
251Fundamentally, the General Public License is a license which says that
252you have these freedoms and that you cannot take these freedoms away
253from anyone else.
254
2666264b 255@unnumberedsec Free Software Needs Free Documentation
959acfd1
EZ
256
257The biggest deficiency in the free software community today is not in
258the software---it is the lack of good free documentation that we can
259include with the free software. Many of our most important
260programs do not come with free reference manuals and free introductory
261texts. Documentation is an essential part of any software package;
262when an important free software package does not come with a free
263manual and a free tutorial, that is a major gap. We have many such
264gaps today.
265
266Consider Perl, for instance. The tutorial manuals that people
267normally use are non-free. How did this come about? Because the
268authors of those manuals published them with restrictive terms---no
269copying, no modification, source files not available---which exclude
270them from the free software world.
271
272That wasn't the first time this sort of thing happened, and it was far
273from the last. Many times we have heard a GNU user eagerly describe a
274manual that he is writing, his intended contribution to the community,
275only to learn that he had ruined everything by signing a publication
276contract to make it non-free.
277
278Free documentation, like free software, is a matter of freedom, not
279price. The problem with the non-free manual is not that publishers
280charge a price for printed copies---that in itself is fine. (The Free
281Software Foundation sells printed copies of manuals, too.) The
282problem is the restrictions on the use of the manual. Free manuals
283are available in source code form, and give you permission to copy and
284modify. Non-free manuals do not allow this.
285
286The criteria of freedom for a free manual are roughly the same as for
287free software. Redistribution (including the normal kinds of
288commercial redistribution) must be permitted, so that the manual can
289accompany every copy of the program, both on-line and on paper.
290
291Permission for modification of the technical content is crucial too.
292When people modify the software, adding or changing features, if they
293are conscientious they will change the manual too---so they can
294provide accurate and clear documentation for the modified program. A
295manual that leaves you no choice but to write a new manual to document
296a changed version of the program is not really available to our
297community.
298
299Some kinds of limits on the way modification is handled are
300acceptable. For example, requirements to preserve the original
301author's copyright notice, the distribution terms, or the list of
302authors, are ok. It is also no problem to require modified versions
303to include notice that they were modified. Even entire sections that
304may not be deleted or changed are acceptable, as long as they deal
305with nontechnical topics (like this one). These kinds of restrictions
306are acceptable because they don't obstruct the community's normal use
307of the manual.
308
309However, it must be possible to modify all the @emph{technical}
310content of the manual, and then distribute the result in all the usual
311media, through all the usual channels. Otherwise, the restrictions
312obstruct the use of the manual, it is not free, and we need another
313manual to replace it.
314
315Please spread the word about this issue. Our community continues to
316lose manuals to proprietary publishing. If we spread the word that
317free software needs free reference manuals and free tutorials, perhaps
318the next person who wants to contribute by writing documentation will
319realize, before it is too late, that only free manuals contribute to
320the free software community.
321
322If you are writing documentation, please insist on publishing it under
323the GNU Free Documentation License or another free documentation
324license. Remember that this decision requires your approval---you
325don't have to let the publisher decide. Some commercial publishers
326will use a free license if you insist, but they will not propose the
327option; it is up to you to raise the issue and say firmly that this is
328what you want. If the publisher you are dealing with refuses, please
329try other publishers. If you're not sure whether a proposed license
42584a72 330is free, write to @email{licensing@@gnu.org}.
959acfd1
EZ
331
332You can encourage commercial publishers to sell more free, copylefted
333manuals and tutorials by buying them, and particularly by buying
334copies from the publishers that paid for their writing or for major
335improvements. Meanwhile, try to avoid buying non-free documentation
336at all. Check the distribution terms of a manual before you buy it,
337and insist that whoever seeks your business must respect your freedom.
72c9928d
EZ
338Check the history of the book, and try to reward the publishers that
339have paid or pay the authors to work on it.
959acfd1
EZ
340
341The Free Software Foundation maintains a list of free documentation
342published by other publishers, at
343@url{http://www.fsf.org/doc/other-free-books.html}.
344
6d2ebf8b 345@node Contributors
96a2c332
SS
346@unnumberedsec Contributors to @value{GDBN}
347
348Richard Stallman was the original author of @value{GDBN}, and of many
349other @sc{gnu} programs. Many others have contributed to its
350development. This section attempts to credit major contributors. One
351of the virtues of free software is that everyone is free to contribute
352to it; with regret, we cannot actually acknowledge everyone here. The
353file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
354blow-by-blow account.
355
356Changes much prior to version 2.0 are lost in the mists of time.
357
358@quotation
359@emph{Plea:} Additions to this section are particularly welcome. If you
360or your friends (or enemies, to be evenhanded) have been unfairly
361omitted from this list, we would like to add your names!
362@end quotation
363
364So that they may not regard their many labors as thankless, we
365particularly thank those who shepherded @value{GDBN} through major
366releases:
7ba3cf9c 367Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0);
c906108c
SS
368Jim Blandy (release 4.18);
369Jason Molenda (release 4.17);
370Stan Shebs (release 4.14);
371Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
372Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
373John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
374Jim Kingdon (releases 3.5, 3.4, and 3.3);
375and Randy Smith (releases 3.2, 3.1, and 3.0).
376
377Richard Stallman, assisted at various times by Peter TerMaat, Chris
378Hanson, and Richard Mlynarik, handled releases through 2.8.
379
b37052ae
EZ
380Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
381in @value{GDBN}, with significant additional contributions from Per
382Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
383demangler. Early work on C@t{++} was by Peter TerMaat (who also did
384much general update work leading to release 3.0).
c906108c 385
b37052ae 386@value{GDBN} uses the BFD subroutine library to examine multiple
c906108c
SS
387object-file formats; BFD was a joint project of David V.
388Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
389
390David Johnson wrote the original COFF support; Pace Willison did
391the original support for encapsulated COFF.
392
0179ffac 393Brent Benson of Harris Computer Systems contributed DWARF 2 support.
c906108c
SS
394
395Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
396Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
397support.
398Jean-Daniel Fekete contributed Sun 386i support.
399Chris Hanson improved the HP9000 support.
400Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
401David Johnson contributed Encore Umax support.
402Jyrki Kuoppala contributed Altos 3068 support.
403Jeff Law contributed HP PA and SOM support.
404Keith Packard contributed NS32K support.
405Doug Rabson contributed Acorn Risc Machine support.
406Bob Rusk contributed Harris Nighthawk CX-UX support.
407Chris Smith contributed Convex support (and Fortran debugging).
408Jonathan Stone contributed Pyramid support.
409Michael Tiemann contributed SPARC support.
410Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
411Pace Willison contributed Intel 386 support.
412Jay Vosburgh contributed Symmetry support.
a37295f9 413Marko Mlinar contributed OpenRISC 1000 support.
c906108c 414
1104b9e7 415Andreas Schwab contributed M68K @sc{gnu}/Linux support.
c906108c
SS
416
417Rich Schaefer and Peter Schauer helped with support of SunOS shared
418libraries.
419
420Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
421about several machine instruction sets.
422
423Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
424remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
425contributed remote debugging modules for the i960, VxWorks, A29K UDI,
426and RDI targets, respectively.
427
428Brian Fox is the author of the readline libraries providing
429command-line editing and command history.
430
7a292a7a
SS
431Andrew Beers of SUNY Buffalo wrote the language-switching code, the
432Modula-2 support, and contributed the Languages chapter of this manual.
c906108c 433
5d161b24 434Fred Fish wrote most of the support for Unix System Vr4.
b37052ae 435He also enhanced the command-completion support to cover C@t{++} overloaded
c906108c 436symbols.
c906108c 437
f24c5e49
KI
438Hitachi America (now Renesas America), Ltd. sponsored the support for
439H8/300, H8/500, and Super-H processors.
c906108c
SS
440
441NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
442
f24c5e49
KI
443Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D
444processors.
c906108c
SS
445
446Toshiba sponsored the support for the TX39 Mips processor.
447
448Matsushita sponsored the support for the MN10200 and MN10300 processors.
449
96a2c332 450Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
451
452Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
453watchpoints.
454
455Michael Snyder added support for tracepoints.
456
457Stu Grossman wrote gdbserver.
458
459Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 460nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
461
462The following people at the Hewlett-Packard Company contributed
463support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
b37052ae 464(narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
d0d5df6f
AC
465compiler, and the Text User Interface (nee Terminal User Interface):
466Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann,
467Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase
468provided HP-specific information in this manual.
c906108c 469
b37052ae
EZ
470DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
471Robert Hoehne made significant contributions to the DJGPP port.
472
96a2c332
SS
473Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
474development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
475fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
476Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
477Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
478Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
479Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
480addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
481JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
482Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
483Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
484Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
485Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
486Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
487Zuhn have made contributions both large and small.
c906108c 488
ffed4509
AC
489Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for
490Cygnus Solutions, implemented the original @sc{gdb/mi} interface.
491
e2e0bcd1
JB
492Jim Blandy added support for preprocessor macros, while working for Red
493Hat.
c906108c 494
a9967aef
AC
495Andrew Cagney designed @value{GDBN}'s architecture vector. Many
496people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick
497Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei
498Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason
499Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped
500with the migration of old architectures to this new framework.
501
c5e30d01
AC
502Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s
503unwinder framework, this consisting of a fresh new design featuring
504frame IDs, independent frame sniffers, and the sentinel frame. Mark
505Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the
506libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and
db2e3e2e 507trad unwinders. The architecture-specific changes, each involving a
c5e30d01
AC
508complete rewrite of the architecture's frame code, were carried out by
509Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane
510Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel
511Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei
512Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich
513Weigand.
514
ca3bf3bd
DJ
515Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from
516Tensilica, Inc.@: contributed support for Xtensa processors. Others
517who have worked on the Xtensa port of @value{GDBN} in the past include
518Steve Tjiang, John Newlin, and Scott Foehner.
519
6d2ebf8b 520@node Sample Session
c906108c
SS
521@chapter A Sample @value{GDBN} Session
522
523You can use this manual at your leisure to read all about @value{GDBN}.
524However, a handful of commands are enough to get started using the
525debugger. This chapter illustrates those commands.
526
527@iftex
528In this sample session, we emphasize user input like this: @b{input},
529to make it easier to pick out from the surrounding output.
530@end iftex
531
532@c FIXME: this example may not be appropriate for some configs, where
533@c FIXME...primary interest is in remote use.
534
535One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
536processor) exhibits the following bug: sometimes, when we change its
537quote strings from the default, the commands used to capture one macro
538definition within another stop working. In the following short @code{m4}
539session, we define a macro @code{foo} which expands to @code{0000}; we
540then use the @code{m4} built-in @code{defn} to define @code{bar} as the
541same thing. However, when we change the open quote string to
542@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
543procedure fails to define a new synonym @code{baz}:
544
545@smallexample
546$ @b{cd gnu/m4}
547$ @b{./m4}
548@b{define(foo,0000)}
549
550@b{foo}
5510000
552@b{define(bar,defn(`foo'))}
553
554@b{bar}
5550000
556@b{changequote(<QUOTE>,<UNQUOTE>)}
557
558@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
559@b{baz}
c8aa23ab 560@b{Ctrl-d}
c906108c
SS
561m4: End of input: 0: fatal error: EOF in string
562@end smallexample
563
564@noindent
565Let us use @value{GDBN} to try to see what is going on.
566
c906108c
SS
567@smallexample
568$ @b{@value{GDBP} m4}
569@c FIXME: this falsifies the exact text played out, to permit smallbook
570@c FIXME... format to come out better.
571@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 572 of it under certain conditions; type "show copying" to see
c906108c 573 the conditions.
5d161b24 574There is absolutely no warranty for @value{GDBN}; type "show warranty"
c906108c
SS
575 for details.
576
577@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
578(@value{GDBP})
579@end smallexample
c906108c
SS
580
581@noindent
582@value{GDBN} reads only enough symbol data to know where to find the
583rest when needed; as a result, the first prompt comes up very quickly.
584We now tell @value{GDBN} to use a narrower display width than usual, so
585that examples fit in this manual.
586
587@smallexample
588(@value{GDBP}) @b{set width 70}
589@end smallexample
590
591@noindent
592We need to see how the @code{m4} built-in @code{changequote} works.
593Having looked at the source, we know the relevant subroutine is
594@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
595@code{break} command.
596
597@smallexample
598(@value{GDBP}) @b{break m4_changequote}
599Breakpoint 1 at 0x62f4: file builtin.c, line 879.
600@end smallexample
601
602@noindent
603Using the @code{run} command, we start @code{m4} running under @value{GDBN}
604control; as long as control does not reach the @code{m4_changequote}
605subroutine, the program runs as usual:
606
607@smallexample
608(@value{GDBP}) @b{run}
609Starting program: /work/Editorial/gdb/gnu/m4/m4
610@b{define(foo,0000)}
611
612@b{foo}
6130000
614@end smallexample
615
616@noindent
617To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
618suspends execution of @code{m4}, displaying information about the
619context where it stops.
620
621@smallexample
622@b{changequote(<QUOTE>,<UNQUOTE>)}
623
5d161b24 624Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
625 at builtin.c:879
626879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
627@end smallexample
628
629@noindent
630Now we use the command @code{n} (@code{next}) to advance execution to
631the next line of the current function.
632
633@smallexample
634(@value{GDBP}) @b{n}
635882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
636 : nil,
637@end smallexample
638
639@noindent
640@code{set_quotes} looks like a promising subroutine. We can go into it
641by using the command @code{s} (@code{step}) instead of @code{next}.
642@code{step} goes to the next line to be executed in @emph{any}
643subroutine, so it steps into @code{set_quotes}.
644
645@smallexample
646(@value{GDBP}) @b{s}
647set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
648 at input.c:530
649530 if (lquote != def_lquote)
650@end smallexample
651
652@noindent
653The display that shows the subroutine where @code{m4} is now
654suspended (and its arguments) is called a stack frame display. It
655shows a summary of the stack. We can use the @code{backtrace}
656command (which can also be spelled @code{bt}), to see where we are
657in the stack as a whole: the @code{backtrace} command displays a
658stack frame for each active subroutine.
659
660@smallexample
661(@value{GDBP}) @b{bt}
662#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
663 at input.c:530
5d161b24 664#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
665 at builtin.c:882
666#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
667#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
668 at macro.c:71
669#4 0x79dc in expand_input () at macro.c:40
670#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
671@end smallexample
672
673@noindent
674We step through a few more lines to see what happens. The first two
675times, we can use @samp{s}; the next two times we use @code{n} to avoid
676falling into the @code{xstrdup} subroutine.
677
678@smallexample
679(@value{GDBP}) @b{s}
6800x3b5c 532 if (rquote != def_rquote)
681(@value{GDBP}) @b{s}
6820x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
683def_lquote : xstrdup(lq);
684(@value{GDBP}) @b{n}
685536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
686 : xstrdup(rq);
687(@value{GDBP}) @b{n}
688538 len_lquote = strlen(rquote);
689@end smallexample
690
691@noindent
692The last line displayed looks a little odd; we can examine the variables
693@code{lquote} and @code{rquote} to see if they are in fact the new left
694and right quotes we specified. We use the command @code{p}
695(@code{print}) to see their values.
696
697@smallexample
698(@value{GDBP}) @b{p lquote}
699$1 = 0x35d40 "<QUOTE>"
700(@value{GDBP}) @b{p rquote}
701$2 = 0x35d50 "<UNQUOTE>"
702@end smallexample
703
704@noindent
705@code{lquote} and @code{rquote} are indeed the new left and right quotes.
706To look at some context, we can display ten lines of source
707surrounding the current line with the @code{l} (@code{list}) command.
708
709@smallexample
710(@value{GDBP}) @b{l}
711533 xfree(rquote);
712534
713535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
714 : xstrdup (lq);
715536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
716 : xstrdup (rq);
717537
718538 len_lquote = strlen(rquote);
719539 len_rquote = strlen(lquote);
720540 @}
721541
722542 void
723@end smallexample
724
725@noindent
726Let us step past the two lines that set @code{len_lquote} and
727@code{len_rquote}, and then examine the values of those variables.
728
729@smallexample
730(@value{GDBP}) @b{n}
731539 len_rquote = strlen(lquote);
732(@value{GDBP}) @b{n}
733540 @}
734(@value{GDBP}) @b{p len_lquote}
735$3 = 9
736(@value{GDBP}) @b{p len_rquote}
737$4 = 7
738@end smallexample
739
740@noindent
741That certainly looks wrong, assuming @code{len_lquote} and
742@code{len_rquote} are meant to be the lengths of @code{lquote} and
743@code{rquote} respectively. We can set them to better values using
744the @code{p} command, since it can print the value of
745any expression---and that expression can include subroutine calls and
746assignments.
747
748@smallexample
749(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
750$5 = 7
751(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
752$6 = 9
753@end smallexample
754
755@noindent
756Is that enough to fix the problem of using the new quotes with the
757@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
758executing with the @code{c} (@code{continue}) command, and then try the
759example that caused trouble initially:
760
761@smallexample
762(@value{GDBP}) @b{c}
763Continuing.
764
765@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
766
767baz
7680000
769@end smallexample
770
771@noindent
772Success! The new quotes now work just as well as the default ones. The
773problem seems to have been just the two typos defining the wrong
774lengths. We allow @code{m4} exit by giving it an EOF as input:
775
776@smallexample
c8aa23ab 777@b{Ctrl-d}
c906108c
SS
778Program exited normally.
779@end smallexample
780
781@noindent
782The message @samp{Program exited normally.} is from @value{GDBN}; it
783indicates @code{m4} has finished executing. We can end our @value{GDBN}
784session with the @value{GDBN} @code{quit} command.
785
786@smallexample
787(@value{GDBP}) @b{quit}
788@end smallexample
c906108c 789
6d2ebf8b 790@node Invocation
c906108c
SS
791@chapter Getting In and Out of @value{GDBN}
792
793This chapter discusses how to start @value{GDBN}, and how to get out of it.
5d161b24 794The essentials are:
c906108c 795@itemize @bullet
5d161b24 796@item
53a5351d 797type @samp{@value{GDBP}} to start @value{GDBN}.
5d161b24 798@item
c8aa23ab 799type @kbd{quit} or @kbd{Ctrl-d} to exit.
c906108c
SS
800@end itemize
801
802@menu
803* Invoking GDB:: How to start @value{GDBN}
804* Quitting GDB:: How to quit @value{GDBN}
805* Shell Commands:: How to use shell commands inside @value{GDBN}
79a6e687 806* Logging Output:: How to log @value{GDBN}'s output to a file
c906108c
SS
807@end menu
808
6d2ebf8b 809@node Invoking GDB
c906108c
SS
810@section Invoking @value{GDBN}
811
c906108c
SS
812Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
813@value{GDBN} reads commands from the terminal until you tell it to exit.
814
815You can also run @code{@value{GDBP}} with a variety of arguments and options,
816to specify more of your debugging environment at the outset.
817
c906108c
SS
818The command-line options described here are designed
819to cover a variety of situations; in some environments, some of these
5d161b24 820options may effectively be unavailable.
c906108c
SS
821
822The most usual way to start @value{GDBN} is with one argument,
823specifying an executable program:
824
474c8240 825@smallexample
c906108c 826@value{GDBP} @var{program}
474c8240 827@end smallexample
c906108c 828
c906108c
SS
829@noindent
830You can also start with both an executable program and a core file
831specified:
832
474c8240 833@smallexample
c906108c 834@value{GDBP} @var{program} @var{core}
474c8240 835@end smallexample
c906108c
SS
836
837You can, instead, specify a process ID as a second argument, if you want
838to debug a running process:
839
474c8240 840@smallexample
c906108c 841@value{GDBP} @var{program} 1234
474c8240 842@end smallexample
c906108c
SS
843
844@noindent
845would attach @value{GDBN} to process @code{1234} (unless you also have a file
846named @file{1234}; @value{GDBN} does check for a core file first).
847
c906108c 848Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
849complete operating system; when you use @value{GDBN} as a remote
850debugger attached to a bare board, there may not be any notion of
851``process'', and there is often no way to get a core dump. @value{GDBN}
852will warn you if it is unable to attach or to read core dumps.
c906108c 853
aa26fa3a
TT
854You can optionally have @code{@value{GDBP}} pass any arguments after the
855executable file to the inferior using @code{--args}. This option stops
856option processing.
474c8240 857@smallexample
3f94c067 858@value{GDBP} --args gcc -O2 -c foo.c
474c8240 859@end smallexample
aa26fa3a
TT
860This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
861@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
862
96a2c332 863You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
864@value{GDBN}'s non-warranty, by specifying @code{-silent}:
865
866@smallexample
867@value{GDBP} -silent
868@end smallexample
869
870@noindent
871You can further control how @value{GDBN} starts up by using command-line
872options. @value{GDBN} itself can remind you of the options available.
873
874@noindent
875Type
876
474c8240 877@smallexample
c906108c 878@value{GDBP} -help
474c8240 879@end smallexample
c906108c
SS
880
881@noindent
882to display all available options and briefly describe their use
883(@samp{@value{GDBP} -h} is a shorter equivalent).
884
885All options and command line arguments you give are processed
886in sequential order. The order makes a difference when the
887@samp{-x} option is used.
888
889
890@menu
c906108c
SS
891* File Options:: Choosing files
892* Mode Options:: Choosing modes
6fc08d32 893* Startup:: What @value{GDBN} does during startup
c906108c
SS
894@end menu
895
6d2ebf8b 896@node File Options
79a6e687 897@subsection Choosing Files
c906108c 898
2df3850c 899When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
900specifying an executable file and core file (or process ID). This is
901the same as if the arguments were specified by the @samp{-se} and
d52fb0e9 902@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the
19837790
MS
903first argument that does not have an associated option flag as
904equivalent to the @samp{-se} option followed by that argument; and the
905second argument that does not have an associated option flag, if any, as
906equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
907If the second argument begins with a decimal digit, @value{GDBN} will
908first attempt to attach to it as a process, and if that fails, attempt
909to open it as a corefile. If you have a corefile whose name begins with
b383017d 910a digit, you can prevent @value{GDBN} from treating it as a pid by
c1468174 911prefixing it with @file{./}, e.g.@: @file{./12345}.
7a292a7a
SS
912
913If @value{GDBN} has not been configured to included core file support,
914such as for most embedded targets, then it will complain about a second
915argument and ignore it.
c906108c
SS
916
917Many options have both long and short forms; both are shown in the
918following list. @value{GDBN} also recognizes the long forms if you truncate
919them, so long as enough of the option is present to be unambiguous.
920(If you prefer, you can flag option arguments with @samp{--} rather
921than @samp{-}, though we illustrate the more usual convention.)
922
d700128c
EZ
923@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
924@c way, both those who look for -foo and --foo in the index, will find
925@c it.
926
c906108c
SS
927@table @code
928@item -symbols @var{file}
929@itemx -s @var{file}
d700128c
EZ
930@cindex @code{--symbols}
931@cindex @code{-s}
c906108c
SS
932Read symbol table from file @var{file}.
933
934@item -exec @var{file}
935@itemx -e @var{file}
d700128c
EZ
936@cindex @code{--exec}
937@cindex @code{-e}
7a292a7a
SS
938Use file @var{file} as the executable file to execute when appropriate,
939and for examining pure data in conjunction with a core dump.
c906108c
SS
940
941@item -se @var{file}
d700128c 942@cindex @code{--se}
c906108c
SS
943Read symbol table from file @var{file} and use it as the executable
944file.
945
c906108c
SS
946@item -core @var{file}
947@itemx -c @var{file}
d700128c
EZ
948@cindex @code{--core}
949@cindex @code{-c}
b383017d 950Use file @var{file} as a core dump to examine.
c906108c 951
19837790
MS
952@item -pid @var{number}
953@itemx -p @var{number}
954@cindex @code{--pid}
955@cindex @code{-p}
956Connect to process ID @var{number}, as with the @code{attach} command.
c906108c
SS
957
958@item -command @var{file}
959@itemx -x @var{file}
d700128c
EZ
960@cindex @code{--command}
961@cindex @code{-x}
c906108c
SS
962Execute @value{GDBN} commands from file @var{file}. @xref{Command
963Files,, Command files}.
964
8a5a3c82
AS
965@item -eval-command @var{command}
966@itemx -ex @var{command}
967@cindex @code{--eval-command}
968@cindex @code{-ex}
969Execute a single @value{GDBN} command.
970
971This option may be used multiple times to call multiple commands. It may
972also be interleaved with @samp{-command} as required.
973
974@smallexample
975@value{GDBP} -ex 'target sim' -ex 'load' \
976 -x setbreakpoints -ex 'run' a.out
977@end smallexample
978
c906108c
SS
979@item -directory @var{directory}
980@itemx -d @var{directory}
d700128c
EZ
981@cindex @code{--directory}
982@cindex @code{-d}
4b505b12 983Add @var{directory} to the path to search for source and script files.
c906108c 984
c906108c
SS
985@item -r
986@itemx -readnow
d700128c
EZ
987@cindex @code{--readnow}
988@cindex @code{-r}
c906108c
SS
989Read each symbol file's entire symbol table immediately, rather than
990the default, which is to read it incrementally as it is needed.
991This makes startup slower, but makes future operations faster.
53a5351d 992
c906108c
SS
993@end table
994
6d2ebf8b 995@node Mode Options
79a6e687 996@subsection Choosing Modes
c906108c
SS
997
998You can run @value{GDBN} in various alternative modes---for example, in
999batch mode or quiet mode.
1000
1001@table @code
1002@item -nx
1003@itemx -n
d700128c
EZ
1004@cindex @code{--nx}
1005@cindex @code{-n}
96565e91 1006Do not execute commands found in any initialization files. Normally,
2df3850c
JM
1007@value{GDBN} executes the commands in these files after all the command
1008options and arguments have been processed. @xref{Command Files,,Command
79a6e687 1009Files}.
c906108c
SS
1010
1011@item -quiet
d700128c 1012@itemx -silent
c906108c 1013@itemx -q
d700128c
EZ
1014@cindex @code{--quiet}
1015@cindex @code{--silent}
1016@cindex @code{-q}
c906108c
SS
1017``Quiet''. Do not print the introductory and copyright messages. These
1018messages are also suppressed in batch mode.
1019
1020@item -batch
d700128c 1021@cindex @code{--batch}
c906108c
SS
1022Run in batch mode. Exit with status @code{0} after processing all the
1023command files specified with @samp{-x} (and all commands from
1024initialization files, if not inhibited with @samp{-n}). Exit with
1025nonzero status if an error occurs in executing the @value{GDBN} commands
1026in the command files.
1027
2df3850c
JM
1028Batch mode may be useful for running @value{GDBN} as a filter, for
1029example to download and run a program on another computer; in order to
1030make this more useful, the message
c906108c 1031
474c8240 1032@smallexample
c906108c 1033Program exited normally.
474c8240 1034@end smallexample
c906108c
SS
1035
1036@noindent
2df3850c
JM
1037(which is ordinarily issued whenever a program running under
1038@value{GDBN} control terminates) is not issued when running in batch
1039mode.
1040
1a088d06
AS
1041@item -batch-silent
1042@cindex @code{--batch-silent}
1043Run in batch mode exactly like @samp{-batch}, but totally silently. All
1044@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
1045unaffected). This is much quieter than @samp{-silent} and would be useless
1046for an interactive session.
1047
1048This is particularly useful when using targets that give @samp{Loading section}
1049messages, for example.
1050
1051Note that targets that give their output via @value{GDBN}, as opposed to
1052writing directly to @code{stdout}, will also be made silent.
1053
4b0ad762
AS
1054@item -return-child-result
1055@cindex @code{--return-child-result}
1056The return code from @value{GDBN} will be the return code from the child
1057process (the process being debugged), with the following exceptions:
1058
1059@itemize @bullet
1060@item
1061@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an
1062internal error. In this case the exit code is the same as it would have been
1063without @samp{-return-child-result}.
1064@item
1065The user quits with an explicit value. E.g., @samp{quit 1}.
1066@item
1067The child process never runs, or is not allowed to terminate, in which case
1068the exit code will be -1.
1069@end itemize
1070
1071This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
1072when @value{GDBN} is being used as a remote program loader or simulator
1073interface.
1074
2df3850c
JM
1075@item -nowindows
1076@itemx -nw
d700128c
EZ
1077@cindex @code{--nowindows}
1078@cindex @code{-nw}
2df3850c 1079``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 1080(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
1081interface. If no GUI is available, this option has no effect.
1082
1083@item -windows
1084@itemx -w
d700128c
EZ
1085@cindex @code{--windows}
1086@cindex @code{-w}
2df3850c
JM
1087If @value{GDBN} includes a GUI, then this option requires it to be
1088used if possible.
c906108c
SS
1089
1090@item -cd @var{directory}
d700128c 1091@cindex @code{--cd}
c906108c
SS
1092Run @value{GDBN} using @var{directory} as its working directory,
1093instead of the current directory.
1094
c906108c
SS
1095@item -fullname
1096@itemx -f
d700128c
EZ
1097@cindex @code{--fullname}
1098@cindex @code{-f}
7a292a7a
SS
1099@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1100subprocess. It tells @value{GDBN} to output the full file name and line
1101number in a standard, recognizable fashion each time a stack frame is
1102displayed (which includes each time your program stops). This
1103recognizable format looks like two @samp{\032} characters, followed by
1104the file name, line number and character position separated by colons,
1105and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1106@samp{\032} characters as a signal to display the source code for the
1107frame.
c906108c 1108
d700128c
EZ
1109@item -epoch
1110@cindex @code{--epoch}
1111The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1112@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1113routines so as to allow Epoch to display values of expressions in a
1114separate window.
1115
1116@item -annotate @var{level}
1117@cindex @code{--annotate}
1118This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1119effect is identical to using @samp{set annotate @var{level}}
086432e2
AC
1120(@pxref{Annotations}). The annotation @var{level} controls how much
1121information @value{GDBN} prints together with its prompt, values of
1122expressions, source lines, and other types of output. Level 0 is the
1123normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1124@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1125that control @value{GDBN}, and level 2 has been deprecated.
1126
265eeb58 1127The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2 1128(@pxref{GDB/MI}).
d700128c 1129
aa26fa3a
TT
1130@item --args
1131@cindex @code{--args}
1132Change interpretation of command line so that arguments following the
1133executable file are passed as command line arguments to the inferior.
1134This option stops option processing.
1135
2df3850c
JM
1136@item -baud @var{bps}
1137@itemx -b @var{bps}
d700128c
EZ
1138@cindex @code{--baud}
1139@cindex @code{-b}
c906108c
SS
1140Set the line speed (baud rate or bits per second) of any serial
1141interface used by @value{GDBN} for remote debugging.
c906108c 1142
f47b1503
AS
1143@item -l @var{timeout}
1144@cindex @code{-l}
1145Set the timeout (in seconds) of any communication used by @value{GDBN}
1146for remote debugging.
1147
c906108c 1148@item -tty @var{device}
d700128c
EZ
1149@itemx -t @var{device}
1150@cindex @code{--tty}
1151@cindex @code{-t}
c906108c
SS
1152Run using @var{device} for your program's standard input and output.
1153@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1154
53a5351d 1155@c resolve the situation of these eventually
c4555f82
SC
1156@item -tui
1157@cindex @code{--tui}
d0d5df6f
AC
1158Activate the @dfn{Text User Interface} when starting. The Text User
1159Interface manages several text windows on the terminal, showing
1160source, assembly, registers and @value{GDBN} command outputs
1161(@pxref{TUI, ,@value{GDBN} Text User Interface}). Alternatively, the
1162Text User Interface can be enabled by invoking the program
46ba6afa 1163@samp{@value{GDBTUI}}. Do not use this option if you run @value{GDBN} from
d0d5df6f 1164Emacs (@pxref{Emacs, ,Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1165
1166@c @item -xdb
d700128c 1167@c @cindex @code{--xdb}
53a5351d
JM
1168@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1169@c For information, see the file @file{xdb_trans.html}, which is usually
1170@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1171@c systems.
1172
d700128c
EZ
1173@item -interpreter @var{interp}
1174@cindex @code{--interpreter}
1175Use the interpreter @var{interp} for interface with the controlling
1176program or device. This option is meant to be set by programs which
94bbb2c0 1177communicate with @value{GDBN} using it as a back end.
21c294e6 1178@xref{Interpreters, , Command Interpreters}.
94bbb2c0 1179
da0f9dcd 1180@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
2fcf52f0 1181@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
6b5e8c01 1182The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The
6c74ac8b
AC
1183previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1184selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1185@sc{gdb/mi} interfaces are no longer supported.
d700128c
EZ
1186
1187@item -write
1188@cindex @code{--write}
1189Open the executable and core files for both reading and writing. This
1190is equivalent to the @samp{set write on} command inside @value{GDBN}
1191(@pxref{Patching}).
1192
1193@item -statistics
1194@cindex @code{--statistics}
1195This option causes @value{GDBN} to print statistics about time and
1196memory usage after it completes each command and returns to the prompt.
1197
1198@item -version
1199@cindex @code{--version}
1200This option causes @value{GDBN} to print its version number and
1201no-warranty blurb, and exit.
1202
c906108c
SS
1203@end table
1204
6fc08d32 1205@node Startup
79a6e687 1206@subsection What @value{GDBN} Does During Startup
6fc08d32
EZ
1207@cindex @value{GDBN} startup
1208
1209Here's the description of what @value{GDBN} does during session startup:
1210
1211@enumerate
1212@item
1213Sets up the command interpreter as specified by the command line
1214(@pxref{Mode Options, interpreter}).
1215
1216@item
1217@cindex init file
098b41a6
JG
1218Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was
1219used when building @value{GDBN}; @pxref{System-wide configuration,
1220 ,System-wide configuration and settings}) and executes all the commands in
1221that file.
1222
1223@item
1224Reads the init file (if any) in your home directory@footnote{On
6fc08d32
EZ
1225DOS/Windows systems, the home directory is the one pointed to by the
1226@code{HOME} environment variable.} and executes all the commands in
1227that file.
1228
1229@item
1230Processes command line options and operands.
1231
1232@item
1233Reads and executes the commands from init file (if any) in the current
119b882a
EZ
1234working directory. This is only done if the current directory is
1235different from your home directory. Thus, you can have more than one
1236init file, one generic in your home directory, and another, specific
1237to the program you are debugging, in the directory where you invoke
6fc08d32
EZ
1238@value{GDBN}.
1239
1240@item
1241Reads command files specified by the @samp{-x} option. @xref{Command
1242Files}, for more details about @value{GDBN} command files.
1243
1244@item
1245Reads the command history recorded in the @dfn{history file}.
d620b259 1246@xref{Command History}, for more details about the command history and the
6fc08d32
EZ
1247files where @value{GDBN} records it.
1248@end enumerate
1249
1250Init files use the same syntax as @dfn{command files} (@pxref{Command
1251Files}) and are processed by @value{GDBN} in the same way. The init
1252file in your home directory can set options (such as @samp{set
1253complaints}) that affect subsequent processing of command line options
1254and operands. Init files are not executed if you use the @samp{-nx}
79a6e687 1255option (@pxref{Mode Options, ,Choosing Modes}).
6fc08d32 1256
098b41a6
JG
1257To display the list of init files loaded by gdb at startup, you
1258can use @kbd{gdb --help}.
1259
6fc08d32
EZ
1260@cindex init file name
1261@cindex @file{.gdbinit}
119b882a 1262@cindex @file{gdb.ini}
8807d78b 1263The @value{GDBN} init files are normally called @file{.gdbinit}.
119b882a
EZ
1264The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to
1265the limitations of file names imposed by DOS filesystems. The Windows
1266ports of @value{GDBN} use the standard name, but if they find a
1267@file{gdb.ini} file, they warn you about that and suggest to rename
1268the file to the standard name.
1269
6fc08d32 1270
6d2ebf8b 1271@node Quitting GDB
c906108c
SS
1272@section Quitting @value{GDBN}
1273@cindex exiting @value{GDBN}
1274@cindex leaving @value{GDBN}
1275
1276@table @code
1277@kindex quit @r{[}@var{expression}@r{]}
41afff9a 1278@kindex q @r{(@code{quit})}
96a2c332
SS
1279@item quit @r{[}@var{expression}@r{]}
1280@itemx q
1281To exit @value{GDBN}, use the @code{quit} command (abbreviated
c8aa23ab 1282@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you
96a2c332
SS
1283do not supply @var{expression}, @value{GDBN} will terminate normally;
1284otherwise it will terminate using the result of @var{expression} as the
1285error code.
c906108c
SS
1286@end table
1287
1288@cindex interrupt
c8aa23ab 1289An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather
c906108c
SS
1290terminates the action of any @value{GDBN} command that is in progress and
1291returns to @value{GDBN} command level. It is safe to type the interrupt
1292character at any time because @value{GDBN} does not allow it to take effect
1293until a time when it is safe.
1294
c906108c
SS
1295If you have been using @value{GDBN} to control an attached process or
1296device, you can release it with the @code{detach} command
79a6e687 1297(@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 1298
6d2ebf8b 1299@node Shell Commands
79a6e687 1300@section Shell Commands
c906108c
SS
1301
1302If you need to execute occasional shell commands during your
1303debugging session, there is no need to leave or suspend @value{GDBN}; you can
1304just use the @code{shell} command.
1305
1306@table @code
1307@kindex shell
1308@cindex shell escape
1309@item shell @var{command string}
1310Invoke a standard shell to execute @var{command string}.
c906108c 1311If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1312shell to run. Otherwise @value{GDBN} uses the default shell
1313(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1314@end table
1315
1316The utility @code{make} is often needed in development environments.
1317You do not have to use the @code{shell} command for this purpose in
1318@value{GDBN}:
1319
1320@table @code
1321@kindex make
1322@cindex calling make
1323@item make @var{make-args}
1324Execute the @code{make} program with the specified
1325arguments. This is equivalent to @samp{shell make @var{make-args}}.
1326@end table
1327
79a6e687
BW
1328@node Logging Output
1329@section Logging Output
0fac0b41 1330@cindex logging @value{GDBN} output
9c16f35a 1331@cindex save @value{GDBN} output to a file
0fac0b41
DJ
1332
1333You may want to save the output of @value{GDBN} commands to a file.
1334There are several commands to control @value{GDBN}'s logging.
1335
1336@table @code
1337@kindex set logging
1338@item set logging on
1339Enable logging.
1340@item set logging off
1341Disable logging.
9c16f35a 1342@cindex logging file name
0fac0b41
DJ
1343@item set logging file @var{file}
1344Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1345@item set logging overwrite [on|off]
1346By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1347you want @code{set logging on} to overwrite the logfile instead.
1348@item set logging redirect [on|off]
1349By default, @value{GDBN} output will go to both the terminal and the logfile.
1350Set @code{redirect} if you want output to go only to the log file.
1351@kindex show logging
1352@item show logging
1353Show the current values of the logging settings.
1354@end table
1355
6d2ebf8b 1356@node Commands
c906108c
SS
1357@chapter @value{GDBN} Commands
1358
1359You can abbreviate a @value{GDBN} command to the first few letters of the command
1360name, if that abbreviation is unambiguous; and you can repeat certain
1361@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1362key to get @value{GDBN} to fill out the rest of a word in a command (or to
1363show you the alternatives available, if there is more than one possibility).
1364
1365@menu
1366* Command Syntax:: How to give commands to @value{GDBN}
1367* Completion:: Command completion
1368* Help:: How to ask @value{GDBN} for help
1369@end menu
1370
6d2ebf8b 1371@node Command Syntax
79a6e687 1372@section Command Syntax
c906108c
SS
1373
1374A @value{GDBN} command is a single line of input. There is no limit on
1375how long it can be. It starts with a command name, which is followed by
1376arguments whose meaning depends on the command name. For example, the
1377command @code{step} accepts an argument which is the number of times to
1378step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1379with no arguments. Some commands do not allow any arguments.
c906108c
SS
1380
1381@cindex abbreviation
1382@value{GDBN} command names may always be truncated if that abbreviation is
1383unambiguous. Other possible command abbreviations are listed in the
1384documentation for individual commands. In some cases, even ambiguous
1385abbreviations are allowed; for example, @code{s} is specially defined as
1386equivalent to @code{step} even though there are other commands whose
1387names start with @code{s}. You can test abbreviations by using them as
1388arguments to the @code{help} command.
1389
1390@cindex repeating commands
41afff9a 1391@kindex RET @r{(repeat last command)}
c906108c 1392A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1393repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1394will not repeat this way; these are commands whose unintentional
1395repetition might cause trouble and which you are unlikely to want to
c45da7e6
EZ
1396repeat. User-defined commands can disable this feature; see
1397@ref{Define, dont-repeat}.
c906108c
SS
1398
1399The @code{list} and @code{x} commands, when you repeat them with
1400@key{RET}, construct new arguments rather than repeating
1401exactly as typed. This permits easy scanning of source or memory.
1402
1403@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1404output, in a way similar to the common utility @code{more}
79a6e687 1405(@pxref{Screen Size,,Screen Size}). Since it is easy to press one
c906108c
SS
1406@key{RET} too many in this situation, @value{GDBN} disables command
1407repetition after any command that generates this sort of display.
1408
41afff9a 1409@kindex # @r{(a comment)}
c906108c
SS
1410@cindex comment
1411Any text from a @kbd{#} to the end of the line is a comment; it does
1412nothing. This is useful mainly in command files (@pxref{Command
79a6e687 1413Files,,Command Files}).
c906108c 1414
88118b3a 1415@cindex repeating command sequences
c8aa23ab
EZ
1416@kindex Ctrl-o @r{(operate-and-get-next)}
1417The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of
7f9087cb 1418commands. This command accepts the current line, like @key{RET}, and
88118b3a
TT
1419then fetches the next line relative to the current line from the history
1420for editing.
1421
6d2ebf8b 1422@node Completion
79a6e687 1423@section Command Completion
c906108c
SS
1424
1425@cindex completion
1426@cindex word completion
1427@value{GDBN} can fill in the rest of a word in a command for you, if there is
1428only one possibility; it can also show you what the valid possibilities
1429are for the next word in a command, at any time. This works for @value{GDBN}
1430commands, @value{GDBN} subcommands, and the names of symbols in your program.
1431
1432Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1433of a word. If there is only one possibility, @value{GDBN} fills in the
1434word, and waits for you to finish the command (or press @key{RET} to
1435enter it). For example, if you type
1436
1437@c FIXME "@key" does not distinguish its argument sufficiently to permit
1438@c complete accuracy in these examples; space introduced for clarity.
1439@c If texinfo enhancements make it unnecessary, it would be nice to
1440@c replace " @key" by "@key" in the following...
474c8240 1441@smallexample
c906108c 1442(@value{GDBP}) info bre @key{TAB}
474c8240 1443@end smallexample
c906108c
SS
1444
1445@noindent
1446@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1447the only @code{info} subcommand beginning with @samp{bre}:
1448
474c8240 1449@smallexample
c906108c 1450(@value{GDBP}) info breakpoints
474c8240 1451@end smallexample
c906108c
SS
1452
1453@noindent
1454You can either press @key{RET} at this point, to run the @code{info
1455breakpoints} command, or backspace and enter something else, if
1456@samp{breakpoints} does not look like the command you expected. (If you
1457were sure you wanted @code{info breakpoints} in the first place, you
1458might as well just type @key{RET} immediately after @samp{info bre},
1459to exploit command abbreviations rather than command completion).
1460
1461If there is more than one possibility for the next word when you press
1462@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1463characters and try again, or just press @key{TAB} a second time;
1464@value{GDBN} displays all the possible completions for that word. For
1465example, you might want to set a breakpoint on a subroutine whose name
1466begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1467just sounds the bell. Typing @key{TAB} again displays all the
1468function names in your program that begin with those characters, for
1469example:
1470
474c8240 1471@smallexample
c906108c
SS
1472(@value{GDBP}) b make_ @key{TAB}
1473@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1474make_a_section_from_file make_environ
1475make_abs_section make_function_type
1476make_blockvector make_pointer_type
1477make_cleanup make_reference_type
c906108c
SS
1478make_command make_symbol_completion_list
1479(@value{GDBP}) b make_
474c8240 1480@end smallexample
c906108c
SS
1481
1482@noindent
1483After displaying the available possibilities, @value{GDBN} copies your
1484partial input (@samp{b make_} in the example) so you can finish the
1485command.
1486
1487If you just want to see the list of alternatives in the first place, you
b37052ae 1488can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1489means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1490key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1491one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1492
1493@cindex quotes in commands
1494@cindex completion of quoted strings
1495Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1496parentheses or other characters that @value{GDBN} normally excludes from
1497its notion of a word. To permit word completion to work in this
1498situation, you may enclose words in @code{'} (single quote marks) in
1499@value{GDBN} commands.
c906108c 1500
c906108c 1501The most likely situation where you might need this is in typing the
b37052ae
EZ
1502name of a C@t{++} function. This is because C@t{++} allows function
1503overloading (multiple definitions of the same function, distinguished
1504by argument type). For example, when you want to set a breakpoint you
1505may need to distinguish whether you mean the version of @code{name}
1506that takes an @code{int} parameter, @code{name(int)}, or the version
1507that takes a @code{float} parameter, @code{name(float)}. To use the
1508word-completion facilities in this situation, type a single quote
1509@code{'} at the beginning of the function name. This alerts
1510@value{GDBN} that it may need to consider more information than usual
1511when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c 1512
474c8240 1513@smallexample
96a2c332 1514(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1515bubble(double,double) bubble(int,int)
1516(@value{GDBP}) b 'bubble(
474c8240 1517@end smallexample
c906108c
SS
1518
1519In some cases, @value{GDBN} can tell that completing a name requires using
1520quotes. When this happens, @value{GDBN} inserts the quote for you (while
1521completing as much as it can) if you do not type the quote in the first
1522place:
1523
474c8240 1524@smallexample
c906108c
SS
1525(@value{GDBP}) b bub @key{TAB}
1526@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1527(@value{GDBP}) b 'bubble(
474c8240 1528@end smallexample
c906108c
SS
1529
1530@noindent
1531In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1532you have not yet started typing the argument list when you ask for
1533completion on an overloaded symbol.
1534
79a6e687
BW
1535For more information about overloaded functions, see @ref{C Plus Plus
1536Expressions, ,C@t{++} Expressions}. You can use the command @code{set
c906108c 1537overload-resolution off} to disable overload resolution;
79a6e687 1538see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}.
c906108c 1539
65d12d83
TT
1540@cindex completion of structure field names
1541@cindex structure field name completion
1542@cindex completion of union field names
1543@cindex union field name completion
1544When completing in an expression which looks up a field in a
1545structure, @value{GDBN} also tries@footnote{The completer can be
1546confused by certain kinds of invalid expressions. Also, it only
1547examines the static type of the expression, not the dynamic type.} to
1548limit completions to the field names available in the type of the
1549left-hand-side:
1550
1551@smallexample
1552(@value{GDBP}) p gdb_stdout.@kbd{M-?}
1553magic to_delete to_fputs to_put to_rewind
1554to_data to_flush to_isatty to_read to_write
1555@end smallexample
1556
1557@noindent
1558This is because the @code{gdb_stdout} is a variable of the type
1559@code{struct ui_file} that is defined in @value{GDBN} sources as
1560follows:
1561
1562@smallexample
1563struct ui_file
1564@{
1565 int *magic;
1566 ui_file_flush_ftype *to_flush;
1567 ui_file_write_ftype *to_write;
1568 ui_file_fputs_ftype *to_fputs;
1569 ui_file_read_ftype *to_read;
1570 ui_file_delete_ftype *to_delete;
1571 ui_file_isatty_ftype *to_isatty;
1572 ui_file_rewind_ftype *to_rewind;
1573 ui_file_put_ftype *to_put;
1574 void *to_data;
1575@}
1576@end smallexample
1577
c906108c 1578
6d2ebf8b 1579@node Help
79a6e687 1580@section Getting Help
c906108c
SS
1581@cindex online documentation
1582@kindex help
1583
5d161b24 1584You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1585using the command @code{help}.
1586
1587@table @code
41afff9a 1588@kindex h @r{(@code{help})}
c906108c
SS
1589@item help
1590@itemx h
1591You can use @code{help} (abbreviated @code{h}) with no arguments to
1592display a short list of named classes of commands:
1593
1594@smallexample
1595(@value{GDBP}) help
1596List of classes of commands:
1597
2df3850c 1598aliases -- Aliases of other commands
c906108c 1599breakpoints -- Making program stop at certain points
2df3850c 1600data -- Examining data
c906108c 1601files -- Specifying and examining files
2df3850c
JM
1602internals -- Maintenance commands
1603obscure -- Obscure features
1604running -- Running the program
1605stack -- Examining the stack
c906108c
SS
1606status -- Status inquiries
1607support -- Support facilities
12c27660 1608tracepoints -- Tracing of program execution without
96a2c332 1609 stopping the program
c906108c 1610user-defined -- User-defined commands
c906108c 1611
5d161b24 1612Type "help" followed by a class name for a list of
c906108c 1613commands in that class.
5d161b24 1614Type "help" followed by command name for full
c906108c
SS
1615documentation.
1616Command name abbreviations are allowed if unambiguous.
1617(@value{GDBP})
1618@end smallexample
96a2c332 1619@c the above line break eliminates huge line overfull...
c906108c
SS
1620
1621@item help @var{class}
1622Using one of the general help classes as an argument, you can get a
1623list of the individual commands in that class. For example, here is the
1624help display for the class @code{status}:
1625
1626@smallexample
1627(@value{GDBP}) help status
1628Status inquiries.
1629
1630List of commands:
1631
1632@c Line break in "show" line falsifies real output, but needed
1633@c to fit in smallbook page size.
2df3850c 1634info -- Generic command for showing things
12c27660 1635 about the program being debugged
2df3850c 1636show -- Generic command for showing things
12c27660 1637 about the debugger
c906108c 1638
5d161b24 1639Type "help" followed by command name for full
c906108c
SS
1640documentation.
1641Command name abbreviations are allowed if unambiguous.
1642(@value{GDBP})
1643@end smallexample
1644
1645@item help @var{command}
1646With a command name as @code{help} argument, @value{GDBN} displays a
1647short paragraph on how to use that command.
1648
6837a0a2
DB
1649@kindex apropos
1650@item apropos @var{args}
09d4efe1 1651The @code{apropos} command searches through all of the @value{GDBN}
6837a0a2 1652commands, and their documentation, for the regular expression specified in
99e008fe 1653@var{args}. It prints out all matches found. For example:
6837a0a2
DB
1654
1655@smallexample
1656apropos reload
1657@end smallexample
1658
b37052ae
EZ
1659@noindent
1660results in:
6837a0a2
DB
1661
1662@smallexample
6d2ebf8b
SS
1663@c @group
1664set symbol-reloading -- Set dynamic symbol table reloading
12c27660 1665 multiple times in one run
6d2ebf8b 1666show symbol-reloading -- Show dynamic symbol table reloading
12c27660 1667 multiple times in one run
6d2ebf8b 1668@c @end group
6837a0a2
DB
1669@end smallexample
1670
c906108c
SS
1671@kindex complete
1672@item complete @var{args}
1673The @code{complete @var{args}} command lists all the possible completions
1674for the beginning of a command. Use @var{args} to specify the beginning of the
1675command you want completed. For example:
1676
1677@smallexample
1678complete i
1679@end smallexample
1680
1681@noindent results in:
1682
1683@smallexample
1684@group
2df3850c
JM
1685if
1686ignore
c906108c
SS
1687info
1688inspect
c906108c
SS
1689@end group
1690@end smallexample
1691
1692@noindent This is intended for use by @sc{gnu} Emacs.
1693@end table
1694
1695In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1696and @code{show} to inquire about the state of your program, or the state
1697of @value{GDBN} itself. Each command supports many topics of inquiry; this
1698manual introduces each of them in the appropriate context. The listings
1699under @code{info} and under @code{show} in the Index point to
1700all the sub-commands. @xref{Index}.
1701
1702@c @group
1703@table @code
1704@kindex info
41afff9a 1705@kindex i @r{(@code{info})}
c906108c
SS
1706@item info
1707This command (abbreviated @code{i}) is for describing the state of your
cda4ce5a 1708program. For example, you can show the arguments passed to a function
c906108c
SS
1709with @code{info args}, list the registers currently in use with @code{info
1710registers}, or list the breakpoints you have set with @code{info breakpoints}.
1711You can get a complete list of the @code{info} sub-commands with
1712@w{@code{help info}}.
1713
1714@kindex set
1715@item set
5d161b24 1716You can assign the result of an expression to an environment variable with
c906108c
SS
1717@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1718@code{set prompt $}.
1719
1720@kindex show
1721@item show
5d161b24 1722In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1723@value{GDBN} itself.
1724You can change most of the things you can @code{show}, by using the
1725related command @code{set}; for example, you can control what number
1726system is used for displays with @code{set radix}, or simply inquire
1727which is currently in use with @code{show radix}.
1728
1729@kindex info set
1730To display all the settable parameters and their current
1731values, you can use @code{show} with no arguments; you may also use
1732@code{info set}. Both commands produce the same display.
1733@c FIXME: "info set" violates the rule that "info" is for state of
1734@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1735@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1736@end table
1737@c @end group
1738
1739Here are three miscellaneous @code{show} subcommands, all of which are
1740exceptional in lacking corresponding @code{set} commands:
1741
1742@table @code
1743@kindex show version
9c16f35a 1744@cindex @value{GDBN} version number
c906108c
SS
1745@item show version
1746Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1747information in @value{GDBN} bug-reports. If multiple versions of
1748@value{GDBN} are in use at your site, you may need to determine which
1749version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1750commands are introduced, and old ones may wither away. Also, many
1751system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1752variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1753The version number is the same as the one announced when you start
1754@value{GDBN}.
c906108c
SS
1755
1756@kindex show copying
09d4efe1 1757@kindex info copying
9c16f35a 1758@cindex display @value{GDBN} copyright
c906108c 1759@item show copying
09d4efe1 1760@itemx info copying
c906108c
SS
1761Display information about permission for copying @value{GDBN}.
1762
1763@kindex show warranty
09d4efe1 1764@kindex info warranty
c906108c 1765@item show warranty
09d4efe1 1766@itemx info warranty
2df3850c 1767Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1768if your version of @value{GDBN} comes with one.
2df3850c 1769
c906108c
SS
1770@end table
1771
6d2ebf8b 1772@node Running
c906108c
SS
1773@chapter Running Programs Under @value{GDBN}
1774
1775When you run a program under @value{GDBN}, you must first generate
1776debugging information when you compile it.
7a292a7a
SS
1777
1778You may start @value{GDBN} with its arguments, if any, in an environment
1779of your choice. If you are doing native debugging, you may redirect
1780your program's input and output, debug an already running process, or
1781kill a child process.
c906108c
SS
1782
1783@menu
1784* Compilation:: Compiling for debugging
1785* Starting:: Starting your program
c906108c
SS
1786* Arguments:: Your program's arguments
1787* Environment:: Your program's environment
c906108c
SS
1788
1789* Working Directory:: Your program's working directory
1790* Input/Output:: Your program's input and output
1791* Attach:: Debugging an already-running process
1792* Kill Process:: Killing the child process
c906108c 1793
b77209e0 1794* Inferiors:: Debugging multiple inferiors
c906108c
SS
1795* Threads:: Debugging programs with multiple threads
1796* Processes:: Debugging programs with multiple processes
5c95884b 1797* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later
c906108c
SS
1798@end menu
1799
6d2ebf8b 1800@node Compilation
79a6e687 1801@section Compiling for Debugging
c906108c
SS
1802
1803In order to debug a program effectively, you need to generate
1804debugging information when you compile it. This debugging information
1805is stored in the object file; it describes the data type of each
1806variable or function and the correspondence between source line numbers
1807and addresses in the executable code.
1808
1809To request debugging information, specify the @samp{-g} option when you run
1810the compiler.
1811
514c4d71 1812Programs that are to be shipped to your customers are compiled with
edb3359d 1813optimizations, using the @samp{-O} compiler option. However, some
514c4d71
EZ
1814compilers are unable to handle the @samp{-g} and @samp{-O} options
1815together. Using those compilers, you cannot generate optimized
c906108c
SS
1816executables containing debugging information.
1817
514c4d71 1818@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or
53a5351d
JM
1819without @samp{-O}, making it possible to debug optimized code. We
1820recommend that you @emph{always} use @samp{-g} whenever you compile a
1821program. You may think your program is correct, but there is no sense
edb3359d 1822in pushing your luck. For more information, see @ref{Optimized Code}.
c906108c
SS
1823
1824Older versions of the @sc{gnu} C compiler permitted a variant option
1825@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1826format; if your @sc{gnu} C compiler has this option, do not use it.
1827
514c4d71
EZ
1828@value{GDBN} knows about preprocessor macros and can show you their
1829expansion (@pxref{Macros}). Most compilers do not include information
1830about preprocessor macros in the debugging information if you specify
1831the @option{-g} flag alone, because this information is rather large.
1832Version 3.1 and later of @value{NGCC}, the @sc{gnu} C compiler,
1833provides macro information if you specify the options
1834@option{-gdwarf-2} and @option{-g3}; the former option requests
1835debugging information in the Dwarf 2 format, and the latter requests
1836``extra information''. In the future, we hope to find more compact
1837ways to represent macro information, so that it can be included with
1838@option{-g} alone.
1839
c906108c 1840@need 2000
6d2ebf8b 1841@node Starting
79a6e687 1842@section Starting your Program
c906108c
SS
1843@cindex starting
1844@cindex running
1845
1846@table @code
1847@kindex run
41afff9a 1848@kindex r @r{(@code{run})}
c906108c
SS
1849@item run
1850@itemx r
7a292a7a
SS
1851Use the @code{run} command to start your program under @value{GDBN}.
1852You must first specify the program name (except on VxWorks) with an
1853argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1854@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
79a6e687 1855(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
1856
1857@end table
1858
c906108c
SS
1859If you are running your program in an execution environment that
1860supports processes, @code{run} creates an inferior process and makes
8edfe269
DJ
1861that process run your program. In some environments without processes,
1862@code{run} jumps to the start of your program. Other targets,
1863like @samp{remote}, are always running. If you get an error
1864message like this one:
1865
1866@smallexample
1867The "remote" target does not support "run".
1868Try "help target" or "continue".
1869@end smallexample
1870
1871@noindent
1872then use @code{continue} to run your program. You may need @code{load}
1873first (@pxref{load}).
c906108c
SS
1874
1875The execution of a program is affected by certain information it
1876receives from its superior. @value{GDBN} provides ways to specify this
1877information, which you must do @emph{before} starting your program. (You
1878can change it after starting your program, but such changes only affect
1879your program the next time you start it.) This information may be
1880divided into four categories:
1881
1882@table @asis
1883@item The @emph{arguments.}
1884Specify the arguments to give your program as the arguments of the
1885@code{run} command. If a shell is available on your target, the shell
1886is used to pass the arguments, so that you may use normal conventions
1887(such as wildcard expansion or variable substitution) in describing
1888the arguments.
1889In Unix systems, you can control which shell is used with the
1890@code{SHELL} environment variable.
79a6e687 1891@xref{Arguments, ,Your Program's Arguments}.
c906108c
SS
1892
1893@item The @emph{environment.}
1894Your program normally inherits its environment from @value{GDBN}, but you can
1895use the @value{GDBN} commands @code{set environment} and @code{unset
1896environment} to change parts of the environment that affect
79a6e687 1897your program. @xref{Environment, ,Your Program's Environment}.
c906108c
SS
1898
1899@item The @emph{working directory.}
1900Your program inherits its working directory from @value{GDBN}. You can set
1901the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
79a6e687 1902@xref{Working Directory, ,Your Program's Working Directory}.
c906108c
SS
1903
1904@item The @emph{standard input and output.}
1905Your program normally uses the same device for standard input and
1906standard output as @value{GDBN} is using. You can redirect input and output
1907in the @code{run} command line, or you can use the @code{tty} command to
1908set a different device for your program.
79a6e687 1909@xref{Input/Output, ,Your Program's Input and Output}.
c906108c
SS
1910
1911@cindex pipes
1912@emph{Warning:} While input and output redirection work, you cannot use
1913pipes to pass the output of the program you are debugging to another
1914program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1915wrong program.
1916@end table
c906108c
SS
1917
1918When you issue the @code{run} command, your program begins to execute
79a6e687 1919immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion
c906108c
SS
1920of how to arrange for your program to stop. Once your program has
1921stopped, you may call functions in your program, using the @code{print}
1922or @code{call} commands. @xref{Data, ,Examining Data}.
1923
1924If the modification time of your symbol file has changed since the last
1925time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1926table, and reads it again. When it does this, @value{GDBN} tries to retain
1927your current breakpoints.
1928
4e8b0763
JB
1929@table @code
1930@kindex start
1931@item start
1932@cindex run to main procedure
1933The name of the main procedure can vary from language to language.
1934With C or C@t{++}, the main procedure name is always @code{main}, but
1935other languages such as Ada do not require a specific name for their
1936main procedure. The debugger provides a convenient way to start the
1937execution of the program and to stop at the beginning of the main
1938procedure, depending on the language used.
1939
1940The @samp{start} command does the equivalent of setting a temporary
1941breakpoint at the beginning of the main procedure and then invoking
1942the @samp{run} command.
1943
f018e82f
EZ
1944@cindex elaboration phase
1945Some programs contain an @dfn{elaboration} phase where some startup code is
1946executed before the main procedure is called. This depends on the
1947languages used to write your program. In C@t{++}, for instance,
4e8b0763
JB
1948constructors for static and global objects are executed before
1949@code{main} is called. It is therefore possible that the debugger stops
1950before reaching the main procedure. However, the temporary breakpoint
1951will remain to halt execution.
1952
1953Specify the arguments to give to your program as arguments to the
1954@samp{start} command. These arguments will be given verbatim to the
1955underlying @samp{run} command. Note that the same arguments will be
1956reused if no argument is provided during subsequent calls to
1957@samp{start} or @samp{run}.
1958
1959It is sometimes necessary to debug the program during elaboration. In
1960these cases, using the @code{start} command would stop the execution of
1961your program too late, as the program would have already completed the
1962elaboration phase. Under these circumstances, insert breakpoints in your
1963elaboration code before running your program.
ccd213ac
DJ
1964
1965@kindex set exec-wrapper
1966@item set exec-wrapper @var{wrapper}
1967@itemx show exec-wrapper
1968@itemx unset exec-wrapper
1969When @samp{exec-wrapper} is set, the specified wrapper is used to
1970launch programs for debugging. @value{GDBN} starts your program
1971with a shell command of the form @kbd{exec @var{wrapper}
1972@var{program}}. Quoting is added to @var{program} and its
1973arguments, but not to @var{wrapper}, so you should add quotes if
1974appropriate for your shell. The wrapper runs until it executes
1975your program, and then @value{GDBN} takes control.
1976
1977You can use any program that eventually calls @code{execve} with
1978its arguments as a wrapper. Several standard Unix utilities do
1979this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
1980with @code{exec "$@@"} will also work.
1981
1982For example, you can use @code{env} to pass an environment variable to
1983the debugged program, without setting the variable in your shell's
1984environment:
1985
1986@smallexample
1987(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so'
1988(@value{GDBP}) run
1989@end smallexample
1990
1991This command is available when debugging locally on most targets, excluding
1992@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
1993
10568435
JK
1994@kindex set disable-randomization
1995@item set disable-randomization
1996@itemx set disable-randomization on
1997This option (enabled by default in @value{GDBN}) will turn off the native
1998randomization of the virtual address space of the started program. This option
1999is useful for multiple debugging sessions to make the execution better
2000reproducible and memory addresses reusable across debugging sessions.
2001
2002This feature is implemented only on @sc{gnu}/Linux. You can get the same
2003behavior using
2004
2005@smallexample
2006(@value{GDBP}) set exec-wrapper setarch `uname -m` -R
2007@end smallexample
2008
2009@item set disable-randomization off
2010Leave the behavior of the started executable unchanged. Some bugs rear their
2011ugly heads only when the program is loaded at certain addresses. If your bug
2012disappears when you run the program under @value{GDBN}, that might be because
2013@value{GDBN} by default disables the address randomization on platforms, such
2014as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set
2015disable-randomization off} to try to reproduce such elusive bugs.
2016
2017The virtual address space randomization is implemented only on @sc{gnu}/Linux.
2018It protects the programs against some kinds of security attacks. In these
2019cases the attacker needs to know the exact location of a concrete executable
2020code. Randomizing its location makes it impossible to inject jumps misusing
2021a code at its expected addresses.
2022
2023Prelinking shared libraries provides a startup performance advantage but it
2024makes addresses in these libraries predictable for privileged processes by
2025having just unprivileged access at the target system. Reading the shared
2026library binary gives enough information for assembling the malicious code
2027misusing it. Still even a prelinked shared library can get loaded at a new
2028random address just requiring the regular relocation process during the
2029startup. Shared libraries not already prelinked are always loaded at
2030a randomly chosen address.
2031
2032Position independent executables (PIE) contain position independent code
2033similar to the shared libraries and therefore such executables get loaded at
2034a randomly chosen address upon startup. PIE executables always load even
2035already prelinked shared libraries at a random address. You can build such
2036executable using @command{gcc -fPIE -pie}.
2037
2038Heap (malloc storage), stack and custom mmap areas are always placed randomly
2039(as long as the randomization is enabled).
2040
2041@item show disable-randomization
2042Show the current setting of the explicit disable of the native randomization of
2043the virtual address space of the started program.
2044
4e8b0763
JB
2045@end table
2046
6d2ebf8b 2047@node Arguments
79a6e687 2048@section Your Program's Arguments
c906108c
SS
2049
2050@cindex arguments (to your program)
2051The arguments to your program can be specified by the arguments of the
5d161b24 2052@code{run} command.
c906108c
SS
2053They are passed to a shell, which expands wildcard characters and
2054performs redirection of I/O, and thence to your program. Your
2055@code{SHELL} environment variable (if it exists) specifies what shell
2056@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
2057the default shell (@file{/bin/sh} on Unix).
2058
2059On non-Unix systems, the program is usually invoked directly by
2060@value{GDBN}, which emulates I/O redirection via the appropriate system
2061calls, and the wildcard characters are expanded by the startup code of
2062the program, not by the shell.
c906108c
SS
2063
2064@code{run} with no arguments uses the same arguments used by the previous
2065@code{run}, or those set by the @code{set args} command.
2066
c906108c 2067@table @code
41afff9a 2068@kindex set args
c906108c
SS
2069@item set args
2070Specify the arguments to be used the next time your program is run. If
2071@code{set args} has no arguments, @code{run} executes your program
2072with no arguments. Once you have run your program with arguments,
2073using @code{set args} before the next @code{run} is the only way to run
2074it again without arguments.
2075
2076@kindex show args
2077@item show args
2078Show the arguments to give your program when it is started.
2079@end table
2080
6d2ebf8b 2081@node Environment
79a6e687 2082@section Your Program's Environment
c906108c
SS
2083
2084@cindex environment (of your program)
2085The @dfn{environment} consists of a set of environment variables and
2086their values. Environment variables conventionally record such things as
2087your user name, your home directory, your terminal type, and your search
2088path for programs to run. Usually you set up environment variables with
2089the shell and they are inherited by all the other programs you run. When
2090debugging, it can be useful to try running your program with a modified
2091environment without having to start @value{GDBN} over again.
2092
2093@table @code
2094@kindex path
2095@item path @var{directory}
2096Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
2097(the search path for executables) that will be passed to your program.
2098The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
2099You may specify several directory names, separated by whitespace or by a
2100system-dependent separator character (@samp{:} on Unix, @samp{;} on
2101MS-DOS and MS-Windows). If @var{directory} is already in the path, it
2102is moved to the front, so it is searched sooner.
c906108c
SS
2103
2104You can use the string @samp{$cwd} to refer to whatever is the current
2105working directory at the time @value{GDBN} searches the path. If you
2106use @samp{.} instead, it refers to the directory where you executed the
2107@code{path} command. @value{GDBN} replaces @samp{.} in the
2108@var{directory} argument (with the current path) before adding
2109@var{directory} to the search path.
2110@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
2111@c document that, since repeating it would be a no-op.
2112
2113@kindex show paths
2114@item show paths
2115Display the list of search paths for executables (the @code{PATH}
2116environment variable).
2117
2118@kindex show environment
2119@item show environment @r{[}@var{varname}@r{]}
2120Print the value of environment variable @var{varname} to be given to
2121your program when it starts. If you do not supply @var{varname},
2122print the names and values of all environment variables to be given to
2123your program. You can abbreviate @code{environment} as @code{env}.
2124
2125@kindex set environment
53a5351d 2126@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
2127Set environment variable @var{varname} to @var{value}. The value
2128changes for your program only, not for @value{GDBN} itself. @var{value} may
2129be any string; the values of environment variables are just strings, and
2130any interpretation is supplied by your program itself. The @var{value}
2131parameter is optional; if it is eliminated, the variable is set to a
2132null value.
2133@c "any string" here does not include leading, trailing
2134@c blanks. Gnu asks: does anyone care?
2135
2136For example, this command:
2137
474c8240 2138@smallexample
c906108c 2139set env USER = foo
474c8240 2140@end smallexample
c906108c
SS
2141
2142@noindent
d4f3574e 2143tells the debugged program, when subsequently run, that its user is named
c906108c
SS
2144@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
2145are not actually required.)
2146
2147@kindex unset environment
2148@item unset environment @var{varname}
2149Remove variable @var{varname} from the environment to be passed to your
2150program. This is different from @samp{set env @var{varname} =};
2151@code{unset environment} removes the variable from the environment,
2152rather than assigning it an empty value.
2153@end table
2154
d4f3574e
SS
2155@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
2156the shell indicated
c906108c
SS
2157by your @code{SHELL} environment variable if it exists (or
2158@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
2159that runs an initialization file---such as @file{.cshrc} for C-shell, or
2160@file{.bashrc} for BASH---any variables you set in that file affect
2161your program. You may wish to move setting of environment variables to
2162files that are only run when you sign on, such as @file{.login} or
2163@file{.profile}.
2164
6d2ebf8b 2165@node Working Directory
79a6e687 2166@section Your Program's Working Directory
c906108c
SS
2167
2168@cindex working directory (of your program)
2169Each time you start your program with @code{run}, it inherits its
2170working directory from the current working directory of @value{GDBN}.
2171The @value{GDBN} working directory is initially whatever it inherited
2172from its parent process (typically the shell), but you can specify a new
2173working directory in @value{GDBN} with the @code{cd} command.
2174
2175The @value{GDBN} working directory also serves as a default for the commands
2176that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
79a6e687 2177Specify Files}.
c906108c
SS
2178
2179@table @code
2180@kindex cd
721c2651 2181@cindex change working directory
c906108c
SS
2182@item cd @var{directory}
2183Set the @value{GDBN} working directory to @var{directory}.
2184
2185@kindex pwd
2186@item pwd
2187Print the @value{GDBN} working directory.
2188@end table
2189
60bf7e09
EZ
2190It is generally impossible to find the current working directory of
2191the process being debugged (since a program can change its directory
2192during its run). If you work on a system where @value{GDBN} is
2193configured with the @file{/proc} support, you can use the @code{info
2194proc} command (@pxref{SVR4 Process Information}) to find out the
2195current working directory of the debuggee.
2196
6d2ebf8b 2197@node Input/Output
79a6e687 2198@section Your Program's Input and Output
c906108c
SS
2199
2200@cindex redirection
2201@cindex i/o
2202@cindex terminal
2203By default, the program you run under @value{GDBN} does input and output to
5d161b24 2204the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
2205to its own terminal modes to interact with you, but it records the terminal
2206modes your program was using and switches back to them when you continue
2207running your program.
2208
2209@table @code
2210@kindex info terminal
2211@item info terminal
2212Displays information recorded by @value{GDBN} about the terminal modes your
2213program is using.
2214@end table
2215
2216You can redirect your program's input and/or output using shell
2217redirection with the @code{run} command. For example,
2218
474c8240 2219@smallexample
c906108c 2220run > outfile
474c8240 2221@end smallexample
c906108c
SS
2222
2223@noindent
2224starts your program, diverting its output to the file @file{outfile}.
2225
2226@kindex tty
2227@cindex controlling terminal
2228Another way to specify where your program should do input and output is
2229with the @code{tty} command. This command accepts a file name as
2230argument, and causes this file to be the default for future @code{run}
2231commands. It also resets the controlling terminal for the child
2232process, for future @code{run} commands. For example,
2233
474c8240 2234@smallexample
c906108c 2235tty /dev/ttyb
474c8240 2236@end smallexample
c906108c
SS
2237
2238@noindent
2239directs that processes started with subsequent @code{run} commands
2240default to do input and output on the terminal @file{/dev/ttyb} and have
2241that as their controlling terminal.
2242
2243An explicit redirection in @code{run} overrides the @code{tty} command's
2244effect on the input/output device, but not its effect on the controlling
2245terminal.
2246
2247When you use the @code{tty} command or redirect input in the @code{run}
2248command, only the input @emph{for your program} is affected. The input
3cb3b8df
BR
2249for @value{GDBN} still comes from your terminal. @code{tty} is an alias
2250for @code{set inferior-tty}.
2251
2252@cindex inferior tty
2253@cindex set inferior controlling terminal
2254You can use the @code{show inferior-tty} command to tell @value{GDBN} to
2255display the name of the terminal that will be used for future runs of your
2256program.
2257
2258@table @code
2259@item set inferior-tty /dev/ttyb
2260@kindex set inferior-tty
2261Set the tty for the program being debugged to /dev/ttyb.
2262
2263@item show inferior-tty
2264@kindex show inferior-tty
2265Show the current tty for the program being debugged.
2266@end table
c906108c 2267
6d2ebf8b 2268@node Attach
79a6e687 2269@section Debugging an Already-running Process
c906108c
SS
2270@kindex attach
2271@cindex attach
2272
2273@table @code
2274@item attach @var{process-id}
2275This command attaches to a running process---one that was started
2276outside @value{GDBN}. (@code{info files} shows your active
2277targets.) The command takes as argument a process ID. The usual way to
09d4efe1 2278find out the @var{process-id} of a Unix process is with the @code{ps} utility,
c906108c
SS
2279or with the @samp{jobs -l} shell command.
2280
2281@code{attach} does not repeat if you press @key{RET} a second time after
2282executing the command.
2283@end table
2284
2285To use @code{attach}, your program must be running in an environment
2286which supports processes; for example, @code{attach} does not work for
2287programs on bare-board targets that lack an operating system. You must
2288also have permission to send the process a signal.
2289
2290When you use @code{attach}, the debugger finds the program running in
2291the process first by looking in the current working directory, then (if
2292the program is not found) by using the source file search path
79a6e687 2293(@pxref{Source Path, ,Specifying Source Directories}). You can also use
c906108c
SS
2294the @code{file} command to load the program. @xref{Files, ,Commands to
2295Specify Files}.
2296
2297The first thing @value{GDBN} does after arranging to debug the specified
2298process is to stop it. You can examine and modify an attached process
53a5351d
JM
2299with all the @value{GDBN} commands that are ordinarily available when
2300you start processes with @code{run}. You can insert breakpoints; you
2301can step and continue; you can modify storage. If you would rather the
2302process continue running, you may use the @code{continue} command after
c906108c
SS
2303attaching @value{GDBN} to the process.
2304
2305@table @code
2306@kindex detach
2307@item detach
2308When you have finished debugging the attached process, you can use the
2309@code{detach} command to release it from @value{GDBN} control. Detaching
2310the process continues its execution. After the @code{detach} command,
2311that process and @value{GDBN} become completely independent once more, and you
2312are ready to @code{attach} another process or start one with @code{run}.
2313@code{detach} does not repeat if you press @key{RET} again after
2314executing the command.
2315@end table
2316
159fcc13
JK
2317If you exit @value{GDBN} while you have an attached process, you detach
2318that process. If you use the @code{run} command, you kill that process.
2319By default, @value{GDBN} asks for confirmation if you try to do either of these
2320things; you can control whether or not you need to confirm by using the
2321@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and
79a6e687 2322Messages}).
c906108c 2323
6d2ebf8b 2324@node Kill Process
79a6e687 2325@section Killing the Child Process
c906108c
SS
2326
2327@table @code
2328@kindex kill
2329@item kill
2330Kill the child process in which your program is running under @value{GDBN}.
2331@end table
2332
2333This command is useful if you wish to debug a core dump instead of a
2334running process. @value{GDBN} ignores any core dump file while your program
2335is running.
2336
2337On some operating systems, a program cannot be executed outside @value{GDBN}
2338while you have breakpoints set on it inside @value{GDBN}. You can use the
2339@code{kill} command in this situation to permit running your program
2340outside the debugger.
2341
2342The @code{kill} command is also useful if you wish to recompile and
2343relink your program, since on many systems it is impossible to modify an
2344executable file while it is running in a process. In this case, when you
2345next type @code{run}, @value{GDBN} notices that the file has changed, and
2346reads the symbol table again (while trying to preserve your current
2347breakpoint settings).
2348
b77209e0
PA
2349@node Inferiors
2350@section Debugging Multiple Inferiors
2351
2352Some @value{GDBN} targets are able to run multiple processes created
2353from a single executable. This can happen, for instance, with an
2354embedded system reporting back several processes via the remote
2355protocol.
2356
2357@cindex inferior
2358@value{GDBN} represents the state of each program execution with an
2359object called an @dfn{inferior}. An inferior typically corresponds to
2360a process, but is more general and applies also to targets that do not
2361have processes. Inferiors may be created before a process runs, and
2362may (in future) be retained after a process exits. Each run of an
2363executable creates a new inferior, as does each attachment to an
2364existing process. Inferiors have unique identifiers that are
2365different from process ids, and may optionally be named as well.
2366Usually each inferior will also have its own distinct address space,
2367although some embedded targets may have several inferiors running in
2368different parts of a single space.
2369
2370Each inferior may in turn have multiple threads running in it.
2371
2372To find out what inferiors exist at any moment, use @code{info inferiors}:
2373
2374@table @code
2375@kindex info inferiors
2376@item info inferiors
2377Print a list of all inferiors currently being managed by @value{GDBN}.
3a1ff0b6
PA
2378
2379@value{GDBN} displays for each inferior (in this order):
2380
2381@enumerate
2382@item
2383the inferior number assigned by @value{GDBN}
2384
2385@item
2386the target system's inferior identifier
2387@end enumerate
2388
2389@noindent
2390An asterisk @samp{*} preceding the @value{GDBN} inferior number
2391indicates the current inferior.
2392
2393For example,
2277426b 2394@end table
3a1ff0b6
PA
2395@c end table here to get a little more width for example
2396
2397@smallexample
2398(@value{GDBP}) info inferiors
2399 Num Description
2400* 1 process 2307
2401 2 process 3401
2402@end smallexample
2277426b
PA
2403
2404To switch focus between inferiors, use the @code{inferior} command:
2405
2406@table @code
3a1ff0b6
PA
2407@kindex inferior @var{infno}
2408@item inferior @var{infno}
2409Make inferior number @var{infno} the current inferior. The argument
2410@var{infno} is the inferior number assigned by @value{GDBN}, as shown
2411in the first field of the @samp{info inferiors} display.
2277426b
PA
2412@end table
2413
2414To quit debugging one of the inferiors, you can either detach from it
2415by using the @w{@code{detach inferior}} command (allowing it to run
2416independently), or kill it using the @w{@code{kill inferior}} command:
2417
2418@table @code
3a1ff0b6
PA
2419@kindex detach inferior @var{infno}
2420@item detach inferior @var{infno}
2277426b 2421Detach from the inferior identified by @value{GDBN} inferior number
3a1ff0b6 2422@var{infno}, and remove it from the inferior list.
2277426b 2423
3a1ff0b6
PA
2424@kindex kill inferior @var{infno}
2425@item kill inferior @var{infno}
2277426b 2426Kill the inferior identified by @value{GDBN} inferior number
3a1ff0b6 2427@var{infno}, and remove it from the inferior list.
2277426b
PA
2428@end table
2429
2430To be notified when inferiors are started or exit under @value{GDBN}'s
2431control use @w{@code{set print inferior-events}}:
b77209e0 2432
2277426b 2433@table @code
b77209e0
PA
2434@kindex set print inferior-events
2435@cindex print messages on inferior start and exit
2436@item set print inferior-events
2437@itemx set print inferior-events on
2438@itemx set print inferior-events off
2439The @code{set print inferior-events} command allows you to enable or
2440disable printing of messages when @value{GDBN} notices that new
2441inferiors have started or that inferiors have exited or have been
2442detached. By default, these messages will not be printed.
2443
2444@kindex show print inferior-events
2445@item show print inferior-events
2446Show whether messages will be printed when @value{GDBN} detects that
2447inferiors have started, exited or have been detached.
2448@end table
2449
6d2ebf8b 2450@node Threads
79a6e687 2451@section Debugging Programs with Multiple Threads
c906108c
SS
2452
2453@cindex threads of execution
2454@cindex multiple threads
2455@cindex switching threads
2456In some operating systems, such as HP-UX and Solaris, a single program
2457may have more than one @dfn{thread} of execution. The precise semantics
2458of threads differ from one operating system to another, but in general
2459the threads of a single program are akin to multiple processes---except
2460that they share one address space (that is, they can all examine and
2461modify the same variables). On the other hand, each thread has its own
2462registers and execution stack, and perhaps private memory.
2463
2464@value{GDBN} provides these facilities for debugging multi-thread
2465programs:
2466
2467@itemize @bullet
2468@item automatic notification of new threads
2469@item @samp{thread @var{threadno}}, a command to switch among threads
2470@item @samp{info threads}, a command to inquire about existing threads
5d161b24 2471@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
2472a command to apply a command to a list of threads
2473@item thread-specific breakpoints
93815fbf
VP
2474@item @samp{set print thread-events}, which controls printing of
2475messages on thread start and exit.
17a37d48
PP
2476@item @samp{set libthread-db-search-path @var{path}}, which lets
2477the user specify which @code{libthread_db} to use if the default choice
2478isn't compatible with the program.
c906108c
SS
2479@end itemize
2480
c906108c
SS
2481@quotation
2482@emph{Warning:} These facilities are not yet available on every
2483@value{GDBN} configuration where the operating system supports threads.
2484If your @value{GDBN} does not support threads, these commands have no
2485effect. For example, a system without thread support shows no output
2486from @samp{info threads}, and always rejects the @code{thread} command,
2487like this:
2488
2489@smallexample
2490(@value{GDBP}) info threads
2491(@value{GDBP}) thread 1
2492Thread ID 1 not known. Use the "info threads" command to
2493see the IDs of currently known threads.
2494@end smallexample
2495@c FIXME to implementors: how hard would it be to say "sorry, this GDB
2496@c doesn't support threads"?
2497@end quotation
c906108c
SS
2498
2499@cindex focus of debugging
2500@cindex current thread
2501The @value{GDBN} thread debugging facility allows you to observe all
2502threads while your program runs---but whenever @value{GDBN} takes
2503control, one thread in particular is always the focus of debugging.
2504This thread is called the @dfn{current thread}. Debugging commands show
2505program information from the perspective of the current thread.
2506
41afff9a 2507@cindex @code{New} @var{systag} message
c906108c
SS
2508@cindex thread identifier (system)
2509@c FIXME-implementors!! It would be more helpful if the [New...] message
2510@c included GDB's numeric thread handle, so you could just go to that
2511@c thread without first checking `info threads'.
2512Whenever @value{GDBN} detects a new thread in your program, it displays
2513the target system's identification for the thread with a message in the
2514form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2515whose form varies depending on the particular system. For example, on
8807d78b 2516@sc{gnu}/Linux, you might see
c906108c 2517
474c8240 2518@smallexample
8807d78b 2519[New Thread 46912507313328 (LWP 25582)]
474c8240 2520@end smallexample
c906108c
SS
2521
2522@noindent
2523when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2524the @var{systag} is simply something like @samp{process 368}, with no
2525further qualifier.
2526
2527@c FIXME!! (1) Does the [New...] message appear even for the very first
2528@c thread of a program, or does it only appear for the
6ca652b0 2529@c second---i.e.@: when it becomes obvious we have a multithread
c906108c
SS
2530@c program?
2531@c (2) *Is* there necessarily a first thread always? Or do some
2532@c multithread systems permit starting a program with multiple
5d161b24 2533@c threads ab initio?
c906108c
SS
2534
2535@cindex thread number
2536@cindex thread identifier (GDB)
2537For debugging purposes, @value{GDBN} associates its own thread
2538number---always a single integer---with each thread in your program.
2539
2540@table @code
2541@kindex info threads
2542@item info threads
2543Display a summary of all threads currently in your
2544program. @value{GDBN} displays for each thread (in this order):
2545
2546@enumerate
09d4efe1
EZ
2547@item
2548the thread number assigned by @value{GDBN}
c906108c 2549
09d4efe1
EZ
2550@item
2551the target system's thread identifier (@var{systag})
c906108c 2552
09d4efe1
EZ
2553@item
2554the current stack frame summary for that thread
c906108c
SS
2555@end enumerate
2556
2557@noindent
2558An asterisk @samp{*} to the left of the @value{GDBN} thread number
2559indicates the current thread.
2560
5d161b24 2561For example,
c906108c
SS
2562@end table
2563@c end table here to get a little more width for example
2564
2565@smallexample
2566(@value{GDBP}) info threads
2567 3 process 35 thread 27 0x34e5 in sigpause ()
2568 2 process 35 thread 23 0x34e5 in sigpause ()
2569* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
2570 at threadtest.c:68
2571@end smallexample
53a5351d
JM
2572
2573On HP-UX systems:
c906108c 2574
4644b6e3
EZ
2575@cindex debugging multithreaded programs (on HP-UX)
2576@cindex thread identifier (GDB), on HP-UX
c906108c
SS
2577For debugging purposes, @value{GDBN} associates its own thread
2578number---a small integer assigned in thread-creation order---with each
2579thread in your program.
2580
41afff9a
EZ
2581@cindex @code{New} @var{systag} message, on HP-UX
2582@cindex thread identifier (system), on HP-UX
c906108c
SS
2583@c FIXME-implementors!! It would be more helpful if the [New...] message
2584@c included GDB's numeric thread handle, so you could just go to that
2585@c thread without first checking `info threads'.
2586Whenever @value{GDBN} detects a new thread in your program, it displays
2587both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
2588form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2589whose form varies depending on the particular system. For example, on
2590HP-UX, you see
2591
474c8240 2592@smallexample
c906108c 2593[New thread 2 (system thread 26594)]
474c8240 2594@end smallexample
c906108c
SS
2595
2596@noindent
5d161b24 2597when @value{GDBN} notices a new thread.
c906108c
SS
2598
2599@table @code
4644b6e3 2600@kindex info threads (HP-UX)
c906108c
SS
2601@item info threads
2602Display a summary of all threads currently in your
2603program. @value{GDBN} displays for each thread (in this order):
2604
2605@enumerate
2606@item the thread number assigned by @value{GDBN}
2607
2608@item the target system's thread identifier (@var{systag})
2609
2610@item the current stack frame summary for that thread
2611@end enumerate
2612
2613@noindent
2614An asterisk @samp{*} to the left of the @value{GDBN} thread number
2615indicates the current thread.
2616
5d161b24 2617For example,
c906108c
SS
2618@end table
2619@c end table here to get a little more width for example
2620
474c8240 2621@smallexample
c906108c 2622(@value{GDBP}) info threads
6d2ebf8b
SS
2623 * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") \@*
2624 at quicksort.c:137
2625 2 system thread 26606 0x7b0030d8 in __ksleep () \@*
2626 from /usr/lib/libc.2
2627 1 system thread 27905 0x7b003498 in _brk () \@*
2628 from /usr/lib/libc.2
474c8240 2629@end smallexample
c906108c 2630
c45da7e6
EZ
2631On Solaris, you can display more information about user threads with a
2632Solaris-specific command:
2633
2634@table @code
2635@item maint info sol-threads
2636@kindex maint info sol-threads
2637@cindex thread info (Solaris)
2638Display info on Solaris user threads.
2639@end table
2640
c906108c
SS
2641@table @code
2642@kindex thread @var{threadno}
2643@item thread @var{threadno}
2644Make thread number @var{threadno} the current thread. The command
2645argument @var{threadno} is the internal @value{GDBN} thread number, as
2646shown in the first field of the @samp{info threads} display.
2647@value{GDBN} responds by displaying the system identifier of the thread
2648you selected, and its current stack frame summary:
2649
2650@smallexample
2651@c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one
2652(@value{GDBP}) thread 2
c906108c 2653[Switching to process 35 thread 23]
c906108c
SS
26540x34e5 in sigpause ()
2655@end smallexample
2656
2657@noindent
2658As with the @samp{[New @dots{}]} message, the form of the text after
2659@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2660threads.
c906108c 2661
9c16f35a 2662@kindex thread apply
638ac427 2663@cindex apply command to several threads
839c27b7
EZ
2664@item thread apply [@var{threadno}] [@var{all}] @var{command}
2665The @code{thread apply} command allows you to apply the named
2666@var{command} to one or more threads. Specify the numbers of the
2667threads that you want affected with the command argument
2668@var{threadno}. It can be a single thread number, one of the numbers
2669shown in the first field of the @samp{info threads} display; or it
2670could be a range of thread numbers, as in @code{2-4}. To apply a
2671command to all threads, type @kbd{thread apply all @var{command}}.
93815fbf
VP
2672
2673@kindex set print thread-events
2674@cindex print messages on thread start and exit
2675@item set print thread-events
2676@itemx set print thread-events on
2677@itemx set print thread-events off
2678The @code{set print thread-events} command allows you to enable or
2679disable printing of messages when @value{GDBN} notices that new threads have
2680started or that threads have exited. By default, these messages will
2681be printed if detection of these events is supported by the target.
2682Note that these messages cannot be disabled on all targets.
2683
2684@kindex show print thread-events
2685@item show print thread-events
2686Show whether messages will be printed when @value{GDBN} detects that threads
2687have started and exited.
c906108c
SS
2688@end table
2689
79a6e687 2690@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for
c906108c
SS
2691more information about how @value{GDBN} behaves when you stop and start
2692programs with multiple threads.
2693
79a6e687 2694@xref{Set Watchpoints,,Setting Watchpoints}, for information about
c906108c 2695watchpoints in programs with multiple threads.
c906108c 2696
17a37d48
PP
2697@table @code
2698@kindex set libthread-db-search-path
2699@cindex search path for @code{libthread_db}
2700@item set libthread-db-search-path @r{[}@var{path}@r{]}
2701If this variable is set, @var{path} is a colon-separated list of
2702directories @value{GDBN} will use to search for @code{libthread_db}.
2703If you omit @var{path}, @samp{libthread-db-search-path} will be reset to
2704an empty list.
2705
2706On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper''
2707@code{libthread_db} library to obtain information about threads in the
2708inferior process. @value{GDBN} will use @samp{libthread-db-search-path}
2709to find @code{libthread_db}. If that fails, @value{GDBN} will continue
2710with default system shared library directories, and finally the directory
2711from which @code{libpthread} was loaded in the inferior process.
2712
2713For any @code{libthread_db} library @value{GDBN} finds in above directories,
2714@value{GDBN} attempts to initialize it with the current inferior process.
2715If this initialization fails (which could happen because of a version
2716mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN}
2717will unload @code{libthread_db}, and continue with the next directory.
2718If none of @code{libthread_db} libraries initialize successfully,
2719@value{GDBN} will issue a warning and thread debugging will be disabled.
2720
2721Setting @code{libthread-db-search-path} is currently implemented
2722only on some platforms.
2723
2724@kindex show libthread-db-search-path
2725@item show libthread-db-search-path
2726Display current libthread_db search path.
2727@end table
2728
6d2ebf8b 2729@node Processes
79a6e687 2730@section Debugging Programs with Multiple Processes
c906108c
SS
2731
2732@cindex fork, debugging programs which call
2733@cindex multiple processes
2734@cindex processes, multiple
53a5351d
JM
2735On most systems, @value{GDBN} has no special support for debugging
2736programs which create additional processes using the @code{fork}
2737function. When a program forks, @value{GDBN} will continue to debug the
2738parent process and the child process will run unimpeded. If you have
2739set a breakpoint in any code which the child then executes, the child
2740will get a @code{SIGTRAP} signal which (unless it catches the signal)
2741will cause it to terminate.
c906108c
SS
2742
2743However, if you want to debug the child process there is a workaround
2744which isn't too painful. Put a call to @code{sleep} in the code which
2745the child process executes after the fork. It may be useful to sleep
2746only if a certain environment variable is set, or a certain file exists,
2747so that the delay need not occur when you don't want to run @value{GDBN}
2748on the child. While the child is sleeping, use the @code{ps} program to
2749get its process ID. Then tell @value{GDBN} (a new invocation of
2750@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 2751the child process (@pxref{Attach}). From that point on you can debug
c906108c 2752the child process just like any other process which you attached to.
c906108c 2753
b51970ac
DJ
2754On some systems, @value{GDBN} provides support for debugging programs that
2755create additional processes using the @code{fork} or @code{vfork} functions.
2756Currently, the only platforms with this feature are HP-UX (11.x and later
a6b151f1 2757only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later).
c906108c
SS
2758
2759By default, when a program forks, @value{GDBN} will continue to debug
2760the parent process and the child process will run unimpeded.
2761
2762If you want to follow the child process instead of the parent process,
2763use the command @w{@code{set follow-fork-mode}}.
2764
2765@table @code
2766@kindex set follow-fork-mode
2767@item set follow-fork-mode @var{mode}
2768Set the debugger response to a program call of @code{fork} or
2769@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
9c16f35a 2770process. The @var{mode} argument can be:
c906108c
SS
2771
2772@table @code
2773@item parent
2774The original process is debugged after a fork. The child process runs
2df3850c 2775unimpeded. This is the default.
c906108c
SS
2776
2777@item child
2778The new process is debugged after a fork. The parent process runs
2779unimpeded.
2780
c906108c
SS
2781@end table
2782
9c16f35a 2783@kindex show follow-fork-mode
c906108c 2784@item show follow-fork-mode
2df3850c 2785Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
2786@end table
2787
5c95884b
MS
2788@cindex debugging multiple processes
2789On Linux, if you want to debug both the parent and child processes, use the
2790command @w{@code{set detach-on-fork}}.
2791
2792@table @code
2793@kindex set detach-on-fork
2794@item set detach-on-fork @var{mode}
2795Tells gdb whether to detach one of the processes after a fork, or
2796retain debugger control over them both.
2797
2798@table @code
2799@item on
2800The child process (or parent process, depending on the value of
2801@code{follow-fork-mode}) will be detached and allowed to run
2802independently. This is the default.
2803
2804@item off
2805Both processes will be held under the control of @value{GDBN}.
2806One process (child or parent, depending on the value of
2807@code{follow-fork-mode}) is debugged as usual, while the other
2808is held suspended.
2809
2810@end table
2811
11310833
NR
2812@kindex show detach-on-fork
2813@item show detach-on-fork
2814Show whether detach-on-fork mode is on/off.
5c95884b
MS
2815@end table
2816
2277426b
PA
2817If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN}
2818will retain control of all forked processes (including nested forks).
2819You can list the forked processes under the control of @value{GDBN} by
2820using the @w{@code{info inferiors}} command, and switch from one fork
2821to another by using the @code{inferior} command (@pxref{Inferiors,
2822,Debugging Multiple Inferiors}).
5c95884b
MS
2823
2824To quit debugging one of the forked processes, you can either detach
2277426b
PA
2825from it by using the @w{@code{detach inferior}} command (allowing it
2826to run independently), or kill it using the @w{@code{kill inferior}}
2827command. @xref{Inferiors, ,Debugging Multiple Inferiors}.
5c95884b 2828
c906108c
SS
2829If you ask to debug a child process and a @code{vfork} is followed by an
2830@code{exec}, @value{GDBN} executes the new target up to the first
2831breakpoint in the new target. If you have a breakpoint set on
2832@code{main} in your original program, the breakpoint will also be set on
2833the child process's @code{main}.
2834
2277426b
PA
2835On some systems, when a child process is spawned by @code{vfork}, you
2836cannot debug the child or parent until an @code{exec} call completes.
c906108c
SS
2837
2838If you issue a @code{run} command to @value{GDBN} after an @code{exec}
2839call executes, the new target restarts. To restart the parent process,
2840use the @code{file} command with the parent executable name as its
2841argument.
2842
2843You can use the @code{catch} command to make @value{GDBN} stop whenever
2844a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
79a6e687 2845Catchpoints, ,Setting Catchpoints}.
c906108c 2846
5c95884b 2847@node Checkpoint/Restart
79a6e687 2848@section Setting a @emph{Bookmark} to Return to Later
5c95884b
MS
2849
2850@cindex checkpoint
2851@cindex restart
2852@cindex bookmark
2853@cindex snapshot of a process
2854@cindex rewind program state
2855
2856On certain operating systems@footnote{Currently, only
2857@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a
2858program's state, called a @dfn{checkpoint}, and come back to it
2859later.
2860
2861Returning to a checkpoint effectively undoes everything that has
2862happened in the program since the @code{checkpoint} was saved. This
2863includes changes in memory, registers, and even (within some limits)
2864system state. Effectively, it is like going back in time to the
2865moment when the checkpoint was saved.
2866
2867Thus, if you're stepping thru a program and you think you're
2868getting close to the point where things go wrong, you can save
2869a checkpoint. Then, if you accidentally go too far and miss
2870the critical statement, instead of having to restart your program
2871from the beginning, you can just go back to the checkpoint and
2872start again from there.
2873
2874This can be especially useful if it takes a lot of time or
2875steps to reach the point where you think the bug occurs.
2876
2877To use the @code{checkpoint}/@code{restart} method of debugging:
2878
2879@table @code
2880@kindex checkpoint
2881@item checkpoint
2882Save a snapshot of the debugged program's current execution state.
2883The @code{checkpoint} command takes no arguments, but each checkpoint
2884is assigned a small integer id, similar to a breakpoint id.
2885
2886@kindex info checkpoints
2887@item info checkpoints
2888List the checkpoints that have been saved in the current debugging
2889session. For each checkpoint, the following information will be
2890listed:
2891
2892@table @code
2893@item Checkpoint ID
2894@item Process ID
2895@item Code Address
2896@item Source line, or label
2897@end table
2898
2899@kindex restart @var{checkpoint-id}
2900@item restart @var{checkpoint-id}
2901Restore the program state that was saved as checkpoint number
2902@var{checkpoint-id}. All program variables, registers, stack frames
2903etc.@: will be returned to the values that they had when the checkpoint
2904was saved. In essence, gdb will ``wind back the clock'' to the point
2905in time when the checkpoint was saved.
2906
2907Note that breakpoints, @value{GDBN} variables, command history etc.
2908are not affected by restoring a checkpoint. In general, a checkpoint
2909only restores things that reside in the program being debugged, not in
2910the debugger.
2911
b8db102d
MS
2912@kindex delete checkpoint @var{checkpoint-id}
2913@item delete checkpoint @var{checkpoint-id}
5c95884b
MS
2914Delete the previously-saved checkpoint identified by @var{checkpoint-id}.
2915
2916@end table
2917
2918Returning to a previously saved checkpoint will restore the user state
2919of the program being debugged, plus a significant subset of the system
2920(OS) state, including file pointers. It won't ``un-write'' data from
2921a file, but it will rewind the file pointer to the previous location,
2922so that the previously written data can be overwritten. For files
2923opened in read mode, the pointer will also be restored so that the
2924previously read data can be read again.
2925
2926Of course, characters that have been sent to a printer (or other
2927external device) cannot be ``snatched back'', and characters received
2928from eg.@: a serial device can be removed from internal program buffers,
2929but they cannot be ``pushed back'' into the serial pipeline, ready to
2930be received again. Similarly, the actual contents of files that have
2931been changed cannot be restored (at this time).
2932
2933However, within those constraints, you actually can ``rewind'' your
2934program to a previously saved point in time, and begin debugging it
2935again --- and you can change the course of events so as to debug a
2936different execution path this time.
2937
2938@cindex checkpoints and process id
2939Finally, there is one bit of internal program state that will be
2940different when you return to a checkpoint --- the program's process
2941id. Each checkpoint will have a unique process id (or @var{pid}),
2942and each will be different from the program's original @var{pid}.
2943If your program has saved a local copy of its process id, this could
2944potentially pose a problem.
2945
79a6e687 2946@subsection A Non-obvious Benefit of Using Checkpoints
5c95884b
MS
2947
2948On some systems such as @sc{gnu}/Linux, address space randomization
2949is performed on new processes for security reasons. This makes it
2950difficult or impossible to set a breakpoint, or watchpoint, on an
2951absolute address if you have to restart the program, since the
2952absolute location of a symbol will change from one execution to the
2953next.
2954
2955A checkpoint, however, is an @emph{identical} copy of a process.
2956Therefore if you create a checkpoint at (eg.@:) the start of main,
2957and simply return to that checkpoint instead of restarting the
2958process, you can avoid the effects of address randomization and
2959your symbols will all stay in the same place.
2960
6d2ebf8b 2961@node Stopping
c906108c
SS
2962@chapter Stopping and Continuing
2963
2964The principal purposes of using a debugger are so that you can stop your
2965program before it terminates; or so that, if your program runs into
2966trouble, you can investigate and find out why.
2967
7a292a7a
SS
2968Inside @value{GDBN}, your program may stop for any of several reasons,
2969such as a signal, a breakpoint, or reaching a new line after a
2970@value{GDBN} command such as @code{step}. You may then examine and
2971change variables, set new breakpoints or remove old ones, and then
2972continue execution. Usually, the messages shown by @value{GDBN} provide
2973ample explanation of the status of your program---but you can also
2974explicitly request this information at any time.
c906108c
SS
2975
2976@table @code
2977@kindex info program
2978@item info program
2979Display information about the status of your program: whether it is
7a292a7a 2980running or not, what process it is, and why it stopped.
c906108c
SS
2981@end table
2982
2983@menu
2984* Breakpoints:: Breakpoints, watchpoints, and catchpoints
2985* Continuing and Stepping:: Resuming execution
c906108c 2986* Signals:: Signals
c906108c 2987* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
2988@end menu
2989
6d2ebf8b 2990@node Breakpoints
79a6e687 2991@section Breakpoints, Watchpoints, and Catchpoints
c906108c
SS
2992
2993@cindex breakpoints
2994A @dfn{breakpoint} makes your program stop whenever a certain point in
2995the program is reached. For each breakpoint, you can add conditions to
2996control in finer detail whether your program stops. You can set
2997breakpoints with the @code{break} command and its variants (@pxref{Set
79a6e687 2998Breaks, ,Setting Breakpoints}), to specify the place where your program
c906108c
SS
2999should stop by line number, function name or exact address in the
3000program.
3001
09d4efe1
EZ
3002On some systems, you can set breakpoints in shared libraries before
3003the executable is run. There is a minor limitation on HP-UX systems:
3004you must wait until the executable is run in order to set breakpoints
3005in shared library routines that are not called directly by the program
3006(for example, routines that are arguments in a @code{pthread_create}
3007call).
c906108c
SS
3008
3009@cindex watchpoints
fd60e0df 3010@cindex data breakpoints
c906108c
SS
3011@cindex memory tracing
3012@cindex breakpoint on memory address
3013@cindex breakpoint on variable modification
3014A @dfn{watchpoint} is a special breakpoint that stops your program
fd60e0df 3015when the value of an expression changes. The expression may be a value
0ced0c34 3016of a variable, or it could involve values of one or more variables
fd60e0df
EZ
3017combined by operators, such as @samp{a + b}. This is sometimes called
3018@dfn{data breakpoints}. You must use a different command to set
79a6e687 3019watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside
fd60e0df
EZ
3020from that, you can manage a watchpoint like any other breakpoint: you
3021enable, disable, and delete both breakpoints and watchpoints using the
3022same commands.
c906108c
SS
3023
3024You can arrange to have values from your program displayed automatically
3025whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
79a6e687 3026Automatic Display}.
c906108c
SS
3027
3028@cindex catchpoints
3029@cindex breakpoint on events
3030A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 3031when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
3032exception or the loading of a library. As with watchpoints, you use a
3033different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
79a6e687 3034Catchpoints}), but aside from that, you can manage a catchpoint like any
c906108c 3035other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 3036@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
3037
3038@cindex breakpoint numbers
3039@cindex numbers for breakpoints
3040@value{GDBN} assigns a number to each breakpoint, watchpoint, or
3041catchpoint when you create it; these numbers are successive integers
3042starting with one. In many of the commands for controlling various
3043features of breakpoints you use the breakpoint number to say which
3044breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
3045@dfn{disabled}; if disabled, it has no effect on your program until you
3046enable it again.
3047
c5394b80
JM
3048@cindex breakpoint ranges
3049@cindex ranges of breakpoints
3050Some @value{GDBN} commands accept a range of breakpoints on which to
3051operate. A breakpoint range is either a single breakpoint number, like
3052@samp{5}, or two such numbers, in increasing order, separated by a
3053hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
d52fb0e9 3054all breakpoints in that range are operated on.
c5394b80 3055
c906108c
SS
3056@menu
3057* Set Breaks:: Setting breakpoints
3058* Set Watchpoints:: Setting watchpoints
3059* Set Catchpoints:: Setting catchpoints
3060* Delete Breaks:: Deleting breakpoints
3061* Disabling:: Disabling breakpoints
3062* Conditions:: Break conditions
3063* Break Commands:: Breakpoint command lists
d4f3574e 3064* Error in Breakpoints:: ``Cannot insert breakpoints''
79a6e687 3065* Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
c906108c
SS
3066@end menu
3067
6d2ebf8b 3068@node Set Breaks
79a6e687 3069@subsection Setting Breakpoints
c906108c 3070
5d161b24 3071@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
3072@c consider in particular declaration with/without initialization.
3073@c
3074@c FIXME 2 is there stuff on this already? break at fun start, already init?
3075
3076@kindex break
41afff9a
EZ
3077@kindex b @r{(@code{break})}
3078@vindex $bpnum@r{, convenience variable}
c906108c
SS
3079@cindex latest breakpoint
3080Breakpoints are set with the @code{break} command (abbreviated
5d161b24 3081@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 3082number of the breakpoint you've set most recently; see @ref{Convenience
79a6e687 3083Vars,, Convenience Variables}, for a discussion of what you can do with
c906108c
SS
3084convenience variables.
3085
c906108c 3086@table @code
2a25a5ba
EZ
3087@item break @var{location}
3088Set a breakpoint at the given @var{location}, which can specify a
3089function name, a line number, or an address of an instruction.
3090(@xref{Specify Location}, for a list of all the possible ways to
3091specify a @var{location}.) The breakpoint will stop your program just
3092before it executes any of the code in the specified @var{location}.
3093
c906108c 3094When using source languages that permit overloading of symbols, such as
2a25a5ba 3095C@t{++}, a function name may refer to more than one possible place to break.
6ba66d6a
JB
3096@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of
3097that situation.
c906108c 3098
45ac276d 3099It is also possible to insert a breakpoint that will stop the program
2c88c651
JB
3100only if a specific thread (@pxref{Thread-Specific Breakpoints})
3101or a specific task (@pxref{Ada Tasks}) hits that breakpoint.
45ac276d 3102
c906108c
SS
3103@item break
3104When called without any arguments, @code{break} sets a breakpoint at
3105the next instruction to be executed in the selected stack frame
3106(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
3107innermost, this makes your program stop as soon as control
3108returns to that frame. This is similar to the effect of a
3109@code{finish} command in the frame inside the selected frame---except
3110that @code{finish} does not leave an active breakpoint. If you use
3111@code{break} without an argument in the innermost frame, @value{GDBN} stops
3112the next time it reaches the current location; this may be useful
3113inside loops.
3114
3115@value{GDBN} normally ignores breakpoints when it resumes execution, until at
3116least one instruction has been executed. If it did not do this, you
3117would be unable to proceed past a breakpoint without first disabling the
3118breakpoint. This rule applies whether or not the breakpoint already
3119existed when your program stopped.
3120
3121@item break @dots{} if @var{cond}
3122Set a breakpoint with condition @var{cond}; evaluate the expression
3123@var{cond} each time the breakpoint is reached, and stop only if the
3124value is nonzero---that is, if @var{cond} evaluates as true.
3125@samp{@dots{}} stands for one of the possible arguments described
3126above (or no argument) specifying where to break. @xref{Conditions,
79a6e687 3127,Break Conditions}, for more information on breakpoint conditions.
c906108c
SS
3128
3129@kindex tbreak
3130@item tbreak @var{args}
3131Set a breakpoint enabled only for one stop. @var{args} are the
3132same as for the @code{break} command, and the breakpoint is set in the same
3133way, but the breakpoint is automatically deleted after the first time your
79a6e687 3134program stops there. @xref{Disabling, ,Disabling Breakpoints}.
c906108c 3135
c906108c 3136@kindex hbreak
ba04e063 3137@cindex hardware breakpoints
c906108c 3138@item hbreak @var{args}
d4f3574e
SS
3139Set a hardware-assisted breakpoint. @var{args} are the same as for the
3140@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
3141breakpoint requires hardware support and some target hardware may not
3142have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
3143debugging, so you can set a breakpoint at an instruction without
3144changing the instruction. This can be used with the new trap-generation
09d4efe1 3145provided by SPARClite DSU and most x86-based targets. These targets
d4f3574e
SS
3146will generate traps when a program accesses some data or instruction
3147address that is assigned to the debug registers. However the hardware
3148breakpoint registers can take a limited number of breakpoints. For
3149example, on the DSU, only two data breakpoints can be set at a time, and
3150@value{GDBN} will reject this command if more than two are used. Delete
3151or disable unused hardware breakpoints before setting new ones
79a6e687
BW
3152(@pxref{Disabling, ,Disabling Breakpoints}).
3153@xref{Conditions, ,Break Conditions}.
9c16f35a
EZ
3154For remote targets, you can restrict the number of hardware
3155breakpoints @value{GDBN} will use, see @ref{set remote
3156hardware-breakpoint-limit}.
501eef12 3157
c906108c
SS
3158@kindex thbreak
3159@item thbreak @var{args}
3160Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
3161are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 3162the same way. However, like the @code{tbreak} command,
c906108c
SS
3163the breakpoint is automatically deleted after the
3164first time your program stops there. Also, like the @code{hbreak}
5d161b24 3165command, the breakpoint requires hardware support and some target hardware
79a6e687
BW
3166may not have this support. @xref{Disabling, ,Disabling Breakpoints}.
3167See also @ref{Conditions, ,Break Conditions}.
c906108c
SS
3168
3169@kindex rbreak
3170@cindex regular expression
c45da7e6
EZ
3171@cindex breakpoints in functions matching a regexp
3172@cindex set breakpoints in many functions
c906108c 3173@item rbreak @var{regex}
c906108c 3174Set breakpoints on all functions matching the regular expression
11cf8741
JM
3175@var{regex}. This command sets an unconditional breakpoint on all
3176matches, printing a list of all breakpoints it set. Once these
3177breakpoints are set, they are treated just like the breakpoints set with
3178the @code{break} command. You can delete them, disable them, or make
3179them conditional the same way as any other breakpoint.
3180
3181The syntax of the regular expression is the standard one used with tools
3182like @file{grep}. Note that this is different from the syntax used by
3183shells, so for instance @code{foo*} matches all functions that include
3184an @code{fo} followed by zero or more @code{o}s. There is an implicit
3185@code{.*} leading and trailing the regular expression you supply, so to
3186match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 3187
f7dc1244 3188@cindex non-member C@t{++} functions, set breakpoint in
b37052ae 3189When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
3190breakpoints on overloaded functions that are not members of any special
3191classes.
c906108c 3192
f7dc1244
EZ
3193@cindex set breakpoints on all functions
3194The @code{rbreak} command can be used to set breakpoints in
3195@strong{all} the functions in a program, like this:
3196
3197@smallexample
3198(@value{GDBP}) rbreak .
3199@end smallexample
3200
c906108c
SS
3201@kindex info breakpoints
3202@cindex @code{$_} and @code{info breakpoints}
3203@item info breakpoints @r{[}@var{n}@r{]}
3204@itemx info break @r{[}@var{n}@r{]}
3205@itemx info watchpoints @r{[}@var{n}@r{]}
3206Print a table of all breakpoints, watchpoints, and catchpoints set and
45ac1734
EZ
3207not deleted. Optional argument @var{n} means print information only
3208about the specified breakpoint (or watchpoint or catchpoint). For
3209each breakpoint, following columns are printed:
c906108c
SS
3210
3211@table @emph
3212@item Breakpoint Numbers
3213@item Type
3214Breakpoint, watchpoint, or catchpoint.
3215@item Disposition
3216Whether the breakpoint is marked to be disabled or deleted when hit.
3217@item Enabled or Disabled
3218Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
b3db7447 3219that are not enabled.
c906108c 3220@item Address
fe6fbf8b 3221Where the breakpoint is in your program, as a memory address. For a
b3db7447
NR
3222pending breakpoint whose address is not yet known, this field will
3223contain @samp{<PENDING>}. Such breakpoint won't fire until a shared
3224library that has the symbol or line referred by breakpoint is loaded.
3225See below for details. A breakpoint with several locations will
3b784c4f 3226have @samp{<MULTIPLE>} in this field---see below for details.
c906108c
SS
3227@item What
3228Where the breakpoint is in the source for your program, as a file and
2650777c
JJ
3229line number. For a pending breakpoint, the original string passed to
3230the breakpoint command will be listed as it cannot be resolved until
3231the appropriate shared library is loaded in the future.
c906108c
SS
3232@end table
3233
3234@noindent
3235If a breakpoint is conditional, @code{info break} shows the condition on
3236the line following the affected breakpoint; breakpoint commands, if any,
2650777c
JJ
3237are listed after that. A pending breakpoint is allowed to have a condition
3238specified for it. The condition is not parsed for validity until a shared
3239library is loaded that allows the pending breakpoint to resolve to a
3240valid location.
c906108c
SS
3241
3242@noindent
3243@code{info break} with a breakpoint
3244number @var{n} as argument lists only that breakpoint. The
3245convenience variable @code{$_} and the default examining-address for
3246the @code{x} command are set to the address of the last breakpoint
79a6e687 3247listed (@pxref{Memory, ,Examining Memory}).
c906108c
SS
3248
3249@noindent
3250@code{info break} displays a count of the number of times the breakpoint
3251has been hit. This is especially useful in conjunction with the
3252@code{ignore} command. You can ignore a large number of breakpoint
3253hits, look at the breakpoint info to see how many times the breakpoint
3254was hit, and then run again, ignoring one less than that number. This
3255will get you quickly to the last hit of that breakpoint.
3256@end table
3257
3258@value{GDBN} allows you to set any number of breakpoints at the same place in
3259your program. There is nothing silly or meaningless about this. When
3260the breakpoints are conditional, this is even useful
79a6e687 3261(@pxref{Conditions, ,Break Conditions}).
c906108c 3262
2e9132cc
EZ
3263@cindex multiple locations, breakpoints
3264@cindex breakpoints, multiple locations
fcda367b 3265It is possible that a breakpoint corresponds to several locations
fe6fbf8b
VP
3266in your program. Examples of this situation are:
3267
3268@itemize @bullet
fe6fbf8b
VP
3269@item
3270For a C@t{++} constructor, the @value{NGCC} compiler generates several
3271instances of the function body, used in different cases.
3272
3273@item
3274For a C@t{++} template function, a given line in the function can
3275correspond to any number of instantiations.
3276
3277@item
3278For an inlined function, a given source line can correspond to
3279several places where that function is inlined.
fe6fbf8b
VP
3280@end itemize
3281
3282In all those cases, @value{GDBN} will insert a breakpoint at all
2e9132cc
EZ
3283the relevant locations@footnote{
3284As of this writing, multiple-location breakpoints work only if there's
3285line number information for all the locations. This means that they
3286will generally not work in system libraries, unless you have debug
3287info with line numbers for them.}.
fe6fbf8b 3288
3b784c4f
EZ
3289A breakpoint with multiple locations is displayed in the breakpoint
3290table using several rows---one header row, followed by one row for
3291each breakpoint location. The header row has @samp{<MULTIPLE>} in the
3292address column. The rows for individual locations contain the actual
3293addresses for locations, and show the functions to which those
3294locations belong. The number column for a location is of the form
fe6fbf8b
VP
3295@var{breakpoint-number}.@var{location-number}.
3296
3297For example:
3b784c4f 3298
fe6fbf8b
VP
3299@smallexample
3300Num Type Disp Enb Address What
33011 breakpoint keep y <MULTIPLE>
3302 stop only if i==1
3303 breakpoint already hit 1 time
33041.1 y 0x080486a2 in void foo<int>() at t.cc:8
33051.2 y 0x080486ca in void foo<double>() at t.cc:8
3306@end smallexample
3307
3308Each location can be individually enabled or disabled by passing
3309@var{breakpoint-number}.@var{location-number} as argument to the
3b784c4f
EZ
3310@code{enable} and @code{disable} commands. Note that you cannot
3311delete the individual locations from the list, you can only delete the
16bfc218 3312entire list of locations that belong to their parent breakpoint (with
3b784c4f
EZ
3313the @kbd{delete @var{num}} command, where @var{num} is the number of
3314the parent breakpoint, 1 in the above example). Disabling or enabling
3315the parent breakpoint (@pxref{Disabling}) affects all of the locations
3316that belong to that breakpoint.
fe6fbf8b 3317
2650777c 3318@cindex pending breakpoints
fe6fbf8b 3319It's quite common to have a breakpoint inside a shared library.
3b784c4f 3320Shared libraries can be loaded and unloaded explicitly,
fe6fbf8b
VP
3321and possibly repeatedly, as the program is executed. To support
3322this use case, @value{GDBN} updates breakpoint locations whenever
3323any shared library is loaded or unloaded. Typically, you would
fcda367b 3324set a breakpoint in a shared library at the beginning of your
fe6fbf8b
VP
3325debugging session, when the library is not loaded, and when the
3326symbols from the library are not available. When you try to set
3327breakpoint, @value{GDBN} will ask you if you want to set
3b784c4f 3328a so called @dfn{pending breakpoint}---breakpoint whose address
fe6fbf8b
VP
3329is not yet resolved.
3330
3331After the program is run, whenever a new shared library is loaded,
3332@value{GDBN} reevaluates all the breakpoints. When a newly loaded
3333shared library contains the symbol or line referred to by some
3334pending breakpoint, that breakpoint is resolved and becomes an
3335ordinary breakpoint. When a library is unloaded, all breakpoints
3336that refer to its symbols or source lines become pending again.
3337
3338This logic works for breakpoints with multiple locations, too. For
3339example, if you have a breakpoint in a C@t{++} template function, and
3340a newly loaded shared library has an instantiation of that template,
3341a new location is added to the list of locations for the breakpoint.
3342
3343Except for having unresolved address, pending breakpoints do not
3344differ from regular breakpoints. You can set conditions or commands,
3345enable and disable them and perform other breakpoint operations.
3346
3347@value{GDBN} provides some additional commands for controlling what
3348happens when the @samp{break} command cannot resolve breakpoint
3349address specification to an address:
dd79a6cf
JJ
3350
3351@kindex set breakpoint pending
3352@kindex show breakpoint pending
3353@table @code
3354@item set breakpoint pending auto
3355This is the default behavior. When @value{GDBN} cannot find the breakpoint
3356location, it queries you whether a pending breakpoint should be created.
3357
3358@item set breakpoint pending on
3359This indicates that an unrecognized breakpoint location should automatically
3360result in a pending breakpoint being created.
3361
3362@item set breakpoint pending off
3363This indicates that pending breakpoints are not to be created. Any
3364unrecognized breakpoint location results in an error. This setting does
3365not affect any pending breakpoints previously created.
3366
3367@item show breakpoint pending
3368Show the current behavior setting for creating pending breakpoints.
3369@end table
2650777c 3370
fe6fbf8b
VP
3371The settings above only affect the @code{break} command and its
3372variants. Once breakpoint is set, it will be automatically updated
3373as shared libraries are loaded and unloaded.
2650777c 3374
765dc015
VP
3375@cindex automatic hardware breakpoints
3376For some targets, @value{GDBN} can automatically decide if hardware or
3377software breakpoints should be used, depending on whether the
3378breakpoint address is read-only or read-write. This applies to
3379breakpoints set with the @code{break} command as well as to internal
3380breakpoints set by commands like @code{next} and @code{finish}. For
fcda367b 3381breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware
765dc015
VP
3382breakpoints.
3383
3384You can control this automatic behaviour with the following commands::
3385
3386@kindex set breakpoint auto-hw
3387@kindex show breakpoint auto-hw
3388@table @code
3389@item set breakpoint auto-hw on
3390This is the default behavior. When @value{GDBN} sets a breakpoint, it
3391will try to use the target memory map to decide if software or hardware
3392breakpoint must be used.
3393
3394@item set breakpoint auto-hw off
3395This indicates @value{GDBN} should not automatically select breakpoint
3396type. If the target provides a memory map, @value{GDBN} will warn when
3397trying to set software breakpoint at a read-only address.
3398@end table
3399
74960c60
VP
3400@value{GDBN} normally implements breakpoints by replacing the program code
3401at the breakpoint address with a special instruction, which, when
3402executed, given control to the debugger. By default, the program
3403code is so modified only when the program is resumed. As soon as
3404the program stops, @value{GDBN} restores the original instructions. This
3405behaviour guards against leaving breakpoints inserted in the
3406target should gdb abrubptly disconnect. However, with slow remote
3407targets, inserting and removing breakpoint can reduce the performance.
3408This behavior can be controlled with the following commands::
3409
3410@kindex set breakpoint always-inserted
3411@kindex show breakpoint always-inserted
3412@table @code
3413@item set breakpoint always-inserted off
33e5cbd6
PA
3414All breakpoints, including newly added by the user, are inserted in
3415the target only when the target is resumed. All breakpoints are
3416removed from the target when it stops.
74960c60
VP
3417
3418@item set breakpoint always-inserted on
3419Causes all breakpoints to be inserted in the target at all times. If
3420the user adds a new breakpoint, or changes an existing breakpoint, the
3421breakpoints in the target are updated immediately. A breakpoint is
3422removed from the target only when breakpoint itself is removed.
33e5cbd6
PA
3423
3424@cindex non-stop mode, and @code{breakpoint always-inserted}
3425@item set breakpoint always-inserted auto
3426This is the default mode. If @value{GDBN} is controlling the inferior
3427in non-stop mode (@pxref{Non-Stop Mode}), gdb behaves as if
3428@code{breakpoint always-inserted} mode is on. If @value{GDBN} is
3429controlling the inferior in all-stop mode, @value{GDBN} behaves as if
3430@code{breakpoint always-inserted} mode is off.
74960c60 3431@end table
765dc015 3432
c906108c
SS
3433@cindex negative breakpoint numbers
3434@cindex internal @value{GDBN} breakpoints
eb12ee30
AC
3435@value{GDBN} itself sometimes sets breakpoints in your program for
3436special purposes, such as proper handling of @code{longjmp} (in C
3437programs). These internal breakpoints are assigned negative numbers,
3438starting with @code{-1}; @samp{info breakpoints} does not display them.
c906108c 3439You can see these breakpoints with the @value{GDBN} maintenance command
eb12ee30 3440@samp{maint info breakpoints} (@pxref{maint info breakpoints}).
c906108c
SS
3441
3442
6d2ebf8b 3443@node Set Watchpoints
79a6e687 3444@subsection Setting Watchpoints
c906108c
SS
3445
3446@cindex setting watchpoints
c906108c
SS
3447You can use a watchpoint to stop execution whenever the value of an
3448expression changes, without having to predict a particular place where
fd60e0df
EZ
3449this may happen. (This is sometimes called a @dfn{data breakpoint}.)
3450The expression may be as simple as the value of a single variable, or
3451as complex as many variables combined by operators. Examples include:
3452
3453@itemize @bullet
3454@item
3455A reference to the value of a single variable.
3456
3457@item
3458An address cast to an appropriate data type. For example,
3459@samp{*(int *)0x12345678} will watch a 4-byte region at the specified
3460address (assuming an @code{int} occupies 4 bytes).
3461
3462@item
3463An arbitrarily complex expression, such as @samp{a*b + c/d}. The
3464expression can use any operators valid in the program's native
3465language (@pxref{Languages}).
3466@end itemize
c906108c 3467
fa4727a6
DJ
3468You can set a watchpoint on an expression even if the expression can
3469not be evaluated yet. For instance, you can set a watchpoint on
3470@samp{*global_ptr} before @samp{global_ptr} is initialized.
3471@value{GDBN} will stop when your program sets @samp{global_ptr} and
3472the expression produces a valid value. If the expression becomes
3473valid in some other way than changing a variable (e.g.@: if the memory
3474pointed to by @samp{*global_ptr} becomes readable as the result of a
3475@code{malloc} call), @value{GDBN} may not stop until the next time
3476the expression changes.
3477
82f2d802
EZ
3478@cindex software watchpoints
3479@cindex hardware watchpoints
c906108c 3480Depending on your system, watchpoints may be implemented in software or
2df3850c 3481hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
3482program and testing the variable's value each time, which is hundreds of
3483times slower than normal execution. (But this may still be worth it, to
3484catch errors where you have no clue what part of your program is the
3485culprit.)
3486
37e4754d 3487On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other
82f2d802
EZ
3488x86-based targets, @value{GDBN} includes support for hardware
3489watchpoints, which do not slow down the running of your program.
c906108c
SS
3490
3491@table @code
3492@kindex watch
d8b2a693 3493@item watch @var{expr} @r{[}thread @var{threadnum}@r{]}
fd60e0df
EZ
3494Set a watchpoint for an expression. @value{GDBN} will break when the
3495expression @var{expr} is written into by the program and its value
3496changes. The simplest (and the most popular) use of this command is
3497to watch the value of a single variable:
3498
3499@smallexample
3500(@value{GDBP}) watch foo
3501@end smallexample
c906108c 3502
d8b2a693
JB
3503If the command includes a @code{@r{[}thread @var{threadnum}@r{]}}
3504clause, @value{GDBN} breaks only when the thread identified by
3505@var{threadnum} changes the value of @var{expr}. If any other threads
3506change the value of @var{expr}, @value{GDBN} will not break. Note
3507that watchpoints restricted to a single thread in this way only work
3508with Hardware Watchpoints.
3509
c906108c 3510@kindex rwatch
d8b2a693 3511@item rwatch @var{expr} @r{[}thread @var{threadnum}@r{]}
09d4efe1
EZ
3512Set a watchpoint that will break when the value of @var{expr} is read
3513by the program.
c906108c
SS
3514
3515@kindex awatch
d8b2a693 3516@item awatch @var{expr} @r{[}thread @var{threadnum}@r{]}
09d4efe1
EZ
3517Set a watchpoint that will break when @var{expr} is either read from
3518or written into by the program.
c906108c 3519
45ac1734 3520@kindex info watchpoints @r{[}@var{n}@r{]}
c906108c
SS
3521@item info watchpoints
3522This command prints a list of watchpoints, breakpoints, and catchpoints;
09d4efe1 3523it is the same as @code{info break} (@pxref{Set Breaks}).
c906108c
SS
3524@end table
3525
3526@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
3527watchpoints execute very quickly, and the debugger reports a change in
3528value at the exact instruction where the change occurs. If @value{GDBN}
3529cannot set a hardware watchpoint, it sets a software watchpoint, which
3530executes more slowly and reports the change in value at the next
82f2d802
EZ
3531@emph{statement}, not the instruction, after the change occurs.
3532
82f2d802
EZ
3533@cindex use only software watchpoints
3534You can force @value{GDBN} to use only software watchpoints with the
3535@kbd{set can-use-hw-watchpoints 0} command. With this variable set to
3536zero, @value{GDBN} will never try to use hardware watchpoints, even if
3537the underlying system supports them. (Note that hardware-assisted
3538watchpoints that were set @emph{before} setting
3539@code{can-use-hw-watchpoints} to zero will still use the hardware
d3e8051b 3540mechanism of watching expression values.)
c906108c 3541
9c16f35a
EZ
3542@table @code
3543@item set can-use-hw-watchpoints
3544@kindex set can-use-hw-watchpoints
3545Set whether or not to use hardware watchpoints.
3546
3547@item show can-use-hw-watchpoints
3548@kindex show can-use-hw-watchpoints
3549Show the current mode of using hardware watchpoints.
3550@end table
3551
3552For remote targets, you can restrict the number of hardware
3553watchpoints @value{GDBN} will use, see @ref{set remote
3554hardware-breakpoint-limit}.
3555
c906108c
SS
3556When you issue the @code{watch} command, @value{GDBN} reports
3557
474c8240 3558@smallexample
c906108c 3559Hardware watchpoint @var{num}: @var{expr}
474c8240 3560@end smallexample
c906108c
SS
3561
3562@noindent
3563if it was able to set a hardware watchpoint.
3564
7be570e7
JM
3565Currently, the @code{awatch} and @code{rwatch} commands can only set
3566hardware watchpoints, because accesses to data that don't change the
3567value of the watched expression cannot be detected without examining
3568every instruction as it is being executed, and @value{GDBN} does not do
3569that currently. If @value{GDBN} finds that it is unable to set a
3570hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
3571will print a message like this:
3572
3573@smallexample
3574Expression cannot be implemented with read/access watchpoint.
3575@end smallexample
3576
3577Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
3578data type of the watched expression is wider than what a hardware
3579watchpoint on the target machine can handle. For example, some systems
3580can only watch regions that are up to 4 bytes wide; on such systems you
3581cannot set hardware watchpoints for an expression that yields a
3582double-precision floating-point number (which is typically 8 bytes
3583wide). As a work-around, it might be possible to break the large region
3584into a series of smaller ones and watch them with separate watchpoints.
3585
3586If you set too many hardware watchpoints, @value{GDBN} might be unable
3587to insert all of them when you resume the execution of your program.
3588Since the precise number of active watchpoints is unknown until such
3589time as the program is about to be resumed, @value{GDBN} might not be
3590able to warn you about this when you set the watchpoints, and the
3591warning will be printed only when the program is resumed:
3592
3593@smallexample
3594Hardware watchpoint @var{num}: Could not insert watchpoint
3595@end smallexample
3596
3597@noindent
3598If this happens, delete or disable some of the watchpoints.
3599
fd60e0df
EZ
3600Watching complex expressions that reference many variables can also
3601exhaust the resources available for hardware-assisted watchpoints.
3602That's because @value{GDBN} needs to watch every variable in the
3603expression with separately allocated resources.
3604
c906108c 3605If you call a function interactively using @code{print} or @code{call},
2df3850c 3606any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
3607kind of breakpoint or the call completes.
3608
7be570e7
JM
3609@value{GDBN} automatically deletes watchpoints that watch local
3610(automatic) variables, or expressions that involve such variables, when
3611they go out of scope, that is, when the execution leaves the block in
3612which these variables were defined. In particular, when the program
3613being debugged terminates, @emph{all} local variables go out of scope,
3614and so only watchpoints that watch global variables remain set. If you
3615rerun the program, you will need to set all such watchpoints again. One
3616way of doing that would be to set a code breakpoint at the entry to the
3617@code{main} function and when it breaks, set all the watchpoints.
3618
c906108c
SS
3619@cindex watchpoints and threads
3620@cindex threads and watchpoints
d983da9c
DJ
3621In multi-threaded programs, watchpoints will detect changes to the
3622watched expression from every thread.
3623
3624@quotation
3625@emph{Warning:} In multi-threaded programs, software watchpoints
53a5351d
JM
3626have only limited usefulness. If @value{GDBN} creates a software
3627watchpoint, it can only watch the value of an expression @emph{in a
3628single thread}. If you are confident that the expression can only
3629change due to the current thread's activity (and if you are also
3630confident that no other thread can become current), then you can use
3631software watchpoints as usual. However, @value{GDBN} may not notice
3632when a non-current thread's activity changes the expression. (Hardware
3633watchpoints, in contrast, watch an expression in all threads.)
c906108c 3634@end quotation
c906108c 3635
501eef12
AC
3636@xref{set remote hardware-watchpoint-limit}.
3637
6d2ebf8b 3638@node Set Catchpoints
79a6e687 3639@subsection Setting Catchpoints
d4f3574e 3640@cindex catchpoints, setting
c906108c
SS
3641@cindex exception handlers
3642@cindex event handling
3643
3644You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 3645kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
3646shared library. Use the @code{catch} command to set a catchpoint.
3647
3648@table @code
3649@kindex catch
3650@item catch @var{event}
3651Stop when @var{event} occurs. @var{event} can be any of the following:
3652@table @code
3653@item throw
4644b6e3 3654@cindex stop on C@t{++} exceptions
b37052ae 3655The throwing of a C@t{++} exception.
c906108c
SS
3656
3657@item catch
b37052ae 3658The catching of a C@t{++} exception.
c906108c 3659
8936fcda
JB
3660@item exception
3661@cindex Ada exception catching
3662@cindex catch Ada exceptions
3663An Ada exception being raised. If an exception name is specified
3664at the end of the command (eg @code{catch exception Program_Error}),
3665the debugger will stop only when this specific exception is raised.
3666Otherwise, the debugger stops execution when any Ada exception is raised.
3667
87f67dba
JB
3668When inserting an exception catchpoint on a user-defined exception whose
3669name is identical to one of the exceptions defined by the language, the
3670fully qualified name must be used as the exception name. Otherwise,
3671@value{GDBN} will assume that it should stop on the pre-defined exception
3672rather than the user-defined one. For instance, assuming an exception
3673called @code{Constraint_Error} is defined in package @code{Pck}, then
3674the command to use to catch such exceptions is @kbd{catch exception
3675Pck.Constraint_Error}.
3676
8936fcda
JB
3677@item exception unhandled
3678An exception that was raised but is not handled by the program.
3679
3680@item assert
3681A failed Ada assertion.
3682
c906108c 3683@item exec
4644b6e3 3684@cindex break on fork/exec
5ee187d7
DJ
3685A call to @code{exec}. This is currently only available for HP-UX
3686and @sc{gnu}/Linux.
c906108c 3687
a96d9b2e
SDJ
3688@item syscall
3689@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @r{...}
3690@cindex break on a system call.
3691A call to or return from a system call, a.k.a.@: @dfn{syscall}. A
3692syscall is a mechanism for application programs to request a service
3693from the operating system (OS) or one of the OS system services.
3694@value{GDBN} can catch some or all of the syscalls issued by the
3695debuggee, and show the related information for each syscall. If no
3696argument is specified, calls to and returns from all system calls
3697will be caught.
3698
3699@var{name} can be any system call name that is valid for the
3700underlying OS. Just what syscalls are valid depends on the OS. On
3701GNU and Unix systems, you can find the full list of valid syscall
3702names on @file{/usr/include/asm/unistd.h}.
3703
3704@c For MS-Windows, the syscall names and the corresponding numbers
3705@c can be found, e.g., on this URL:
3706@c http://www.metasploit.com/users/opcode/syscalls.html
3707@c but we don't support Windows syscalls yet.
3708
3709Normally, @value{GDBN} knows in advance which syscalls are valid for
3710each OS, so you can use the @value{GDBN} command-line completion
3711facilities (@pxref{Completion,, command completion}) to list the
3712available choices.
3713
3714You may also specify the system call numerically. A syscall's
3715number is the value passed to the OS's syscall dispatcher to
3716identify the requested service. When you specify the syscall by its
3717name, @value{GDBN} uses its database of syscalls to convert the name
3718into the corresponding numeric code, but using the number directly
3719may be useful if @value{GDBN}'s database does not have the complete
3720list of syscalls on your system (e.g., because @value{GDBN} lags
3721behind the OS upgrades).
3722
3723The example below illustrates how this command works if you don't provide
3724arguments to it:
3725
3726@smallexample
3727(@value{GDBP}) catch syscall
3728Catchpoint 1 (syscall)
3729(@value{GDBP}) r
3730Starting program: /tmp/catch-syscall
3731
3732Catchpoint 1 (call to syscall 'close'), \
3733 0xffffe424 in __kernel_vsyscall ()
3734(@value{GDBP}) c
3735Continuing.
3736
3737Catchpoint 1 (returned from syscall 'close'), \
3738 0xffffe424 in __kernel_vsyscall ()
3739(@value{GDBP})
3740@end smallexample
3741
3742Here is an example of catching a system call by name:
3743
3744@smallexample
3745(@value{GDBP}) catch syscall chroot
3746Catchpoint 1 (syscall 'chroot' [61])
3747(@value{GDBP}) r
3748Starting program: /tmp/catch-syscall
3749
3750Catchpoint 1 (call to syscall 'chroot'), \
3751 0xffffe424 in __kernel_vsyscall ()
3752(@value{GDBP}) c
3753Continuing.
3754
3755Catchpoint 1 (returned from syscall 'chroot'), \
3756 0xffffe424 in __kernel_vsyscall ()
3757(@value{GDBP})
3758@end smallexample
3759
3760An example of specifying a system call numerically. In the case
3761below, the syscall number has a corresponding entry in the XML
3762file, so @value{GDBN} finds its name and prints it:
3763
3764@smallexample
3765(@value{GDBP}) catch syscall 252
3766Catchpoint 1 (syscall(s) 'exit_group')
3767(@value{GDBP}) r
3768Starting program: /tmp/catch-syscall
3769
3770Catchpoint 1 (call to syscall 'exit_group'), \
3771 0xffffe424 in __kernel_vsyscall ()
3772(@value{GDBP}) c
3773Continuing.
3774
3775Program exited normally.
3776(@value{GDBP})
3777@end smallexample
3778
3779However, there can be situations when there is no corresponding name
3780in XML file for that syscall number. In this case, @value{GDBN} prints
3781a warning message saying that it was not able to find the syscall name,
3782but the catchpoint will be set anyway. See the example below:
3783
3784@smallexample
3785(@value{GDBP}) catch syscall 764
3786warning: The number '764' does not represent a known syscall.
3787Catchpoint 2 (syscall 764)
3788(@value{GDBP})
3789@end smallexample
3790
3791If you configure @value{GDBN} using the @samp{--without-expat} option,
3792it will not be able to display syscall names. Also, if your
3793architecture does not have an XML file describing its system calls,
3794you will not be able to see the syscall names. It is important to
3795notice that these two features are used for accessing the syscall
3796name database. In either case, you will see a warning like this:
3797
3798@smallexample
3799(@value{GDBP}) catch syscall
3800warning: Could not open "syscalls/i386-linux.xml"
3801warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'.
3802GDB will not be able to display syscall names.
3803Catchpoint 1 (syscall)
3804(@value{GDBP})
3805@end smallexample
3806
3807Of course, the file name will change depending on your architecture and system.
3808
3809Still using the example above, you can also try to catch a syscall by its
3810number. In this case, you would see something like:
3811
3812@smallexample
3813(@value{GDBP}) catch syscall 252
3814Catchpoint 1 (syscall(s) 252)
3815@end smallexample
3816
3817Again, in this case @value{GDBN} would not be able to display syscall's names.
3818
c906108c 3819@item fork
5ee187d7
DJ
3820A call to @code{fork}. This is currently only available for HP-UX
3821and @sc{gnu}/Linux.
c906108c
SS
3822
3823@item vfork
5ee187d7
DJ
3824A call to @code{vfork}. This is currently only available for HP-UX
3825and @sc{gnu}/Linux.
c906108c 3826
c906108c
SS
3827@end table
3828
3829@item tcatch @var{event}
3830Set a catchpoint that is enabled only for one stop. The catchpoint is
3831automatically deleted after the first time the event is caught.
3832
3833@end table
3834
3835Use the @code{info break} command to list the current catchpoints.
3836
b37052ae 3837There are currently some limitations to C@t{++} exception handling
c906108c
SS
3838(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
3839
3840@itemize @bullet
3841@item
3842If you call a function interactively, @value{GDBN} normally returns
3843control to you when the function has finished executing. If the call
3844raises an exception, however, the call may bypass the mechanism that
3845returns control to you and cause your program either to abort or to
3846simply continue running until it hits a breakpoint, catches a signal
3847that @value{GDBN} is listening for, or exits. This is the case even if
3848you set a catchpoint for the exception; catchpoints on exceptions are
3849disabled within interactive calls.
3850
3851@item
3852You cannot raise an exception interactively.
3853
3854@item
3855You cannot install an exception handler interactively.
3856@end itemize
3857
3858@cindex raise exceptions
3859Sometimes @code{catch} is not the best way to debug exception handling:
3860if you need to know exactly where an exception is raised, it is better to
3861stop @emph{before} the exception handler is called, since that way you
3862can see the stack before any unwinding takes place. If you set a
3863breakpoint in an exception handler instead, it may not be easy to find
3864out where the exception was raised.
3865
3866To stop just before an exception handler is called, you need some
b37052ae 3867knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
3868raised by calling a library function named @code{__raise_exception}
3869which has the following ANSI C interface:
3870
474c8240 3871@smallexample
c906108c 3872 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
3873 @var{id} is the exception identifier. */
3874 void __raise_exception (void **addr, void *id);
474c8240 3875@end smallexample
c906108c
SS
3876
3877@noindent
3878To make the debugger catch all exceptions before any stack
3879unwinding takes place, set a breakpoint on @code{__raise_exception}
79a6e687 3880(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Exceptions}).
c906108c 3881
79a6e687 3882With a conditional breakpoint (@pxref{Conditions, ,Break Conditions})
c906108c
SS
3883that depends on the value of @var{id}, you can stop your program when
3884a specific exception is raised. You can use multiple conditional
3885breakpoints to stop your program when any of a number of exceptions are
3886raised.
3887
3888
6d2ebf8b 3889@node Delete Breaks
79a6e687 3890@subsection Deleting Breakpoints
c906108c
SS
3891
3892@cindex clearing breakpoints, watchpoints, catchpoints
3893@cindex deleting breakpoints, watchpoints, catchpoints
3894It is often necessary to eliminate a breakpoint, watchpoint, or
3895catchpoint once it has done its job and you no longer want your program
3896to stop there. This is called @dfn{deleting} the breakpoint. A
3897breakpoint that has been deleted no longer exists; it is forgotten.
3898
3899With the @code{clear} command you can delete breakpoints according to
3900where they are in your program. With the @code{delete} command you can
3901delete individual breakpoints, watchpoints, or catchpoints by specifying
3902their breakpoint numbers.
3903
3904It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
3905automatically ignores breakpoints on the first instruction to be executed
3906when you continue execution without changing the execution address.
3907
3908@table @code
3909@kindex clear
3910@item clear
3911Delete any breakpoints at the next instruction to be executed in the
79a6e687 3912selected stack frame (@pxref{Selection, ,Selecting a Frame}). When
c906108c
SS
3913the innermost frame is selected, this is a good way to delete a
3914breakpoint where your program just stopped.
3915
2a25a5ba
EZ
3916@item clear @var{location}
3917Delete any breakpoints set at the specified @var{location}.
3918@xref{Specify Location}, for the various forms of @var{location}; the
3919most useful ones are listed below:
3920
3921@table @code
c906108c
SS
3922@item clear @var{function}
3923@itemx clear @var{filename}:@var{function}
09d4efe1 3924Delete any breakpoints set at entry to the named @var{function}.
c906108c
SS
3925
3926@item clear @var{linenum}
3927@itemx clear @var{filename}:@var{linenum}
09d4efe1
EZ
3928Delete any breakpoints set at or within the code of the specified
3929@var{linenum} of the specified @var{filename}.
2a25a5ba 3930@end table
c906108c
SS
3931
3932@cindex delete breakpoints
3933@kindex delete
41afff9a 3934@kindex d @r{(@code{delete})}
c5394b80
JM
3935@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
3936Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
3937ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
3938breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
3939confirm off}). You can abbreviate this command as @code{d}.
3940@end table
3941
6d2ebf8b 3942@node Disabling
79a6e687 3943@subsection Disabling Breakpoints
c906108c 3944
4644b6e3 3945@cindex enable/disable a breakpoint
c906108c
SS
3946Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
3947prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
3948it had been deleted, but remembers the information on the breakpoint so
3949that you can @dfn{enable} it again later.
3950
3951You disable and enable breakpoints, watchpoints, and catchpoints with
3952the @code{enable} and @code{disable} commands, optionally specifying one
3953or more breakpoint numbers as arguments. Use @code{info break} or
3954@code{info watch} to print a list of breakpoints, watchpoints, and
3955catchpoints if you do not know which numbers to use.
3956
3b784c4f
EZ
3957Disabling and enabling a breakpoint that has multiple locations
3958affects all of its locations.
3959
c906108c
SS
3960A breakpoint, watchpoint, or catchpoint can have any of four different
3961states of enablement:
3962
3963@itemize @bullet
3964@item
3965Enabled. The breakpoint stops your program. A breakpoint set
3966with the @code{break} command starts out in this state.
3967@item
3968Disabled. The breakpoint has no effect on your program.
3969@item
3970Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 3971disabled.
c906108c
SS
3972@item
3973Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
3974immediately after it does so it is deleted permanently. A breakpoint
3975set with the @code{tbreak} command starts out in this state.
c906108c
SS
3976@end itemize
3977
3978You can use the following commands to enable or disable breakpoints,
3979watchpoints, and catchpoints:
3980
3981@table @code
c906108c 3982@kindex disable
41afff9a 3983@kindex dis @r{(@code{disable})}
c5394b80 3984@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
3985Disable the specified breakpoints---or all breakpoints, if none are
3986listed. A disabled breakpoint has no effect but is not forgotten. All
3987options such as ignore-counts, conditions and commands are remembered in
3988case the breakpoint is enabled again later. You may abbreviate
3989@code{disable} as @code{dis}.
3990
c906108c 3991@kindex enable
c5394b80 3992@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
3993Enable the specified breakpoints (or all defined breakpoints). They
3994become effective once again in stopping your program.
3995
c5394b80 3996@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
3997Enable the specified breakpoints temporarily. @value{GDBN} disables any
3998of these breakpoints immediately after stopping your program.
3999
c5394b80 4000@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
4001Enable the specified breakpoints to work once, then die. @value{GDBN}
4002deletes any of these breakpoints as soon as your program stops there.
09d4efe1 4003Breakpoints set by the @code{tbreak} command start out in this state.
c906108c
SS
4004@end table
4005
d4f3574e
SS
4006@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
4007@c confusing: tbreak is also initially enabled.
c906108c 4008Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
79a6e687 4009,Setting Breakpoints}), breakpoints that you set are initially enabled;
c906108c
SS
4010subsequently, they become disabled or enabled only when you use one of
4011the commands above. (The command @code{until} can set and delete a
4012breakpoint of its own, but it does not change the state of your other
4013breakpoints; see @ref{Continuing and Stepping, ,Continuing and
79a6e687 4014Stepping}.)
c906108c 4015
6d2ebf8b 4016@node Conditions
79a6e687 4017@subsection Break Conditions
c906108c
SS
4018@cindex conditional breakpoints
4019@cindex breakpoint conditions
4020
4021@c FIXME what is scope of break condition expr? Context where wanted?
5d161b24 4022@c in particular for a watchpoint?
c906108c
SS
4023The simplest sort of breakpoint breaks every time your program reaches a
4024specified place. You can also specify a @dfn{condition} for a
4025breakpoint. A condition is just a Boolean expression in your
4026programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
4027a condition evaluates the expression each time your program reaches it,
4028and your program stops only if the condition is @emph{true}.
4029
4030This is the converse of using assertions for program validation; in that
4031situation, you want to stop when the assertion is violated---that is,
4032when the condition is false. In C, if you want to test an assertion expressed
4033by the condition @var{assert}, you should set the condition
4034@samp{! @var{assert}} on the appropriate breakpoint.
4035
4036Conditions are also accepted for watchpoints; you may not need them,
4037since a watchpoint is inspecting the value of an expression anyhow---but
4038it might be simpler, say, to just set a watchpoint on a variable name,
4039and specify a condition that tests whether the new value is an interesting
4040one.
4041
4042Break conditions can have side effects, and may even call functions in
4043your program. This can be useful, for example, to activate functions
4044that log program progress, or to use your own print functions to
99e008fe 4045format special data structures. The effects are completely predictable
c906108c
SS
4046unless there is another enabled breakpoint at the same address. (In
4047that case, @value{GDBN} might see the other breakpoint first and stop your
4048program without checking the condition of this one.) Note that
d4f3574e
SS
4049breakpoint commands are usually more convenient and flexible than break
4050conditions for the
c906108c 4051purpose of performing side effects when a breakpoint is reached
79a6e687 4052(@pxref{Break Commands, ,Breakpoint Command Lists}).
c906108c
SS
4053
4054Break conditions can be specified when a breakpoint is set, by using
4055@samp{if} in the arguments to the @code{break} command. @xref{Set
79a6e687 4056Breaks, ,Setting Breakpoints}. They can also be changed at any time
c906108c 4057with the @code{condition} command.
53a5351d 4058
c906108c
SS
4059You can also use the @code{if} keyword with the @code{watch} command.
4060The @code{catch} command does not recognize the @code{if} keyword;
4061@code{condition} is the only way to impose a further condition on a
4062catchpoint.
c906108c
SS
4063
4064@table @code
4065@kindex condition
4066@item condition @var{bnum} @var{expression}
4067Specify @var{expression} as the break condition for breakpoint,
4068watchpoint, or catchpoint number @var{bnum}. After you set a condition,
4069breakpoint @var{bnum} stops your program only if the value of
4070@var{expression} is true (nonzero, in C). When you use
4071@code{condition}, @value{GDBN} checks @var{expression} immediately for
4072syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
4073referents in the context of your breakpoint. If @var{expression} uses
4074symbols not referenced in the context of the breakpoint, @value{GDBN}
4075prints an error message:
4076
474c8240 4077@smallexample
d4f3574e 4078No symbol "foo" in current context.
474c8240 4079@end smallexample
d4f3574e
SS
4080
4081@noindent
c906108c
SS
4082@value{GDBN} does
4083not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
4084command (or a command that sets a breakpoint with a condition, like
4085@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
4086
4087@item condition @var{bnum}
4088Remove the condition from breakpoint number @var{bnum}. It becomes
4089an ordinary unconditional breakpoint.
4090@end table
4091
4092@cindex ignore count (of breakpoint)
4093A special case of a breakpoint condition is to stop only when the
4094breakpoint has been reached a certain number of times. This is so
4095useful that there is a special way to do it, using the @dfn{ignore
4096count} of the breakpoint. Every breakpoint has an ignore count, which
4097is an integer. Most of the time, the ignore count is zero, and
4098therefore has no effect. But if your program reaches a breakpoint whose
4099ignore count is positive, then instead of stopping, it just decrements
4100the ignore count by one and continues. As a result, if the ignore count
4101value is @var{n}, the breakpoint does not stop the next @var{n} times
4102your program reaches it.
4103
4104@table @code
4105@kindex ignore
4106@item ignore @var{bnum} @var{count}
4107Set the ignore count of breakpoint number @var{bnum} to @var{count}.
4108The next @var{count} times the breakpoint is reached, your program's
4109execution does not stop; other than to decrement the ignore count, @value{GDBN}
4110takes no action.
4111
4112To make the breakpoint stop the next time it is reached, specify
4113a count of zero.
4114
4115When you use @code{continue} to resume execution of your program from a
4116breakpoint, you can specify an ignore count directly as an argument to
4117@code{continue}, rather than using @code{ignore}. @xref{Continuing and
79a6e687 4118Stepping,,Continuing and Stepping}.
c906108c
SS
4119
4120If a breakpoint has a positive ignore count and a condition, the
4121condition is not checked. Once the ignore count reaches zero,
4122@value{GDBN} resumes checking the condition.
4123
4124You could achieve the effect of the ignore count with a condition such
4125as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
4126is decremented each time. @xref{Convenience Vars, ,Convenience
79a6e687 4127Variables}.
c906108c
SS
4128@end table
4129
4130Ignore counts apply to breakpoints, watchpoints, and catchpoints.
4131
4132
6d2ebf8b 4133@node Break Commands
79a6e687 4134@subsection Breakpoint Command Lists
c906108c
SS
4135
4136@cindex breakpoint commands
4137You can give any breakpoint (or watchpoint or catchpoint) a series of
4138commands to execute when your program stops due to that breakpoint. For
4139example, you might want to print the values of certain expressions, or
4140enable other breakpoints.
4141
4142@table @code
4143@kindex commands
ca91424e 4144@kindex end@r{ (breakpoint commands)}
c906108c
SS
4145@item commands @r{[}@var{bnum}@r{]}
4146@itemx @dots{} @var{command-list} @dots{}
4147@itemx end
4148Specify a list of commands for breakpoint number @var{bnum}. The commands
4149themselves appear on the following lines. Type a line containing just
4150@code{end} to terminate the commands.
4151
4152To remove all commands from a breakpoint, type @code{commands} and
4153follow it immediately with @code{end}; that is, give no commands.
4154
4155With no @var{bnum} argument, @code{commands} refers to the last
4156breakpoint, watchpoint, or catchpoint set (not to the breakpoint most
4157recently encountered).
4158@end table
4159
4160Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
4161disabled within a @var{command-list}.
4162
4163You can use breakpoint commands to start your program up again. Simply
4164use the @code{continue} command, or @code{step}, or any other command
4165that resumes execution.
4166
4167Any other commands in the command list, after a command that resumes
4168execution, are ignored. This is because any time you resume execution
4169(even with a simple @code{next} or @code{step}), you may encounter
4170another breakpoint---which could have its own command list, leading to
4171ambiguities about which list to execute.
4172
4173@kindex silent
4174If the first command you specify in a command list is @code{silent}, the
4175usual message about stopping at a breakpoint is not printed. This may
4176be desirable for breakpoints that are to print a specific message and
4177then continue. If none of the remaining commands print anything, you
4178see no sign that the breakpoint was reached. @code{silent} is
4179meaningful only at the beginning of a breakpoint command list.
4180
4181The commands @code{echo}, @code{output}, and @code{printf} allow you to
4182print precisely controlled output, and are often useful in silent
79a6e687 4183breakpoints. @xref{Output, ,Commands for Controlled Output}.
c906108c
SS
4184
4185For example, here is how you could use breakpoint commands to print the
4186value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
4187
474c8240 4188@smallexample
c906108c
SS
4189break foo if x>0
4190commands
4191silent
4192printf "x is %d\n",x
4193cont
4194end
474c8240 4195@end smallexample
c906108c
SS
4196
4197One application for breakpoint commands is to compensate for one bug so
4198you can test for another. Put a breakpoint just after the erroneous line
4199of code, give it a condition to detect the case in which something
4200erroneous has been done, and give it commands to assign correct values
4201to any variables that need them. End with the @code{continue} command
4202so that your program does not stop, and start with the @code{silent}
4203command so that no output is produced. Here is an example:
4204
474c8240 4205@smallexample
c906108c
SS
4206break 403
4207commands
4208silent
4209set x = y + 4
4210cont
4211end
474c8240 4212@end smallexample
c906108c 4213
c906108c 4214@c @ifclear BARETARGET
6d2ebf8b 4215@node Error in Breakpoints
d4f3574e 4216@subsection ``Cannot insert breakpoints''
c906108c 4217
fa3a767f
PA
4218If you request too many active hardware-assisted breakpoints and
4219watchpoints, you will see this error message:
d4f3574e
SS
4220
4221@c FIXME: the precise wording of this message may change; the relevant
4222@c source change is not committed yet (Sep 3, 1999).
4223@smallexample
4224Stopped; cannot insert breakpoints.
4225You may have requested too many hardware breakpoints and watchpoints.
4226@end smallexample
4227
4228@noindent
4229This message is printed when you attempt to resume the program, since
4230only then @value{GDBN} knows exactly how many hardware breakpoints and
4231watchpoints it needs to insert.
4232
4233When this message is printed, you need to disable or remove some of the
4234hardware-assisted breakpoints and watchpoints, and then continue.
4235
79a6e687 4236@node Breakpoint-related Warnings
1485d690
KB
4237@subsection ``Breakpoint address adjusted...''
4238@cindex breakpoint address adjusted
4239
4240Some processor architectures place constraints on the addresses at
4241which breakpoints may be placed. For architectures thus constrained,
4242@value{GDBN} will attempt to adjust the breakpoint's address to comply
4243with the constraints dictated by the architecture.
4244
4245One example of such an architecture is the Fujitsu FR-V. The FR-V is
4246a VLIW architecture in which a number of RISC-like instructions may be
4247bundled together for parallel execution. The FR-V architecture
4248constrains the location of a breakpoint instruction within such a
4249bundle to the instruction with the lowest address. @value{GDBN}
4250honors this constraint by adjusting a breakpoint's address to the
4251first in the bundle.
4252
4253It is not uncommon for optimized code to have bundles which contain
4254instructions from different source statements, thus it may happen that
4255a breakpoint's address will be adjusted from one source statement to
4256another. Since this adjustment may significantly alter @value{GDBN}'s
4257breakpoint related behavior from what the user expects, a warning is
4258printed when the breakpoint is first set and also when the breakpoint
4259is hit.
4260
4261A warning like the one below is printed when setting a breakpoint
4262that's been subject to address adjustment:
4263
4264@smallexample
4265warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
4266@end smallexample
4267
4268Such warnings are printed both for user settable and @value{GDBN}'s
4269internal breakpoints. If you see one of these warnings, you should
4270verify that a breakpoint set at the adjusted address will have the
4271desired affect. If not, the breakpoint in question may be removed and
b383017d 4272other breakpoints may be set which will have the desired behavior.
1485d690
KB
4273E.g., it may be sufficient to place the breakpoint at a later
4274instruction. A conditional breakpoint may also be useful in some
4275cases to prevent the breakpoint from triggering too often.
4276
4277@value{GDBN} will also issue a warning when stopping at one of these
4278adjusted breakpoints:
4279
4280@smallexample
4281warning: Breakpoint 1 address previously adjusted from 0x00010414
4282to 0x00010410.
4283@end smallexample
4284
4285When this warning is encountered, it may be too late to take remedial
4286action except in cases where the breakpoint is hit earlier or more
4287frequently than expected.
d4f3574e 4288
6d2ebf8b 4289@node Continuing and Stepping
79a6e687 4290@section Continuing and Stepping
c906108c
SS
4291
4292@cindex stepping
4293@cindex continuing
4294@cindex resuming execution
4295@dfn{Continuing} means resuming program execution until your program
4296completes normally. In contrast, @dfn{stepping} means executing just
4297one more ``step'' of your program, where ``step'' may mean either one
4298line of source code, or one machine instruction (depending on what
7a292a7a
SS
4299particular command you use). Either when continuing or when stepping,
4300your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
4301it stops due to a signal, you may want to use @code{handle}, or use
4302@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
4303
4304@table @code
4305@kindex continue
41afff9a
EZ
4306@kindex c @r{(@code{continue})}
4307@kindex fg @r{(resume foreground execution)}
c906108c
SS
4308@item continue @r{[}@var{ignore-count}@r{]}
4309@itemx c @r{[}@var{ignore-count}@r{]}
4310@itemx fg @r{[}@var{ignore-count}@r{]}
4311Resume program execution, at the address where your program last stopped;
4312any breakpoints set at that address are bypassed. The optional argument
4313@var{ignore-count} allows you to specify a further number of times to
4314ignore a breakpoint at this location; its effect is like that of
79a6e687 4315@code{ignore} (@pxref{Conditions, ,Break Conditions}).
c906108c
SS
4316
4317The argument @var{ignore-count} is meaningful only when your program
4318stopped due to a breakpoint. At other times, the argument to
4319@code{continue} is ignored.
4320
d4f3574e
SS
4321The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
4322debugged program is deemed to be the foreground program) are provided
4323purely for convenience, and have exactly the same behavior as
4324@code{continue}.
c906108c
SS
4325@end table
4326
4327To resume execution at a different place, you can use @code{return}
79a6e687 4328(@pxref{Returning, ,Returning from a Function}) to go back to the
c906108c 4329calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
79a6e687 4330Different Address}) to go to an arbitrary location in your program.
c906108c
SS
4331
4332A typical technique for using stepping is to set a breakpoint
79a6e687 4333(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the
c906108c
SS
4334beginning of the function or the section of your program where a problem
4335is believed to lie, run your program until it stops at that breakpoint,
4336and then step through the suspect area, examining the variables that are
4337interesting, until you see the problem happen.
4338
4339@table @code
4340@kindex step
41afff9a 4341@kindex s @r{(@code{step})}
c906108c
SS
4342@item step
4343Continue running your program until control reaches a different source
4344line, then stop it and return control to @value{GDBN}. This command is
4345abbreviated @code{s}.
4346
4347@quotation
4348@c "without debugging information" is imprecise; actually "without line
4349@c numbers in the debugging information". (gcc -g1 has debugging info but
4350@c not line numbers). But it seems complex to try to make that
4351@c distinction here.
4352@emph{Warning:} If you use the @code{step} command while control is
4353within a function that was compiled without debugging information,
4354execution proceeds until control reaches a function that does have
4355debugging information. Likewise, it will not step into a function which
4356is compiled without debugging information. To step through functions
4357without debugging information, use the @code{stepi} command, described
4358below.
4359@end quotation
4360
4a92d011
EZ
4361The @code{step} command only stops at the first instruction of a source
4362line. This prevents the multiple stops that could otherwise occur in
4363@code{switch} statements, @code{for} loops, etc. @code{step} continues
4364to stop if a function that has debugging information is called within
4365the line. In other words, @code{step} @emph{steps inside} any functions
4366called within the line.
c906108c 4367
d4f3574e
SS
4368Also, the @code{step} command only enters a function if there is line
4369number information for the function. Otherwise it acts like the
5d161b24 4370@code{next} command. This avoids problems when using @code{cc -gl}
c906108c 4371on MIPS machines. Previously, @code{step} entered subroutines if there
5d161b24 4372was any debugging information about the routine.
c906108c
SS
4373
4374@item step @var{count}
4375Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
4376breakpoint is reached, or a signal not related to stepping occurs before
4377@var{count} steps, stepping stops right away.
c906108c
SS
4378
4379@kindex next
41afff9a 4380@kindex n @r{(@code{next})}
c906108c
SS
4381@item next @r{[}@var{count}@r{]}
4382Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
4383This is similar to @code{step}, but function calls that appear within
4384the line of code are executed without stopping. Execution stops when
4385control reaches a different line of code at the original stack level
4386that was executing when you gave the @code{next} command. This command
4387is abbreviated @code{n}.
c906108c
SS
4388
4389An argument @var{count} is a repeat count, as for @code{step}.
4390
4391
4392@c FIX ME!! Do we delete this, or is there a way it fits in with
4393@c the following paragraph? --- Vctoria
4394@c
4395@c @code{next} within a function that lacks debugging information acts like
4396@c @code{step}, but any function calls appearing within the code of the
4397@c function are executed without stopping.
4398
d4f3574e
SS
4399The @code{next} command only stops at the first instruction of a
4400source line. This prevents multiple stops that could otherwise occur in
4a92d011 4401@code{switch} statements, @code{for} loops, etc.
c906108c 4402
b90a5f51
CF
4403@kindex set step-mode
4404@item set step-mode
4405@cindex functions without line info, and stepping
4406@cindex stepping into functions with no line info
4407@itemx set step-mode on
4a92d011 4408The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
4409stop at the first instruction of a function which contains no debug line
4410information rather than stepping over it.
4411
4a92d011
EZ
4412This is useful in cases where you may be interested in inspecting the
4413machine instructions of a function which has no symbolic info and do not
4414want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
4415
4416@item set step-mode off
4a92d011 4417Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
4418debug information. This is the default.
4419
9c16f35a
EZ
4420@item show step-mode
4421Show whether @value{GDBN} will stop in or step over functions without
4422source line debug information.
4423
c906108c 4424@kindex finish
8dfa32fc 4425@kindex fin @r{(@code{finish})}
c906108c
SS
4426@item finish
4427Continue running until just after function in the selected stack frame
8dfa32fc
JB
4428returns. Print the returned value (if any). This command can be
4429abbreviated as @code{fin}.
c906108c
SS
4430
4431Contrast this with the @code{return} command (@pxref{Returning,
79a6e687 4432,Returning from a Function}).
c906108c
SS
4433
4434@kindex until
41afff9a 4435@kindex u @r{(@code{until})}
09d4efe1 4436@cindex run until specified location
c906108c
SS
4437@item until
4438@itemx u
4439Continue running until a source line past the current line, in the
4440current stack frame, is reached. This command is used to avoid single
4441stepping through a loop more than once. It is like the @code{next}
4442command, except that when @code{until} encounters a jump, it
4443automatically continues execution until the program counter is greater
4444than the address of the jump.
4445
4446This means that when you reach the end of a loop after single stepping
4447though it, @code{until} makes your program continue execution until it
4448exits the loop. In contrast, a @code{next} command at the end of a loop
4449simply steps back to the beginning of the loop, which forces you to step
4450through the next iteration.
4451
4452@code{until} always stops your program if it attempts to exit the current
4453stack frame.
4454
4455@code{until} may produce somewhat counterintuitive results if the order
4456of machine code does not match the order of the source lines. For
4457example, in the following excerpt from a debugging session, the @code{f}
4458(@code{frame}) command shows that execution is stopped at line
4459@code{206}; yet when we use @code{until}, we get to line @code{195}:
4460
474c8240 4461@smallexample
c906108c
SS
4462(@value{GDBP}) f
4463#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
4464206 expand_input();
4465(@value{GDBP}) until
4466195 for ( ; argc > 0; NEXTARG) @{
474c8240 4467@end smallexample
c906108c
SS
4468
4469This happened because, for execution efficiency, the compiler had
4470generated code for the loop closure test at the end, rather than the
4471start, of the loop---even though the test in a C @code{for}-loop is
4472written before the body of the loop. The @code{until} command appeared
4473to step back to the beginning of the loop when it advanced to this
4474expression; however, it has not really gone to an earlier
4475statement---not in terms of the actual machine code.
4476
4477@code{until} with no argument works by means of single
4478instruction stepping, and hence is slower than @code{until} with an
4479argument.
4480
4481@item until @var{location}
4482@itemx u @var{location}
4483Continue running your program until either the specified location is
4484reached, or the current stack frame returns. @var{location} is any of
2a25a5ba
EZ
4485the forms described in @ref{Specify Location}.
4486This form of the command uses temporary breakpoints, and
c60eb6f1
EZ
4487hence is quicker than @code{until} without an argument. The specified
4488location is actually reached only if it is in the current frame. This
4489implies that @code{until} can be used to skip over recursive function
4490invocations. For instance in the code below, if the current location is
4491line @code{96}, issuing @code{until 99} will execute the program up to
db2e3e2e 4492line @code{99} in the same invocation of factorial, i.e., after the inner
c60eb6f1
EZ
4493invocations have returned.
4494
4495@smallexample
449694 int factorial (int value)
449795 @{
449896 if (value > 1) @{
449997 value *= factorial (value - 1);
450098 @}
450199 return (value);
4502100 @}
4503@end smallexample
4504
4505
4506@kindex advance @var{location}
4507@itemx advance @var{location}
09d4efe1 4508Continue running the program up to the given @var{location}. An argument is
2a25a5ba
EZ
4509required, which should be of one of the forms described in
4510@ref{Specify Location}.
4511Execution will also stop upon exit from the current stack
c60eb6f1
EZ
4512frame. This command is similar to @code{until}, but @code{advance} will
4513not skip over recursive function calls, and the target location doesn't
4514have to be in the same frame as the current one.
4515
c906108c
SS
4516
4517@kindex stepi
41afff9a 4518@kindex si @r{(@code{stepi})}
c906108c 4519@item stepi
96a2c332 4520@itemx stepi @var{arg}
c906108c
SS
4521@itemx si
4522Execute one machine instruction, then stop and return to the debugger.
4523
4524It is often useful to do @samp{display/i $pc} when stepping by machine
4525instructions. This makes @value{GDBN} automatically display the next
4526instruction to be executed, each time your program stops. @xref{Auto
79a6e687 4527Display,, Automatic Display}.
c906108c
SS
4528
4529An argument is a repeat count, as in @code{step}.
4530
4531@need 750
4532@kindex nexti
41afff9a 4533@kindex ni @r{(@code{nexti})}
c906108c 4534@item nexti
96a2c332 4535@itemx nexti @var{arg}
c906108c
SS
4536@itemx ni
4537Execute one machine instruction, but if it is a function call,
4538proceed until the function returns.
4539
4540An argument is a repeat count, as in @code{next}.
4541@end table
4542
6d2ebf8b 4543@node Signals
c906108c
SS
4544@section Signals
4545@cindex signals
4546
4547A signal is an asynchronous event that can happen in a program. The
4548operating system defines the possible kinds of signals, and gives each
4549kind a name and a number. For example, in Unix @code{SIGINT} is the
c8aa23ab 4550signal a program gets when you type an interrupt character (often @kbd{Ctrl-c});
c906108c
SS
4551@code{SIGSEGV} is the signal a program gets from referencing a place in
4552memory far away from all the areas in use; @code{SIGALRM} occurs when
4553the alarm clock timer goes off (which happens only if your program has
4554requested an alarm).
4555
4556@cindex fatal signals
4557Some signals, including @code{SIGALRM}, are a normal part of the
4558functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 4559errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
4560program has not specified in advance some other way to handle the signal.
4561@code{SIGINT} does not indicate an error in your program, but it is normally
4562fatal so it can carry out the purpose of the interrupt: to kill the program.
4563
4564@value{GDBN} has the ability to detect any occurrence of a signal in your
4565program. You can tell @value{GDBN} in advance what to do for each kind of
4566signal.
4567
4568@cindex handling signals
24f93129
EZ
4569Normally, @value{GDBN} is set up to let the non-erroneous signals like
4570@code{SIGALRM} be silently passed to your program
4571(so as not to interfere with their role in the program's functioning)
c906108c
SS
4572but to stop your program immediately whenever an error signal happens.
4573You can change these settings with the @code{handle} command.
4574
4575@table @code
4576@kindex info signals
09d4efe1 4577@kindex info handle
c906108c 4578@item info signals
96a2c332 4579@itemx info handle
c906108c
SS
4580Print a table of all the kinds of signals and how @value{GDBN} has been told to
4581handle each one. You can use this to see the signal numbers of all
4582the defined types of signals.
4583
45ac1734
EZ
4584@item info signals @var{sig}
4585Similar, but print information only about the specified signal number.
4586
d4f3574e 4587@code{info handle} is an alias for @code{info signals}.
c906108c
SS
4588
4589@kindex handle
45ac1734 4590@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]}
5ece1a18
EZ
4591Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
4592can be the number of a signal or its name (with or without the
24f93129 4593@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18 4594@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
45ac1734
EZ
4595known signals. Optional arguments @var{keywords}, described below,
4596say what change to make.
c906108c
SS
4597@end table
4598
4599@c @group
4600The keywords allowed by the @code{handle} command can be abbreviated.
4601Their full names are:
4602
4603@table @code
4604@item nostop
4605@value{GDBN} should not stop your program when this signal happens. It may
4606still print a message telling you that the signal has come in.
4607
4608@item stop
4609@value{GDBN} should stop your program when this signal happens. This implies
4610the @code{print} keyword as well.
4611
4612@item print
4613@value{GDBN} should print a message when this signal happens.
4614
4615@item noprint
4616@value{GDBN} should not mention the occurrence of the signal at all. This
4617implies the @code{nostop} keyword as well.
4618
4619@item pass
5ece1a18 4620@itemx noignore
c906108c
SS
4621@value{GDBN} should allow your program to see this signal; your program
4622can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 4623and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
4624
4625@item nopass
5ece1a18 4626@itemx ignore
c906108c 4627@value{GDBN} should not allow your program to see this signal.
5ece1a18 4628@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
4629@end table
4630@c @end group
4631
d4f3574e
SS
4632When a signal stops your program, the signal is not visible to the
4633program until you
c906108c
SS
4634continue. Your program sees the signal then, if @code{pass} is in
4635effect for the signal in question @emph{at that time}. In other words,
4636after @value{GDBN} reports a signal, you can use the @code{handle}
4637command with @code{pass} or @code{nopass} to control whether your
4638program sees that signal when you continue.
4639
24f93129
EZ
4640The default is set to @code{nostop}, @code{noprint}, @code{pass} for
4641non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
4642@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
4643erroneous signals.
4644
c906108c
SS
4645You can also use the @code{signal} command to prevent your program from
4646seeing a signal, or cause it to see a signal it normally would not see,
4647or to give it any signal at any time. For example, if your program stopped
4648due to some sort of memory reference error, you might store correct
4649values into the erroneous variables and continue, hoping to see more
4650execution; but your program would probably terminate immediately as
4651a result of the fatal signal once it saw the signal. To prevent this,
4652you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
79a6e687 4653Program a Signal}.
c906108c 4654
4aa995e1
PA
4655@cindex extra signal information
4656@anchor{extra signal information}
4657
4658On some targets, @value{GDBN} can inspect extra signal information
4659associated with the intercepted signal, before it is actually
4660delivered to the program being debugged. This information is exported
4661by the convenience variable @code{$_siginfo}, and consists of data
4662that is passed by the kernel to the signal handler at the time of the
4663receipt of a signal. The data type of the information itself is
4664target dependent. You can see the data type using the @code{ptype
4665$_siginfo} command. On Unix systems, it typically corresponds to the
4666standard @code{siginfo_t} type, as defined in the @file{signal.h}
4667system header.
4668
4669Here's an example, on a @sc{gnu}/Linux system, printing the stray
4670referenced address that raised a segmentation fault.
4671
4672@smallexample
4673@group
4674(@value{GDBP}) continue
4675Program received signal SIGSEGV, Segmentation fault.
46760x0000000000400766 in main ()
467769 *(int *)p = 0;
4678(@value{GDBP}) ptype $_siginfo
4679type = struct @{
4680 int si_signo;
4681 int si_errno;
4682 int si_code;
4683 union @{
4684 int _pad[28];
4685 struct @{...@} _kill;
4686 struct @{...@} _timer;
4687 struct @{...@} _rt;
4688 struct @{...@} _sigchld;
4689 struct @{...@} _sigfault;
4690 struct @{...@} _sigpoll;
4691 @} _sifields;
4692@}
4693(@value{GDBP}) ptype $_siginfo._sifields._sigfault
4694type = struct @{
4695 void *si_addr;
4696@}
4697(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr
4698$1 = (void *) 0x7ffff7ff7000
4699@end group
4700@end smallexample
4701
4702Depending on target support, @code{$_siginfo} may also be writable.
4703
6d2ebf8b 4704@node Thread Stops
79a6e687 4705@section Stopping and Starting Multi-thread Programs
c906108c 4706
0606b73b
SL
4707@cindex stopped threads
4708@cindex threads, stopped
4709
4710@cindex continuing threads
4711@cindex threads, continuing
4712
4713@value{GDBN} supports debugging programs with multiple threads
4714(@pxref{Threads,, Debugging Programs with Multiple Threads}). There
4715are two modes of controlling execution of your program within the
4716debugger. In the default mode, referred to as @dfn{all-stop mode},
4717when any thread in your program stops (for example, at a breakpoint
4718or while being stepped), all other threads in the program are also stopped by
4719@value{GDBN}. On some targets, @value{GDBN} also supports
4720@dfn{non-stop mode}, in which other threads can continue to run freely while
4721you examine the stopped thread in the debugger.
4722
4723@menu
4724* All-Stop Mode:: All threads stop when GDB takes control
4725* Non-Stop Mode:: Other threads continue to execute
4726* Background Execution:: Running your program asynchronously
4727* Thread-Specific Breakpoints:: Controlling breakpoints
4728* Interrupted System Calls:: GDB may interfere with system calls
4729@end menu
4730
4731@node All-Stop Mode
4732@subsection All-Stop Mode
4733
4734@cindex all-stop mode
4735
4736In all-stop mode, whenever your program stops under @value{GDBN} for any reason,
4737@emph{all} threads of execution stop, not just the current thread. This
4738allows you to examine the overall state of the program, including
4739switching between threads, without worrying that things may change
4740underfoot.
4741
4742Conversely, whenever you restart the program, @emph{all} threads start
4743executing. @emph{This is true even when single-stepping} with commands
4744like @code{step} or @code{next}.
4745
4746In particular, @value{GDBN} cannot single-step all threads in lockstep.
4747Since thread scheduling is up to your debugging target's operating
4748system (not controlled by @value{GDBN}), other threads may
4749execute more than one statement while the current thread completes a
4750single step. Moreover, in general other threads stop in the middle of a
4751statement, rather than at a clean statement boundary, when the program
4752stops.
4753
4754You might even find your program stopped in another thread after
4755continuing or even single-stepping. This happens whenever some other
4756thread runs into a breakpoint, a signal, or an exception before the
4757first thread completes whatever you requested.
4758
4759@cindex automatic thread selection
4760@cindex switching threads automatically
4761@cindex threads, automatic switching
4762Whenever @value{GDBN} stops your program, due to a breakpoint or a
4763signal, it automatically selects the thread where that breakpoint or
4764signal happened. @value{GDBN} alerts you to the context switch with a
4765message such as @samp{[Switching to Thread @var{n}]} to identify the
4766thread.
4767
4768On some OSes, you can modify @value{GDBN}'s default behavior by
4769locking the OS scheduler to allow only a single thread to run.
4770
4771@table @code
4772@item set scheduler-locking @var{mode}
4773@cindex scheduler locking mode
4774@cindex lock scheduler
4775Set the scheduler locking mode. If it is @code{off}, then there is no
4776locking and any thread may run at any time. If @code{on}, then only the
4777current thread may run when the inferior is resumed. The @code{step}
4778mode optimizes for single-stepping; it prevents other threads
4779from preempting the current thread while you are stepping, so that
4780the focus of debugging does not change unexpectedly.
4781Other threads only rarely (or never) get a chance to run
4782when you step. They are more likely to run when you @samp{next} over a
4783function call, and they are completely free to run when you use commands
4784like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
4785thread hits a breakpoint during its timeslice, @value{GDBN} does not change
4786the current thread away from the thread that you are debugging.
4787
4788@item show scheduler-locking
4789Display the current scheduler locking mode.
4790@end table
4791
d4db2f36
PA
4792@cindex resume threads of multiple processes simultaneously
4793By default, when you issue one of the execution commands such as
4794@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only
4795threads of the current inferior to run. For example, if @value{GDBN}
4796is attached to two inferiors, each with two threads, the
4797@code{continue} command resumes only the two threads of the current
4798inferior. This is useful, for example, when you debug a program that
4799forks and you want to hold the parent stopped (so that, for instance,
4800it doesn't run to exit), while you debug the child. In other
4801situations, you may not be interested in inspecting the current state
4802of any of the processes @value{GDBN} is attached to, and you may want
4803to resume them all until some breakpoint is hit. In the latter case,
4804you can instruct @value{GDBN} to allow all threads of all the
4805inferiors to run with the @w{@code{set schedule-multiple}} command.
4806
4807@table @code
4808@kindex set schedule-multiple
4809@item set schedule-multiple
4810Set the mode for allowing threads of multiple processes to be resumed
4811when an execution command is issued. When @code{on}, all threads of
4812all processes are allowed to run. When @code{off}, only the threads
4813of the current process are resumed. The default is @code{off}. The
4814@code{scheduler-locking} mode takes precedence when set to @code{on},
4815or while you are stepping and set to @code{step}.
4816
4817@item show schedule-multiple
4818Display the current mode for resuming the execution of threads of
4819multiple processes.
4820@end table
4821
0606b73b
SL
4822@node Non-Stop Mode
4823@subsection Non-Stop Mode
4824
4825@cindex non-stop mode
4826
4827@c This section is really only a place-holder, and needs to be expanded
4828@c with more details.
4829
4830For some multi-threaded targets, @value{GDBN} supports an optional
4831mode of operation in which you can examine stopped program threads in
4832the debugger while other threads continue to execute freely. This
4833minimizes intrusion when debugging live systems, such as programs
4834where some threads have real-time constraints or must continue to
4835respond to external events. This is referred to as @dfn{non-stop} mode.
4836
4837In non-stop mode, when a thread stops to report a debugging event,
4838@emph{only} that thread is stopped; @value{GDBN} does not stop other
4839threads as well, in contrast to the all-stop mode behavior. Additionally,
4840execution commands such as @code{continue} and @code{step} apply by default
4841only to the current thread in non-stop mode, rather than all threads as
4842in all-stop mode. This allows you to control threads explicitly in
4843ways that are not possible in all-stop mode --- for example, stepping
4844one thread while allowing others to run freely, stepping
4845one thread while holding all others stopped, or stepping several threads
4846independently and simultaneously.
4847
4848To enter non-stop mode, use this sequence of commands before you run
4849or attach to your program:
4850
0606b73b
SL
4851@smallexample
4852# Enable the async interface.
c6ebd6cf 4853set target-async 1
0606b73b 4854
0606b73b
SL
4855# If using the CLI, pagination breaks non-stop.
4856set pagination off
4857
4858# Finally, turn it on!
4859set non-stop on
4860@end smallexample
4861
4862You can use these commands to manipulate the non-stop mode setting:
4863
4864@table @code
4865@kindex set non-stop
4866@item set non-stop on
4867Enable selection of non-stop mode.
4868@item set non-stop off
4869Disable selection of non-stop mode.
4870@kindex show non-stop
4871@item show non-stop
4872Show the current non-stop enablement setting.
4873@end table
4874
4875Note these commands only reflect whether non-stop mode is enabled,
4876not whether the currently-executing program is being run in non-stop mode.
4877In particular, the @code{set non-stop} preference is only consulted when
4878@value{GDBN} starts or connects to the target program, and it is generally
4879not possible to switch modes once debugging has started. Furthermore,
4880since not all targets support non-stop mode, even when you have enabled
4881non-stop mode, @value{GDBN} may still fall back to all-stop operation by
4882default.
4883
4884In non-stop mode, all execution commands apply only to the current thread
4885by default. That is, @code{continue} only continues one thread.
4886To continue all threads, issue @code{continue -a} or @code{c -a}.
4887
4888You can use @value{GDBN}'s background execution commands
4889(@pxref{Background Execution}) to run some threads in the background
4890while you continue to examine or step others from @value{GDBN}.
4891The MI execution commands (@pxref{GDB/MI Program Execution}) are
4892always executed asynchronously in non-stop mode.
4893
4894Suspending execution is done with the @code{interrupt} command when
4895running in the background, or @kbd{Ctrl-c} during foreground execution.
4896In all-stop mode, this stops the whole process;
4897but in non-stop mode the interrupt applies only to the current thread.
4898To stop the whole program, use @code{interrupt -a}.
4899
4900Other execution commands do not currently support the @code{-a} option.
4901
4902In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make
4903that thread current, as it does in all-stop mode. This is because the
4904thread stop notifications are asynchronous with respect to @value{GDBN}'s
4905command interpreter, and it would be confusing if @value{GDBN} unexpectedly
4906changed to a different thread just as you entered a command to operate on the
4907previously current thread.
4908
4909@node Background Execution
4910@subsection Background Execution
4911
4912@cindex foreground execution
4913@cindex background execution
4914@cindex asynchronous execution
4915@cindex execution, foreground, background and asynchronous
4916
4917@value{GDBN}'s execution commands have two variants: the normal
4918foreground (synchronous) behavior, and a background
4919(asynchronous) behavior. In foreground execution, @value{GDBN} waits for
4920the program to report that some thread has stopped before prompting for
4921another command. In background execution, @value{GDBN} immediately gives
4922a command prompt so that you can issue other commands while your program runs.
4923
32fc0df9
PA
4924You need to explicitly enable asynchronous mode before you can use
4925background execution commands. You can use these commands to
4926manipulate the asynchronous mode setting:
4927
4928@table @code
4929@kindex set target-async
4930@item set target-async on
4931Enable asynchronous mode.
4932@item set target-async off
4933Disable asynchronous mode.
4934@kindex show target-async
4935@item show target-async
4936Show the current target-async setting.
4937@end table
4938
4939If the target doesn't support async mode, @value{GDBN} issues an error
4940message if you attempt to use the background execution commands.
4941
0606b73b
SL
4942To specify background execution, add a @code{&} to the command. For example,
4943the background form of the @code{continue} command is @code{continue&}, or
4944just @code{c&}. The execution commands that accept background execution
4945are:
4946
4947@table @code
4948@kindex run&
4949@item run
4950@xref{Starting, , Starting your Program}.
4951
4952@item attach
4953@kindex attach&
4954@xref{Attach, , Debugging an Already-running Process}.
4955
4956@item step
4957@kindex step&
4958@xref{Continuing and Stepping, step}.
4959
4960@item stepi
4961@kindex stepi&
4962@xref{Continuing and Stepping, stepi}.
4963
4964@item next
4965@kindex next&
4966@xref{Continuing and Stepping, next}.
4967
7ce58dd2
DE
4968@item nexti
4969@kindex nexti&
4970@xref{Continuing and Stepping, nexti}.
4971
0606b73b
SL
4972@item continue
4973@kindex continue&
4974@xref{Continuing and Stepping, continue}.
4975
4976@item finish
4977@kindex finish&
4978@xref{Continuing and Stepping, finish}.
4979
4980@item until
4981@kindex until&
4982@xref{Continuing and Stepping, until}.
4983
4984@end table
4985
4986Background execution is especially useful in conjunction with non-stop
4987mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}.
4988However, you can also use these commands in the normal all-stop mode with
4989the restriction that you cannot issue another execution command until the
4990previous one finishes. Examples of commands that are valid in all-stop
4991mode while the program is running include @code{help} and @code{info break}.
4992
4993You can interrupt your program while it is running in the background by
4994using the @code{interrupt} command.
4995
4996@table @code
4997@kindex interrupt
4998@item interrupt
4999@itemx interrupt -a
5000
5001Suspend execution of the running program. In all-stop mode,
5002@code{interrupt} stops the whole process, but in non-stop mode, it stops
5003only the current thread. To stop the whole program in non-stop mode,
5004use @code{interrupt -a}.
5005@end table
5006
0606b73b
SL
5007@node Thread-Specific Breakpoints
5008@subsection Thread-Specific Breakpoints
5009
c906108c 5010When your program has multiple threads (@pxref{Threads,, Debugging
79a6e687 5011Programs with Multiple Threads}), you can choose whether to set
c906108c
SS
5012breakpoints on all threads, or on a particular thread.
5013
5014@table @code
5015@cindex breakpoints and threads
5016@cindex thread breakpoints
5017@kindex break @dots{} thread @var{threadno}
5018@item break @var{linespec} thread @var{threadno}
5019@itemx break @var{linespec} thread @var{threadno} if @dots{}
5020@var{linespec} specifies source lines; there are several ways of
2a25a5ba
EZ
5021writing them (@pxref{Specify Location}), but the effect is always to
5022specify some source line.
c906108c
SS
5023
5024Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
5025to specify that you only want @value{GDBN} to stop the program when a
5026particular thread reaches this breakpoint. @var{threadno} is one of the
5027numeric thread identifiers assigned by @value{GDBN}, shown in the first
5028column of the @samp{info threads} display.
5029
5030If you do not specify @samp{thread @var{threadno}} when you set a
5031breakpoint, the breakpoint applies to @emph{all} threads of your
5032program.
5033
5034You can use the @code{thread} qualifier on conditional breakpoints as
5035well; in this case, place @samp{thread @var{threadno}} before the
5036breakpoint condition, like this:
5037
5038@smallexample
2df3850c 5039(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
5040@end smallexample
5041
5042@end table
5043
0606b73b
SL
5044@node Interrupted System Calls
5045@subsection Interrupted System Calls
c906108c 5046
36d86913
MC
5047@cindex thread breakpoints and system calls
5048@cindex system calls and thread breakpoints
5049@cindex premature return from system calls
0606b73b
SL
5050There is an unfortunate side effect when using @value{GDBN} to debug
5051multi-threaded programs. If one thread stops for a
36d86913
MC
5052breakpoint, or for some other reason, and another thread is blocked in a
5053system call, then the system call may return prematurely. This is a
5054consequence of the interaction between multiple threads and the signals
5055that @value{GDBN} uses to implement breakpoints and other events that
5056stop execution.
5057
5058To handle this problem, your program should check the return value of
5059each system call and react appropriately. This is good programming
5060style anyways.
5061
5062For example, do not write code like this:
5063
5064@smallexample
5065 sleep (10);
5066@end smallexample
5067
5068The call to @code{sleep} will return early if a different thread stops
5069at a breakpoint or for some other reason.
5070
5071Instead, write this:
5072
5073@smallexample
5074 int unslept = 10;
5075 while (unslept > 0)
5076 unslept = sleep (unslept);
5077@end smallexample
5078
5079A system call is allowed to return early, so the system is still
5080conforming to its specification. But @value{GDBN} does cause your
5081multi-threaded program to behave differently than it would without
5082@value{GDBN}.
5083
5084Also, @value{GDBN} uses internal breakpoints in the thread library to
5085monitor certain events such as thread creation and thread destruction.
5086When such an event happens, a system call in another thread may return
5087prematurely, even though your program does not appear to stop.
5088
c906108c 5089
bacec72f
MS
5090@node Reverse Execution
5091@chapter Running programs backward
5092@cindex reverse execution
5093@cindex running programs backward
5094
5095When you are debugging a program, it is not unusual to realize that
5096you have gone too far, and some event of interest has already happened.
5097If the target environment supports it, @value{GDBN} can allow you to
5098``rewind'' the program by running it backward.
5099
5100A target environment that supports reverse execution should be able
5101to ``undo'' the changes in machine state that have taken place as the
5102program was executing normally. Variables, registers etc.@: should
5103revert to their previous values. Obviously this requires a great
5104deal of sophistication on the part of the target environment; not
5105all target environments can support reverse execution.
5106
5107When a program is executed in reverse, the instructions that
5108have most recently been executed are ``un-executed'', in reverse
5109order. The program counter runs backward, following the previous
5110thread of execution in reverse. As each instruction is ``un-executed'',
5111the values of memory and/or registers that were changed by that
5112instruction are reverted to their previous states. After executing
5113a piece of source code in reverse, all side effects of that code
5114should be ``undone'', and all variables should be returned to their
5115prior values@footnote{
5116Note that some side effects are easier to undo than others. For instance,
5117memory and registers are relatively easy, but device I/O is hard. Some
5118targets may be able undo things like device I/O, and some may not.
5119
5120The contract between @value{GDBN} and the reverse executing target
5121requires only that the target do something reasonable when
5122@value{GDBN} tells it to execute backwards, and then report the
5123results back to @value{GDBN}. Whatever the target reports back to
5124@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN}
5125assumes that the memory and registers that the target reports are in a
5126consistant state, but @value{GDBN} accepts whatever it is given.
5127}.
5128
5129If you are debugging in a target environment that supports
5130reverse execution, @value{GDBN} provides the following commands.
5131
5132@table @code
5133@kindex reverse-continue
5134@kindex rc @r{(@code{reverse-continue})}
5135@item reverse-continue @r{[}@var{ignore-count}@r{]}
5136@itemx rc @r{[}@var{ignore-count}@r{]}
5137Beginning at the point where your program last stopped, start executing
5138in reverse. Reverse execution will stop for breakpoints and synchronous
5139exceptions (signals), just like normal execution. Behavior of
5140asynchronous signals depends on the target environment.
5141
5142@kindex reverse-step
5143@kindex rs @r{(@code{step})}
5144@item reverse-step @r{[}@var{count}@r{]}
5145Run the program backward until control reaches the start of a
5146different source line; then stop it, and return control to @value{GDBN}.
5147
5148Like the @code{step} command, @code{reverse-step} will only stop
5149at the beginning of a source line. It ``un-executes'' the previously
5150executed source line. If the previous source line included calls to
5151debuggable functions, @code{reverse-step} will step (backward) into
5152the called function, stopping at the beginning of the @emph{last}
5153statement in the called function (typically a return statement).
5154
5155Also, as with the @code{step} command, if non-debuggable functions are
5156called, @code{reverse-step} will run thru them backward without stopping.
5157
5158@kindex reverse-stepi
5159@kindex rsi @r{(@code{reverse-stepi})}
5160@item reverse-stepi @r{[}@var{count}@r{]}
5161Reverse-execute one machine instruction. Note that the instruction
5162to be reverse-executed is @emph{not} the one pointed to by the program
5163counter, but the instruction executed prior to that one. For instance,
5164if the last instruction was a jump, @code{reverse-stepi} will take you
5165back from the destination of the jump to the jump instruction itself.
5166
5167@kindex reverse-next
5168@kindex rn @r{(@code{reverse-next})}
5169@item reverse-next @r{[}@var{count}@r{]}
5170Run backward to the beginning of the previous line executed in
5171the current (innermost) stack frame. If the line contains function
5172calls, they will be ``un-executed'' without stopping. Starting from
5173the first line of a function, @code{reverse-next} will take you back
5174to the caller of that function, @emph{before} the function was called,
5175just as the normal @code{next} command would take you from the last
5176line of a function back to its return to its caller
5177@footnote{Unles the code is too heavily optimized.}.
5178
5179@kindex reverse-nexti
5180@kindex rni @r{(@code{reverse-nexti})}
5181@item reverse-nexti @r{[}@var{count}@r{]}
5182Like @code{nexti}, @code{reverse-nexti} executes a single instruction
5183in reverse, except that called functions are ``un-executed'' atomically.
5184That is, if the previously executed instruction was a return from
5185another instruction, @code{reverse-nexti} will continue to execute
5186in reverse until the call to that function (from the current stack
5187frame) is reached.
5188
5189@kindex reverse-finish
5190@item reverse-finish
5191Just as the @code{finish} command takes you to the point where the
5192current function returns, @code{reverse-finish} takes you to the point
5193where it was called. Instead of ending up at the end of the current
5194function invocation, you end up at the beginning.
5195
5196@kindex set exec-direction
5197@item set exec-direction
5198Set the direction of target execution.
5199@itemx set exec-direction reverse
5200@cindex execute forward or backward in time
5201@value{GDBN} will perform all execution commands in reverse, until the
5202exec-direction mode is changed to ``forward''. Affected commands include
5203@code{step, stepi, next, nexti, continue, and finish}. The @code{return}
5204command cannot be used in reverse mode.
5205@item set exec-direction forward
5206@value{GDBN} will perform all execution commands in the normal fashion.
5207This is the default.
5208@end table
5209
c906108c 5210
a2311334
EZ
5211@node Process Record and Replay
5212@chapter Recording Inferior's Execution and Replaying It
53cc454a
HZ
5213@cindex process record and replay
5214@cindex recording inferior's execution and replaying it
5215
8e05493c
EZ
5216On some platforms, @value{GDBN} provides a special @dfn{process record
5217and replay} target that can record a log of the process execution, and
5218replay it later with both forward and reverse execution commands.
a2311334
EZ
5219
5220@cindex replay mode
5221When this target is in use, if the execution log includes the record
5222for the next instruction, @value{GDBN} will debug in @dfn{replay
5223mode}. In the replay mode, the inferior does not really execute code
5224instructions. Instead, all the events that normally happen during
5225code execution are taken from the execution log. While code is not
5226really executed in replay mode, the values of registers (including the
5227program counter register) and the memory of the inferior are still
8e05493c
EZ
5228changed as they normally would. Their contents are taken from the
5229execution log.
a2311334
EZ
5230
5231@cindex record mode
5232If the record for the next instruction is not in the execution log,
5233@value{GDBN} will debug in @dfn{record mode}. In this mode, the
5234inferior executes normally, and @value{GDBN} records the execution log
5235for future replay.
5236
8e05493c
EZ
5237The process record and replay target supports reverse execution
5238(@pxref{Reverse Execution}), even if the platform on which the
5239inferior runs does not. However, the reverse execution is limited in
5240this case by the range of the instructions recorded in the execution
5241log. In other words, reverse execution on platforms that don't
5242support it directly can only be done in the replay mode.
5243
5244When debugging in the reverse direction, @value{GDBN} will work in
5245replay mode as long as the execution log includes the record for the
5246previous instruction; otherwise, it will work in record mode, if the
5247platform supports reverse execution, or stop if not.
5248
a2311334
EZ
5249For architecture environments that support process record and replay,
5250@value{GDBN} provides the following commands:
53cc454a
HZ
5251
5252@table @code
5253@kindex target record
5254@kindex record
5255@kindex rec
5256@item target record
a2311334
EZ
5257This command starts the process record and replay target. The process
5258record and replay target can only debug a process that is already
5259running. Therefore, you need first to start the process with the
5260@kbd{run} or @kbd{start} commands, and then start the recording with
5261the @kbd{target record} command.
5262
5263Both @code{record} and @code{rec} are aliases of @code{target record}.
5264
5265@cindex displaced stepping, and process record and replay
5266Displaced stepping (@pxref{Maintenance Commands,, displaced stepping})
5267will be automatically disabled when process record and replay target
5268is started. That's because the process record and replay target
5269doesn't support displaced stepping.
5270
5271@cindex non-stop mode, and process record and replay
5272@cindex asynchronous execution, and process record and replay
5273If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in
5274the asynchronous execution mode (@pxref{Background Execution}), the
5275process record and replay target cannot be started because it doesn't
5276support these two modes.
53cc454a
HZ
5277
5278@kindex record stop
5279@kindex rec s
5280@item record stop
a2311334
EZ
5281Stop the process record and replay target. When process record and
5282replay target stops, the entire execution log will be deleted and the
5283inferior will either be terminated, or will remain in its final state.
53cc454a 5284
a2311334
EZ
5285When you stop the process record and replay target in record mode (at
5286the end of the execution log), the inferior will be stopped at the
5287next instruction that would have been recorded. In other words, if
5288you record for a while and then stop recording, the inferior process
5289will be left in the same state as if the recording never happened.
53cc454a 5290
a2311334
EZ
5291On the other hand, if the process record and replay target is stopped
5292while in replay mode (that is, not at the end of the execution log,
5293but at some earlier point), the inferior process will become ``live''
5294at that earlier state, and it will then be possible to continue the
5295usual ``live'' debugging of the process from that state.
53cc454a 5296
a2311334
EZ
5297When the inferior process exits, or @value{GDBN} detaches from it,
5298process record and replay target will automatically stop itself.
53cc454a
HZ
5299
5300@kindex set record insn-number-max
5301@item set record insn-number-max @var{limit}
5302Set the limit of instructions to be recorded. Default value is 200000.
5303
a2311334
EZ
5304If @var{limit} is a positive number, then @value{GDBN} will start
5305deleting instructions from the log once the number of the record
5306instructions becomes greater than @var{limit}. For every new recorded
5307instruction, @value{GDBN} will delete the earliest recorded
5308instruction to keep the number of recorded instructions at the limit.
5309(Since deleting recorded instructions loses information, @value{GDBN}
5310lets you control what happens when the limit is reached, by means of
5311the @code{stop-at-limit} option, described below.)
53cc454a 5312
a2311334
EZ
5313If @var{limit} is zero, @value{GDBN} will never delete recorded
5314instructions from the execution log. The number of recorded
5315instructions is unlimited in this case.
53cc454a
HZ
5316
5317@kindex show record insn-number-max
5318@item show record insn-number-max
a2311334 5319Show the limit of instructions to be recorded.
53cc454a
HZ
5320
5321@kindex set record stop-at-limit
a2311334
EZ
5322@item set record stop-at-limit
5323Control the behavior when the number of recorded instructions reaches
5324the limit. If ON (the default), @value{GDBN} will stop when the limit
5325is reached for the first time and ask you whether you want to stop the
5326inferior or continue running it and recording the execution log. If
5327you decide to continue recording, each new recorded instruction will
5328cause the oldest one to be deleted.
53cc454a 5329
a2311334
EZ
5330If this option is OFF, @value{GDBN} will automatically delete the
5331oldest record to make room for each new one, without asking.
53cc454a
HZ
5332
5333@kindex show record stop-at-limit
5334@item show record stop-at-limit
a2311334 5335Show the current setting of @code{stop-at-limit}.
53cc454a
HZ
5336
5337@kindex info record insn-number
5338@item info record insn-number
5339Show the current number of recorded instructions.
5340
5341@kindex record delete
5342@kindex rec del
5343@item record delete
a2311334 5344When record target runs in replay mode (``in the past''), delete the
53cc454a 5345subsequent execution log and begin to record a new execution log starting
a2311334 5346from the current address. This means you will abandon the previously
53cc454a
HZ
5347recorded ``future'' and begin recording a new ``future''.
5348@end table
5349
5350
6d2ebf8b 5351@node Stack
c906108c
SS
5352@chapter Examining the Stack
5353
5354When your program has stopped, the first thing you need to know is where it
5355stopped and how it got there.
5356
5357@cindex call stack
5d161b24
DB
5358Each time your program performs a function call, information about the call
5359is generated.
5360That information includes the location of the call in your program,
5361the arguments of the call,
c906108c 5362and the local variables of the function being called.
5d161b24 5363The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
5364The stack frames are allocated in a region of memory called the @dfn{call
5365stack}.
5366
5367When your program stops, the @value{GDBN} commands for examining the
5368stack allow you to see all of this information.
5369
5370@cindex selected frame
5371One of the stack frames is @dfn{selected} by @value{GDBN} and many
5372@value{GDBN} commands refer implicitly to the selected frame. In
5373particular, whenever you ask @value{GDBN} for the value of a variable in
5374your program, the value is found in the selected frame. There are
5375special @value{GDBN} commands to select whichever frame you are
79a6e687 5376interested in. @xref{Selection, ,Selecting a Frame}.
c906108c
SS
5377
5378When your program stops, @value{GDBN} automatically selects the
5d161b24 5379currently executing frame and describes it briefly, similar to the
79a6e687 5380@code{frame} command (@pxref{Frame Info, ,Information about a Frame}).
c906108c
SS
5381
5382@menu
5383* Frames:: Stack frames
5384* Backtrace:: Backtraces
5385* Selection:: Selecting a frame
5386* Frame Info:: Information on a frame
c906108c
SS
5387
5388@end menu
5389
6d2ebf8b 5390@node Frames
79a6e687 5391@section Stack Frames
c906108c 5392
d4f3574e 5393@cindex frame, definition
c906108c
SS
5394@cindex stack frame
5395The call stack is divided up into contiguous pieces called @dfn{stack
5396frames}, or @dfn{frames} for short; each frame is the data associated
5397with one call to one function. The frame contains the arguments given
5398to the function, the function's local variables, and the address at
5399which the function is executing.
5400
5401@cindex initial frame
5402@cindex outermost frame
5403@cindex innermost frame
5404When your program is started, the stack has only one frame, that of the
5405function @code{main}. This is called the @dfn{initial} frame or the
5406@dfn{outermost} frame. Each time a function is called, a new frame is
5407made. Each time a function returns, the frame for that function invocation
5408is eliminated. If a function is recursive, there can be many frames for
5409the same function. The frame for the function in which execution is
5410actually occurring is called the @dfn{innermost} frame. This is the most
5411recently created of all the stack frames that still exist.
5412
5413@cindex frame pointer
5414Inside your program, stack frames are identified by their addresses. A
5415stack frame consists of many bytes, each of which has its own address; each
5416kind of computer has a convention for choosing one byte whose
5417address serves as the address of the frame. Usually this address is kept
e09f16f9
EZ
5418in a register called the @dfn{frame pointer register}
5419(@pxref{Registers, $fp}) while execution is going on in that frame.
c906108c
SS
5420
5421@cindex frame number
5422@value{GDBN} assigns numbers to all existing stack frames, starting with
5423zero for the innermost frame, one for the frame that called it,
5424and so on upward. These numbers do not really exist in your program;
5425they are assigned by @value{GDBN} to give you a way of designating stack
5426frames in @value{GDBN} commands.
5427
6d2ebf8b
SS
5428@c The -fomit-frame-pointer below perennially causes hbox overflow
5429@c underflow problems.
c906108c
SS
5430@cindex frameless execution
5431Some compilers provide a way to compile functions so that they operate
e22ea452 5432without stack frames. (For example, the @value{NGCC} option
474c8240 5433@smallexample
6d2ebf8b 5434@samp{-fomit-frame-pointer}
474c8240 5435@end smallexample
6d2ebf8b 5436generates functions without a frame.)
c906108c
SS
5437This is occasionally done with heavily used library functions to save
5438the frame setup time. @value{GDBN} has limited facilities for dealing
5439with these function invocations. If the innermost function invocation
5440has no stack frame, @value{GDBN} nevertheless regards it as though
5441it had a separate frame, which is numbered zero as usual, allowing
5442correct tracing of the function call chain. However, @value{GDBN} has
5443no provision for frameless functions elsewhere in the stack.
5444
5445@table @code
d4f3574e 5446@kindex frame@r{, command}
41afff9a 5447@cindex current stack frame
c906108c 5448@item frame @var{args}
5d161b24 5449The @code{frame} command allows you to move from one stack frame to another,
c906108c 5450and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
5451address of the frame or the stack frame number. Without an argument,
5452@code{frame} prints the current stack frame.
c906108c
SS
5453
5454@kindex select-frame
41afff9a 5455@cindex selecting frame silently
c906108c
SS
5456@item select-frame
5457The @code{select-frame} command allows you to move from one stack frame
5458to another without printing the frame. This is the silent version of
5459@code{frame}.
5460@end table
5461
6d2ebf8b 5462@node Backtrace
c906108c
SS
5463@section Backtraces
5464
09d4efe1
EZ
5465@cindex traceback
5466@cindex call stack traces
c906108c
SS
5467A backtrace is a summary of how your program got where it is. It shows one
5468line per frame, for many frames, starting with the currently executing
5469frame (frame zero), followed by its caller (frame one), and on up the
5470stack.
5471
5472@table @code
5473@kindex backtrace
41afff9a 5474@kindex bt @r{(@code{backtrace})}
c906108c
SS
5475@item backtrace
5476@itemx bt
5477Print a backtrace of the entire stack: one line per frame for all
5478frames in the stack.
5479
5480You can stop the backtrace at any time by typing the system interrupt
c8aa23ab 5481character, normally @kbd{Ctrl-c}.
c906108c
SS
5482
5483@item backtrace @var{n}
5484@itemx bt @var{n}
5485Similar, but print only the innermost @var{n} frames.
5486
5487@item backtrace -@var{n}
5488@itemx bt -@var{n}
5489Similar, but print only the outermost @var{n} frames.
0f061b69
NR
5490
5491@item backtrace full
0f061b69 5492@itemx bt full
dd74f6ae
NR
5493@itemx bt full @var{n}
5494@itemx bt full -@var{n}
e7109c7e 5495Print the values of the local variables also. @var{n} specifies the
286ba84d 5496number of frames to print, as described above.
c906108c
SS
5497@end table
5498
5499@kindex where
5500@kindex info stack
c906108c
SS
5501The names @code{where} and @code{info stack} (abbreviated @code{info s})
5502are additional aliases for @code{backtrace}.
5503
839c27b7
EZ
5504@cindex multiple threads, backtrace
5505In a multi-threaded program, @value{GDBN} by default shows the
5506backtrace only for the current thread. To display the backtrace for
5507several or all of the threads, use the command @code{thread apply}
5508(@pxref{Threads, thread apply}). For example, if you type @kbd{thread
5509apply all backtrace}, @value{GDBN} will display the backtrace for all
5510the threads; this is handy when you debug a core dump of a
5511multi-threaded program.
5512
c906108c
SS
5513Each line in the backtrace shows the frame number and the function name.
5514The program counter value is also shown---unless you use @code{set
5515print address off}. The backtrace also shows the source file name and
5516line number, as well as the arguments to the function. The program
5517counter value is omitted if it is at the beginning of the code for that
5518line number.
5519
5520Here is an example of a backtrace. It was made with the command
5521@samp{bt 3}, so it shows the innermost three frames.
5522
5523@smallexample
5524@group
5d161b24 5525#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c 5526 at builtin.c:993
4f5376b2 5527#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242
c906108c
SS
5528#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
5529 at macro.c:71
5530(More stack frames follow...)
5531@end group
5532@end smallexample
5533
5534@noindent
5535The display for frame zero does not begin with a program counter
5536value, indicating that your program has stopped at the beginning of the
5537code for line @code{993} of @code{builtin.c}.
5538
4f5376b2
JB
5539@noindent
5540The value of parameter @code{data} in frame 1 has been replaced by
5541@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter
5542only if it is a scalar (integer, pointer, enumeration, etc). See command
5543@kbd{set print frame-arguments} in @ref{Print Settings} for more details
5544on how to configure the way function parameter values are printed.
5545
18999be5
EZ
5546@cindex value optimized out, in backtrace
5547@cindex function call arguments, optimized out
5548If your program was compiled with optimizations, some compilers will
5549optimize away arguments passed to functions if those arguments are
5550never used after the call. Such optimizations generate code that
5551passes arguments through registers, but doesn't store those arguments
5552in the stack frame. @value{GDBN} has no way of displaying such
5553arguments in stack frames other than the innermost one. Here's what
5554such a backtrace might look like:
5555
5556@smallexample
5557@group
5558#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
5559 at builtin.c:993
5560#1 0x6e38 in expand_macro (sym=<value optimized out>) at macro.c:242
5561#2 0x6840 in expand_token (obs=0x0, t=<value optimized out>, td=0xf7fffb08)
5562 at macro.c:71
5563(More stack frames follow...)
5564@end group
5565@end smallexample
5566
5567@noindent
5568The values of arguments that were not saved in their stack frames are
5569shown as @samp{<value optimized out>}.
5570
5571If you need to display the values of such optimized-out arguments,
5572either deduce that from other variables whose values depend on the one
5573you are interested in, or recompile without optimizations.
5574
a8f24a35
EZ
5575@cindex backtrace beyond @code{main} function
5576@cindex program entry point
5577@cindex startup code, and backtrace
25d29d70
AC
5578Most programs have a standard user entry point---a place where system
5579libraries and startup code transition into user code. For C this is
d416eeec
EZ
5580@code{main}@footnote{
5581Note that embedded programs (the so-called ``free-standing''
5582environment) are not required to have a @code{main} function as the
5583entry point. They could even have multiple entry points.}.
5584When @value{GDBN} finds the entry function in a backtrace
25d29d70
AC
5585it will terminate the backtrace, to avoid tracing into highly
5586system-specific (and generally uninteresting) code.
5587
5588If you need to examine the startup code, or limit the number of levels
5589in a backtrace, you can change this behavior:
95f90d25
DJ
5590
5591@table @code
25d29d70
AC
5592@item set backtrace past-main
5593@itemx set backtrace past-main on
4644b6e3 5594@kindex set backtrace
25d29d70
AC
5595Backtraces will continue past the user entry point.
5596
5597@item set backtrace past-main off
95f90d25
DJ
5598Backtraces will stop when they encounter the user entry point. This is the
5599default.
5600
25d29d70 5601@item show backtrace past-main
4644b6e3 5602@kindex show backtrace
25d29d70
AC
5603Display the current user entry point backtrace policy.
5604
2315ffec
RC
5605@item set backtrace past-entry
5606@itemx set backtrace past-entry on
a8f24a35 5607Backtraces will continue past the internal entry point of an application.
2315ffec
RC
5608This entry point is encoded by the linker when the application is built,
5609and is likely before the user entry point @code{main} (or equivalent) is called.
5610
5611@item set backtrace past-entry off
d3e8051b 5612Backtraces will stop when they encounter the internal entry point of an
2315ffec
RC
5613application. This is the default.
5614
5615@item show backtrace past-entry
5616Display the current internal entry point backtrace policy.
5617
25d29d70
AC
5618@item set backtrace limit @var{n}
5619@itemx set backtrace limit 0
5620@cindex backtrace limit
5621Limit the backtrace to @var{n} levels. A value of zero means
5622unlimited.
95f90d25 5623
25d29d70
AC
5624@item show backtrace limit
5625Display the current limit on backtrace levels.
95f90d25
DJ
5626@end table
5627
6d2ebf8b 5628@node Selection
79a6e687 5629@section Selecting a Frame
c906108c
SS
5630
5631Most commands for examining the stack and other data in your program work on
5632whichever stack frame is selected at the moment. Here are the commands for
5633selecting a stack frame; all of them finish by printing a brief description
5634of the stack frame just selected.
5635
5636@table @code
d4f3574e 5637@kindex frame@r{, selecting}
41afff9a 5638@kindex f @r{(@code{frame})}
c906108c
SS
5639@item frame @var{n}
5640@itemx f @var{n}
5641Select frame number @var{n}. Recall that frame zero is the innermost
5642(currently executing) frame, frame one is the frame that called the
5643innermost one, and so on. The highest-numbered frame is the one for
5644@code{main}.
5645
5646@item frame @var{addr}
5647@itemx f @var{addr}
5648Select the frame at address @var{addr}. This is useful mainly if the
5649chaining of stack frames has been damaged by a bug, making it
5650impossible for @value{GDBN} to assign numbers properly to all frames. In
5651addition, this can be useful when your program has multiple stacks and
5652switches between them.
5653
c906108c
SS
5654On the SPARC architecture, @code{frame} needs two addresses to
5655select an arbitrary frame: a frame pointer and a stack pointer.
5656
5657On the MIPS and Alpha architecture, it needs two addresses: a stack
5658pointer and a program counter.
5659
5660On the 29k architecture, it needs three addresses: a register stack
5661pointer, a program counter, and a memory stack pointer.
c906108c
SS
5662
5663@kindex up
5664@item up @var{n}
5665Move @var{n} frames up the stack. For positive numbers @var{n}, this
5666advances toward the outermost frame, to higher frame numbers, to frames
5667that have existed longer. @var{n} defaults to one.
5668
5669@kindex down
41afff9a 5670@kindex do @r{(@code{down})}
c906108c
SS
5671@item down @var{n}
5672Move @var{n} frames down the stack. For positive numbers @var{n}, this
5673advances toward the innermost frame, to lower frame numbers, to frames
5674that were created more recently. @var{n} defaults to one. You may
5675abbreviate @code{down} as @code{do}.
5676@end table
5677
5678All of these commands end by printing two lines of output describing the
5679frame. The first line shows the frame number, the function name, the
5680arguments, and the source file and line number of execution in that
5d161b24 5681frame. The second line shows the text of that source line.
c906108c
SS
5682
5683@need 1000
5684For example:
5685
5686@smallexample
5687@group
5688(@value{GDBP}) up
5689#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
5690 at env.c:10
569110 read_input_file (argv[i]);
5692@end group
5693@end smallexample
5694
5695After such a printout, the @code{list} command with no arguments
5696prints ten lines centered on the point of execution in the frame.
87885426
FN
5697You can also edit the program at the point of execution with your favorite
5698editing program by typing @code{edit}.
79a6e687 5699@xref{List, ,Printing Source Lines},
87885426 5700for details.
c906108c
SS
5701
5702@table @code
5703@kindex down-silently
5704@kindex up-silently
5705@item up-silently @var{n}
5706@itemx down-silently @var{n}
5707These two commands are variants of @code{up} and @code{down},
5708respectively; they differ in that they do their work silently, without
5709causing display of the new frame. They are intended primarily for use
5710in @value{GDBN} command scripts, where the output might be unnecessary and
5711distracting.
5712@end table
5713
6d2ebf8b 5714@node Frame Info
79a6e687 5715@section Information About a Frame
c906108c
SS
5716
5717There are several other commands to print information about the selected
5718stack frame.
5719
5720@table @code
5721@item frame
5722@itemx f
5723When used without any argument, this command does not change which
5724frame is selected, but prints a brief description of the currently
5725selected stack frame. It can be abbreviated @code{f}. With an
5726argument, this command is used to select a stack frame.
79a6e687 5727@xref{Selection, ,Selecting a Frame}.
c906108c
SS
5728
5729@kindex info frame
41afff9a 5730@kindex info f @r{(@code{info frame})}
c906108c
SS
5731@item info frame
5732@itemx info f
5733This command prints a verbose description of the selected stack frame,
5734including:
5735
5736@itemize @bullet
5d161b24
DB
5737@item
5738the address of the frame
c906108c
SS
5739@item
5740the address of the next frame down (called by this frame)
5741@item
5742the address of the next frame up (caller of this frame)
5743@item
5744the language in which the source code corresponding to this frame is written
5745@item
5746the address of the frame's arguments
5747@item
d4f3574e
SS
5748the address of the frame's local variables
5749@item
c906108c
SS
5750the program counter saved in it (the address of execution in the caller frame)
5751@item
5752which registers were saved in the frame
5753@end itemize
5754
5755@noindent The verbose description is useful when
5756something has gone wrong that has made the stack format fail to fit
5757the usual conventions.
5758
5759@item info frame @var{addr}
5760@itemx info f @var{addr}
5761Print a verbose description of the frame at address @var{addr}, without
5762selecting that frame. The selected frame remains unchanged by this
5763command. This requires the same kind of address (more than one for some
5764architectures) that you specify in the @code{frame} command.
79a6e687 5765@xref{Selection, ,Selecting a Frame}.
c906108c
SS
5766
5767@kindex info args
5768@item info args
5769Print the arguments of the selected frame, each on a separate line.
5770
5771@item info locals
5772@kindex info locals
5773Print the local variables of the selected frame, each on a separate
5774line. These are all variables (declared either static or automatic)
5775accessible at the point of execution of the selected frame.
5776
c906108c 5777@kindex info catch
d4f3574e
SS
5778@cindex catch exceptions, list active handlers
5779@cindex exception handlers, how to list
c906108c
SS
5780@item info catch
5781Print a list of all the exception handlers that are active in the
5782current stack frame at the current point of execution. To see other
5783exception handlers, visit the associated frame (using the @code{up},
5784@code{down}, or @code{frame} commands); then type @code{info catch}.
79a6e687 5785@xref{Set Catchpoints, , Setting Catchpoints}.
53a5351d 5786
c906108c
SS
5787@end table
5788
c906108c 5789
6d2ebf8b 5790@node Source
c906108c
SS
5791@chapter Examining Source Files
5792
5793@value{GDBN} can print parts of your program's source, since the debugging
5794information recorded in the program tells @value{GDBN} what source files were
5795used to build it. When your program stops, @value{GDBN} spontaneously prints
5796the line where it stopped. Likewise, when you select a stack frame
79a6e687 5797(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where
c906108c
SS
5798execution in that frame has stopped. You can print other portions of
5799source files by explicit command.
5800
7a292a7a 5801If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 5802prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 5803@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
5804
5805@menu
5806* List:: Printing source lines
2a25a5ba 5807* Specify Location:: How to specify code locations
87885426 5808* Edit:: Editing source files
c906108c 5809* Search:: Searching source files
c906108c
SS
5810* Source Path:: Specifying source directories
5811* Machine Code:: Source and machine code
5812@end menu
5813
6d2ebf8b 5814@node List
79a6e687 5815@section Printing Source Lines
c906108c
SS
5816
5817@kindex list
41afff9a 5818@kindex l @r{(@code{list})}
c906108c 5819To print lines from a source file, use the @code{list} command
5d161b24 5820(abbreviated @code{l}). By default, ten lines are printed.
2a25a5ba
EZ
5821There are several ways to specify what part of the file you want to
5822print; see @ref{Specify Location}, for the full list.
c906108c
SS
5823
5824Here are the forms of the @code{list} command most commonly used:
5825
5826@table @code
5827@item list @var{linenum}
5828Print lines centered around line number @var{linenum} in the
5829current source file.
5830
5831@item list @var{function}
5832Print lines centered around the beginning of function
5833@var{function}.
5834
5835@item list
5836Print more lines. If the last lines printed were printed with a
5837@code{list} command, this prints lines following the last lines
5838printed; however, if the last line printed was a solitary line printed
5839as part of displaying a stack frame (@pxref{Stack, ,Examining the
5840Stack}), this prints lines centered around that line.
5841
5842@item list -
5843Print lines just before the lines last printed.
5844@end table
5845
9c16f35a 5846@cindex @code{list}, how many lines to display
c906108c
SS
5847By default, @value{GDBN} prints ten source lines with any of these forms of
5848the @code{list} command. You can change this using @code{set listsize}:
5849
5850@table @code
5851@kindex set listsize
5852@item set listsize @var{count}
5853Make the @code{list} command display @var{count} source lines (unless
5854the @code{list} argument explicitly specifies some other number).
5855
5856@kindex show listsize
5857@item show listsize
5858Display the number of lines that @code{list} prints.
5859@end table
5860
5861Repeating a @code{list} command with @key{RET} discards the argument,
5862so it is equivalent to typing just @code{list}. This is more useful
5863than listing the same lines again. An exception is made for an
5864argument of @samp{-}; that argument is preserved in repetition so that
5865each repetition moves up in the source file.
5866
c906108c
SS
5867In general, the @code{list} command expects you to supply zero, one or two
5868@dfn{linespecs}. Linespecs specify source lines; there are several ways
2a25a5ba
EZ
5869of writing them (@pxref{Specify Location}), but the effect is always
5870to specify some source line.
5871
c906108c
SS
5872Here is a complete description of the possible arguments for @code{list}:
5873
5874@table @code
5875@item list @var{linespec}
5876Print lines centered around the line specified by @var{linespec}.
5877
5878@item list @var{first},@var{last}
5879Print lines from @var{first} to @var{last}. Both arguments are
2a25a5ba
EZ
5880linespecs. When a @code{list} command has two linespecs, and the
5881source file of the second linespec is omitted, this refers to
5882the same source file as the first linespec.
c906108c
SS
5883
5884@item list ,@var{last}
5885Print lines ending with @var{last}.
5886
5887@item list @var{first},
5888Print lines starting with @var{first}.
5889
5890@item list +
5891Print lines just after the lines last printed.
5892
5893@item list -
5894Print lines just before the lines last printed.
5895
5896@item list
5897As described in the preceding table.
5898@end table
5899
2a25a5ba
EZ
5900@node Specify Location
5901@section Specifying a Location
5902@cindex specifying location
5903@cindex linespec
c906108c 5904
2a25a5ba
EZ
5905Several @value{GDBN} commands accept arguments that specify a location
5906of your program's code. Since @value{GDBN} is a source-level
5907debugger, a location usually specifies some line in the source code;
5908for that reason, locations are also known as @dfn{linespecs}.
c906108c 5909
2a25a5ba
EZ
5910Here are all the different ways of specifying a code location that
5911@value{GDBN} understands:
c906108c 5912
2a25a5ba
EZ
5913@table @code
5914@item @var{linenum}
5915Specifies the line number @var{linenum} of the current source file.
c906108c 5916
2a25a5ba
EZ
5917@item -@var{offset}
5918@itemx +@var{offset}
5919Specifies the line @var{offset} lines before or after the @dfn{current
5920line}. For the @code{list} command, the current line is the last one
5921printed; for the breakpoint commands, this is the line at which
5922execution stopped in the currently selected @dfn{stack frame}
5923(@pxref{Frames, ,Frames}, for a description of stack frames.) When
5924used as the second of the two linespecs in a @code{list} command,
5925this specifies the line @var{offset} lines up or down from the first
5926linespec.
5927
5928@item @var{filename}:@var{linenum}
5929Specifies the line @var{linenum} in the source file @var{filename}.
c906108c
SS
5930
5931@item @var{function}
5932Specifies the line that begins the body of the function @var{function}.
2a25a5ba 5933For example, in C, this is the line with the open brace.
c906108c
SS
5934
5935@item @var{filename}:@var{function}
2a25a5ba
EZ
5936Specifies the line that begins the body of the function @var{function}
5937in the file @var{filename}. You only need the file name with a
5938function name to avoid ambiguity when there are identically named
5939functions in different source files.
c906108c
SS
5940
5941@item *@var{address}
2a25a5ba
EZ
5942Specifies the program address @var{address}. For line-oriented
5943commands, such as @code{list} and @code{edit}, this specifies a source
5944line that contains @var{address}. For @code{break} and other
5945breakpoint oriented commands, this can be used to set breakpoints in
5946parts of your program which do not have debugging information or
5947source files.
5948
5949Here @var{address} may be any expression valid in the current working
5950language (@pxref{Languages, working language}) that specifies a code
5fa54e5d
EZ
5951address. In addition, as a convenience, @value{GDBN} extends the
5952semantics of expressions used in locations to cover the situations
5953that frequently happen during debugging. Here are the various forms
5954of @var{address}:
2a25a5ba
EZ
5955
5956@table @code
5957@item @var{expression}
5958Any expression valid in the current working language.
5959
5960@item @var{funcaddr}
5961An address of a function or procedure derived from its name. In C,
5962C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is
5963simply the function's name @var{function} (and actually a special case
5964of a valid expression). In Pascal and Modula-2, this is
5965@code{&@var{function}}. In Ada, this is @code{@var{function}'Address}
5966(although the Pascal form also works).
5967
5968This form specifies the address of the function's first instruction,
5969before the stack frame and arguments have been set up.
5970
5971@item '@var{filename}'::@var{funcaddr}
5972Like @var{funcaddr} above, but also specifies the name of the source
5973file explicitly. This is useful if the name of the function does not
5974specify the function unambiguously, e.g., if there are several
5975functions with identical names in different source files.
c906108c
SS
5976@end table
5977
2a25a5ba
EZ
5978@end table
5979
5980
87885426 5981@node Edit
79a6e687 5982@section Editing Source Files
87885426
FN
5983@cindex editing source files
5984
5985@kindex edit
5986@kindex e @r{(@code{edit})}
5987To edit the lines in a source file, use the @code{edit} command.
5988The editing program of your choice
5989is invoked with the current line set to
5990the active line in the program.
5991Alternatively, there are several ways to specify what part of the file you
2a25a5ba 5992want to print if you want to see other parts of the program:
87885426
FN
5993
5994@table @code
2a25a5ba
EZ
5995@item edit @var{location}
5996Edit the source file specified by @code{location}. Editing starts at
5997that @var{location}, e.g., at the specified source line of the
5998specified file. @xref{Specify Location}, for all the possible forms
5999of the @var{location} argument; here are the forms of the @code{edit}
6000command most commonly used:
87885426 6001
2a25a5ba 6002@table @code
87885426
FN
6003@item edit @var{number}
6004Edit the current source file with @var{number} as the active line number.
6005
6006@item edit @var{function}
6007Edit the file containing @var{function} at the beginning of its definition.
2a25a5ba 6008@end table
87885426 6009
87885426
FN
6010@end table
6011
79a6e687 6012@subsection Choosing your Editor
87885426
FN
6013You can customize @value{GDBN} to use any editor you want
6014@footnote{
6015The only restriction is that your editor (say @code{ex}), recognizes the
6016following command-line syntax:
10998722 6017@smallexample
87885426 6018ex +@var{number} file
10998722 6019@end smallexample
15387254
EZ
6020The optional numeric value +@var{number} specifies the number of the line in
6021the file where to start editing.}.
6022By default, it is @file{@value{EDITOR}}, but you can change this
10998722
AC
6023by setting the environment variable @code{EDITOR} before using
6024@value{GDBN}. For example, to configure @value{GDBN} to use the
6025@code{vi} editor, you could use these commands with the @code{sh} shell:
6026@smallexample
87885426
FN
6027EDITOR=/usr/bin/vi
6028export EDITOR
15387254 6029gdb @dots{}
10998722 6030@end smallexample
87885426 6031or in the @code{csh} shell,
10998722 6032@smallexample
87885426 6033setenv EDITOR /usr/bin/vi
15387254 6034gdb @dots{}
10998722 6035@end smallexample
87885426 6036
6d2ebf8b 6037@node Search
79a6e687 6038@section Searching Source Files
15387254 6039@cindex searching source files
c906108c
SS
6040
6041There are two commands for searching through the current source file for a
6042regular expression.
6043
6044@table @code
6045@kindex search
6046@kindex forward-search
6047@item forward-search @var{regexp}
6048@itemx search @var{regexp}
6049The command @samp{forward-search @var{regexp}} checks each line,
6050starting with the one following the last line listed, for a match for
5d161b24 6051@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
6052synonym @samp{search @var{regexp}} or abbreviate the command name as
6053@code{fo}.
6054
09d4efe1 6055@kindex reverse-search
c906108c
SS
6056@item reverse-search @var{regexp}
6057The command @samp{reverse-search @var{regexp}} checks each line, starting
6058with the one before the last line listed and going backward, for a match
6059for @var{regexp}. It lists the line that is found. You can abbreviate
6060this command as @code{rev}.
6061@end table
c906108c 6062
6d2ebf8b 6063@node Source Path
79a6e687 6064@section Specifying Source Directories
c906108c
SS
6065
6066@cindex source path
6067@cindex directories for source files
6068Executable programs sometimes do not record the directories of the source
6069files from which they were compiled, just the names. Even when they do,
6070the directories could be moved between the compilation and your debugging
6071session. @value{GDBN} has a list of directories to search for source files;
6072this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
6073it tries all the directories in the list, in the order they are present
0b66e38c
EZ
6074in the list, until it finds a file with the desired name.
6075
6076For example, suppose an executable references the file
6077@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
6078@file{/mnt/cross}. The file is first looked up literally; if this
6079fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
6080fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
6081message is printed. @value{GDBN} does not look up the parts of the
6082source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
6083Likewise, the subdirectories of the source path are not searched: if
6084the source path is @file{/mnt/cross}, and the binary refers to
6085@file{foo.c}, @value{GDBN} would not find it under
6086@file{/mnt/cross/usr/src/foo-1.0/lib}.
6087
6088Plain file names, relative file names with leading directories, file
6089names containing dots, etc.@: are all treated as described above; for
6090instance, if the source path is @file{/mnt/cross}, and the source file
6091is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
6092@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
6093that---@file{/mnt/cross/foo.c}.
6094
6095Note that the executable search path is @emph{not} used to locate the
cd852561 6096source files.
c906108c
SS
6097
6098Whenever you reset or rearrange the source path, @value{GDBN} clears out
6099any information it has cached about where source files are found and where
6100each line is in the file.
6101
6102@kindex directory
6103@kindex dir
d4f3574e
SS
6104When you start @value{GDBN}, its source path includes only @samp{cdir}
6105and @samp{cwd}, in that order.
c906108c
SS
6106To add other directories, use the @code{directory} command.
6107
4b505b12
AS
6108The search path is used to find both program source files and @value{GDBN}
6109script files (read using the @samp{-command} option and @samp{source} command).
6110
30daae6c
JB
6111In addition to the source path, @value{GDBN} provides a set of commands
6112that manage a list of source path substitution rules. A @dfn{substitution
6113rule} specifies how to rewrite source directories stored in the program's
6114debug information in case the sources were moved to a different
6115directory between compilation and debugging. A rule is made of
6116two strings, the first specifying what needs to be rewritten in
6117the path, and the second specifying how it should be rewritten.
6118In @ref{set substitute-path}, we name these two parts @var{from} and
6119@var{to} respectively. @value{GDBN} does a simple string replacement
6120of @var{from} with @var{to} at the start of the directory part of the
6121source file name, and uses that result instead of the original file
6122name to look up the sources.
6123
6124Using the previous example, suppose the @file{foo-1.0} tree has been
6125moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell
3f94c067 6126@value{GDBN} to replace @file{/usr/src} in all source path names with
30daae6c
JB
6127@file{/mnt/cross}. The first lookup will then be
6128@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location
6129of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path
6130substitution rule, use the @code{set substitute-path} command
6131(@pxref{set substitute-path}).
6132
6133To avoid unexpected substitution results, a rule is applied only if the
6134@var{from} part of the directory name ends at a directory separator.
6135For instance, a rule substituting @file{/usr/source} into
6136@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but
6137not to @file{/usr/sourceware/foo-2.0}. And because the substitution
d3e8051b 6138is applied only at the beginning of the directory name, this rule will
30daae6c
JB
6139not be applied to @file{/root/usr/source/baz.c} either.
6140
6141In many cases, you can achieve the same result using the @code{directory}
6142command. However, @code{set substitute-path} can be more efficient in
6143the case where the sources are organized in a complex tree with multiple
6144subdirectories. With the @code{directory} command, you need to add each
6145subdirectory of your project. If you moved the entire tree while
6146preserving its internal organization, then @code{set substitute-path}
6147allows you to direct the debugger to all the sources with one single
6148command.
6149
6150@code{set substitute-path} is also more than just a shortcut command.
6151The source path is only used if the file at the original location no
6152longer exists. On the other hand, @code{set substitute-path} modifies
6153the debugger behavior to look at the rewritten location instead. So, if
6154for any reason a source file that is not relevant to your executable is
6155located at the original location, a substitution rule is the only
3f94c067 6156method available to point @value{GDBN} at the new location.
30daae6c 6157
29b0e8a2
JM
6158@cindex @samp{--with-relocated-sources}
6159@cindex default source path substitution
6160You can configure a default source path substitution rule by
6161configuring @value{GDBN} with the
6162@samp{--with-relocated-sources=@var{dir}} option. The @var{dir}
6163should be the name of a directory under @value{GDBN}'s configured
6164prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and
6165directory names in debug information under @var{dir} will be adjusted
6166automatically if the installed @value{GDBN} is moved to a new
6167location. This is useful if @value{GDBN}, libraries or executables
6168with debug information and corresponding source code are being moved
6169together.
6170
c906108c
SS
6171@table @code
6172@item directory @var{dirname} @dots{}
6173@item dir @var{dirname} @dots{}
6174Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
6175directory names may be given to this command, separated by @samp{:}
6176(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
6177part of absolute file names) or
c906108c
SS
6178whitespace. You may specify a directory that is already in the source
6179path; this moves it forward, so @value{GDBN} searches it sooner.
6180
6181@kindex cdir
6182@kindex cwd
41afff9a 6183@vindex $cdir@r{, convenience variable}
d3e8051b 6184@vindex $cwd@r{, convenience variable}
c906108c
SS
6185@cindex compilation directory
6186@cindex current directory
6187@cindex working directory
6188@cindex directory, current
6189@cindex directory, compilation
6190You can use the string @samp{$cdir} to refer to the compilation
6191directory (if one is recorded), and @samp{$cwd} to refer to the current
6192working directory. @samp{$cwd} is not the same as @samp{.}---the former
6193tracks the current working directory as it changes during your @value{GDBN}
6194session, while the latter is immediately expanded to the current
6195directory at the time you add an entry to the source path.
6196
6197@item directory
cd852561 6198Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation.
c906108c
SS
6199
6200@c RET-repeat for @code{directory} is explicitly disabled, but since
6201@c repeating it would be a no-op we do not say that. (thanks to RMS)
6202
6203@item show directories
6204@kindex show directories
6205Print the source path: show which directories it contains.
30daae6c
JB
6206
6207@anchor{set substitute-path}
6208@item set substitute-path @var{from} @var{to}
6209@kindex set substitute-path
6210Define a source path substitution rule, and add it at the end of the
6211current list of existing substitution rules. If a rule with the same
6212@var{from} was already defined, then the old rule is also deleted.
6213
6214For example, if the file @file{/foo/bar/baz.c} was moved to
6215@file{/mnt/cross/baz.c}, then the command
6216
6217@smallexample
6218(@value{GDBP}) set substitute-path /usr/src /mnt/cross
6219@end smallexample
6220
6221@noindent
6222will tell @value{GDBN} to replace @samp{/usr/src} with
6223@samp{/mnt/cross}, which will allow @value{GDBN} to find the file
6224@file{baz.c} even though it was moved.
6225
6226In the case when more than one substitution rule have been defined,
6227the rules are evaluated one by one in the order where they have been
6228defined. The first one matching, if any, is selected to perform
6229the substitution.
6230
6231For instance, if we had entered the following commands:
6232
6233@smallexample
6234(@value{GDBP}) set substitute-path /usr/src/include /mnt/include
6235(@value{GDBP}) set substitute-path /usr/src /mnt/src
6236@end smallexample
6237
6238@noindent
6239@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into
6240@file{/mnt/include/defs.h} by using the first rule. However, it would
6241use the second rule to rewrite @file{/usr/src/lib/foo.c} into
6242@file{/mnt/src/lib/foo.c}.
6243
6244
6245@item unset substitute-path [path]
6246@kindex unset substitute-path
6247If a path is specified, search the current list of substitution rules
6248for a rule that would rewrite that path. Delete that rule if found.
6249A warning is emitted by the debugger if no rule could be found.
6250
6251If no path is specified, then all substitution rules are deleted.
6252
6253@item show substitute-path [path]
6254@kindex show substitute-path
6255If a path is specified, then print the source path substitution rule
6256which would rewrite that path, if any.
6257
6258If no path is specified, then print all existing source path substitution
6259rules.
6260
c906108c
SS
6261@end table
6262
6263If your source path is cluttered with directories that are no longer of
6264interest, @value{GDBN} may sometimes cause confusion by finding the wrong
6265versions of source. You can correct the situation as follows:
6266
6267@enumerate
6268@item
cd852561 6269Use @code{directory} with no argument to reset the source path to its default value.
c906108c
SS
6270
6271@item
6272Use @code{directory} with suitable arguments to reinstall the
6273directories you want in the source path. You can add all the
6274directories in one command.
6275@end enumerate
6276
6d2ebf8b 6277@node Machine Code
79a6e687 6278@section Source and Machine Code
15387254 6279@cindex source line and its code address
c906108c
SS
6280
6281You can use the command @code{info line} to map source lines to program
6282addresses (and vice versa), and the command @code{disassemble} to display
91440f57
HZ
6283a range of addresses as machine instructions. You can use the command
6284@code{set disassemble-next-line} to set whether to disassemble next
6285source line when execution stops. When run under @sc{gnu} Emacs
d4f3574e 6286mode, the @code{info line} command causes the arrow to point to the
5d161b24 6287line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
6288well as hex.
6289
6290@table @code
6291@kindex info line
6292@item info line @var{linespec}
6293Print the starting and ending addresses of the compiled code for
6294source line @var{linespec}. You can specify source lines in any of
2a25a5ba 6295the ways documented in @ref{Specify Location}.
c906108c
SS
6296@end table
6297
6298For example, we can use @code{info line} to discover the location of
6299the object code for the first line of function
6300@code{m4_changequote}:
6301
d4f3574e
SS
6302@c FIXME: I think this example should also show the addresses in
6303@c symbolic form, as they usually would be displayed.
c906108c 6304@smallexample
96a2c332 6305(@value{GDBP}) info line m4_changequote
c906108c
SS
6306Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
6307@end smallexample
6308
6309@noindent
15387254 6310@cindex code address and its source line
c906108c
SS
6311We can also inquire (using @code{*@var{addr}} as the form for
6312@var{linespec}) what source line covers a particular address:
6313@smallexample
6314(@value{GDBP}) info line *0x63ff
6315Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
6316@end smallexample
6317
6318@cindex @code{$_} and @code{info line}
15387254 6319@cindex @code{x} command, default address
41afff9a 6320@kindex x@r{(examine), and} info line
c906108c
SS
6321After @code{info line}, the default address for the @code{x} command
6322is changed to the starting address of the line, so that @samp{x/i} is
6323sufficient to begin examining the machine code (@pxref{Memory,
79a6e687 6324,Examining Memory}). Also, this address is saved as the value of the
c906108c 6325convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
79a6e687 6326Variables}).
c906108c
SS
6327
6328@table @code
6329@kindex disassemble
6330@cindex assembly instructions
6331@cindex instructions, assembly
6332@cindex machine instructions
6333@cindex listing machine instructions
6334@item disassemble
d14508fe 6335@itemx disassemble /m
9b117ef3 6336@itemx disassemble /r
c906108c 6337This specialized command dumps a range of memory as machine
d14508fe 6338instructions. It can also print mixed source+disassembly by specifying
9b117ef3
HZ
6339the @code{/m} modifier and print the raw instructions in hex as well as
6340in symbolic form by specifying the @code{/r}.
d14508fe 6341The default memory range is the function surrounding the
c906108c
SS
6342program counter of the selected frame. A single argument to this
6343command is a program counter value; @value{GDBN} dumps the function
6344surrounding this value. Two arguments specify a range of addresses
6345(first inclusive, second exclusive) to dump.
6346@end table
6347
c906108c
SS
6348The following example shows the disassembly of a range of addresses of
6349HP PA-RISC 2.0 code:
6350
6351@smallexample
6352(@value{GDBP}) disas 0x32c4 0x32e4
6353Dump of assembler code from 0x32c4 to 0x32e4:
63540x32c4 <main+204>: addil 0,dp
63550x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
63560x32cc <main+212>: ldil 0x3000,r31
63570x32d0 <main+216>: ble 0x3f8(sr4,r31)
63580x32d4 <main+220>: ldo 0(r31),rp
63590x32d8 <main+224>: addil -0x800,dp
63600x32dc <main+228>: ldo 0x588(r1),r26
63610x32e0 <main+232>: ldil 0x3000,r31
6362End of assembler dump.
6363@end smallexample
c906108c 6364
d14508fe
DE
6365Here is an example showing mixed source+assembly for Intel x86:
6366
6367@smallexample
6368(@value{GDBP}) disas /m main
6369Dump of assembler code for function main:
63705 @{
63710x08048330 <main+0>: push %ebp
63720x08048331 <main+1>: mov %esp,%ebp
63730x08048333 <main+3>: sub $0x8,%esp
63740x08048336 <main+6>: and $0xfffffff0,%esp
63750x08048339 <main+9>: sub $0x10,%esp
6376
63776 printf ("Hello.\n");
63780x0804833c <main+12>: movl $0x8048440,(%esp)
63790x08048343 <main+19>: call 0x8048284 <puts@@plt>
6380
63817 return 0;
63828 @}
63830x08048348 <main+24>: mov $0x0,%eax
63840x0804834d <main+29>: leave
63850x0804834e <main+30>: ret
6386
6387End of assembler dump.
6388@end smallexample
6389
c906108c
SS
6390Some architectures have more than one commonly-used set of instruction
6391mnemonics or other syntax.
6392
76d17f34
EZ
6393For programs that were dynamically linked and use shared libraries,
6394instructions that call functions or branch to locations in the shared
6395libraries might show a seemingly bogus location---it's actually a
6396location of the relocation table. On some architectures, @value{GDBN}
6397might be able to resolve these to actual function names.
6398
c906108c 6399@table @code
d4f3574e 6400@kindex set disassembly-flavor
d4f3574e
SS
6401@cindex Intel disassembly flavor
6402@cindex AT&T disassembly flavor
6403@item set disassembly-flavor @var{instruction-set}
c906108c
SS
6404Select the instruction set to use when disassembling the
6405program via the @code{disassemble} or @code{x/i} commands.
6406
6407Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
6408can set @var{instruction-set} to either @code{intel} or @code{att}.
6409The default is @code{att}, the AT&T flavor used by default by Unix
6410assemblers for x86-based targets.
9c16f35a
EZ
6411
6412@kindex show disassembly-flavor
6413@item show disassembly-flavor
6414Show the current setting of the disassembly flavor.
c906108c
SS
6415@end table
6416
91440f57
HZ
6417@table @code
6418@kindex set disassemble-next-line
6419@kindex show disassemble-next-line
6420@item set disassemble-next-line
6421@itemx show disassemble-next-line
32ae1842
EZ
6422Control whether or not @value{GDBN} will disassemble the next source
6423line or instruction when execution stops. If ON, @value{GDBN} will
6424display disassembly of the next source line when execution of the
6425program being debugged stops. This is @emph{in addition} to
6426displaying the source line itself, which @value{GDBN} always does if
6427possible. If the next source line cannot be displayed for some reason
6428(e.g., if @value{GDBN} cannot find the source file, or there's no line
6429info in the debug info), @value{GDBN} will display disassembly of the
6430next @emph{instruction} instead of showing the next source line. If
6431AUTO, @value{GDBN} will display disassembly of next instruction only
6432if the source line cannot be displayed. This setting causes
6433@value{GDBN} to display some feedback when you step through a function
6434with no line info or whose source file is unavailable. The default is
6435OFF, which means never display the disassembly of the next line or
6436instruction.
91440f57
HZ
6437@end table
6438
c906108c 6439
6d2ebf8b 6440@node Data
c906108c
SS
6441@chapter Examining Data
6442
6443@cindex printing data
6444@cindex examining data
6445@kindex print
6446@kindex inspect
6447@c "inspect" is not quite a synonym if you are using Epoch, which we do not
6448@c document because it is nonstandard... Under Epoch it displays in a
6449@c different window or something like that.
6450The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
6451command (abbreviated @code{p}), or its synonym @code{inspect}. It
6452evaluates and prints the value of an expression of the language your
6453program is written in (@pxref{Languages, ,Using @value{GDBN} with
6454Different Languages}).
c906108c
SS
6455
6456@table @code
d4f3574e
SS
6457@item print @var{expr}
6458@itemx print /@var{f} @var{expr}
6459@var{expr} is an expression (in the source language). By default the
6460value of @var{expr} is printed in a format appropriate to its data type;
c906108c 6461you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 6462@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
79a6e687 6463Formats}.
c906108c
SS
6464
6465@item print
6466@itemx print /@var{f}
15387254 6467@cindex reprint the last value
d4f3574e 6468If you omit @var{expr}, @value{GDBN} displays the last value again (from the
79a6e687 6469@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to
c906108c
SS
6470conveniently inspect the same value in an alternative format.
6471@end table
6472
6473A more low-level way of examining data is with the @code{x} command.
6474It examines data in memory at a specified address and prints it in a
79a6e687 6475specified format. @xref{Memory, ,Examining Memory}.
c906108c 6476
7a292a7a 6477If you are interested in information about types, or about how the
d4f3574e
SS
6478fields of a struct or a class are declared, use the @code{ptype @var{exp}}
6479command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 6480Table}.
c906108c
SS
6481
6482@menu
6483* Expressions:: Expressions
6ba66d6a 6484* Ambiguous Expressions:: Ambiguous Expressions
c906108c
SS
6485* Variables:: Program variables
6486* Arrays:: Artificial arrays
6487* Output Formats:: Output formats
6488* Memory:: Examining memory
6489* Auto Display:: Automatic display
6490* Print Settings:: Print settings
6491* Value History:: Value history
6492* Convenience Vars:: Convenience variables
6493* Registers:: Registers
c906108c 6494* Floating Point Hardware:: Floating point hardware
53c69bd7 6495* Vector Unit:: Vector Unit
721c2651 6496* OS Information:: Auxiliary data provided by operating system
29e57380 6497* Memory Region Attributes:: Memory region attributes
16d9dec6 6498* Dump/Restore Files:: Copy between memory and a file
384ee23f 6499* Core File Generation:: Cause a program dump its core
a0eb71c5
KB
6500* Character Sets:: Debugging programs that use a different
6501 character set than GDB does
09d4efe1 6502* Caching Remote Data:: Data caching for remote targets
08388c79 6503* Searching Memory:: Searching memory for a sequence of bytes
c906108c
SS
6504@end menu
6505
6d2ebf8b 6506@node Expressions
c906108c
SS
6507@section Expressions
6508
6509@cindex expressions
6510@code{print} and many other @value{GDBN} commands accept an expression and
6511compute its value. Any kind of constant, variable or operator defined
6512by the programming language you are using is valid in an expression in
e2e0bcd1
JB
6513@value{GDBN}. This includes conditional expressions, function calls,
6514casts, and string constants. It also includes preprocessor macros, if
6515you compiled your program to include this information; see
6516@ref{Compilation}.
c906108c 6517
15387254 6518@cindex arrays in expressions
d4f3574e
SS
6519@value{GDBN} supports array constants in expressions input by
6520the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
63092375
DJ
6521you can use the command @code{print @{1, 2, 3@}} to create an array
6522of three integers. If you pass an array to a function or assign it
6523to a program variable, @value{GDBN} copies the array to memory that
6524is @code{malloc}ed in the target program.
c906108c 6525
c906108c
SS
6526Because C is so widespread, most of the expressions shown in examples in
6527this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
6528Languages}, for information on how to use expressions in other
6529languages.
6530
6531In this section, we discuss operators that you can use in @value{GDBN}
6532expressions regardless of your programming language.
6533
15387254 6534@cindex casts, in expressions
c906108c
SS
6535Casts are supported in all languages, not just in C, because it is so
6536useful to cast a number into a pointer in order to examine a structure
6537at that address in memory.
6538@c FIXME: casts supported---Mod2 true?
c906108c
SS
6539
6540@value{GDBN} supports these operators, in addition to those common
6541to programming languages:
6542
6543@table @code
6544@item @@
6545@samp{@@} is a binary operator for treating parts of memory as arrays.
79a6e687 6546@xref{Arrays, ,Artificial Arrays}, for more information.
c906108c
SS
6547
6548@item ::
6549@samp{::} allows you to specify a variable in terms of the file or
79a6e687 6550function where it is defined. @xref{Variables, ,Program Variables}.
c906108c
SS
6551
6552@cindex @{@var{type}@}
6553@cindex type casting memory
6554@cindex memory, viewing as typed object
6555@cindex casts, to view memory
6556@item @{@var{type}@} @var{addr}
6557Refers to an object of type @var{type} stored at address @var{addr} in
6558memory. @var{addr} may be any expression whose value is an integer or
6559pointer (but parentheses are required around binary operators, just as in
6560a cast). This construct is allowed regardless of what kind of data is
6561normally supposed to reside at @var{addr}.
6562@end table
6563
6ba66d6a
JB
6564@node Ambiguous Expressions
6565@section Ambiguous Expressions
6566@cindex ambiguous expressions
6567
6568Expressions can sometimes contain some ambiguous elements. For instance,
6569some programming languages (notably Ada, C@t{++} and Objective-C) permit
6570a single function name to be defined several times, for application in
6571different contexts. This is called @dfn{overloading}. Another example
6572involving Ada is generics. A @dfn{generic package} is similar to C@t{++}
6573templates and is typically instantiated several times, resulting in
6574the same function name being defined in different contexts.
6575
6576In some cases and depending on the language, it is possible to adjust
6577the expression to remove the ambiguity. For instance in C@t{++}, you
6578can specify the signature of the function you want to break on, as in
6579@kbd{break @var{function}(@var{types})}. In Ada, using the fully
6580qualified name of your function often makes the expression unambiguous
6581as well.
6582
6583When an ambiguity that needs to be resolved is detected, the debugger
6584has the capability to display a menu of numbered choices for each
6585possibility, and then waits for the selection with the prompt @samp{>}.
6586The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}}
6587aborts the current command. If the command in which the expression was
6588used allows more than one choice to be selected, the next option in the
6589menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible
6590choices.
6591
6592For example, the following session excerpt shows an attempt to set a
6593breakpoint at the overloaded symbol @code{String::after}.
6594We choose three particular definitions of that function name:
6595
6596@c FIXME! This is likely to change to show arg type lists, at least
6597@smallexample
6598@group
6599(@value{GDBP}) b String::after
6600[0] cancel
6601[1] all
6602[2] file:String.cc; line number:867
6603[3] file:String.cc; line number:860
6604[4] file:String.cc; line number:875
6605[5] file:String.cc; line number:853
6606[6] file:String.cc; line number:846
6607[7] file:String.cc; line number:735
6608> 2 4 6
6609Breakpoint 1 at 0xb26c: file String.cc, line 867.
6610Breakpoint 2 at 0xb344: file String.cc, line 875.
6611Breakpoint 3 at 0xafcc: file String.cc, line 846.
6612Multiple breakpoints were set.
6613Use the "delete" command to delete unwanted
6614 breakpoints.
6615(@value{GDBP})
6616@end group
6617@end smallexample
6618
6619@table @code
6620@kindex set multiple-symbols
6621@item set multiple-symbols @var{mode}
6622@cindex multiple-symbols menu
6623
6624This option allows you to adjust the debugger behavior when an expression
6625is ambiguous.
6626
6627By default, @var{mode} is set to @code{all}. If the command with which
6628the expression is used allows more than one choice, then @value{GDBN}
6629automatically selects all possible choices. For instance, inserting
6630a breakpoint on a function using an ambiguous name results in a breakpoint
6631inserted on each possible match. However, if a unique choice must be made,
6632then @value{GDBN} uses the menu to help you disambiguate the expression.
6633For instance, printing the address of an overloaded function will result
6634in the use of the menu.
6635
6636When @var{mode} is set to @code{ask}, the debugger always uses the menu
6637when an ambiguity is detected.
6638
6639Finally, when @var{mode} is set to @code{cancel}, the debugger reports
6640an error due to the ambiguity and the command is aborted.
6641
6642@kindex show multiple-symbols
6643@item show multiple-symbols
6644Show the current value of the @code{multiple-symbols} setting.
6645@end table
6646
6d2ebf8b 6647@node Variables
79a6e687 6648@section Program Variables
c906108c
SS
6649
6650The most common kind of expression to use is the name of a variable
6651in your program.
6652
6653Variables in expressions are understood in the selected stack frame
79a6e687 6654(@pxref{Selection, ,Selecting a Frame}); they must be either:
c906108c
SS
6655
6656@itemize @bullet
6657@item
6658global (or file-static)
6659@end itemize
6660
5d161b24 6661@noindent or
c906108c
SS
6662
6663@itemize @bullet
6664@item
6665visible according to the scope rules of the
6666programming language from the point of execution in that frame
5d161b24 6667@end itemize
c906108c
SS
6668
6669@noindent This means that in the function
6670
474c8240 6671@smallexample
c906108c
SS
6672foo (a)
6673 int a;
6674@{
6675 bar (a);
6676 @{
6677 int b = test ();
6678 bar (b);
6679 @}
6680@}
474c8240 6681@end smallexample
c906108c
SS
6682
6683@noindent
6684you can examine and use the variable @code{a} whenever your program is
6685executing within the function @code{foo}, but you can only use or
6686examine the variable @code{b} while your program is executing inside
6687the block where @code{b} is declared.
6688
6689@cindex variable name conflict
6690There is an exception: you can refer to a variable or function whose
6691scope is a single source file even if the current execution point is not
6692in this file. But it is possible to have more than one such variable or
6693function with the same name (in different source files). If that
6694happens, referring to that name has unpredictable effects. If you wish,
6695you can specify a static variable in a particular function or file,
15387254 6696using the colon-colon (@code{::}) notation:
c906108c 6697
d4f3574e 6698@cindex colon-colon, context for variables/functions
12c27660 6699@ifnotinfo
c906108c 6700@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 6701@cindex @code{::}, context for variables/functions
12c27660 6702@end ifnotinfo
474c8240 6703@smallexample
c906108c
SS
6704@var{file}::@var{variable}
6705@var{function}::@var{variable}
474c8240 6706@end smallexample
c906108c
SS
6707
6708@noindent
6709Here @var{file} or @var{function} is the name of the context for the
6710static @var{variable}. In the case of file names, you can use quotes to
6711make sure @value{GDBN} parses the file name as a single word---for example,
6712to print a global value of @code{x} defined in @file{f2.c}:
6713
474c8240 6714@smallexample
c906108c 6715(@value{GDBP}) p 'f2.c'::x
474c8240 6716@end smallexample
c906108c 6717
b37052ae 6718@cindex C@t{++} scope resolution
c906108c 6719This use of @samp{::} is very rarely in conflict with the very similar
b37052ae 6720use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
6721scope resolution operator in @value{GDBN} expressions.
6722@c FIXME: Um, so what happens in one of those rare cases where it's in
6723@c conflict?? --mew
c906108c
SS
6724
6725@cindex wrong values
6726@cindex variable values, wrong
15387254
EZ
6727@cindex function entry/exit, wrong values of variables
6728@cindex optimized code, wrong values of variables
c906108c
SS
6729@quotation
6730@emph{Warning:} Occasionally, a local variable may appear to have the
6731wrong value at certain points in a function---just after entry to a new
6732scope, and just before exit.
6733@end quotation
6734You may see this problem when you are stepping by machine instructions.
6735This is because, on most machines, it takes more than one instruction to
6736set up a stack frame (including local variable definitions); if you are
6737stepping by machine instructions, variables may appear to have the wrong
6738values until the stack frame is completely built. On exit, it usually
6739also takes more than one machine instruction to destroy a stack frame;
6740after you begin stepping through that group of instructions, local
6741variable definitions may be gone.
6742
6743This may also happen when the compiler does significant optimizations.
6744To be sure of always seeing accurate values, turn off all optimization
6745when compiling.
6746
d4f3574e
SS
6747@cindex ``No symbol "foo" in current context''
6748Another possible effect of compiler optimizations is to optimize
6749unused variables out of existence, or assign variables to registers (as
6750opposed to memory addresses). Depending on the support for such cases
6751offered by the debug info format used by the compiler, @value{GDBN}
6752might not be able to display values for such local variables. If that
6753happens, @value{GDBN} will print a message like this:
6754
474c8240 6755@smallexample
d4f3574e 6756No symbol "foo" in current context.
474c8240 6757@end smallexample
d4f3574e
SS
6758
6759To solve such problems, either recompile without optimizations, or use a
6760different debug info format, if the compiler supports several such
15387254 6761formats. For example, @value{NGCC}, the @sc{gnu} C/C@t{++} compiler,
0179ffac
DC
6762usually supports the @option{-gstabs+} option. @option{-gstabs+}
6763produces debug info in a format that is superior to formats such as
6764COFF. You may be able to use DWARF 2 (@option{-gdwarf-2}), which is also
6765an effective form for debug info. @xref{Debugging Options,,Options
ce9341a1
BW
6766for Debugging Your Program or GCC, gcc.info, Using the @sc{gnu}
6767Compiler Collection (GCC)}.
79a6e687 6768@xref{C, ,C and C@t{++}}, for more information about debug info formats
15387254 6769that are best suited to C@t{++} programs.
d4f3574e 6770
ab1adacd
EZ
6771If you ask to print an object whose contents are unknown to
6772@value{GDBN}, e.g., because its data type is not completely specified
6773by the debug information, @value{GDBN} will say @samp{<incomplete
6774type>}. @xref{Symbols, incomplete type}, for more about this.
6775
3a60f64e
JK
6776Strings are identified as arrays of @code{char} values without specified
6777signedness. Arrays of either @code{signed char} or @code{unsigned char} get
6778printed as arrays of 1 byte sized integers. @code{-fsigned-char} or
6779@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN}
6780defines literal string type @code{"char"} as @code{char} without a sign.
6781For program code
6782
6783@smallexample
6784char var0[] = "A";
6785signed char var1[] = "A";
6786@end smallexample
6787
6788You get during debugging
6789@smallexample
6790(gdb) print var0
6791$1 = "A"
6792(gdb) print var1
6793$2 = @{65 'A', 0 '\0'@}
6794@end smallexample
6795
6d2ebf8b 6796@node Arrays
79a6e687 6797@section Artificial Arrays
c906108c
SS
6798
6799@cindex artificial array
15387254 6800@cindex arrays
41afff9a 6801@kindex @@@r{, referencing memory as an array}
c906108c
SS
6802It is often useful to print out several successive objects of the
6803same type in memory; a section of an array, or an array of
6804dynamically determined size for which only a pointer exists in the
6805program.
6806
6807You can do this by referring to a contiguous span of memory as an
6808@dfn{artificial array}, using the binary operator @samp{@@}. The left
6809operand of @samp{@@} should be the first element of the desired array
6810and be an individual object. The right operand should be the desired length
6811of the array. The result is an array value whose elements are all of
6812the type of the left argument. The first element is actually the left
6813argument; the second element comes from bytes of memory immediately
6814following those that hold the first element, and so on. Here is an
6815example. If a program says
6816
474c8240 6817@smallexample
c906108c 6818int *array = (int *) malloc (len * sizeof (int));
474c8240 6819@end smallexample
c906108c
SS
6820
6821@noindent
6822you can print the contents of @code{array} with
6823
474c8240 6824@smallexample
c906108c 6825p *array@@len
474c8240 6826@end smallexample
c906108c
SS
6827
6828The left operand of @samp{@@} must reside in memory. Array values made
6829with @samp{@@} in this way behave just like other arrays in terms of
6830subscripting, and are coerced to pointers when used in expressions.
6831Artificial arrays most often appear in expressions via the value history
79a6e687 6832(@pxref{Value History, ,Value History}), after printing one out.
c906108c
SS
6833
6834Another way to create an artificial array is to use a cast.
6835This re-interprets a value as if it were an array.
6836The value need not be in memory:
474c8240 6837@smallexample
c906108c
SS
6838(@value{GDBP}) p/x (short[2])0x12345678
6839$1 = @{0x1234, 0x5678@}
474c8240 6840@end smallexample
c906108c
SS
6841
6842As a convenience, if you leave the array length out (as in
c3f6f71d 6843@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c 6844the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
474c8240 6845@smallexample
c906108c
SS
6846(@value{GDBP}) p/x (short[])0x12345678
6847$2 = @{0x1234, 0x5678@}
474c8240 6848@end smallexample
c906108c
SS
6849
6850Sometimes the artificial array mechanism is not quite enough; in
6851moderately complex data structures, the elements of interest may not
6852actually be adjacent---for example, if you are interested in the values
6853of pointers in an array. One useful work-around in this situation is
6854to use a convenience variable (@pxref{Convenience Vars, ,Convenience
79a6e687 6855Variables}) as a counter in an expression that prints the first
c906108c
SS
6856interesting value, and then repeat that expression via @key{RET}. For
6857instance, suppose you have an array @code{dtab} of pointers to
6858structures, and you are interested in the values of a field @code{fv}
6859in each structure. Here is an example of what you might type:
6860
474c8240 6861@smallexample
c906108c
SS
6862set $i = 0
6863p dtab[$i++]->fv
6864@key{RET}
6865@key{RET}
6866@dots{}
474c8240 6867@end smallexample
c906108c 6868
6d2ebf8b 6869@node Output Formats
79a6e687 6870@section Output Formats
c906108c
SS
6871
6872@cindex formatted output
6873@cindex output formats
6874By default, @value{GDBN} prints a value according to its data type. Sometimes
6875this is not what you want. For example, you might want to print a number
6876in hex, or a pointer in decimal. Or you might want to view data in memory
6877at a certain address as a character string or as an instruction. To do
6878these things, specify an @dfn{output format} when you print a value.
6879
6880The simplest use of output formats is to say how to print a value
6881already computed. This is done by starting the arguments of the
6882@code{print} command with a slash and a format letter. The format
6883letters supported are:
6884
6885@table @code
6886@item x
6887Regard the bits of the value as an integer, and print the integer in
6888hexadecimal.
6889
6890@item d
6891Print as integer in signed decimal.
6892
6893@item u
6894Print as integer in unsigned decimal.
6895
6896@item o
6897Print as integer in octal.
6898
6899@item t
6900Print as integer in binary. The letter @samp{t} stands for ``two''.
6901@footnote{@samp{b} cannot be used because these format letters are also
6902used with the @code{x} command, where @samp{b} stands for ``byte'';
79a6e687 6903see @ref{Memory,,Examining Memory}.}
c906108c
SS
6904
6905@item a
6906@cindex unknown address, locating
3d67e040 6907@cindex locate address
c906108c
SS
6908Print as an address, both absolute in hexadecimal and as an offset from
6909the nearest preceding symbol. You can use this format used to discover
6910where (in what function) an unknown address is located:
6911
474c8240 6912@smallexample
c906108c
SS
6913(@value{GDBP}) p/a 0x54320
6914$3 = 0x54320 <_initialize_vx+396>
474c8240 6915@end smallexample
c906108c 6916
3d67e040
EZ
6917@noindent
6918The command @code{info symbol 0x54320} yields similar results.
6919@xref{Symbols, info symbol}.
6920
c906108c 6921@item c
51274035
EZ
6922Regard as an integer and print it as a character constant. This
6923prints both the numerical value and its character representation. The
6924character representation is replaced with the octal escape @samp{\nnn}
6925for characters outside the 7-bit @sc{ascii} range.
c906108c 6926
ea37ba09
DJ
6927Without this format, @value{GDBN} displays @code{char},
6928@w{@code{unsigned char}}, and @w{@code{signed char}} data as character
6929constants. Single-byte members of vectors are displayed as integer
6930data.
6931
c906108c
SS
6932@item f
6933Regard the bits of the value as a floating point number and print
6934using typical floating point syntax.
ea37ba09
DJ
6935
6936@item s
6937@cindex printing strings
6938@cindex printing byte arrays
6939Regard as a string, if possible. With this format, pointers to single-byte
6940data are displayed as null-terminated strings and arrays of single-byte data
6941are displayed as fixed-length strings. Other values are displayed in their
6942natural types.
6943
6944Without this format, @value{GDBN} displays pointers to and arrays of
6945@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
6946strings. Single-byte members of a vector are displayed as an integer
6947array.
a6bac58e
TT
6948
6949@item r
6950@cindex raw printing
6951Print using the @samp{raw} formatting. By default, @value{GDBN} will
6952use a type-specific pretty-printer. The @samp{r} format bypasses any
6953pretty-printer which might exist for the value's type.
c906108c
SS
6954@end table
6955
6956For example, to print the program counter in hex (@pxref{Registers}), type
6957
474c8240 6958@smallexample
c906108c 6959p/x $pc
474c8240 6960@end smallexample
c906108c
SS
6961
6962@noindent
6963Note that no space is required before the slash; this is because command
6964names in @value{GDBN} cannot contain a slash.
6965
6966To reprint the last value in the value history with a different format,
6967you can use the @code{print} command with just a format and no
6968expression. For example, @samp{p/x} reprints the last value in hex.
6969
6d2ebf8b 6970@node Memory
79a6e687 6971@section Examining Memory
c906108c
SS
6972
6973You can use the command @code{x} (for ``examine'') to examine memory in
6974any of several formats, independently of your program's data types.
6975
6976@cindex examining memory
6977@table @code
41afff9a 6978@kindex x @r{(examine memory)}
c906108c
SS
6979@item x/@var{nfu} @var{addr}
6980@itemx x @var{addr}
6981@itemx x
6982Use the @code{x} command to examine memory.
6983@end table
6984
6985@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
6986much memory to display and how to format it; @var{addr} is an
6987expression giving the address where you want to start displaying memory.
6988If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
6989Several commands set convenient defaults for @var{addr}.
6990
6991@table @r
6992@item @var{n}, the repeat count
6993The repeat count is a decimal integer; the default is 1. It specifies
6994how much memory (counting by units @var{u}) to display.
6995@c This really is **decimal**; unaffected by 'set radix' as of GDB
6996@c 4.1.2.
6997
6998@item @var{f}, the display format
51274035
EZ
6999The display format is one of the formats used by @code{print}
7000(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c},
ea37ba09
DJ
7001@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions).
7002The default is @samp{x} (hexadecimal) initially. The default changes
7003each time you use either @code{x} or @code{print}.
c906108c
SS
7004
7005@item @var{u}, the unit size
7006The unit size is any of
7007
7008@table @code
7009@item b
7010Bytes.
7011@item h
7012Halfwords (two bytes).
7013@item w
7014Words (four bytes). This is the initial default.
7015@item g
7016Giant words (eight bytes).
7017@end table
7018
7019Each time you specify a unit size with @code{x}, that size becomes the
7020default unit the next time you use @code{x}. (For the @samp{s} and
7021@samp{i} formats, the unit size is ignored and is normally not written.)
7022
7023@item @var{addr}, starting display address
7024@var{addr} is the address where you want @value{GDBN} to begin displaying
7025memory. The expression need not have a pointer value (though it may);
7026it is always interpreted as an integer address of a byte of memory.
7027@xref{Expressions, ,Expressions}, for more information on expressions. The default for
7028@var{addr} is usually just after the last address examined---but several
7029other commands also set the default address: @code{info breakpoints} (to
7030the address of the last breakpoint listed), @code{info line} (to the
7031starting address of a line), and @code{print} (if you use it to display
7032a value from memory).
7033@end table
7034
7035For example, @samp{x/3uh 0x54320} is a request to display three halfwords
7036(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
7037starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
7038words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 7039@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
7040
7041Since the letters indicating unit sizes are all distinct from the
7042letters specifying output formats, you do not have to remember whether
7043unit size or format comes first; either order works. The output
7044specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
7045(However, the count @var{n} must come first; @samp{wx4} does not work.)
7046
7047Even though the unit size @var{u} is ignored for the formats @samp{s}
7048and @samp{i}, you might still want to use a count @var{n}; for example,
7049@samp{3i} specifies that you want to see three machine instructions,
a4642986
MR
7050including any operands. For convenience, especially when used with
7051the @code{display} command, the @samp{i} format also prints branch delay
7052slot instructions, if any, beyond the count specified, which immediately
7053follow the last instruction that is within the count. The command
7054@code{disassemble} gives an alternative way of inspecting machine
7055instructions; see @ref{Machine Code,,Source and Machine Code}.
c906108c
SS
7056
7057All the defaults for the arguments to @code{x} are designed to make it
7058easy to continue scanning memory with minimal specifications each time
7059you use @code{x}. For example, after you have inspected three machine
7060instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
7061with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
7062the repeat count @var{n} is used again; the other arguments default as
7063for successive uses of @code{x}.
7064
7065@cindex @code{$_}, @code{$__}, and value history
7066The addresses and contents printed by the @code{x} command are not saved
7067in the value history because there is often too much of them and they
7068would get in the way. Instead, @value{GDBN} makes these values available for
7069subsequent use in expressions as values of the convenience variables
7070@code{$_} and @code{$__}. After an @code{x} command, the last address
7071examined is available for use in expressions in the convenience variable
7072@code{$_}. The contents of that address, as examined, are available in
7073the convenience variable @code{$__}.
7074
7075If the @code{x} command has a repeat count, the address and contents saved
7076are from the last memory unit printed; this is not the same as the last
7077address printed if several units were printed on the last line of output.
7078
09d4efe1
EZ
7079@cindex remote memory comparison
7080@cindex verify remote memory image
7081When you are debugging a program running on a remote target machine
ea35711c 7082(@pxref{Remote Debugging}), you may wish to verify the program's image in the
09d4efe1
EZ
7083remote machine's memory against the executable file you downloaded to
7084the target. The @code{compare-sections} command is provided for such
7085situations.
7086
7087@table @code
7088@kindex compare-sections
7089@item compare-sections @r{[}@var{section-name}@r{]}
7090Compare the data of a loadable section @var{section-name} in the
7091executable file of the program being debugged with the same section in
7092the remote machine's memory, and report any mismatches. With no
7093arguments, compares all loadable sections. This command's
7094availability depends on the target's support for the @code{"qCRC"}
7095remote request.
7096@end table
7097
6d2ebf8b 7098@node Auto Display
79a6e687 7099@section Automatic Display
c906108c
SS
7100@cindex automatic display
7101@cindex display of expressions
7102
7103If you find that you want to print the value of an expression frequently
7104(to see how it changes), you might want to add it to the @dfn{automatic
7105display list} so that @value{GDBN} prints its value each time your program stops.
7106Each expression added to the list is given a number to identify it;
7107to remove an expression from the list, you specify that number.
7108The automatic display looks like this:
7109
474c8240 7110@smallexample
c906108c
SS
71112: foo = 38
71123: bar[5] = (struct hack *) 0x3804
474c8240 7113@end smallexample
c906108c
SS
7114
7115@noindent
7116This display shows item numbers, expressions and their current values. As with
7117displays you request manually using @code{x} or @code{print}, you can
7118specify the output format you prefer; in fact, @code{display} decides
ea37ba09
DJ
7119whether to use @code{print} or @code{x} depending your format
7120specification---it uses @code{x} if you specify either the @samp{i}
7121or @samp{s} format, or a unit size; otherwise it uses @code{print}.
c906108c
SS
7122
7123@table @code
7124@kindex display
d4f3574e
SS
7125@item display @var{expr}
7126Add the expression @var{expr} to the list of expressions to display
c906108c
SS
7127each time your program stops. @xref{Expressions, ,Expressions}.
7128
7129@code{display} does not repeat if you press @key{RET} again after using it.
7130
d4f3574e 7131@item display/@var{fmt} @var{expr}
c906108c 7132For @var{fmt} specifying only a display format and not a size or
d4f3574e 7133count, add the expression @var{expr} to the auto-display list but
c906108c 7134arrange to display it each time in the specified format @var{fmt}.
79a6e687 7135@xref{Output Formats,,Output Formats}.
c906108c
SS
7136
7137@item display/@var{fmt} @var{addr}
7138For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
7139number of units, add the expression @var{addr} as a memory address to
7140be examined each time your program stops. Examining means in effect
79a6e687 7141doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}.
c906108c
SS
7142@end table
7143
7144For example, @samp{display/i $pc} can be helpful, to see the machine
7145instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 7146is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
7147
7148@table @code
7149@kindex delete display
7150@kindex undisplay
7151@item undisplay @var{dnums}@dots{}
7152@itemx delete display @var{dnums}@dots{}
7153Remove item numbers @var{dnums} from the list of expressions to display.
7154
7155@code{undisplay} does not repeat if you press @key{RET} after using it.
7156(Otherwise you would just get the error @samp{No display number @dots{}}.)
7157
7158@kindex disable display
7159@item disable display @var{dnums}@dots{}
7160Disable the display of item numbers @var{dnums}. A disabled display
7161item is not printed automatically, but is not forgotten. It may be
7162enabled again later.
7163
7164@kindex enable display
7165@item enable display @var{dnums}@dots{}
7166Enable display of item numbers @var{dnums}. It becomes effective once
7167again in auto display of its expression, until you specify otherwise.
7168
7169@item display
7170Display the current values of the expressions on the list, just as is
7171done when your program stops.
7172
7173@kindex info display
7174@item info display
7175Print the list of expressions previously set up to display
7176automatically, each one with its item number, but without showing the
7177values. This includes disabled expressions, which are marked as such.
7178It also includes expressions which would not be displayed right now
7179because they refer to automatic variables not currently available.
7180@end table
7181
15387254 7182@cindex display disabled out of scope
c906108c
SS
7183If a display expression refers to local variables, then it does not make
7184sense outside the lexical context for which it was set up. Such an
7185expression is disabled when execution enters a context where one of its
7186variables is not defined. For example, if you give the command
7187@code{display last_char} while inside a function with an argument
7188@code{last_char}, @value{GDBN} displays this argument while your program
7189continues to stop inside that function. When it stops elsewhere---where
7190there is no variable @code{last_char}---the display is disabled
7191automatically. The next time your program stops where @code{last_char}
7192is meaningful, you can enable the display expression once again.
7193
6d2ebf8b 7194@node Print Settings
79a6e687 7195@section Print Settings
c906108c
SS
7196
7197@cindex format options
7198@cindex print settings
7199@value{GDBN} provides the following ways to control how arrays, structures,
7200and symbols are printed.
7201
7202@noindent
7203These settings are useful for debugging programs in any language:
7204
7205@table @code
4644b6e3 7206@kindex set print
c906108c
SS
7207@item set print address
7208@itemx set print address on
4644b6e3 7209@cindex print/don't print memory addresses
c906108c
SS
7210@value{GDBN} prints memory addresses showing the location of stack
7211traces, structure values, pointer values, breakpoints, and so forth,
7212even when it also displays the contents of those addresses. The default
7213is @code{on}. For example, this is what a stack frame display looks like with
7214@code{set print address on}:
7215
7216@smallexample
7217@group
7218(@value{GDBP}) f
7219#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
7220 at input.c:530
7221530 if (lquote != def_lquote)
7222@end group
7223@end smallexample
7224
7225@item set print address off
7226Do not print addresses when displaying their contents. For example,
7227this is the same stack frame displayed with @code{set print address off}:
7228
7229@smallexample
7230@group
7231(@value{GDBP}) set print addr off
7232(@value{GDBP}) f
7233#0 set_quotes (lq="<<", rq=">>") at input.c:530
7234530 if (lquote != def_lquote)
7235@end group
7236@end smallexample
7237
7238You can use @samp{set print address off} to eliminate all machine
7239dependent displays from the @value{GDBN} interface. For example, with
7240@code{print address off}, you should get the same text for backtraces on
7241all machines---whether or not they involve pointer arguments.
7242
4644b6e3 7243@kindex show print
c906108c
SS
7244@item show print address
7245Show whether or not addresses are to be printed.
7246@end table
7247
7248When @value{GDBN} prints a symbolic address, it normally prints the
7249closest earlier symbol plus an offset. If that symbol does not uniquely
7250identify the address (for example, it is a name whose scope is a single
7251source file), you may need to clarify. One way to do this is with
7252@code{info line}, for example @samp{info line *0x4537}. Alternately,
7253you can set @value{GDBN} to print the source file and line number when
7254it prints a symbolic address:
7255
7256@table @code
c906108c 7257@item set print symbol-filename on
9c16f35a
EZ
7258@cindex source file and line of a symbol
7259@cindex symbol, source file and line
c906108c
SS
7260Tell @value{GDBN} to print the source file name and line number of a
7261symbol in the symbolic form of an address.
7262
7263@item set print symbol-filename off
7264Do not print source file name and line number of a symbol. This is the
7265default.
7266
c906108c
SS
7267@item show print symbol-filename
7268Show whether or not @value{GDBN} will print the source file name and
7269line number of a symbol in the symbolic form of an address.
7270@end table
7271
7272Another situation where it is helpful to show symbol filenames and line
7273numbers is when disassembling code; @value{GDBN} shows you the line
7274number and source file that corresponds to each instruction.
7275
7276Also, you may wish to see the symbolic form only if the address being
7277printed is reasonably close to the closest earlier symbol:
7278
7279@table @code
c906108c 7280@item set print max-symbolic-offset @var{max-offset}
4644b6e3 7281@cindex maximum value for offset of closest symbol
c906108c
SS
7282Tell @value{GDBN} to only display the symbolic form of an address if the
7283offset between the closest earlier symbol and the address is less than
5d161b24 7284@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
7285to always print the symbolic form of an address if any symbol precedes it.
7286
c906108c
SS
7287@item show print max-symbolic-offset
7288Ask how large the maximum offset is that @value{GDBN} prints in a
7289symbolic address.
7290@end table
7291
7292@cindex wild pointer, interpreting
7293@cindex pointer, finding referent
7294If you have a pointer and you are not sure where it points, try
7295@samp{set print symbol-filename on}. Then you can determine the name
7296and source file location of the variable where it points, using
7297@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
7298For example, here @value{GDBN} shows that a variable @code{ptt} points
7299at another variable @code{t}, defined in @file{hi2.c}:
7300
474c8240 7301@smallexample
c906108c
SS
7302(@value{GDBP}) set print symbol-filename on
7303(@value{GDBP}) p/a ptt
7304$4 = 0xe008 <t in hi2.c>
474c8240 7305@end smallexample
c906108c
SS
7306
7307@quotation
7308@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
7309does not show the symbol name and filename of the referent, even with
7310the appropriate @code{set print} options turned on.
7311@end quotation
7312
7313Other settings control how different kinds of objects are printed:
7314
7315@table @code
c906108c
SS
7316@item set print array
7317@itemx set print array on
4644b6e3 7318@cindex pretty print arrays
c906108c
SS
7319Pretty print arrays. This format is more convenient to read,
7320but uses more space. The default is off.
7321
7322@item set print array off
7323Return to compressed format for arrays.
7324
c906108c
SS
7325@item show print array
7326Show whether compressed or pretty format is selected for displaying
7327arrays.
7328
3c9c013a
JB
7329@cindex print array indexes
7330@item set print array-indexes
7331@itemx set print array-indexes on
7332Print the index of each element when displaying arrays. May be more
7333convenient to locate a given element in the array or quickly find the
7334index of a given element in that printed array. The default is off.
7335
7336@item set print array-indexes off
7337Stop printing element indexes when displaying arrays.
7338
7339@item show print array-indexes
7340Show whether the index of each element is printed when displaying
7341arrays.
7342
c906108c 7343@item set print elements @var{number-of-elements}
4644b6e3 7344@cindex number of array elements to print
9c16f35a 7345@cindex limit on number of printed array elements
c906108c
SS
7346Set a limit on how many elements of an array @value{GDBN} will print.
7347If @value{GDBN} is printing a large array, it stops printing after it has
7348printed the number of elements set by the @code{set print elements} command.
7349This limit also applies to the display of strings.
d4f3574e 7350When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
7351Setting @var{number-of-elements} to zero means that the printing is unlimited.
7352
c906108c
SS
7353@item show print elements
7354Display the number of elements of a large array that @value{GDBN} will print.
7355If the number is 0, then the printing is unlimited.
7356
b4740add 7357@item set print frame-arguments @var{value}
a0381d3a 7358@kindex set print frame-arguments
b4740add
JB
7359@cindex printing frame argument values
7360@cindex print all frame argument values
7361@cindex print frame argument values for scalars only
7362@cindex do not print frame argument values
7363This command allows to control how the values of arguments are printed
7364when the debugger prints a frame (@pxref{Frames}). The possible
7365values are:
7366
7367@table @code
7368@item all
4f5376b2 7369The values of all arguments are printed.
b4740add
JB
7370
7371@item scalars
7372Print the value of an argument only if it is a scalar. The value of more
7373complex arguments such as arrays, structures, unions, etc, is replaced
4f5376b2
JB
7374by @code{@dots{}}. This is the default. Here is an example where
7375only scalar arguments are shown:
b4740add
JB
7376
7377@smallexample
7378#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green)
7379 at frame-args.c:23
7380@end smallexample
7381
7382@item none
7383None of the argument values are printed. Instead, the value of each argument
7384is replaced by @code{@dots{}}. In this case, the example above now becomes:
7385
7386@smallexample
7387#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
7388 at frame-args.c:23
7389@end smallexample
7390@end table
7391
4f5376b2
JB
7392By default, only scalar arguments are printed. This command can be used
7393to configure the debugger to print the value of all arguments, regardless
7394of their type. However, it is often advantageous to not print the value
7395of more complex parameters. For instance, it reduces the amount of
7396information printed in each frame, making the backtrace more readable.
7397Also, it improves performance when displaying Ada frames, because
7398the computation of large arguments can sometimes be CPU-intensive,
7399especially in large applications. Setting @code{print frame-arguments}
7400to @code{scalars} (the default) or @code{none} avoids this computation,
7401thus speeding up the display of each Ada frame.
b4740add
JB
7402
7403@item show print frame-arguments
7404Show how the value of arguments should be displayed when printing a frame.
7405
9c16f35a
EZ
7406@item set print repeats
7407@cindex repeated array elements
7408Set the threshold for suppressing display of repeated array
d3e8051b 7409elements. When the number of consecutive identical elements of an
9c16f35a
EZ
7410array exceeds the threshold, @value{GDBN} prints the string
7411@code{"<repeats @var{n} times>"}, where @var{n} is the number of
7412identical repetitions, instead of displaying the identical elements
7413themselves. Setting the threshold to zero will cause all elements to
7414be individually printed. The default threshold is 10.
7415
7416@item show print repeats
7417Display the current threshold for printing repeated identical
7418elements.
7419
c906108c 7420@item set print null-stop
4644b6e3 7421@cindex @sc{null} elements in arrays
c906108c 7422Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 7423@sc{null} is encountered. This is useful when large arrays actually
c906108c 7424contain only short strings.
d4f3574e 7425The default is off.
c906108c 7426
9c16f35a
EZ
7427@item show print null-stop
7428Show whether @value{GDBN} stops printing an array on the first
7429@sc{null} character.
7430
c906108c 7431@item set print pretty on
9c16f35a
EZ
7432@cindex print structures in indented form
7433@cindex indentation in structure display
5d161b24 7434Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
7435per line, like this:
7436
7437@smallexample
7438@group
7439$1 = @{
7440 next = 0x0,
7441 flags = @{
7442 sweet = 1,
7443 sour = 1
7444 @},
7445 meat = 0x54 "Pork"
7446@}
7447@end group
7448@end smallexample
7449
7450@item set print pretty off
7451Cause @value{GDBN} to print structures in a compact format, like this:
7452
7453@smallexample
7454@group
7455$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
7456meat = 0x54 "Pork"@}
7457@end group
7458@end smallexample
7459
7460@noindent
7461This is the default format.
7462
c906108c
SS
7463@item show print pretty
7464Show which format @value{GDBN} is using to print structures.
7465
c906108c 7466@item set print sevenbit-strings on
4644b6e3
EZ
7467@cindex eight-bit characters in strings
7468@cindex octal escapes in strings
c906108c
SS
7469Print using only seven-bit characters; if this option is set,
7470@value{GDBN} displays any eight-bit characters (in strings or
7471character values) using the notation @code{\}@var{nnn}. This setting is
7472best if you are working in English (@sc{ascii}) and you use the
7473high-order bit of characters as a marker or ``meta'' bit.
7474
7475@item set print sevenbit-strings off
7476Print full eight-bit characters. This allows the use of more
7477international character sets, and is the default.
7478
c906108c
SS
7479@item show print sevenbit-strings
7480Show whether or not @value{GDBN} is printing only seven-bit characters.
7481
c906108c 7482@item set print union on
4644b6e3 7483@cindex unions in structures, printing
9c16f35a
EZ
7484Tell @value{GDBN} to print unions which are contained in structures
7485and other unions. This is the default setting.
c906108c
SS
7486
7487@item set print union off
9c16f35a
EZ
7488Tell @value{GDBN} not to print unions which are contained in
7489structures and other unions. @value{GDBN} will print @code{"@{...@}"}
7490instead.
c906108c 7491
c906108c
SS
7492@item show print union
7493Ask @value{GDBN} whether or not it will print unions which are contained in
9c16f35a 7494structures and other unions.
c906108c
SS
7495
7496For example, given the declarations
7497
7498@smallexample
7499typedef enum @{Tree, Bug@} Species;
7500typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 7501typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
7502 Bug_forms;
7503
7504struct thing @{
7505 Species it;
7506 union @{
7507 Tree_forms tree;
7508 Bug_forms bug;
7509 @} form;
7510@};
7511
7512struct thing foo = @{Tree, @{Acorn@}@};
7513@end smallexample
7514
7515@noindent
7516with @code{set print union on} in effect @samp{p foo} would print
7517
7518@smallexample
7519$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
7520@end smallexample
7521
7522@noindent
7523and with @code{set print union off} in effect it would print
7524
7525@smallexample
7526$1 = @{it = Tree, form = @{...@}@}
7527@end smallexample
9c16f35a
EZ
7528
7529@noindent
7530@code{set print union} affects programs written in C-like languages
7531and in Pascal.
c906108c
SS
7532@end table
7533
c906108c
SS
7534@need 1000
7535@noindent
b37052ae 7536These settings are of interest when debugging C@t{++} programs:
c906108c
SS
7537
7538@table @code
4644b6e3 7539@cindex demangling C@t{++} names
c906108c
SS
7540@item set print demangle
7541@itemx set print demangle on
b37052ae 7542Print C@t{++} names in their source form rather than in the encoded
c906108c 7543(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 7544linkage. The default is on.
c906108c 7545
c906108c 7546@item show print demangle
b37052ae 7547Show whether C@t{++} names are printed in mangled or demangled form.
c906108c 7548
c906108c
SS
7549@item set print asm-demangle
7550@itemx set print asm-demangle on
b37052ae 7551Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
7552in assembler code printouts such as instruction disassemblies.
7553The default is off.
7554
c906108c 7555@item show print asm-demangle
b37052ae 7556Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
7557or demangled form.
7558
b37052ae
EZ
7559@cindex C@t{++} symbol decoding style
7560@cindex symbol decoding style, C@t{++}
a8f24a35 7561@kindex set demangle-style
c906108c
SS
7562@item set demangle-style @var{style}
7563Choose among several encoding schemes used by different compilers to
b37052ae 7564represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
7565
7566@table @code
7567@item auto
7568Allow @value{GDBN} to choose a decoding style by inspecting your program.
7569
7570@item gnu
b37052ae 7571Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c 7572This is the default.
c906108c
SS
7573
7574@item hp
b37052ae 7575Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
7576
7577@item lucid
b37052ae 7578Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
7579
7580@item arm
b37052ae 7581Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
7582@strong{Warning:} this setting alone is not sufficient to allow
7583debugging @code{cfront}-generated executables. @value{GDBN} would
7584require further enhancement to permit that.
7585
7586@end table
7587If you omit @var{style}, you will see a list of possible formats.
7588
c906108c 7589@item show demangle-style
b37052ae 7590Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c 7591
c906108c
SS
7592@item set print object
7593@itemx set print object on
4644b6e3 7594@cindex derived type of an object, printing
9c16f35a 7595@cindex display derived types
c906108c
SS
7596When displaying a pointer to an object, identify the @emph{actual}
7597(derived) type of the object rather than the @emph{declared} type, using
7598the virtual function table.
7599
7600@item set print object off
7601Display only the declared type of objects, without reference to the
7602virtual function table. This is the default setting.
7603
c906108c
SS
7604@item show print object
7605Show whether actual, or declared, object types are displayed.
7606
c906108c
SS
7607@item set print static-members
7608@itemx set print static-members on
4644b6e3 7609@cindex static members of C@t{++} objects
b37052ae 7610Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
7611
7612@item set print static-members off
b37052ae 7613Do not print static members when displaying a C@t{++} object.
c906108c 7614
c906108c 7615@item show print static-members
9c16f35a
EZ
7616Show whether C@t{++} static members are printed or not.
7617
7618@item set print pascal_static-members
7619@itemx set print pascal_static-members on
d3e8051b
EZ
7620@cindex static members of Pascal objects
7621@cindex Pascal objects, static members display
9c16f35a
EZ
7622Print static members when displaying a Pascal object. The default is on.
7623
7624@item set print pascal_static-members off
7625Do not print static members when displaying a Pascal object.
7626
7627@item show print pascal_static-members
7628Show whether Pascal static members are printed or not.
c906108c
SS
7629
7630@c These don't work with HP ANSI C++ yet.
c906108c
SS
7631@item set print vtbl
7632@itemx set print vtbl on
4644b6e3 7633@cindex pretty print C@t{++} virtual function tables
9c16f35a
EZ
7634@cindex virtual functions (C@t{++}) display
7635@cindex VTBL display
b37052ae 7636Pretty print C@t{++} virtual function tables. The default is off.
c906108c 7637(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 7638ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
7639
7640@item set print vtbl off
b37052ae 7641Do not pretty print C@t{++} virtual function tables.
c906108c 7642
c906108c 7643@item show print vtbl
b37052ae 7644Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 7645@end table
c906108c 7646
6d2ebf8b 7647@node Value History
79a6e687 7648@section Value History
c906108c
SS
7649
7650@cindex value history
9c16f35a 7651@cindex history of values printed by @value{GDBN}
5d161b24
DB
7652Values printed by the @code{print} command are saved in the @value{GDBN}
7653@dfn{value history}. This allows you to refer to them in other expressions.
7654Values are kept until the symbol table is re-read or discarded
7655(for example with the @code{file} or @code{symbol-file} commands).
7656When the symbol table changes, the value history is discarded,
7657since the values may contain pointers back to the types defined in the
c906108c
SS
7658symbol table.
7659
7660@cindex @code{$}
7661@cindex @code{$$}
7662@cindex history number
7663The values printed are given @dfn{history numbers} by which you can
7664refer to them. These are successive integers starting with one.
7665@code{print} shows you the history number assigned to a value by
7666printing @samp{$@var{num} = } before the value; here @var{num} is the
7667history number.
7668
7669To refer to any previous value, use @samp{$} followed by the value's
7670history number. The way @code{print} labels its output is designed to
7671remind you of this. Just @code{$} refers to the most recent value in
7672the history, and @code{$$} refers to the value before that.
7673@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
7674is the value just prior to @code{$$}, @code{$$1} is equivalent to
7675@code{$$}, and @code{$$0} is equivalent to @code{$}.
7676
7677For example, suppose you have just printed a pointer to a structure and
7678want to see the contents of the structure. It suffices to type
7679
474c8240 7680@smallexample
c906108c 7681p *$
474c8240 7682@end smallexample
c906108c
SS
7683
7684If you have a chain of structures where the component @code{next} points
7685to the next one, you can print the contents of the next one with this:
7686
474c8240 7687@smallexample
c906108c 7688p *$.next
474c8240 7689@end smallexample
c906108c
SS
7690
7691@noindent
7692You can print successive links in the chain by repeating this
7693command---which you can do by just typing @key{RET}.
7694
7695Note that the history records values, not expressions. If the value of
7696@code{x} is 4 and you type these commands:
7697
474c8240 7698@smallexample
c906108c
SS
7699print x
7700set x=5
474c8240 7701@end smallexample
c906108c
SS
7702
7703@noindent
7704then the value recorded in the value history by the @code{print} command
7705remains 4 even though the value of @code{x} has changed.
7706
7707@table @code
7708@kindex show values
7709@item show values
7710Print the last ten values in the value history, with their item numbers.
7711This is like @samp{p@ $$9} repeated ten times, except that @code{show
7712values} does not change the history.
7713
7714@item show values @var{n}
7715Print ten history values centered on history item number @var{n}.
7716
7717@item show values +
7718Print ten history values just after the values last printed. If no more
7719values are available, @code{show values +} produces no display.
7720@end table
7721
7722Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
7723same effect as @samp{show values +}.
7724
6d2ebf8b 7725@node Convenience Vars
79a6e687 7726@section Convenience Variables
c906108c
SS
7727
7728@cindex convenience variables
9c16f35a 7729@cindex user-defined variables
c906108c
SS
7730@value{GDBN} provides @dfn{convenience variables} that you can use within
7731@value{GDBN} to hold on to a value and refer to it later. These variables
7732exist entirely within @value{GDBN}; they are not part of your program, and
7733setting a convenience variable has no direct effect on further execution
7734of your program. That is why you can use them freely.
7735
7736Convenience variables are prefixed with @samp{$}. Any name preceded by
7737@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 7738the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c 7739(Value history references, in contrast, are @emph{numbers} preceded
79a6e687 7740by @samp{$}. @xref{Value History, ,Value History}.)
c906108c
SS
7741
7742You can save a value in a convenience variable with an assignment
7743expression, just as you would set a variable in your program.
7744For example:
7745
474c8240 7746@smallexample
c906108c 7747set $foo = *object_ptr
474c8240 7748@end smallexample
c906108c
SS
7749
7750@noindent
7751would save in @code{$foo} the value contained in the object pointed to by
7752@code{object_ptr}.
7753
7754Using a convenience variable for the first time creates it, but its
7755value is @code{void} until you assign a new value. You can alter the
7756value with another assignment at any time.
7757
7758Convenience variables have no fixed types. You can assign a convenience
7759variable any type of value, including structures and arrays, even if
7760that variable already has a value of a different type. The convenience
7761variable, when used as an expression, has the type of its current value.
7762
7763@table @code
7764@kindex show convenience
9c16f35a 7765@cindex show all user variables
c906108c
SS
7766@item show convenience
7767Print a list of convenience variables used so far, and their values.
d4f3574e 7768Abbreviated @code{show conv}.
53e5f3cf
AS
7769
7770@kindex init-if-undefined
7771@cindex convenience variables, initializing
7772@item init-if-undefined $@var{variable} = @var{expression}
7773Set a convenience variable if it has not already been set. This is useful
7774for user-defined commands that keep some state. It is similar, in concept,
7775to using local static variables with initializers in C (except that
7776convenience variables are global). It can also be used to allow users to
7777override default values used in a command script.
7778
7779If the variable is already defined then the expression is not evaluated so
7780any side-effects do not occur.
c906108c
SS
7781@end table
7782
7783One of the ways to use a convenience variable is as a counter to be
7784incremented or a pointer to be advanced. For example, to print
7785a field from successive elements of an array of structures:
7786
474c8240 7787@smallexample
c906108c
SS
7788set $i = 0
7789print bar[$i++]->contents
474c8240 7790@end smallexample
c906108c 7791
d4f3574e
SS
7792@noindent
7793Repeat that command by typing @key{RET}.
c906108c
SS
7794
7795Some convenience variables are created automatically by @value{GDBN} and given
7796values likely to be useful.
7797
7798@table @code
41afff9a 7799@vindex $_@r{, convenience variable}
c906108c
SS
7800@item $_
7801The variable @code{$_} is automatically set by the @code{x} command to
79a6e687 7802the last address examined (@pxref{Memory, ,Examining Memory}). Other
c906108c
SS
7803commands which provide a default address for @code{x} to examine also
7804set @code{$_} to that address; these commands include @code{info line}
7805and @code{info breakpoint}. The type of @code{$_} is @code{void *}
7806except when set by the @code{x} command, in which case it is a pointer
7807to the type of @code{$__}.
7808
41afff9a 7809@vindex $__@r{, convenience variable}
c906108c
SS
7810@item $__
7811The variable @code{$__} is automatically set by the @code{x} command
7812to the value found in the last address examined. Its type is chosen
7813to match the format in which the data was printed.
7814
7815@item $_exitcode
41afff9a 7816@vindex $_exitcode@r{, convenience variable}
c906108c
SS
7817The variable @code{$_exitcode} is automatically set to the exit code when
7818the program being debugged terminates.
4aa995e1
PA
7819
7820@item $_siginfo
7821@vindex $_siginfo@r{, convenience variable}
7822The variable @code{$_siginfo} is bound to extra signal information
7823inspection (@pxref{extra signal information}).
c906108c
SS
7824@end table
7825
53a5351d
JM
7826On HP-UX systems, if you refer to a function or variable name that
7827begins with a dollar sign, @value{GDBN} searches for a user or system
7828name first, before it searches for a convenience variable.
c906108c 7829
bc3b79fd
TJB
7830@cindex convenience functions
7831@value{GDBN} also supplies some @dfn{convenience functions}. These
7832have a syntax similar to convenience variables. A convenience
7833function can be used in an expression just like an ordinary function;
7834however, a convenience function is implemented internally to
7835@value{GDBN}.
7836
7837@table @code
7838@item help function
7839@kindex help function
7840@cindex show all convenience functions
7841Print a list of all convenience functions.
7842@end table
7843
6d2ebf8b 7844@node Registers
c906108c
SS
7845@section Registers
7846
7847@cindex registers
7848You can refer to machine register contents, in expressions, as variables
7849with names starting with @samp{$}. The names of registers are different
7850for each machine; use @code{info registers} to see the names used on
7851your machine.
7852
7853@table @code
7854@kindex info registers
7855@item info registers
7856Print the names and values of all registers except floating-point
c85508ee 7857and vector registers (in the selected stack frame).
c906108c
SS
7858
7859@kindex info all-registers
7860@cindex floating point registers
7861@item info all-registers
7862Print the names and values of all registers, including floating-point
c85508ee 7863and vector registers (in the selected stack frame).
c906108c
SS
7864
7865@item info registers @var{regname} @dots{}
7866Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
7867As discussed in detail below, register values are normally relative to
7868the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
7869the machine you are using, with or without the initial @samp{$}.
7870@end table
7871
e09f16f9
EZ
7872@cindex stack pointer register
7873@cindex program counter register
7874@cindex process status register
7875@cindex frame pointer register
7876@cindex standard registers
c906108c
SS
7877@value{GDBN} has four ``standard'' register names that are available (in
7878expressions) on most machines---whenever they do not conflict with an
7879architecture's canonical mnemonics for registers. The register names
7880@code{$pc} and @code{$sp} are used for the program counter register and
7881the stack pointer. @code{$fp} is used for a register that contains a
7882pointer to the current stack frame, and @code{$ps} is used for a
7883register that contains the processor status. For example,
7884you could print the program counter in hex with
7885
474c8240 7886@smallexample
c906108c 7887p/x $pc
474c8240 7888@end smallexample
c906108c
SS
7889
7890@noindent
7891or print the instruction to be executed next with
7892
474c8240 7893@smallexample
c906108c 7894x/i $pc
474c8240 7895@end smallexample
c906108c
SS
7896
7897@noindent
7898or add four to the stack pointer@footnote{This is a way of removing
7899one word from the stack, on machines where stacks grow downward in
7900memory (most machines, nowadays). This assumes that the innermost
7901stack frame is selected; setting @code{$sp} is not allowed when other
7902stack frames are selected. To pop entire frames off the stack,
7903regardless of machine architecture, use @code{return};
79a6e687 7904see @ref{Returning, ,Returning from a Function}.} with
c906108c 7905
474c8240 7906@smallexample
c906108c 7907set $sp += 4
474c8240 7908@end smallexample
c906108c
SS
7909
7910Whenever possible, these four standard register names are available on
7911your machine even though the machine has different canonical mnemonics,
7912so long as there is no conflict. The @code{info registers} command
7913shows the canonical names. For example, on the SPARC, @code{info
7914registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
7915can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
7916is an alias for the @sc{eflags} register.
c906108c
SS
7917
7918@value{GDBN} always considers the contents of an ordinary register as an
7919integer when the register is examined in this way. Some machines have
7920special registers which can hold nothing but floating point; these
7921registers are considered to have floating point values. There is no way
7922to refer to the contents of an ordinary register as floating point value
7923(although you can @emph{print} it as a floating point value with
7924@samp{print/f $@var{regname}}).
7925
7926Some registers have distinct ``raw'' and ``virtual'' data formats. This
7927means that the data format in which the register contents are saved by
7928the operating system is not the same one that your program normally
7929sees. For example, the registers of the 68881 floating point
7930coprocessor are always saved in ``extended'' (raw) format, but all C
7931programs expect to work with ``double'' (virtual) format. In such
5d161b24 7932cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
7933that makes sense for your program), but the @code{info registers} command
7934prints the data in both formats.
7935
36b80e65
EZ
7936@cindex SSE registers (x86)
7937@cindex MMX registers (x86)
7938Some machines have special registers whose contents can be interpreted
7939in several different ways. For example, modern x86-based machines
7940have SSE and MMX registers that can hold several values packed
7941together in several different formats. @value{GDBN} refers to such
7942registers in @code{struct} notation:
7943
7944@smallexample
7945(@value{GDBP}) print $xmm1
7946$1 = @{
7947 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@},
7948 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@},
7949 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
7950 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@},
7951 v4_int32 = @{0, 20657912, 11, 13@},
7952 v2_int64 = @{88725056443645952, 55834574859@},
7953 uint128 = 0x0000000d0000000b013b36f800000000
7954@}
7955@end smallexample
7956
7957@noindent
7958To set values of such registers, you need to tell @value{GDBN} which
7959view of the register you wish to change, as if you were assigning
7960value to a @code{struct} member:
7961
7962@smallexample
7963 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
7964@end smallexample
7965
c906108c 7966Normally, register values are relative to the selected stack frame
79a6e687 7967(@pxref{Selection, ,Selecting a Frame}). This means that you get the
c906108c
SS
7968value that the register would contain if all stack frames farther in
7969were exited and their saved registers restored. In order to see the
7970true contents of hardware registers, you must select the innermost
7971frame (with @samp{frame 0}).
7972
7973However, @value{GDBN} must deduce where registers are saved, from the machine
7974code generated by your compiler. If some registers are not saved, or if
7975@value{GDBN} is unable to locate the saved registers, the selected stack
7976frame makes no difference.
7977
6d2ebf8b 7978@node Floating Point Hardware
79a6e687 7979@section Floating Point Hardware
c906108c
SS
7980@cindex floating point
7981
7982Depending on the configuration, @value{GDBN} may be able to give
7983you more information about the status of the floating point hardware.
7984
7985@table @code
7986@kindex info float
7987@item info float
7988Display hardware-dependent information about the floating
7989point unit. The exact contents and layout vary depending on the
7990floating point chip. Currently, @samp{info float} is supported on
7991the ARM and x86 machines.
7992@end table
c906108c 7993
e76f1f2e
AC
7994@node Vector Unit
7995@section Vector Unit
7996@cindex vector unit
7997
7998Depending on the configuration, @value{GDBN} may be able to give you
7999more information about the status of the vector unit.
8000
8001@table @code
8002@kindex info vector
8003@item info vector
8004Display information about the vector unit. The exact contents and
8005layout vary depending on the hardware.
8006@end table
8007
721c2651 8008@node OS Information
79a6e687 8009@section Operating System Auxiliary Information
721c2651
EZ
8010@cindex OS information
8011
8012@value{GDBN} provides interfaces to useful OS facilities that can help
8013you debug your program.
8014
8015@cindex @code{ptrace} system call
8016@cindex @code{struct user} contents
8017When @value{GDBN} runs on a @dfn{Posix system} (such as GNU or Unix
8018machines), it interfaces with the inferior via the @code{ptrace}
8019system call. The operating system creates a special sata structure,
8020called @code{struct user}, for this interface. You can use the
8021command @code{info udot} to display the contents of this data
8022structure.
8023
8024@table @code
8025@item info udot
8026@kindex info udot
8027Display the contents of the @code{struct user} maintained by the OS
8028kernel for the program being debugged. @value{GDBN} displays the
8029contents of @code{struct user} as a list of hex numbers, similar to
8030the @code{examine} command.
8031@end table
8032
b383017d
RM
8033@cindex auxiliary vector
8034@cindex vector, auxiliary
b383017d
RM
8035Some operating systems supply an @dfn{auxiliary vector} to programs at
8036startup. This is akin to the arguments and environment that you
8037specify for a program, but contains a system-dependent variety of
8038binary values that tell system libraries important details about the
8039hardware, operating system, and process. Each value's purpose is
8040identified by an integer tag; the meanings are well-known but system-specific.
8041Depending on the configuration and operating system facilities,
9c16f35a
EZ
8042@value{GDBN} may be able to show you this information. For remote
8043targets, this functionality may further depend on the remote stub's
427c3a89
DJ
8044support of the @samp{qXfer:auxv:read} packet, see
8045@ref{qXfer auxiliary vector read}.
b383017d
RM
8046
8047@table @code
8048@kindex info auxv
8049@item info auxv
8050Display the auxiliary vector of the inferior, which can be either a
e4937fc1 8051live process or a core dump file. @value{GDBN} prints each tag value
b383017d
RM
8052numerically, and also shows names and text descriptions for recognized
8053tags. Some values in the vector are numbers, some bit masks, and some
e4937fc1 8054pointers to strings or other data. @value{GDBN} displays each value in the
b383017d
RM
8055most appropriate form for a recognized tag, and in hexadecimal for
8056an unrecognized tag.
8057@end table
8058
07e059b5
VP
8059On some targets, @value{GDBN} can access operating-system-specific information
8060and display it to user, without interpretation. For remote targets,
8061this functionality depends on the remote stub's support of the
8062@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}.
8063
8064@table @code
8065@kindex info os processes
8066@item info os processes
8067Display the list of processes on the target. For each process,
8068@value{GDBN} prints the process identifier, the name of the user, and
8069the command corresponding to the process.
8070@end table
721c2651 8071
29e57380 8072@node Memory Region Attributes
79a6e687 8073@section Memory Region Attributes
29e57380
C
8074@cindex memory region attributes
8075
b383017d 8076@dfn{Memory region attributes} allow you to describe special handling
fd79ecee
DJ
8077required by regions of your target's memory. @value{GDBN} uses
8078attributes to determine whether to allow certain types of memory
8079accesses; whether to use specific width accesses; and whether to cache
8080target memory. By default the description of memory regions is
8081fetched from the target (if the current target supports this), but the
8082user can override the fetched regions.
29e57380
C
8083
8084Defined memory regions can be individually enabled and disabled. When a
8085memory region is disabled, @value{GDBN} uses the default attributes when
8086accessing memory in that region. Similarly, if no memory regions have
8087been defined, @value{GDBN} uses the default attributes when accessing
8088all memory.
8089
b383017d 8090When a memory region is defined, it is given a number to identify it;
29e57380
C
8091to enable, disable, or remove a memory region, you specify that number.
8092
8093@table @code
8094@kindex mem
bfac230e 8095@item mem @var{lower} @var{upper} @var{attributes}@dots{}
09d4efe1
EZ
8096Define a memory region bounded by @var{lower} and @var{upper} with
8097attributes @var{attributes}@dots{}, and add it to the list of regions
8098monitored by @value{GDBN}. Note that @var{upper} == 0 is a special
d3e8051b 8099case: it is treated as the target's maximum memory address.
bfac230e 8100(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
29e57380 8101
fd79ecee
DJ
8102@item mem auto
8103Discard any user changes to the memory regions and use target-supplied
8104regions, if available, or no regions if the target does not support.
8105
29e57380
C
8106@kindex delete mem
8107@item delete mem @var{nums}@dots{}
09d4efe1
EZ
8108Remove memory regions @var{nums}@dots{} from the list of regions
8109monitored by @value{GDBN}.
29e57380
C
8110
8111@kindex disable mem
8112@item disable mem @var{nums}@dots{}
09d4efe1 8113Disable monitoring of memory regions @var{nums}@dots{}.
b383017d 8114A disabled memory region is not forgotten.
29e57380
C
8115It may be enabled again later.
8116
8117@kindex enable mem
8118@item enable mem @var{nums}@dots{}
09d4efe1 8119Enable monitoring of memory regions @var{nums}@dots{}.
29e57380
C
8120
8121@kindex info mem
8122@item info mem
8123Print a table of all defined memory regions, with the following columns
09d4efe1 8124for each region:
29e57380
C
8125
8126@table @emph
8127@item Memory Region Number
8128@item Enabled or Disabled.
b383017d 8129Enabled memory regions are marked with @samp{y}.
29e57380
C
8130Disabled memory regions are marked with @samp{n}.
8131
8132@item Lo Address
8133The address defining the inclusive lower bound of the memory region.
8134
8135@item Hi Address
8136The address defining the exclusive upper bound of the memory region.
8137
8138@item Attributes
8139The list of attributes set for this memory region.
8140@end table
8141@end table
8142
8143
8144@subsection Attributes
8145
b383017d 8146@subsubsection Memory Access Mode
29e57380
C
8147The access mode attributes set whether @value{GDBN} may make read or
8148write accesses to a memory region.
8149
8150While these attributes prevent @value{GDBN} from performing invalid
8151memory accesses, they do nothing to prevent the target system, I/O DMA,
359df76b 8152etc.@: from accessing memory.
29e57380
C
8153
8154@table @code
8155@item ro
8156Memory is read only.
8157@item wo
8158Memory is write only.
8159@item rw
6ca652b0 8160Memory is read/write. This is the default.
29e57380
C
8161@end table
8162
8163@subsubsection Memory Access Size
d3e8051b 8164The access size attribute tells @value{GDBN} to use specific sized
29e57380
C
8165accesses in the memory region. Often memory mapped device registers
8166require specific sized accesses. If no access size attribute is
8167specified, @value{GDBN} may use accesses of any size.
8168
8169@table @code
8170@item 8
8171Use 8 bit memory accesses.
8172@item 16
8173Use 16 bit memory accesses.
8174@item 32
8175Use 32 bit memory accesses.
8176@item 64
8177Use 64 bit memory accesses.
8178@end table
8179
8180@c @subsubsection Hardware/Software Breakpoints
8181@c The hardware/software breakpoint attributes set whether @value{GDBN}
8182@c will use hardware or software breakpoints for the internal breakpoints
8183@c used by the step, next, finish, until, etc. commands.
8184@c
8185@c @table @code
8186@c @item hwbreak
b383017d 8187@c Always use hardware breakpoints
29e57380
C
8188@c @item swbreak (default)
8189@c @end table
8190
8191@subsubsection Data Cache
8192The data cache attributes set whether @value{GDBN} will cache target
8193memory. While this generally improves performance by reducing debug
8194protocol overhead, it can lead to incorrect results because @value{GDBN}
8195does not know about volatile variables or memory mapped device
8196registers.
8197
8198@table @code
8199@item cache
b383017d 8200Enable @value{GDBN} to cache target memory.
6ca652b0
EZ
8201@item nocache
8202Disable @value{GDBN} from caching target memory. This is the default.
29e57380
C
8203@end table
8204
4b5752d0
VP
8205@subsection Memory Access Checking
8206@value{GDBN} can be instructed to refuse accesses to memory that is
8207not explicitly described. This can be useful if accessing such
8208regions has undesired effects for a specific target, or to provide
8209better error checking. The following commands control this behaviour.
8210
8211@table @code
8212@kindex set mem inaccessible-by-default
8213@item set mem inaccessible-by-default [on|off]
8214If @code{on} is specified, make @value{GDBN} treat memory not
8215explicitly described by the memory ranges as non-existent and refuse accesses
8216to such memory. The checks are only performed if there's at least one
8217memory range defined. If @code{off} is specified, make @value{GDBN}
8218treat the memory not explicitly described by the memory ranges as RAM.
56cf5405 8219The default value is @code{on}.
4b5752d0
VP
8220@kindex show mem inaccessible-by-default
8221@item show mem inaccessible-by-default
8222Show the current handling of accesses to unknown memory.
8223@end table
8224
8225
29e57380 8226@c @subsubsection Memory Write Verification
b383017d 8227@c The memory write verification attributes set whether @value{GDBN}
29e57380
C
8228@c will re-reads data after each write to verify the write was successful.
8229@c
8230@c @table @code
8231@c @item verify
8232@c @item noverify (default)
8233@c @end table
8234
16d9dec6 8235@node Dump/Restore Files
79a6e687 8236@section Copy Between Memory and a File
16d9dec6
MS
8237@cindex dump/restore files
8238@cindex append data to a file
8239@cindex dump data to a file
8240@cindex restore data from a file
16d9dec6 8241
df5215a6
JB
8242You can use the commands @code{dump}, @code{append}, and
8243@code{restore} to copy data between target memory and a file. The
8244@code{dump} and @code{append} commands write data to a file, and the
8245@code{restore} command reads data from a file back into the inferior's
8246memory. Files may be in binary, Motorola S-record, Intel hex, or
8247Tektronix Hex format; however, @value{GDBN} can only append to binary
8248files.
8249
8250@table @code
8251
8252@kindex dump
8253@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
8254@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
8255Dump the contents of memory from @var{start_addr} to @var{end_addr},
8256or the value of @var{expr}, to @var{filename} in the given format.
16d9dec6 8257
df5215a6 8258The @var{format} parameter may be any one of:
16d9dec6 8259@table @code
df5215a6
JB
8260@item binary
8261Raw binary form.
8262@item ihex
8263Intel hex format.
8264@item srec
8265Motorola S-record format.
8266@item tekhex
8267Tektronix Hex format.
8268@end table
8269
8270@value{GDBN} uses the same definitions of these formats as the
8271@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
8272@var{format} is omitted, @value{GDBN} dumps the data in raw binary
8273form.
8274
8275@kindex append
8276@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
8277@itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
8278Append the contents of memory from @var{start_addr} to @var{end_addr},
09d4efe1 8279or the value of @var{expr}, to the file @var{filename}, in raw binary form.
df5215a6
JB
8280(@value{GDBN} can only append data to files in raw binary form.)
8281
8282@kindex restore
8283@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
8284Restore the contents of file @var{filename} into memory. The
8285@code{restore} command can automatically recognize any known @sc{bfd}
8286file format, except for raw binary. To restore a raw binary file you
8287must specify the optional keyword @code{binary} after the filename.
16d9dec6 8288
b383017d 8289If @var{bias} is non-zero, its value will be added to the addresses
16d9dec6
MS
8290contained in the file. Binary files always start at address zero, so
8291they will be restored at address @var{bias}. Other bfd files have
8292a built-in location; they will be restored at offset @var{bias}
8293from that location.
8294
8295If @var{start} and/or @var{end} are non-zero, then only data between
8296file offset @var{start} and file offset @var{end} will be restored.
b383017d 8297These offsets are relative to the addresses in the file, before
16d9dec6
MS
8298the @var{bias} argument is applied.
8299
8300@end table
8301
384ee23f
EZ
8302@node Core File Generation
8303@section How to Produce a Core File from Your Program
8304@cindex dump core from inferior
8305
8306A @dfn{core file} or @dfn{core dump} is a file that records the memory
8307image of a running process and its process status (register values
8308etc.). Its primary use is post-mortem debugging of a program that
8309crashed while it ran outside a debugger. A program that crashes
8310automatically produces a core file, unless this feature is disabled by
8311the user. @xref{Files}, for information on invoking @value{GDBN} in
8312the post-mortem debugging mode.
8313
8314Occasionally, you may wish to produce a core file of the program you
8315are debugging in order to preserve a snapshot of its state.
8316@value{GDBN} has a special command for that.
8317
8318@table @code
8319@kindex gcore
8320@kindex generate-core-file
8321@item generate-core-file [@var{file}]
8322@itemx gcore [@var{file}]
8323Produce a core dump of the inferior process. The optional argument
8324@var{file} specifies the file name where to put the core dump. If not
8325specified, the file name defaults to @file{core.@var{pid}}, where
8326@var{pid} is the inferior process ID.
8327
8328Note that this command is implemented only for some systems (as of
8329this writing, @sc{gnu}/Linux, FreeBSD, Solaris, Unixware, and S390).
8330@end table
8331
a0eb71c5
KB
8332@node Character Sets
8333@section Character Sets
8334@cindex character sets
8335@cindex charset
8336@cindex translating between character sets
8337@cindex host character set
8338@cindex target character set
8339
8340If the program you are debugging uses a different character set to
8341represent characters and strings than the one @value{GDBN} uses itself,
8342@value{GDBN} can automatically translate between the character sets for
8343you. The character set @value{GDBN} uses we call the @dfn{host
8344character set}; the one the inferior program uses we call the
8345@dfn{target character set}.
8346
8347For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
8348uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
ea35711c 8349remote protocol (@pxref{Remote Debugging}) to debug a program
a0eb71c5
KB
8350running on an IBM mainframe, which uses the @sc{ebcdic} character set,
8351then the host character set is Latin-1, and the target character set is
8352@sc{ebcdic}. If you give @value{GDBN} the command @code{set
e33d66ec 8353target-charset EBCDIC-US}, then @value{GDBN} translates between
a0eb71c5
KB
8354@sc{ebcdic} and Latin 1 as you print character or string values, or use
8355character and string literals in expressions.
8356
8357@value{GDBN} has no way to automatically recognize which character set
8358the inferior program uses; you must tell it, using the @code{set
8359target-charset} command, described below.
8360
8361Here are the commands for controlling @value{GDBN}'s character set
8362support:
8363
8364@table @code
8365@item set target-charset @var{charset}
8366@kindex set target-charset
10af6951
EZ
8367Set the current target character set to @var{charset}. To display the
8368list of supported target character sets, type
8369@kbd{@w{set target-charset @key{TAB}@key{TAB}}}.
a0eb71c5 8370
a0eb71c5
KB
8371@item set host-charset @var{charset}
8372@kindex set host-charset
8373Set the current host character set to @var{charset}.
8374
8375By default, @value{GDBN} uses a host character set appropriate to the
8376system it is running on; you can override that default using the
732f6a93
TT
8377@code{set host-charset} command. On some systems, @value{GDBN} cannot
8378automatically determine the appropriate host character set. In this
8379case, @value{GDBN} uses @samp{UTF-8}.
a0eb71c5
KB
8380
8381@value{GDBN} can only use certain character sets as its host character
10af6951
EZ
8382set. If you type @kbd{@w{set target-charset @key{TAB}@key{TAB}}},
8383@value{GDBN} will list the host character sets it supports.
a0eb71c5
KB
8384
8385@item set charset @var{charset}
8386@kindex set charset
e33d66ec 8387Set the current host and target character sets to @var{charset}. As
10af6951
EZ
8388above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}},
8389@value{GDBN} will list the names of the character sets that can be used
e33d66ec
EZ
8390for both host and target.
8391
a0eb71c5 8392@item show charset
a0eb71c5 8393@kindex show charset
10af6951 8394Show the names of the current host and target character sets.
e33d66ec 8395
10af6951 8396@item show host-charset
a0eb71c5 8397@kindex show host-charset
10af6951 8398Show the name of the current host character set.
e33d66ec 8399
10af6951 8400@item show target-charset
a0eb71c5 8401@kindex show target-charset
10af6951 8402Show the name of the current target character set.
a0eb71c5 8403
10af6951
EZ
8404@item set target-wide-charset @var{charset}
8405@kindex set target-wide-charset
8406Set the current target's wide character set to @var{charset}. This is
8407the character set used by the target's @code{wchar_t} type. To
8408display the list of supported wide character sets, type
8409@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}.
8410
8411@item show target-wide-charset
8412@kindex show target-wide-charset
8413Show the name of the current target's wide character set.
a0eb71c5
KB
8414@end table
8415
a0eb71c5
KB
8416Here is an example of @value{GDBN}'s character set support in action.
8417Assume that the following source code has been placed in the file
8418@file{charset-test.c}:
8419
8420@smallexample
8421#include <stdio.h>
8422
8423char ascii_hello[]
8424 = @{72, 101, 108, 108, 111, 44, 32, 119,
8425 111, 114, 108, 100, 33, 10, 0@};
8426char ibm1047_hello[]
8427 = @{200, 133, 147, 147, 150, 107, 64, 166,
8428 150, 153, 147, 132, 90, 37, 0@};
8429
8430main ()
8431@{
8432 printf ("Hello, world!\n");
8433@}
10998722 8434@end smallexample
a0eb71c5
KB
8435
8436In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
8437containing the string @samp{Hello, world!} followed by a newline,
8438encoded in the @sc{ascii} and @sc{ibm1047} character sets.
8439
8440We compile the program, and invoke the debugger on it:
8441
8442@smallexample
8443$ gcc -g charset-test.c -o charset-test
8444$ gdb -nw charset-test
8445GNU gdb 2001-12-19-cvs
8446Copyright 2001 Free Software Foundation, Inc.
8447@dots{}
f7dc1244 8448(@value{GDBP})
10998722 8449@end smallexample
a0eb71c5
KB
8450
8451We can use the @code{show charset} command to see what character sets
8452@value{GDBN} is currently using to interpret and display characters and
8453strings:
8454
8455@smallexample
f7dc1244 8456(@value{GDBP}) show charset
e33d66ec 8457The current host and target character set is `ISO-8859-1'.
f7dc1244 8458(@value{GDBP})
10998722 8459@end smallexample
a0eb71c5
KB
8460
8461For the sake of printing this manual, let's use @sc{ascii} as our
8462initial character set:
8463@smallexample
f7dc1244
EZ
8464(@value{GDBP}) set charset ASCII
8465(@value{GDBP}) show charset
e33d66ec 8466The current host and target character set is `ASCII'.
f7dc1244 8467(@value{GDBP})
10998722 8468@end smallexample
a0eb71c5
KB
8469
8470Let's assume that @sc{ascii} is indeed the correct character set for our
8471host system --- in other words, let's assume that if @value{GDBN} prints
8472characters using the @sc{ascii} character set, our terminal will display
8473them properly. Since our current target character set is also
8474@sc{ascii}, the contents of @code{ascii_hello} print legibly:
8475
8476@smallexample
f7dc1244 8477(@value{GDBP}) print ascii_hello
a0eb71c5 8478$1 = 0x401698 "Hello, world!\n"
f7dc1244 8479(@value{GDBP}) print ascii_hello[0]
a0eb71c5 8480$2 = 72 'H'
f7dc1244 8481(@value{GDBP})
10998722 8482@end smallexample
a0eb71c5
KB
8483
8484@value{GDBN} uses the target character set for character and string
8485literals you use in expressions:
8486
8487@smallexample
f7dc1244 8488(@value{GDBP}) print '+'
a0eb71c5 8489$3 = 43 '+'
f7dc1244 8490(@value{GDBP})
10998722 8491@end smallexample
a0eb71c5
KB
8492
8493The @sc{ascii} character set uses the number 43 to encode the @samp{+}
8494character.
8495
8496@value{GDBN} relies on the user to tell it which character set the
8497target program uses. If we print @code{ibm1047_hello} while our target
8498character set is still @sc{ascii}, we get jibberish:
8499
8500@smallexample
f7dc1244 8501(@value{GDBP}) print ibm1047_hello
a0eb71c5 8502$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
f7dc1244 8503(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 8504$5 = 200 '\310'
f7dc1244 8505(@value{GDBP})
10998722 8506@end smallexample
a0eb71c5 8507
e33d66ec 8508If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
a0eb71c5
KB
8509@value{GDBN} tells us the character sets it supports:
8510
8511@smallexample
f7dc1244 8512(@value{GDBP}) set target-charset
b383017d 8513ASCII EBCDIC-US IBM1047 ISO-8859-1
f7dc1244 8514(@value{GDBP}) set target-charset
10998722 8515@end smallexample
a0eb71c5
KB
8516
8517We can select @sc{ibm1047} as our target character set, and examine the
8518program's strings again. Now the @sc{ascii} string is wrong, but
8519@value{GDBN} translates the contents of @code{ibm1047_hello} from the
8520target character set, @sc{ibm1047}, to the host character set,
8521@sc{ascii}, and they display correctly:
8522
8523@smallexample
f7dc1244
EZ
8524(@value{GDBP}) set target-charset IBM1047
8525(@value{GDBP}) show charset
e33d66ec
EZ
8526The current host character set is `ASCII'.
8527The current target character set is `IBM1047'.
f7dc1244 8528(@value{GDBP}) print ascii_hello
a0eb71c5 8529$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
f7dc1244 8530(@value{GDBP}) print ascii_hello[0]
a0eb71c5 8531$7 = 72 '\110'
f7dc1244 8532(@value{GDBP}) print ibm1047_hello
a0eb71c5 8533$8 = 0x4016a8 "Hello, world!\n"
f7dc1244 8534(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 8535$9 = 200 'H'
f7dc1244 8536(@value{GDBP})
10998722 8537@end smallexample
a0eb71c5
KB
8538
8539As above, @value{GDBN} uses the target character set for character and
8540string literals you use in expressions:
8541
8542@smallexample
f7dc1244 8543(@value{GDBP}) print '+'
a0eb71c5 8544$10 = 78 '+'
f7dc1244 8545(@value{GDBP})
10998722 8546@end smallexample
a0eb71c5 8547
e33d66ec 8548The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
a0eb71c5
KB
8549character.
8550
09d4efe1
EZ
8551@node Caching Remote Data
8552@section Caching Data of Remote Targets
8553@cindex caching data of remote targets
8554
4e5d721f 8555@value{GDBN} caches data exchanged between the debugger and a
ea35711c 8556remote target (@pxref{Remote Debugging}). Such caching generally improves
09d4efe1 8557performance, because it reduces the overhead of the remote protocol by
4e5d721f
DE
8558bundling memory reads and writes into large chunks. Unfortunately, simply
8559caching everything would lead to incorrect results, since @value{GDBN}
8560does not necessarily know anything about volatile values, memory-mapped I/O
29b090c0
DE
8561addresses, etc. Furthermore, in non-stop mode (@pxref{Non-Stop Mode})
8562memory can be changed @emph{while} a gdb command is executing.
8563Therefore, by default, @value{GDBN} only caches data
8564known to be on the stack@footnote{In non-stop mode, it is moderately
8565rare for a running thread to modify the stack of a stopped thread
8566in a way that would interfere with a backtrace, and caching of
8567stack reads provides a significant speed up of remote backtraces.}.
8568Other regions of memory can be explicitly marked as
4e5d721f 8569cacheable; see @pxref{Memory Region Attributes}.
09d4efe1
EZ
8570
8571@table @code
8572@kindex set remotecache
8573@item set remotecache on
8574@itemx set remotecache off
4e5d721f
DE
8575This option no longer does anything; it exists for compatibility
8576with old scripts.
09d4efe1
EZ
8577
8578@kindex show remotecache
8579@item show remotecache
4e5d721f
DE
8580Show the current state of the obsolete remotecache flag.
8581
8582@kindex set stack-cache
8583@item set stack-cache on
8584@itemx set stack-cache off
8585Enable or disable caching of stack accesses. When @code{ON}, use
8586caching. By default, this option is @code{ON}.
8587
8588@kindex show stack-cache
8589@item show stack-cache
8590Show the current state of data caching for memory accesses.
09d4efe1
EZ
8591
8592@kindex info dcache
4e5d721f 8593@item info dcache @r{[}line@r{]}
09d4efe1 8594Print the information about the data cache performance. The
4e5d721f
DE
8595information displayed includes the dcache width and depth, and for
8596each cache line, its number, address, and how many times it was
8597referenced. This command is useful for debugging the data cache
8598operation.
8599
8600If a line number is specified, the contents of that line will be
8601printed in hex.
09d4efe1
EZ
8602@end table
8603
08388c79
DE
8604@node Searching Memory
8605@section Search Memory
8606@cindex searching memory
8607
8608Memory can be searched for a particular sequence of bytes with the
8609@code{find} command.
8610
8611@table @code
8612@kindex find
8613@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
8614@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
8615Search memory for the sequence of bytes specified by @var{val1}, @var{val2},
8616etc. The search begins at address @var{start_addr} and continues for either
8617@var{len} bytes or through to @var{end_addr} inclusive.
8618@end table
8619
8620@var{s} and @var{n} are optional parameters.
8621They may be specified in either order, apart or together.
8622
8623@table @r
8624@item @var{s}, search query size
8625The size of each search query value.
8626
8627@table @code
8628@item b
8629bytes
8630@item h
8631halfwords (two bytes)
8632@item w
8633words (four bytes)
8634@item g
8635giant words (eight bytes)
8636@end table
8637
8638All values are interpreted in the current language.
8639This means, for example, that if the current source language is C/C@t{++}
8640then searching for the string ``hello'' includes the trailing '\0'.
8641
8642If the value size is not specified, it is taken from the
8643value's type in the current language.
8644This is useful when one wants to specify the search
8645pattern as a mixture of types.
8646Note that this means, for example, that in the case of C-like languages
8647a search for an untyped 0x42 will search for @samp{(int) 0x42}
8648which is typically four bytes.
8649
8650@item @var{n}, maximum number of finds
8651The maximum number of matches to print. The default is to print all finds.
8652@end table
8653
8654You can use strings as search values. Quote them with double-quotes
8655 (@code{"}).
8656The string value is copied into the search pattern byte by byte,
8657regardless of the endianness of the target and the size specification.
8658
8659The address of each match found is printed as well as a count of the
8660number of matches found.
8661
8662The address of the last value found is stored in convenience variable
8663@samp{$_}.
8664A count of the number of matches is stored in @samp{$numfound}.
8665
8666For example, if stopped at the @code{printf} in this function:
8667
8668@smallexample
8669void
8670hello ()
8671@{
8672 static char hello[] = "hello-hello";
8673 static struct @{ char c; short s; int i; @}
8674 __attribute__ ((packed)) mixed
8675 = @{ 'c', 0x1234, 0x87654321 @};
8676 printf ("%s\n", hello);
8677@}
8678@end smallexample
8679
8680@noindent
8681you get during debugging:
8682
8683@smallexample
8684(gdb) find &hello[0], +sizeof(hello), "hello"
86850x804956d <hello.1620+6>
86861 pattern found
8687(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o'
86880x8049567 <hello.1620>
86890x804956d <hello.1620+6>
86902 patterns found
8691(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l'
86920x8049567 <hello.1620>
86931 pattern found
8694(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
86950x8049560 <mixed.1625>
86961 pattern found
8697(gdb) print $numfound
8698$1 = 1
8699(gdb) print $_
8700$2 = (void *) 0x8049560
8701@end smallexample
a0eb71c5 8702
edb3359d
DJ
8703@node Optimized Code
8704@chapter Debugging Optimized Code
8705@cindex optimized code, debugging
8706@cindex debugging optimized code
8707
8708Almost all compilers support optimization. With optimization
8709disabled, the compiler generates assembly code that corresponds
8710directly to your source code, in a simplistic way. As the compiler
8711applies more powerful optimizations, the generated assembly code
8712diverges from your original source code. With help from debugging
8713information generated by the compiler, @value{GDBN} can map from
8714the running program back to constructs from your original source.
8715
8716@value{GDBN} is more accurate with optimization disabled. If you
8717can recompile without optimization, it is easier to follow the
8718progress of your program during debugging. But, there are many cases
8719where you may need to debug an optimized version.
8720
8721When you debug a program compiled with @samp{-g -O}, remember that the
8722optimizer has rearranged your code; the debugger shows you what is
8723really there. Do not be too surprised when the execution path does not
8724exactly match your source file! An extreme example: if you define a
8725variable, but never use it, @value{GDBN} never sees that
8726variable---because the compiler optimizes it out of existence.
8727
8728Some things do not work as well with @samp{-g -O} as with just
8729@samp{-g}, particularly on machines with instruction scheduling. If in
8730doubt, recompile with @samp{-g} alone, and if this fixes the problem,
8731please report it to us as a bug (including a test case!).
8732@xref{Variables}, for more information about debugging optimized code.
8733
8734@menu
8735* Inline Functions:: How @value{GDBN} presents inlining
8736@end menu
8737
8738@node Inline Functions
8739@section Inline Functions
8740@cindex inline functions, debugging
8741
8742@dfn{Inlining} is an optimization that inserts a copy of the function
8743body directly at each call site, instead of jumping to a shared
8744routine. @value{GDBN} displays inlined functions just like
8745non-inlined functions. They appear in backtraces. You can view their
8746arguments and local variables, step into them with @code{step}, skip
8747them with @code{next}, and escape from them with @code{finish}.
8748You can check whether a function was inlined by using the
8749@code{info frame} command.
8750
8751For @value{GDBN} to support inlined functions, the compiler must
8752record information about inlining in the debug information ---
8753@value{NGCC} using the @sc{dwarf 2} format does this, and several
8754other compilers do also. @value{GDBN} only supports inlined functions
8755when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1
8756do not emit two required attributes (@samp{DW_AT_call_file} and
8757@samp{DW_AT_call_line}); @value{GDBN} does not display inlined
8758function calls with earlier versions of @value{NGCC}. It instead
8759displays the arguments and local variables of inlined functions as
8760local variables in the caller.
8761
8762The body of an inlined function is directly included at its call site;
8763unlike a non-inlined function, there are no instructions devoted to
8764the call. @value{GDBN} still pretends that the call site and the
8765start of the inlined function are different instructions. Stepping to
8766the call site shows the call site, and then stepping again shows
8767the first line of the inlined function, even though no additional
8768instructions are executed.
8769
8770This makes source-level debugging much clearer; you can see both the
8771context of the call and then the effect of the call. Only stepping by
8772a single instruction using @code{stepi} or @code{nexti} does not do
8773this; single instruction steps always show the inlined body.
8774
8775There are some ways that @value{GDBN} does not pretend that inlined
8776function calls are the same as normal calls:
8777
8778@itemize @bullet
8779@item
8780You cannot set breakpoints on inlined functions. @value{GDBN}
8781either reports that there is no symbol with that name, or else sets the
8782breakpoint only on non-inlined copies of the function. This limitation
8783will be removed in a future version of @value{GDBN}; until then,
8784set a breakpoint by line number on the first line of the inlined
8785function instead.
8786
8787@item
8788Setting breakpoints at the call site of an inlined function may not
8789work, because the call site does not contain any code. @value{GDBN}
8790may incorrectly move the breakpoint to the next line of the enclosing
8791function, after the call. This limitation will be removed in a future
8792version of @value{GDBN}; until then, set a breakpoint on an earlier line
8793or inside the inlined function instead.
8794
8795@item
8796@value{GDBN} cannot locate the return value of inlined calls after
8797using the @code{finish} command. This is a limitation of compiler-generated
8798debugging information; after @code{finish}, you can step to the next line
8799and print a variable where your program stored the return value.
8800
8801@end itemize
8802
8803
e2e0bcd1
JB
8804@node Macros
8805@chapter C Preprocessor Macros
8806
49efadf5 8807Some languages, such as C and C@t{++}, provide a way to define and invoke
e2e0bcd1
JB
8808``preprocessor macros'' which expand into strings of tokens.
8809@value{GDBN} can evaluate expressions containing macro invocations, show
8810the result of macro expansion, and show a macro's definition, including
8811where it was defined.
8812
8813You may need to compile your program specially to provide @value{GDBN}
8814with information about preprocessor macros. Most compilers do not
8815include macros in their debugging information, even when you compile
8816with the @option{-g} flag. @xref{Compilation}.
8817
8818A program may define a macro at one point, remove that definition later,
8819and then provide a different definition after that. Thus, at different
8820points in the program, a macro may have different definitions, or have
8821no definition at all. If there is a current stack frame, @value{GDBN}
8822uses the macros in scope at that frame's source code line. Otherwise,
8823@value{GDBN} uses the macros in scope at the current listing location;
8824see @ref{List}.
8825
e2e0bcd1
JB
8826Whenever @value{GDBN} evaluates an expression, it always expands any
8827macro invocations present in the expression. @value{GDBN} also provides
8828the following commands for working with macros explicitly.
8829
8830@table @code
8831
8832@kindex macro expand
8833@cindex macro expansion, showing the results of preprocessor
8834@cindex preprocessor macro expansion, showing the results of
8835@cindex expanding preprocessor macros
8836@item macro expand @var{expression}
8837@itemx macro exp @var{expression}
8838Show the results of expanding all preprocessor macro invocations in
8839@var{expression}. Since @value{GDBN} simply expands macros, but does
8840not parse the result, @var{expression} need not be a valid expression;
8841it can be any string of tokens.
8842
09d4efe1 8843@kindex macro exp1
e2e0bcd1
JB
8844@item macro expand-once @var{expression}
8845@itemx macro exp1 @var{expression}
4644b6e3 8846@cindex expand macro once
e2e0bcd1
JB
8847@i{(This command is not yet implemented.)} Show the results of
8848expanding those preprocessor macro invocations that appear explicitly in
8849@var{expression}. Macro invocations appearing in that expansion are
8850left unchanged. This command allows you to see the effect of a
8851particular macro more clearly, without being confused by further
8852expansions. Since @value{GDBN} simply expands macros, but does not
8853parse the result, @var{expression} need not be a valid expression; it
8854can be any string of tokens.
8855
475b0867 8856@kindex info macro
e2e0bcd1
JB
8857@cindex macro definition, showing
8858@cindex definition, showing a macro's
475b0867 8859@item info macro @var{macro}
e2e0bcd1 8860Show the definition of the macro named @var{macro}, and describe the
484086b7 8861source location or compiler command-line where that definition was established.
e2e0bcd1
JB
8862
8863@kindex macro define
8864@cindex user-defined macros
8865@cindex defining macros interactively
8866@cindex macros, user-defined
8867@item macro define @var{macro} @var{replacement-list}
8868@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
d7d9f01e
TT
8869Introduce a definition for a preprocessor macro named @var{macro},
8870invocations of which are replaced by the tokens given in
8871@var{replacement-list}. The first form of this command defines an
8872``object-like'' macro, which takes no arguments; the second form
8873defines a ``function-like'' macro, which takes the arguments given in
8874@var{arglist}.
8875
8876A definition introduced by this command is in scope in every
8877expression evaluated in @value{GDBN}, until it is removed with the
8878@code{macro undef} command, described below. The definition overrides
8879all definitions for @var{macro} present in the program being debugged,
8880as well as any previous user-supplied definition.
e2e0bcd1
JB
8881
8882@kindex macro undef
8883@item macro undef @var{macro}
d7d9f01e
TT
8884Remove any user-supplied definition for the macro named @var{macro}.
8885This command only affects definitions provided with the @code{macro
8886define} command, described above; it cannot remove definitions present
8887in the program being debugged.
e2e0bcd1 8888
09d4efe1
EZ
8889@kindex macro list
8890@item macro list
d7d9f01e 8891List all the macros defined using the @code{macro define} command.
e2e0bcd1
JB
8892@end table
8893
8894@cindex macros, example of debugging with
8895Here is a transcript showing the above commands in action. First, we
8896show our source files:
8897
8898@smallexample
8899$ cat sample.c
8900#include <stdio.h>
8901#include "sample.h"
8902
8903#define M 42
8904#define ADD(x) (M + x)
8905
8906main ()
8907@{
8908#define N 28
8909 printf ("Hello, world!\n");
8910#undef N
8911 printf ("We're so creative.\n");
8912#define N 1729
8913 printf ("Goodbye, world!\n");
8914@}
8915$ cat sample.h
8916#define Q <
8917$
8918@end smallexample
8919
8920Now, we compile the program using the @sc{gnu} C compiler, @value{NGCC}.
8921We pass the @option{-gdwarf-2} and @option{-g3} flags to ensure the
8922compiler includes information about preprocessor macros in the debugging
8923information.
8924
8925@smallexample
8926$ gcc -gdwarf-2 -g3 sample.c -o sample
8927$
8928@end smallexample
8929
8930Now, we start @value{GDBN} on our sample program:
8931
8932@smallexample
8933$ gdb -nw sample
8934GNU gdb 2002-05-06-cvs
8935Copyright 2002 Free Software Foundation, Inc.
8936GDB is free software, @dots{}
f7dc1244 8937(@value{GDBP})
e2e0bcd1
JB
8938@end smallexample
8939
8940We can expand macros and examine their definitions, even when the
8941program is not running. @value{GDBN} uses the current listing position
8942to decide which macro definitions are in scope:
8943
8944@smallexample
f7dc1244 8945(@value{GDBP}) list main
e2e0bcd1
JB
89463
89474 #define M 42
89485 #define ADD(x) (M + x)
89496
89507 main ()
89518 @{
89529 #define N 28
895310 printf ("Hello, world!\n");
895411 #undef N
895512 printf ("We're so creative.\n");
f7dc1244 8956(@value{GDBP}) info macro ADD
e2e0bcd1
JB
8957Defined at /home/jimb/gdb/macros/play/sample.c:5
8958#define ADD(x) (M + x)
f7dc1244 8959(@value{GDBP}) info macro Q
e2e0bcd1
JB
8960Defined at /home/jimb/gdb/macros/play/sample.h:1
8961 included at /home/jimb/gdb/macros/play/sample.c:2
8962#define Q <
f7dc1244 8963(@value{GDBP}) macro expand ADD(1)
e2e0bcd1 8964expands to: (42 + 1)
f7dc1244 8965(@value{GDBP}) macro expand-once ADD(1)
e2e0bcd1 8966expands to: once (M + 1)
f7dc1244 8967(@value{GDBP})
e2e0bcd1
JB
8968@end smallexample
8969
d7d9f01e 8970In the example above, note that @code{macro expand-once} expands only
e2e0bcd1
JB
8971the macro invocation explicit in the original text --- the invocation of
8972@code{ADD} --- but does not expand the invocation of the macro @code{M},
8973which was introduced by @code{ADD}.
8974
3f94c067
BW
8975Once the program is running, @value{GDBN} uses the macro definitions in
8976force at the source line of the current stack frame:
e2e0bcd1
JB
8977
8978@smallexample
f7dc1244 8979(@value{GDBP}) break main
e2e0bcd1 8980Breakpoint 1 at 0x8048370: file sample.c, line 10.
f7dc1244 8981(@value{GDBP}) run
b383017d 8982Starting program: /home/jimb/gdb/macros/play/sample
e2e0bcd1
JB
8983
8984Breakpoint 1, main () at sample.c:10
898510 printf ("Hello, world!\n");
f7dc1244 8986(@value{GDBP})
e2e0bcd1
JB
8987@end smallexample
8988
8989At line 10, the definition of the macro @code{N} at line 9 is in force:
8990
8991@smallexample
f7dc1244 8992(@value{GDBP}) info macro N
e2e0bcd1
JB
8993Defined at /home/jimb/gdb/macros/play/sample.c:9
8994#define N 28
f7dc1244 8995(@value{GDBP}) macro expand N Q M
e2e0bcd1 8996expands to: 28 < 42
f7dc1244 8997(@value{GDBP}) print N Q M
e2e0bcd1 8998$1 = 1
f7dc1244 8999(@value{GDBP})
e2e0bcd1
JB
9000@end smallexample
9001
9002As we step over directives that remove @code{N}'s definition, and then
9003give it a new definition, @value{GDBN} finds the definition (or lack
9004thereof) in force at each point:
9005
9006@smallexample
f7dc1244 9007(@value{GDBP}) next
e2e0bcd1
JB
9008Hello, world!
900912 printf ("We're so creative.\n");
f7dc1244 9010(@value{GDBP}) info macro N
e2e0bcd1
JB
9011The symbol `N' has no definition as a C/C++ preprocessor macro
9012at /home/jimb/gdb/macros/play/sample.c:12
f7dc1244 9013(@value{GDBP}) next
e2e0bcd1
JB
9014We're so creative.
901514 printf ("Goodbye, world!\n");
f7dc1244 9016(@value{GDBP}) info macro N
e2e0bcd1
JB
9017Defined at /home/jimb/gdb/macros/play/sample.c:13
9018#define N 1729
f7dc1244 9019(@value{GDBP}) macro expand N Q M
e2e0bcd1 9020expands to: 1729 < 42
f7dc1244 9021(@value{GDBP}) print N Q M
e2e0bcd1 9022$2 = 0
f7dc1244 9023(@value{GDBP})
e2e0bcd1
JB
9024@end smallexample
9025
484086b7
JK
9026In addition to source files, macros can be defined on the compilation command
9027line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in
9028such a way, @value{GDBN} displays the location of their definition as line zero
9029of the source file submitted to the compiler.
9030
9031@smallexample
9032(@value{GDBP}) info macro __STDC__
9033Defined at /home/jimb/gdb/macros/play/sample.c:0
9034-D__STDC__=1
9035(@value{GDBP})
9036@end smallexample
9037
e2e0bcd1 9038
b37052ae
EZ
9039@node Tracepoints
9040@chapter Tracepoints
9041@c This chapter is based on the documentation written by Michael
9042@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
9043
9044@cindex tracepoints
9045In some applications, it is not feasible for the debugger to interrupt
9046the program's execution long enough for the developer to learn
9047anything helpful about its behavior. If the program's correctness
9048depends on its real-time behavior, delays introduced by a debugger
9049might cause the program to change its behavior drastically, or perhaps
9050fail, even when the code itself is correct. It is useful to be able
9051to observe the program's behavior without interrupting it.
9052
9053Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
9054specify locations in the program, called @dfn{tracepoints}, and
9055arbitrary expressions to evaluate when those tracepoints are reached.
9056Later, using the @code{tfind} command, you can examine the values
9057those expressions had when the program hit the tracepoints. The
9058expressions may also denote objects in memory---structures or arrays,
9059for example---whose values @value{GDBN} should record; while visiting
9060a particular tracepoint, you may inspect those objects as if they were
9061in memory at that moment. However, because @value{GDBN} records these
9062values without interacting with you, it can do so quickly and
9063unobtrusively, hopefully not disturbing the program's behavior.
9064
9065The tracepoint facility is currently available only for remote
9d29849a
JB
9066targets. @xref{Targets}. In addition, your remote target must know
9067how to collect trace data. This functionality is implemented in the
9068remote stub; however, none of the stubs distributed with @value{GDBN}
9069support tracepoints as of this writing. The format of the remote
9070packets used to implement tracepoints are described in @ref{Tracepoint
9071Packets}.
b37052ae
EZ
9072
9073This chapter describes the tracepoint commands and features.
9074
9075@menu
b383017d
RM
9076* Set Tracepoints::
9077* Analyze Collected Data::
9078* Tracepoint Variables::
b37052ae
EZ
9079@end menu
9080
9081@node Set Tracepoints
9082@section Commands to Set Tracepoints
9083
9084Before running such a @dfn{trace experiment}, an arbitrary number of
1042e4c0
SS
9085tracepoints can be set. A tracepoint is actually a special type of
9086breakpoint (@pxref{Set Breaks}), so you can manipulate it using
9087standard breakpoint commands. For instance, as with breakpoints,
9088tracepoint numbers are successive integers starting from one, and many
9089of the commands associated with tracepoints take the tracepoint number
9090as their argument, to identify which tracepoint to work on.
b37052ae
EZ
9091
9092For each tracepoint, you can specify, in advance, some arbitrary set
9093of data that you want the target to collect in the trace buffer when
9094it hits that tracepoint. The collected data can include registers,
9095local variables, or global data. Later, you can use @value{GDBN}
9096commands to examine the values these data had at the time the
9097tracepoint was hit.
9098
1042e4c0
SS
9099Tracepoints do not support every breakpoint feature. Conditional
9100expressions and ignore counts on tracepoints have no effect, and
9101tracepoints cannot run @value{GDBN} commands when they are
9102hit. Tracepoints may not be thread-specific either.
9103
b37052ae
EZ
9104This section describes commands to set tracepoints and associated
9105conditions and actions.
9106
9107@menu
b383017d
RM
9108* Create and Delete Tracepoints::
9109* Enable and Disable Tracepoints::
9110* Tracepoint Passcounts::
782b2b07 9111* Tracepoint Conditions::
b383017d
RM
9112* Tracepoint Actions::
9113* Listing Tracepoints::
79a6e687 9114* Starting and Stopping Trace Experiments::
b37052ae
EZ
9115@end menu
9116
9117@node Create and Delete Tracepoints
9118@subsection Create and Delete Tracepoints
9119
9120@table @code
9121@cindex set tracepoint
9122@kindex trace
1042e4c0 9123@item trace @var{location}
b37052ae 9124The @code{trace} command is very similar to the @code{break} command.
1042e4c0
SS
9125Its argument @var{location} can be a source line, a function name, or
9126an address in the target program. @xref{Specify Location}. The
9127@code{trace} command defines a tracepoint, which is a point in the
9128target program where the debugger will briefly stop, collect some
9129data, and then allow the program to continue. Setting a tracepoint or
9130changing its actions doesn't take effect until the next @code{tstart}
9131command, and once a trace experiment is running, further changes will
9132not have any effect until the next trace experiment starts.
b37052ae
EZ
9133
9134Here are some examples of using the @code{trace} command:
9135
9136@smallexample
9137(@value{GDBP}) @b{trace foo.c:121} // a source file and line number
9138
9139(@value{GDBP}) @b{trace +2} // 2 lines forward
9140
9141(@value{GDBP}) @b{trace my_function} // first source line of function
9142
9143(@value{GDBP}) @b{trace *my_function} // EXACT start address of function
9144
9145(@value{GDBP}) @b{trace *0x2117c4} // an address
9146@end smallexample
9147
9148@noindent
9149You can abbreviate @code{trace} as @code{tr}.
9150
782b2b07
SS
9151@item trace @var{location} if @var{cond}
9152Set a tracepoint with condition @var{cond}; evaluate the expression
9153@var{cond} each time the tracepoint is reached, and collect data only
9154if the value is nonzero---that is, if @var{cond} evaluates as true.
9155@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more
9156information on tracepoint conditions.
9157
b37052ae
EZ
9158@vindex $tpnum
9159@cindex last tracepoint number
9160@cindex recent tracepoint number
9161@cindex tracepoint number
9162The convenience variable @code{$tpnum} records the tracepoint number
9163of the most recently set tracepoint.
9164
9165@kindex delete tracepoint
9166@cindex tracepoint deletion
9167@item delete tracepoint @r{[}@var{num}@r{]}
9168Permanently delete one or more tracepoints. With no argument, the
1042e4c0
SS
9169default is to delete all tracepoints. Note that the regular
9170@code{delete} command can remove tracepoints also.
b37052ae
EZ
9171
9172Examples:
9173
9174@smallexample
9175(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
9176
9177(@value{GDBP}) @b{delete trace} // remove all tracepoints
9178@end smallexample
9179
9180@noindent
9181You can abbreviate this command as @code{del tr}.
9182@end table
9183
9184@node Enable and Disable Tracepoints
9185@subsection Enable and Disable Tracepoints
9186
1042e4c0
SS
9187These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}.
9188
b37052ae
EZ
9189@table @code
9190@kindex disable tracepoint
9191@item disable tracepoint @r{[}@var{num}@r{]}
9192Disable tracepoint @var{num}, or all tracepoints if no argument
9193@var{num} is given. A disabled tracepoint will have no effect during
9194the next trace experiment, but it is not forgotten. You can re-enable
9195a disabled tracepoint using the @code{enable tracepoint} command.
9196
9197@kindex enable tracepoint
9198@item enable tracepoint @r{[}@var{num}@r{]}
9199Enable tracepoint @var{num}, or all tracepoints. The enabled
9200tracepoints will become effective the next time a trace experiment is
9201run.
9202@end table
9203
9204@node Tracepoint Passcounts
9205@subsection Tracepoint Passcounts
9206
9207@table @code
9208@kindex passcount
9209@cindex tracepoint pass count
9210@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
9211Set the @dfn{passcount} of a tracepoint. The passcount is a way to
9212automatically stop a trace experiment. If a tracepoint's passcount is
9213@var{n}, then the trace experiment will be automatically stopped on
9214the @var{n}'th time that tracepoint is hit. If the tracepoint number
9215@var{num} is not specified, the @code{passcount} command sets the
9216passcount of the most recently defined tracepoint. If no passcount is
9217given, the trace experiment will run until stopped explicitly by the
9218user.
9219
9220Examples:
9221
9222@smallexample
b383017d 9223(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
6826cf00 9224@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
b37052ae
EZ
9225
9226(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
6826cf00 9227@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
b37052ae
EZ
9228(@value{GDBP}) @b{trace foo}
9229(@value{GDBP}) @b{pass 3}
9230(@value{GDBP}) @b{trace bar}
9231(@value{GDBP}) @b{pass 2}
9232(@value{GDBP}) @b{trace baz}
9233(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
6826cf00
EZ
9234@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
9235@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
9236@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
b37052ae
EZ
9237@end smallexample
9238@end table
9239
782b2b07
SS
9240@node Tracepoint Conditions
9241@subsection Tracepoint Conditions
9242@cindex conditional tracepoints
9243@cindex tracepoint conditions
9244
9245The simplest sort of tracepoint collects data every time your program
9246reaches a specified place. You can also specify a @dfn{condition} for
9247a tracepoint. A condition is just a Boolean expression in your
9248programming language (@pxref{Expressions, ,Expressions}). A
9249tracepoint with a condition evaluates the expression each time your
9250program reaches it, and data collection happens only if the condition
9251is true.
9252
9253Tracepoint conditions can be specified when a tracepoint is set, by
9254using @samp{if} in the arguments to the @code{trace} command.
9255@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can
9256also be set or changed at any time with the @code{condition} command,
9257just as with breakpoints.
9258
9259Unlike breakpoint conditions, @value{GDBN} does not actually evaluate
9260the conditional expression itself. Instead, @value{GDBN} encodes the
9261expression into an agent expression (@pxref{Agent Expressions}
9262suitable for execution on the target, independently of @value{GDBN}.
9263Global variables become raw memory locations, locals become stack
9264accesses, and so forth.
9265
9266For instance, suppose you have a function that is usually called
9267frequently, but should not be called after an error has occurred. You
9268could use the following tracepoint command to collect data about calls
9269of that function that happen while the error code is propagating
9270through the program; an unconditional tracepoint could end up
9271collecting thousands of useless trace frames that you would have to
9272search through.
9273
9274@smallexample
9275(@value{GDBP}) @kbd{trace normal_operation if errcode > 0}
9276@end smallexample
9277
b37052ae
EZ
9278@node Tracepoint Actions
9279@subsection Tracepoint Action Lists
9280
9281@table @code
9282@kindex actions
9283@cindex tracepoint actions
9284@item actions @r{[}@var{num}@r{]}
9285This command will prompt for a list of actions to be taken when the
9286tracepoint is hit. If the tracepoint number @var{num} is not
9287specified, this command sets the actions for the one that was most
9288recently defined (so that you can define a tracepoint and then say
9289@code{actions} without bothering about its number). You specify the
9290actions themselves on the following lines, one action at a time, and
9291terminate the actions list with a line containing just @code{end}. So
9292far, the only defined actions are @code{collect} and
9293@code{while-stepping}.
9294
9295@cindex remove actions from a tracepoint
9296To remove all actions from a tracepoint, type @samp{actions @var{num}}
9297and follow it immediately with @samp{end}.
9298
9299@smallexample
9300(@value{GDBP}) @b{collect @var{data}} // collect some data
9301
6826cf00 9302(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
b37052ae 9303
6826cf00 9304(@value{GDBP}) @b{end} // signals the end of actions.
b37052ae
EZ
9305@end smallexample
9306
9307In the following example, the action list begins with @code{collect}
9308commands indicating the things to be collected when the tracepoint is
9309hit. Then, in order to single-step and collect additional data
9310following the tracepoint, a @code{while-stepping} command is used,
9311followed by the list of things to be collected while stepping. The
9312@code{while-stepping} command is terminated by its own separate
9313@code{end} command. Lastly, the action list is terminated by an
9314@code{end} command.
9315
9316@smallexample
9317(@value{GDBP}) @b{trace foo}
9318(@value{GDBP}) @b{actions}
9319Enter actions for tracepoint 1, one per line:
9320> collect bar,baz
9321> collect $regs
9322> while-stepping 12
9323 > collect $fp, $sp
9324 > end
9325end
9326@end smallexample
9327
9328@kindex collect @r{(tracepoints)}
9329@item collect @var{expr1}, @var{expr2}, @dots{}
9330Collect values of the given expressions when the tracepoint is hit.
9331This command accepts a comma-separated list of any valid expressions.
9332In addition to global, static, or local variables, the following
9333special arguments are supported:
9334
9335@table @code
9336@item $regs
9337collect all registers
9338
9339@item $args
9340collect all function arguments
9341
9342@item $locals
9343collect all local variables.
9344@end table
9345
9346You can give several consecutive @code{collect} commands, each one
9347with a single argument, or one @code{collect} command with several
9348arguments separated by commas: the effect is the same.
9349
f5c37c66
EZ
9350The command @code{info scope} (@pxref{Symbols, info scope}) is
9351particularly useful for figuring out what data to collect.
9352
b37052ae
EZ
9353@kindex while-stepping @r{(tracepoints)}
9354@item while-stepping @var{n}
9355Perform @var{n} single-step traces after the tracepoint, collecting
9356new data at each step. The @code{while-stepping} command is
9357followed by the list of what to collect while stepping (followed by
9358its own @code{end} command):
9359
9360@smallexample
9361> while-stepping 12
9362 > collect $regs, myglobal
9363 > end
9364>
9365@end smallexample
9366
9367@noindent
9368You may abbreviate @code{while-stepping} as @code{ws} or
9369@code{stepping}.
9370@end table
9371
9372@node Listing Tracepoints
9373@subsection Listing Tracepoints
9374
9375@table @code
9376@kindex info tracepoints
09d4efe1 9377@kindex info tp
b37052ae
EZ
9378@cindex information about tracepoints
9379@item info tracepoints @r{[}@var{num}@r{]}
1042e4c0
SS
9380Display information about the tracepoint @var{num}. If you don't
9381specify a tracepoint number, displays information about all the
9382tracepoints defined so far. The format is similar to that used for
9383@code{info breakpoints}; in fact, @code{info tracepoints} is the same
9384command, simply restricting itself to tracepoints.
9385
9386A tracepoint's listing may include additional information specific to
9387tracing:
b37052ae
EZ
9388
9389@itemize @bullet
9390@item
b37052ae
EZ
9391its passcount as given by the @code{passcount @var{n}} command
9392@item
9393its step count as given by the @code{while-stepping @var{n}} command
9394@item
1042e4c0
SS
9395its action list as given by the @code{actions} command. The actions
9396are prefixed with an @samp{A} so as to distinguish them from commands.
b37052ae
EZ
9397@end itemize
9398
9399@smallexample
9400(@value{GDBP}) @b{info trace}
1042e4c0
SS
9401Num Type Disp Enb Address What
94021 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7
9403 pass count 1200
9404 step count 20
9405 A while-stepping 20
9406 A collect globfoo, $regs
9407 A end
9408 A collect globfoo2
9409 A end
b37052ae
EZ
9410(@value{GDBP})
9411@end smallexample
9412
9413@noindent
9414This command can be abbreviated @code{info tp}.
9415@end table
9416
79a6e687
BW
9417@node Starting and Stopping Trace Experiments
9418@subsection Starting and Stopping Trace Experiments
b37052ae
EZ
9419
9420@table @code
9421@kindex tstart
9422@cindex start a new trace experiment
9423@cindex collected data discarded
9424@item tstart
9425This command takes no arguments. It starts the trace experiment, and
9426begins collecting data. This has the side effect of discarding all
9427the data collected in the trace buffer during the previous trace
9428experiment.
9429
9430@kindex tstop
9431@cindex stop a running trace experiment
9432@item tstop
9433This command takes no arguments. It ends the trace experiment, and
9434stops collecting data.
9435
68c71a2e 9436@strong{Note}: a trace experiment and data collection may stop
b37052ae
EZ
9437automatically if any tracepoint's passcount is reached
9438(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
9439
9440@kindex tstatus
9441@cindex status of trace data collection
9442@cindex trace experiment, status of
9443@item tstatus
9444This command displays the status of the current trace data
9445collection.
9446@end table
9447
9448Here is an example of the commands we described so far:
9449
9450@smallexample
9451(@value{GDBP}) @b{trace gdb_c_test}
9452(@value{GDBP}) @b{actions}
9453Enter actions for tracepoint #1, one per line.
9454> collect $regs,$locals,$args
9455> while-stepping 11
9456 > collect $regs
9457 > end
9458> end
9459(@value{GDBP}) @b{tstart}
9460 [time passes @dots{}]
9461(@value{GDBP}) @b{tstop}
9462@end smallexample
9463
9464
9465@node Analyze Collected Data
79a6e687 9466@section Using the Collected Data
b37052ae
EZ
9467
9468After the tracepoint experiment ends, you use @value{GDBN} commands
9469for examining the trace data. The basic idea is that each tracepoint
9470collects a trace @dfn{snapshot} every time it is hit and another
9471snapshot every time it single-steps. All these snapshots are
9472consecutively numbered from zero and go into a buffer, and you can
9473examine them later. The way you examine them is to @dfn{focus} on a
9474specific trace snapshot. When the remote stub is focused on a trace
9475snapshot, it will respond to all @value{GDBN} requests for memory and
9476registers by reading from the buffer which belongs to that snapshot,
9477rather than from @emph{real} memory or registers of the program being
9478debugged. This means that @strong{all} @value{GDBN} commands
9479(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
9480behave as if we were currently debugging the program state as it was
9481when the tracepoint occurred. Any requests for data that are not in
9482the buffer will fail.
9483
9484@menu
9485* tfind:: How to select a trace snapshot
9486* tdump:: How to display all data for a snapshot
9487* save-tracepoints:: How to save tracepoints for a future run
9488@end menu
9489
9490@node tfind
9491@subsection @code{tfind @var{n}}
9492
9493@kindex tfind
9494@cindex select trace snapshot
9495@cindex find trace snapshot
9496The basic command for selecting a trace snapshot from the buffer is
9497@code{tfind @var{n}}, which finds trace snapshot number @var{n},
9498counting from zero. If no argument @var{n} is given, the next
9499snapshot is selected.
9500
9501Here are the various forms of using the @code{tfind} command.
9502
9503@table @code
9504@item tfind start
9505Find the first snapshot in the buffer. This is a synonym for
9506@code{tfind 0} (since 0 is the number of the first snapshot).
9507
9508@item tfind none
9509Stop debugging trace snapshots, resume @emph{live} debugging.
9510
9511@item tfind end
9512Same as @samp{tfind none}.
9513
9514@item tfind
9515No argument means find the next trace snapshot.
9516
9517@item tfind -
9518Find the previous trace snapshot before the current one. This permits
9519retracing earlier steps.
9520
9521@item tfind tracepoint @var{num}
9522Find the next snapshot associated with tracepoint @var{num}. Search
9523proceeds forward from the last examined trace snapshot. If no
9524argument @var{num} is given, it means find the next snapshot collected
9525for the same tracepoint as the current snapshot.
9526
9527@item tfind pc @var{addr}
9528Find the next snapshot associated with the value @var{addr} of the
9529program counter. Search proceeds forward from the last examined trace
9530snapshot. If no argument @var{addr} is given, it means find the next
9531snapshot with the same value of PC as the current snapshot.
9532
9533@item tfind outside @var{addr1}, @var{addr2}
9534Find the next snapshot whose PC is outside the given range of
9535addresses.
9536
9537@item tfind range @var{addr1}, @var{addr2}
9538Find the next snapshot whose PC is between @var{addr1} and
9539@var{addr2}. @c FIXME: Is the range inclusive or exclusive?
9540
9541@item tfind line @r{[}@var{file}:@r{]}@var{n}
9542Find the next snapshot associated with the source line @var{n}. If
9543the optional argument @var{file} is given, refer to line @var{n} in
9544that source file. Search proceeds forward from the last examined
9545trace snapshot. If no argument @var{n} is given, it means find the
9546next line other than the one currently being examined; thus saying
9547@code{tfind line} repeatedly can appear to have the same effect as
9548stepping from line to line in a @emph{live} debugging session.
9549@end table
9550
9551The default arguments for the @code{tfind} commands are specifically
9552designed to make it easy to scan through the trace buffer. For
9553instance, @code{tfind} with no argument selects the next trace
9554snapshot, and @code{tfind -} with no argument selects the previous
9555trace snapshot. So, by giving one @code{tfind} command, and then
9556simply hitting @key{RET} repeatedly you can examine all the trace
9557snapshots in order. Or, by saying @code{tfind -} and then hitting
9558@key{RET} repeatedly you can examine the snapshots in reverse order.
9559The @code{tfind line} command with no argument selects the snapshot
9560for the next source line executed. The @code{tfind pc} command with
9561no argument selects the next snapshot with the same program counter
9562(PC) as the current frame. The @code{tfind tracepoint} command with
9563no argument selects the next trace snapshot collected by the same
9564tracepoint as the current one.
9565
9566In addition to letting you scan through the trace buffer manually,
9567these commands make it easy to construct @value{GDBN} scripts that
9568scan through the trace buffer and print out whatever collected data
9569you are interested in. Thus, if we want to examine the PC, FP, and SP
9570registers from each trace frame in the buffer, we can say this:
9571
9572@smallexample
9573(@value{GDBP}) @b{tfind start}
9574(@value{GDBP}) @b{while ($trace_frame != -1)}
9575> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
9576 $trace_frame, $pc, $sp, $fp
9577> tfind
9578> end
9579
9580Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
9581Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
9582Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
9583Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
9584Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
9585Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
9586Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
9587Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
9588Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
9589Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
9590Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
9591@end smallexample
9592
9593Or, if we want to examine the variable @code{X} at each source line in
9594the buffer:
9595
9596@smallexample
9597(@value{GDBP}) @b{tfind start}
9598(@value{GDBP}) @b{while ($trace_frame != -1)}
9599> printf "Frame %d, X == %d\n", $trace_frame, X
9600> tfind line
9601> end
9602
9603Frame 0, X = 1
9604Frame 7, X = 2
9605Frame 13, X = 255
9606@end smallexample
9607
9608@node tdump
9609@subsection @code{tdump}
9610@kindex tdump
9611@cindex dump all data collected at tracepoint
9612@cindex tracepoint data, display
9613
9614This command takes no arguments. It prints all the data collected at
9615the current trace snapshot.
9616
9617@smallexample
9618(@value{GDBP}) @b{trace 444}
9619(@value{GDBP}) @b{actions}
9620Enter actions for tracepoint #2, one per line:
9621> collect $regs, $locals, $args, gdb_long_test
9622> end
9623
9624(@value{GDBP}) @b{tstart}
9625
9626(@value{GDBP}) @b{tfind line 444}
9627#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
9628at gdb_test.c:444
9629444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
9630
9631(@value{GDBP}) @b{tdump}
9632Data collected at tracepoint 2, trace frame 1:
9633d0 0xc4aa0085 -995491707
9634d1 0x18 24
9635d2 0x80 128
9636d3 0x33 51
9637d4 0x71aea3d 119204413
9638d5 0x22 34
9639d6 0xe0 224
9640d7 0x380035 3670069
9641a0 0x19e24a 1696330
9642a1 0x3000668 50333288
9643a2 0x100 256
9644a3 0x322000 3284992
9645a4 0x3000698 50333336
9646a5 0x1ad3cc 1758156
9647fp 0x30bf3c 0x30bf3c
9648sp 0x30bf34 0x30bf34
9649ps 0x0 0
9650pc 0x20b2c8 0x20b2c8
9651fpcontrol 0x0 0
9652fpstatus 0x0 0
9653fpiaddr 0x0 0
9654p = 0x20e5b4 "gdb-test"
9655p1 = (void *) 0x11
9656p2 = (void *) 0x22
9657p3 = (void *) 0x33
9658p4 = (void *) 0x44
9659p5 = (void *) 0x55
9660p6 = (void *) 0x66
9661gdb_long_test = 17 '\021'
9662
9663(@value{GDBP})
9664@end smallexample
9665
9666@node save-tracepoints
9667@subsection @code{save-tracepoints @var{filename}}
9668@kindex save-tracepoints
9669@cindex save tracepoints for future sessions
9670
9671This command saves all current tracepoint definitions together with
9672their actions and passcounts, into a file @file{@var{filename}}
9673suitable for use in a later debugging session. To read the saved
9674tracepoint definitions, use the @code{source} command (@pxref{Command
9675Files}).
9676
9677@node Tracepoint Variables
9678@section Convenience Variables for Tracepoints
9679@cindex tracepoint variables
9680@cindex convenience variables for tracepoints
9681
9682@table @code
9683@vindex $trace_frame
9684@item (int) $trace_frame
9685The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
9686snapshot is selected.
9687
9688@vindex $tracepoint
9689@item (int) $tracepoint
9690The tracepoint for the current trace snapshot.
9691
9692@vindex $trace_line
9693@item (int) $trace_line
9694The line number for the current trace snapshot.
9695
9696@vindex $trace_file
9697@item (char []) $trace_file
9698The source file for the current trace snapshot.
9699
9700@vindex $trace_func
9701@item (char []) $trace_func
9702The name of the function containing @code{$tracepoint}.
9703@end table
9704
9705Note: @code{$trace_file} is not suitable for use in @code{printf},
9706use @code{output} instead.
9707
9708Here's a simple example of using these convenience variables for
9709stepping through all the trace snapshots and printing some of their
9710data.
9711
9712@smallexample
9713(@value{GDBP}) @b{tfind start}
9714
9715(@value{GDBP}) @b{while $trace_frame != -1}
9716> output $trace_file
9717> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
9718> tfind
9719> end
9720@end smallexample
9721
df0cd8c5
JB
9722@node Overlays
9723@chapter Debugging Programs That Use Overlays
9724@cindex overlays
9725
9726If your program is too large to fit completely in your target system's
9727memory, you can sometimes use @dfn{overlays} to work around this
9728problem. @value{GDBN} provides some support for debugging programs that
9729use overlays.
9730
9731@menu
9732* How Overlays Work:: A general explanation of overlays.
9733* Overlay Commands:: Managing overlays in @value{GDBN}.
9734* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
9735 mapped by asking the inferior.
9736* Overlay Sample Program:: A sample program using overlays.
9737@end menu
9738
9739@node How Overlays Work
9740@section How Overlays Work
9741@cindex mapped overlays
9742@cindex unmapped overlays
9743@cindex load address, overlay's
9744@cindex mapped address
9745@cindex overlay area
9746
9747Suppose you have a computer whose instruction address space is only 64
9748kilobytes long, but which has much more memory which can be accessed by
9749other means: special instructions, segment registers, or memory
9750management hardware, for example. Suppose further that you want to
9751adapt a program which is larger than 64 kilobytes to run on this system.
9752
9753One solution is to identify modules of your program which are relatively
9754independent, and need not call each other directly; call these modules
9755@dfn{overlays}. Separate the overlays from the main program, and place
9756their machine code in the larger memory. Place your main program in
9757instruction memory, but leave at least enough space there to hold the
9758largest overlay as well.
9759
9760Now, to call a function located in an overlay, you must first copy that
9761overlay's machine code from the large memory into the space set aside
9762for it in the instruction memory, and then jump to its entry point
9763there.
9764
c928edc0
AC
9765@c NB: In the below the mapped area's size is greater or equal to the
9766@c size of all overlays. This is intentional to remind the developer
9767@c that overlays don't necessarily need to be the same size.
9768
474c8240 9769@smallexample
df0cd8c5 9770@group
c928edc0
AC
9771 Data Instruction Larger
9772Address Space Address Space Address Space
9773+-----------+ +-----------+ +-----------+
9774| | | | | |
9775+-----------+ +-----------+ +-----------+<-- overlay 1
9776| program | | main | .----| overlay 1 | load address
9777| variables | | program | | +-----------+
9778| and heap | | | | | |
9779+-----------+ | | | +-----------+<-- overlay 2
9780| | +-----------+ | | | load address
9781+-----------+ | | | .-| overlay 2 |
9782 | | | | | |
9783 mapped --->+-----------+ | | +-----------+
9784 address | | | | | |
9785 | overlay | <-' | | |
9786 | area | <---' +-----------+<-- overlay 3
9787 | | <---. | | load address
9788 +-----------+ `--| overlay 3 |
9789 | | | |
9790 +-----------+ | |
9791 +-----------+
9792 | |
9793 +-----------+
9794
9795 @anchor{A code overlay}A code overlay
df0cd8c5 9796@end group
474c8240 9797@end smallexample
df0cd8c5 9798
c928edc0
AC
9799The diagram (@pxref{A code overlay}) shows a system with separate data
9800and instruction address spaces. To map an overlay, the program copies
9801its code from the larger address space to the instruction address space.
9802Since the overlays shown here all use the same mapped address, only one
9803may be mapped at a time. For a system with a single address space for
9804data and instructions, the diagram would be similar, except that the
9805program variables and heap would share an address space with the main
9806program and the overlay area.
df0cd8c5
JB
9807
9808An overlay loaded into instruction memory and ready for use is called a
9809@dfn{mapped} overlay; its @dfn{mapped address} is its address in the
9810instruction memory. An overlay not present (or only partially present)
9811in instruction memory is called @dfn{unmapped}; its @dfn{load address}
9812is its address in the larger memory. The mapped address is also called
9813the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
9814called the @dfn{load memory address}, or @dfn{LMA}.
9815
9816Unfortunately, overlays are not a completely transparent way to adapt a
9817program to limited instruction memory. They introduce a new set of
9818global constraints you must keep in mind as you design your program:
9819
9820@itemize @bullet
9821
9822@item
9823Before calling or returning to a function in an overlay, your program
9824must make sure that overlay is actually mapped. Otherwise, the call or
9825return will transfer control to the right address, but in the wrong
9826overlay, and your program will probably crash.
9827
9828@item
9829If the process of mapping an overlay is expensive on your system, you
9830will need to choose your overlays carefully to minimize their effect on
9831your program's performance.
9832
9833@item
9834The executable file you load onto your system must contain each
9835overlay's instructions, appearing at the overlay's load address, not its
9836mapped address. However, each overlay's instructions must be relocated
9837and its symbols defined as if the overlay were at its mapped address.
9838You can use GNU linker scripts to specify different load and relocation
9839addresses for pieces of your program; see @ref{Overlay Description,,,
9840ld.info, Using ld: the GNU linker}.
9841
9842@item
9843The procedure for loading executable files onto your system must be able
9844to load their contents into the larger address space as well as the
9845instruction and data spaces.
9846
9847@end itemize
9848
9849The overlay system described above is rather simple, and could be
9850improved in many ways:
9851
9852@itemize @bullet
9853
9854@item
9855If your system has suitable bank switch registers or memory management
9856hardware, you could use those facilities to make an overlay's load area
9857contents simply appear at their mapped address in instruction space.
9858This would probably be faster than copying the overlay to its mapped
9859area in the usual way.
9860
9861@item
9862If your overlays are small enough, you could set aside more than one
9863overlay area, and have more than one overlay mapped at a time.
9864
9865@item
9866You can use overlays to manage data, as well as instructions. In
9867general, data overlays are even less transparent to your design than
9868code overlays: whereas code overlays only require care when you call or
9869return to functions, data overlays require care every time you access
9870the data. Also, if you change the contents of a data overlay, you
9871must copy its contents back out to its load address before you can copy a
9872different data overlay into the same mapped area.
9873
9874@end itemize
9875
9876
9877@node Overlay Commands
9878@section Overlay Commands
9879
9880To use @value{GDBN}'s overlay support, each overlay in your program must
9881correspond to a separate section of the executable file. The section's
9882virtual memory address and load memory address must be the overlay's
9883mapped and load addresses. Identifying overlays with sections allows
9884@value{GDBN} to determine the appropriate address of a function or
9885variable, depending on whether the overlay is mapped or not.
9886
9887@value{GDBN}'s overlay commands all start with the word @code{overlay};
9888you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
9889
9890@table @code
9891@item overlay off
4644b6e3 9892@kindex overlay
df0cd8c5
JB
9893Disable @value{GDBN}'s overlay support. When overlay support is
9894disabled, @value{GDBN} assumes that all functions and variables are
9895always present at their mapped addresses. By default, @value{GDBN}'s
9896overlay support is disabled.
9897
9898@item overlay manual
df0cd8c5
JB
9899@cindex manual overlay debugging
9900Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
9901relies on you to tell it which overlays are mapped, and which are not,
9902using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
9903commands described below.
9904
9905@item overlay map-overlay @var{overlay}
9906@itemx overlay map @var{overlay}
df0cd8c5
JB
9907@cindex map an overlay
9908Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
9909be the name of the object file section containing the overlay. When an
9910overlay is mapped, @value{GDBN} assumes it can find the overlay's
9911functions and variables at their mapped addresses. @value{GDBN} assumes
9912that any other overlays whose mapped ranges overlap that of
9913@var{overlay} are now unmapped.
9914
9915@item overlay unmap-overlay @var{overlay}
9916@itemx overlay unmap @var{overlay}
df0cd8c5
JB
9917@cindex unmap an overlay
9918Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
9919must be the name of the object file section containing the overlay.
9920When an overlay is unmapped, @value{GDBN} assumes it can find the
9921overlay's functions and variables at their load addresses.
9922
9923@item overlay auto
df0cd8c5
JB
9924Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
9925consults a data structure the overlay manager maintains in the inferior
9926to see which overlays are mapped. For details, see @ref{Automatic
9927Overlay Debugging}.
9928
9929@item overlay load-target
9930@itemx overlay load
df0cd8c5
JB
9931@cindex reloading the overlay table
9932Re-read the overlay table from the inferior. Normally, @value{GDBN}
9933re-reads the table @value{GDBN} automatically each time the inferior
9934stops, so this command should only be necessary if you have changed the
9935overlay mapping yourself using @value{GDBN}. This command is only
9936useful when using automatic overlay debugging.
9937
9938@item overlay list-overlays
9939@itemx overlay list
9940@cindex listing mapped overlays
9941Display a list of the overlays currently mapped, along with their mapped
9942addresses, load addresses, and sizes.
9943
9944@end table
9945
9946Normally, when @value{GDBN} prints a code address, it includes the name
9947of the function the address falls in:
9948
474c8240 9949@smallexample
f7dc1244 9950(@value{GDBP}) print main
df0cd8c5 9951$3 = @{int ()@} 0x11a0 <main>
474c8240 9952@end smallexample
df0cd8c5
JB
9953@noindent
9954When overlay debugging is enabled, @value{GDBN} recognizes code in
9955unmapped overlays, and prints the names of unmapped functions with
9956asterisks around them. For example, if @code{foo} is a function in an
9957unmapped overlay, @value{GDBN} prints it this way:
9958
474c8240 9959@smallexample
f7dc1244 9960(@value{GDBP}) overlay list
df0cd8c5 9961No sections are mapped.
f7dc1244 9962(@value{GDBP}) print foo
df0cd8c5 9963$5 = @{int (int)@} 0x100000 <*foo*>
474c8240 9964@end smallexample
df0cd8c5
JB
9965@noindent
9966When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
9967name normally:
9968
474c8240 9969@smallexample
f7dc1244 9970(@value{GDBP}) overlay list
b383017d 9971Section .ov.foo.text, loaded at 0x100000 - 0x100034,
df0cd8c5 9972 mapped at 0x1016 - 0x104a
f7dc1244 9973(@value{GDBP}) print foo
df0cd8c5 9974$6 = @{int (int)@} 0x1016 <foo>
474c8240 9975@end smallexample
df0cd8c5
JB
9976
9977When overlay debugging is enabled, @value{GDBN} can find the correct
9978address for functions and variables in an overlay, whether or not the
9979overlay is mapped. This allows most @value{GDBN} commands, like
9980@code{break} and @code{disassemble}, to work normally, even on unmapped
9981code. However, @value{GDBN}'s breakpoint support has some limitations:
9982
9983@itemize @bullet
9984@item
9985@cindex breakpoints in overlays
9986@cindex overlays, setting breakpoints in
9987You can set breakpoints in functions in unmapped overlays, as long as
9988@value{GDBN} can write to the overlay at its load address.
9989@item
9990@value{GDBN} can not set hardware or simulator-based breakpoints in
9991unmapped overlays. However, if you set a breakpoint at the end of your
9992overlay manager (and tell @value{GDBN} which overlays are now mapped, if
9993you are using manual overlay management), @value{GDBN} will re-set its
9994breakpoints properly.
9995@end itemize
9996
9997
9998@node Automatic Overlay Debugging
9999@section Automatic Overlay Debugging
10000@cindex automatic overlay debugging
10001
10002@value{GDBN} can automatically track which overlays are mapped and which
10003are not, given some simple co-operation from the overlay manager in the
10004inferior. If you enable automatic overlay debugging with the
10005@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
10006looks in the inferior's memory for certain variables describing the
10007current state of the overlays.
10008
10009Here are the variables your overlay manager must define to support
10010@value{GDBN}'s automatic overlay debugging:
10011
10012@table @asis
10013
10014@item @code{_ovly_table}:
10015This variable must be an array of the following structures:
10016
474c8240 10017@smallexample
df0cd8c5
JB
10018struct
10019@{
10020 /* The overlay's mapped address. */
10021 unsigned long vma;
10022
10023 /* The size of the overlay, in bytes. */
10024 unsigned long size;
10025
10026 /* The overlay's load address. */
10027 unsigned long lma;
10028
10029 /* Non-zero if the overlay is currently mapped;
10030 zero otherwise. */
10031 unsigned long mapped;
10032@}
474c8240 10033@end smallexample
df0cd8c5
JB
10034
10035@item @code{_novlys}:
10036This variable must be a four-byte signed integer, holding the total
10037number of elements in @code{_ovly_table}.
10038
10039@end table
10040
10041To decide whether a particular overlay is mapped or not, @value{GDBN}
10042looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
10043@code{lma} members equal the VMA and LMA of the overlay's section in the
10044executable file. When @value{GDBN} finds a matching entry, it consults
10045the entry's @code{mapped} member to determine whether the overlay is
10046currently mapped.
10047
81d46470 10048In addition, your overlay manager may define a function called
def71bfa 10049@code{_ovly_debug_event}. If this function is defined, @value{GDBN}
81d46470
MS
10050will silently set a breakpoint there. If the overlay manager then
10051calls this function whenever it has changed the overlay table, this
10052will enable @value{GDBN} to accurately keep track of which overlays
10053are in program memory, and update any breakpoints that may be set
b383017d 10054in overlays. This will allow breakpoints to work even if the
81d46470
MS
10055overlays are kept in ROM or other non-writable memory while they
10056are not being executed.
df0cd8c5
JB
10057
10058@node Overlay Sample Program
10059@section Overlay Sample Program
10060@cindex overlay example program
10061
10062When linking a program which uses overlays, you must place the overlays
10063at their load addresses, while relocating them to run at their mapped
10064addresses. To do this, you must write a linker script (@pxref{Overlay
10065Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
10066since linker scripts are specific to a particular host system, target
10067architecture, and target memory layout, this manual cannot provide
10068portable sample code demonstrating @value{GDBN}'s overlay support.
10069
10070However, the @value{GDBN} source distribution does contain an overlaid
10071program, with linker scripts for a few systems, as part of its test
10072suite. The program consists of the following files from
10073@file{gdb/testsuite/gdb.base}:
10074
10075@table @file
10076@item overlays.c
10077The main program file.
10078@item ovlymgr.c
10079A simple overlay manager, used by @file{overlays.c}.
10080@item foo.c
10081@itemx bar.c
10082@itemx baz.c
10083@itemx grbx.c
10084Overlay modules, loaded and used by @file{overlays.c}.
10085@item d10v.ld
10086@itemx m32r.ld
10087Linker scripts for linking the test program on the @code{d10v-elf}
10088and @code{m32r-elf} targets.
10089@end table
10090
10091You can build the test program using the @code{d10v-elf} GCC
10092cross-compiler like this:
10093
474c8240 10094@smallexample
df0cd8c5
JB
10095$ d10v-elf-gcc -g -c overlays.c
10096$ d10v-elf-gcc -g -c ovlymgr.c
10097$ d10v-elf-gcc -g -c foo.c
10098$ d10v-elf-gcc -g -c bar.c
10099$ d10v-elf-gcc -g -c baz.c
10100$ d10v-elf-gcc -g -c grbx.c
10101$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
10102 baz.o grbx.o -Wl,-Td10v.ld -o overlays
474c8240 10103@end smallexample
df0cd8c5
JB
10104
10105The build process is identical for any other architecture, except that
10106you must substitute the appropriate compiler and linker script for the
10107target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
10108
10109
6d2ebf8b 10110@node Languages
c906108c
SS
10111@chapter Using @value{GDBN} with Different Languages
10112@cindex languages
10113
c906108c
SS
10114Although programming languages generally have common aspects, they are
10115rarely expressed in the same manner. For instance, in ANSI C,
10116dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
10117Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 10118represented (and displayed) differently. Hex numbers in C appear as
c906108c 10119@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
10120
10121@cindex working language
10122Language-specific information is built into @value{GDBN} for some languages,
10123allowing you to express operations like the above in your program's
10124native language, and allowing @value{GDBN} to output values in a manner
10125consistent with the syntax of your program's native language. The
10126language you use to build expressions is called the @dfn{working
10127language}.
10128
10129@menu
10130* Setting:: Switching between source languages
10131* Show:: Displaying the language
c906108c 10132* Checks:: Type and range checks
79a6e687
BW
10133* Supported Languages:: Supported languages
10134* Unsupported Languages:: Unsupported languages
c906108c
SS
10135@end menu
10136
6d2ebf8b 10137@node Setting
79a6e687 10138@section Switching Between Source Languages
c906108c
SS
10139
10140There are two ways to control the working language---either have @value{GDBN}
10141set it automatically, or select it manually yourself. You can use the
10142@code{set language} command for either purpose. On startup, @value{GDBN}
10143defaults to setting the language automatically. The working language is
10144used to determine how expressions you type are interpreted, how values
10145are printed, etc.
10146
10147In addition to the working language, every source file that
10148@value{GDBN} knows about has its own working language. For some object
10149file formats, the compiler might indicate which language a particular
10150source file is in. However, most of the time @value{GDBN} infers the
10151language from the name of the file. The language of a source file
b37052ae 10152controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 10153show each frame appropriately for its own language. There is no way to
d4f3574e
SS
10154set the language of a source file from within @value{GDBN}, but you can
10155set the language associated with a filename extension. @xref{Show, ,
79a6e687 10156Displaying the Language}.
c906108c
SS
10157
10158This is most commonly a problem when you use a program, such
5d161b24 10159as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
10160another language. In that case, make the
10161program use @code{#line} directives in its C output; that way
10162@value{GDBN} will know the correct language of the source code of the original
10163program, and will display that source code, not the generated C code.
10164
10165@menu
10166* Filenames:: Filename extensions and languages.
10167* Manually:: Setting the working language manually
10168* Automatically:: Having @value{GDBN} infer the source language
10169@end menu
10170
6d2ebf8b 10171@node Filenames
79a6e687 10172@subsection List of Filename Extensions and Languages
c906108c
SS
10173
10174If a source file name ends in one of the following extensions, then
10175@value{GDBN} infers that its language is the one indicated.
10176
10177@table @file
e07c999f
PH
10178@item .ada
10179@itemx .ads
10180@itemx .adb
10181@itemx .a
10182Ada source file.
c906108c
SS
10183
10184@item .c
10185C source file
10186
10187@item .C
10188@itemx .cc
10189@itemx .cp
10190@itemx .cpp
10191@itemx .cxx
10192@itemx .c++
b37052ae 10193C@t{++} source file
c906108c 10194
b37303ee
AF
10195@item .m
10196Objective-C source file
10197
c906108c
SS
10198@item .f
10199@itemx .F
10200Fortran source file
10201
c906108c
SS
10202@item .mod
10203Modula-2 source file
c906108c
SS
10204
10205@item .s
10206@itemx .S
10207Assembler source file. This actually behaves almost like C, but
10208@value{GDBN} does not skip over function prologues when stepping.
10209@end table
10210
10211In addition, you may set the language associated with a filename
79a6e687 10212extension. @xref{Show, , Displaying the Language}.
c906108c 10213
6d2ebf8b 10214@node Manually
79a6e687 10215@subsection Setting the Working Language
c906108c
SS
10216
10217If you allow @value{GDBN} to set the language automatically,
10218expressions are interpreted the same way in your debugging session and
10219your program.
10220
10221@kindex set language
10222If you wish, you may set the language manually. To do this, issue the
10223command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 10224a language, such as
c906108c 10225@code{c} or @code{modula-2}.
c906108c
SS
10226For a list of the supported languages, type @samp{set language}.
10227
c906108c
SS
10228Setting the language manually prevents @value{GDBN} from updating the working
10229language automatically. This can lead to confusion if you try
10230to debug a program when the working language is not the same as the
10231source language, when an expression is acceptable to both
10232languages---but means different things. For instance, if the current
10233source file were written in C, and @value{GDBN} was parsing Modula-2, a
10234command such as:
10235
474c8240 10236@smallexample
c906108c 10237print a = b + c
474c8240 10238@end smallexample
c906108c
SS
10239
10240@noindent
10241might not have the effect you intended. In C, this means to add
10242@code{b} and @code{c} and place the result in @code{a}. The result
10243printed would be the value of @code{a}. In Modula-2, this means to compare
10244@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 10245
6d2ebf8b 10246@node Automatically
79a6e687 10247@subsection Having @value{GDBN} Infer the Source Language
c906108c
SS
10248
10249To have @value{GDBN} set the working language automatically, use
10250@samp{set language local} or @samp{set language auto}. @value{GDBN}
10251then infers the working language. That is, when your program stops in a
10252frame (usually by encountering a breakpoint), @value{GDBN} sets the
10253working language to the language recorded for the function in that
10254frame. If the language for a frame is unknown (that is, if the function
10255or block corresponding to the frame was defined in a source file that
10256does not have a recognized extension), the current working language is
10257not changed, and @value{GDBN} issues a warning.
10258
10259This may not seem necessary for most programs, which are written
10260entirely in one source language. However, program modules and libraries
10261written in one source language can be used by a main program written in
10262a different source language. Using @samp{set language auto} in this
10263case frees you from having to set the working language manually.
10264
6d2ebf8b 10265@node Show
79a6e687 10266@section Displaying the Language
c906108c
SS
10267
10268The following commands help you find out which language is the
10269working language, and also what language source files were written in.
10270
c906108c
SS
10271@table @code
10272@item show language
9c16f35a 10273@kindex show language
c906108c
SS
10274Display the current working language. This is the
10275language you can use with commands such as @code{print} to
10276build and compute expressions that may involve variables in your program.
10277
10278@item info frame
4644b6e3 10279@kindex info frame@r{, show the source language}
5d161b24 10280Display the source language for this frame. This language becomes the
c906108c 10281working language if you use an identifier from this frame.
79a6e687 10282@xref{Frame Info, ,Information about a Frame}, to identify the other
c906108c
SS
10283information listed here.
10284
10285@item info source
4644b6e3 10286@kindex info source@r{, show the source language}
c906108c 10287Display the source language of this source file.
5d161b24 10288@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
10289information listed here.
10290@end table
10291
10292In unusual circumstances, you may have source files with extensions
10293not in the standard list. You can then set the extension associated
10294with a language explicitly:
10295
c906108c 10296@table @code
09d4efe1 10297@item set extension-language @var{ext} @var{language}
9c16f35a 10298@kindex set extension-language
09d4efe1
EZ
10299Tell @value{GDBN} that source files with extension @var{ext} are to be
10300assumed as written in the source language @var{language}.
c906108c
SS
10301
10302@item info extensions
9c16f35a 10303@kindex info extensions
c906108c
SS
10304List all the filename extensions and the associated languages.
10305@end table
10306
6d2ebf8b 10307@node Checks
79a6e687 10308@section Type and Range Checking
c906108c
SS
10309
10310@quotation
10311@emph{Warning:} In this release, the @value{GDBN} commands for type and range
10312checking are included, but they do not yet have any effect. This
10313section documents the intended facilities.
10314@end quotation
10315@c FIXME remove warning when type/range code added
10316
10317Some languages are designed to guard you against making seemingly common
10318errors through a series of compile- and run-time checks. These include
10319checking the type of arguments to functions and operators, and making
10320sure mathematical overflows are caught at run time. Checks such as
10321these help to ensure a program's correctness once it has been compiled
10322by eliminating type mismatches, and providing active checks for range
10323errors when your program is running.
10324
10325@value{GDBN} can check for conditions like the above if you wish.
9c16f35a
EZ
10326Although @value{GDBN} does not check the statements in your program,
10327it can check expressions entered directly into @value{GDBN} for
10328evaluation via the @code{print} command, for example. As with the
10329working language, @value{GDBN} can also decide whether or not to check
10330automatically based on your program's source language.
79a6e687 10331@xref{Supported Languages, ,Supported Languages}, for the default
9c16f35a 10332settings of supported languages.
c906108c
SS
10333
10334@menu
10335* Type Checking:: An overview of type checking
10336* Range Checking:: An overview of range checking
10337@end menu
10338
10339@cindex type checking
10340@cindex checks, type
6d2ebf8b 10341@node Type Checking
79a6e687 10342@subsection An Overview of Type Checking
c906108c
SS
10343
10344Some languages, such as Modula-2, are strongly typed, meaning that the
10345arguments to operators and functions have to be of the correct type,
10346otherwise an error occurs. These checks prevent type mismatch
10347errors from ever causing any run-time problems. For example,
10348
10349@smallexample
103501 + 2 @result{} 3
10351@exdent but
10352@error{} 1 + 2.3
10353@end smallexample
10354
10355The second example fails because the @code{CARDINAL} 1 is not
10356type-compatible with the @code{REAL} 2.3.
10357
5d161b24
DB
10358For the expressions you use in @value{GDBN} commands, you can tell the
10359@value{GDBN} type checker to skip checking;
10360to treat any mismatches as errors and abandon the expression;
10361or to only issue warnings when type mismatches occur,
c906108c
SS
10362but evaluate the expression anyway. When you choose the last of
10363these, @value{GDBN} evaluates expressions like the second example above, but
10364also issues a warning.
10365
5d161b24
DB
10366Even if you turn type checking off, there may be other reasons
10367related to type that prevent @value{GDBN} from evaluating an expression.
10368For instance, @value{GDBN} does not know how to add an @code{int} and
10369a @code{struct foo}. These particular type errors have nothing to do
10370with the language in use, and usually arise from expressions, such as
c906108c
SS
10371the one described above, which make little sense to evaluate anyway.
10372
10373Each language defines to what degree it is strict about type. For
10374instance, both Modula-2 and C require the arguments to arithmetical
10375operators to be numbers. In C, enumerated types and pointers can be
10376represented as numbers, so that they are valid arguments to mathematical
79a6e687 10377operators. @xref{Supported Languages, ,Supported Languages}, for further
c906108c
SS
10378details on specific languages.
10379
10380@value{GDBN} provides some additional commands for controlling the type checker:
10381
c906108c
SS
10382@kindex set check type
10383@kindex show check type
10384@table @code
10385@item set check type auto
10386Set type checking on or off based on the current working language.
79a6e687 10387@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
10388each language.
10389
10390@item set check type on
10391@itemx set check type off
10392Set type checking on or off, overriding the default setting for the
10393current working language. Issue a warning if the setting does not
10394match the language default. If any type mismatches occur in
d4f3574e 10395evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
10396message and aborts evaluation of the expression.
10397
10398@item set check type warn
10399Cause the type checker to issue warnings, but to always attempt to
10400evaluate the expression. Evaluating the expression may still
10401be impossible for other reasons. For example, @value{GDBN} cannot add
10402numbers and structures.
10403
10404@item show type
5d161b24 10405Show the current setting of the type checker, and whether or not @value{GDBN}
c906108c
SS
10406is setting it automatically.
10407@end table
10408
10409@cindex range checking
10410@cindex checks, range
6d2ebf8b 10411@node Range Checking
79a6e687 10412@subsection An Overview of Range Checking
c906108c
SS
10413
10414In some languages (such as Modula-2), it is an error to exceed the
10415bounds of a type; this is enforced with run-time checks. Such range
10416checking is meant to ensure program correctness by making sure
10417computations do not overflow, or indices on an array element access do
10418not exceed the bounds of the array.
10419
10420For expressions you use in @value{GDBN} commands, you can tell
10421@value{GDBN} to treat range errors in one of three ways: ignore them,
10422always treat them as errors and abandon the expression, or issue
10423warnings but evaluate the expression anyway.
10424
10425A range error can result from numerical overflow, from exceeding an
10426array index bound, or when you type a constant that is not a member
10427of any type. Some languages, however, do not treat overflows as an
10428error. In many implementations of C, mathematical overflow causes the
10429result to ``wrap around'' to lower values---for example, if @var{m} is
10430the largest integer value, and @var{s} is the smallest, then
10431
474c8240 10432@smallexample
c906108c 10433@var{m} + 1 @result{} @var{s}
474c8240 10434@end smallexample
c906108c
SS
10435
10436This, too, is specific to individual languages, and in some cases
79a6e687
BW
10437specific to individual compilers or machines. @xref{Supported Languages, ,
10438Supported Languages}, for further details on specific languages.
c906108c
SS
10439
10440@value{GDBN} provides some additional commands for controlling the range checker:
10441
c906108c
SS
10442@kindex set check range
10443@kindex show check range
10444@table @code
10445@item set check range auto
10446Set range checking on or off based on the current working language.
79a6e687 10447@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
10448each language.
10449
10450@item set check range on
10451@itemx set check range off
10452Set range checking on or off, overriding the default setting for the
10453current working language. A warning is issued if the setting does not
c3f6f71d
JM
10454match the language default. If a range error occurs and range checking is on,
10455then a message is printed and evaluation of the expression is aborted.
c906108c
SS
10456
10457@item set check range warn
10458Output messages when the @value{GDBN} range checker detects a range error,
10459but attempt to evaluate the expression anyway. Evaluating the
10460expression may still be impossible for other reasons, such as accessing
10461memory that the process does not own (a typical example from many Unix
10462systems).
10463
10464@item show range
10465Show the current setting of the range checker, and whether or not it is
10466being set automatically by @value{GDBN}.
10467@end table
c906108c 10468
79a6e687
BW
10469@node Supported Languages
10470@section Supported Languages
c906108c 10471
9c16f35a
EZ
10472@value{GDBN} supports C, C@t{++}, Objective-C, Fortran, Java, Pascal,
10473assembly, Modula-2, and Ada.
cce74817 10474@c This is false ...
c906108c
SS
10475Some @value{GDBN} features may be used in expressions regardless of the
10476language you use: the @value{GDBN} @code{@@} and @code{::} operators,
10477and the @samp{@{type@}addr} construct (@pxref{Expressions,
10478,Expressions}) can be used with the constructs of any supported
10479language.
10480
10481The following sections detail to what degree each source language is
10482supported by @value{GDBN}. These sections are not meant to be language
10483tutorials or references, but serve only as a reference guide to what the
10484@value{GDBN} expression parser accepts, and what input and output
10485formats should look like for different languages. There are many good
10486books written on each of these languages; please look to these for a
10487language reference or tutorial.
10488
c906108c 10489@menu
b37303ee 10490* C:: C and C@t{++}
b383017d 10491* Objective-C:: Objective-C
09d4efe1 10492* Fortran:: Fortran
9c16f35a 10493* Pascal:: Pascal
b37303ee 10494* Modula-2:: Modula-2
e07c999f 10495* Ada:: Ada
c906108c
SS
10496@end menu
10497
6d2ebf8b 10498@node C
b37052ae 10499@subsection C and C@t{++}
7a292a7a 10500
b37052ae
EZ
10501@cindex C and C@t{++}
10502@cindex expressions in C or C@t{++}
c906108c 10503
b37052ae 10504Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
10505to both languages. Whenever this is the case, we discuss those languages
10506together.
10507
41afff9a
EZ
10508@cindex C@t{++}
10509@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
10510@cindex @sc{gnu} C@t{++}
10511The C@t{++} debugging facilities are jointly implemented by the C@t{++}
10512compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
10513effectively, you must compile your C@t{++} programs with a supported
10514C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
10515compiler (@code{aCC}).
10516
0179ffac
DC
10517For best results when using @sc{gnu} C@t{++}, use the DWARF 2 debugging
10518format; if it doesn't work on your system, try the stabs+ debugging
10519format. You can select those formats explicitly with the @code{g++}
10520command-line options @option{-gdwarf-2} and @option{-gstabs+}.
ce9341a1
BW
10521@xref{Debugging Options,,Options for Debugging Your Program or GCC,
10522gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}.
c906108c 10523
c906108c 10524@menu
b37052ae
EZ
10525* C Operators:: C and C@t{++} operators
10526* C Constants:: C and C@t{++} constants
79a6e687 10527* C Plus Plus Expressions:: C@t{++} expressions
b37052ae
EZ
10528* C Defaults:: Default settings for C and C@t{++}
10529* C Checks:: C and C@t{++} type and range checks
c906108c 10530* Debugging C:: @value{GDBN} and C
79a6e687 10531* Debugging C Plus Plus:: @value{GDBN} features for C@t{++}
febe4383 10532* Decimal Floating Point:: Numbers in Decimal Floating Point format
c906108c 10533@end menu
c906108c 10534
6d2ebf8b 10535@node C Operators
79a6e687 10536@subsubsection C and C@t{++} Operators
7a292a7a 10537
b37052ae 10538@cindex C and C@t{++} operators
c906108c
SS
10539
10540Operators must be defined on values of specific types. For instance,
10541@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 10542often defined on groups of types.
c906108c 10543
b37052ae 10544For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
10545
10546@itemize @bullet
53a5351d 10547
c906108c 10548@item
c906108c 10549@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 10550specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
10551
10552@item
d4f3574e
SS
10553@emph{Floating-point types} include @code{float}, @code{double}, and
10554@code{long double} (if supported by the target platform).
c906108c
SS
10555
10556@item
53a5351d 10557@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
10558
10559@item
10560@emph{Scalar types} include all of the above.
53a5351d 10561
c906108c
SS
10562@end itemize
10563
10564@noindent
10565The following operators are supported. They are listed here
10566in order of increasing precedence:
10567
10568@table @code
10569@item ,
10570The comma or sequencing operator. Expressions in a comma-separated list
10571are evaluated from left to right, with the result of the entire
10572expression being the last expression evaluated.
10573
10574@item =
10575Assignment. The value of an assignment expression is the value
10576assigned. Defined on scalar types.
10577
10578@item @var{op}=
10579Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
10580and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 10581@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
10582@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
10583@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
10584
10585@item ?:
10586The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
10587of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
10588integral type.
10589
10590@item ||
10591Logical @sc{or}. Defined on integral types.
10592
10593@item &&
10594Logical @sc{and}. Defined on integral types.
10595
10596@item |
10597Bitwise @sc{or}. Defined on integral types.
10598
10599@item ^
10600Bitwise exclusive-@sc{or}. Defined on integral types.
10601
10602@item &
10603Bitwise @sc{and}. Defined on integral types.
10604
10605@item ==@r{, }!=
10606Equality and inequality. Defined on scalar types. The value of these
10607expressions is 0 for false and non-zero for true.
10608
10609@item <@r{, }>@r{, }<=@r{, }>=
10610Less than, greater than, less than or equal, greater than or equal.
10611Defined on scalar types. The value of these expressions is 0 for false
10612and non-zero for true.
10613
10614@item <<@r{, }>>
10615left shift, and right shift. Defined on integral types.
10616
10617@item @@
10618The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
10619
10620@item +@r{, }-
10621Addition and subtraction. Defined on integral types, floating-point types and
10622pointer types.
10623
10624@item *@r{, }/@r{, }%
10625Multiplication, division, and modulus. Multiplication and division are
10626defined on integral and floating-point types. Modulus is defined on
10627integral types.
10628
10629@item ++@r{, }--
10630Increment and decrement. When appearing before a variable, the
10631operation is performed before the variable is used in an expression;
10632when appearing after it, the variable's value is used before the
10633operation takes place.
10634
10635@item *
10636Pointer dereferencing. Defined on pointer types. Same precedence as
10637@code{++}.
10638
10639@item &
10640Address operator. Defined on variables. Same precedence as @code{++}.
10641
b37052ae
EZ
10642For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
10643allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
b17828ca 10644to examine the address
b37052ae 10645where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 10646stored.
c906108c
SS
10647
10648@item -
10649Negative. Defined on integral and floating-point types. Same
10650precedence as @code{++}.
10651
10652@item !
10653Logical negation. Defined on integral types. Same precedence as
10654@code{++}.
10655
10656@item ~
10657Bitwise complement operator. Defined on integral types. Same precedence as
10658@code{++}.
10659
10660
10661@item .@r{, }->
10662Structure member, and pointer-to-structure member. For convenience,
10663@value{GDBN} regards the two as equivalent, choosing whether to dereference a
10664pointer based on the stored type information.
10665Defined on @code{struct} and @code{union} data.
10666
c906108c
SS
10667@item .*@r{, }->*
10668Dereferences of pointers to members.
c906108c
SS
10669
10670@item []
10671Array indexing. @code{@var{a}[@var{i}]} is defined as
10672@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
10673
10674@item ()
10675Function parameter list. Same precedence as @code{->}.
10676
c906108c 10677@item ::
b37052ae 10678C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 10679and @code{class} types.
c906108c
SS
10680
10681@item ::
7a292a7a
SS
10682Doubled colons also represent the @value{GDBN} scope operator
10683(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
10684above.
c906108c
SS
10685@end table
10686
c906108c
SS
10687If an operator is redefined in the user code, @value{GDBN} usually
10688attempts to invoke the redefined version instead of using the operator's
10689predefined meaning.
c906108c 10690
6d2ebf8b 10691@node C Constants
79a6e687 10692@subsubsection C and C@t{++} Constants
c906108c 10693
b37052ae 10694@cindex C and C@t{++} constants
c906108c 10695
b37052ae 10696@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 10697following ways:
c906108c
SS
10698
10699@itemize @bullet
10700@item
10701Integer constants are a sequence of digits. Octal constants are
6ca652b0
EZ
10702specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
10703by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
c906108c
SS
10704@samp{l}, specifying that the constant should be treated as a
10705@code{long} value.
10706
10707@item
10708Floating point constants are a sequence of digits, followed by a decimal
10709point, followed by a sequence of digits, and optionally followed by an
10710exponent. An exponent is of the form:
10711@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
10712sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
10713A floating-point constant may also end with a letter @samp{f} or
10714@samp{F}, specifying that the constant should be treated as being of
10715the @code{float} (as opposed to the default @code{double}) type; or with
10716a letter @samp{l} or @samp{L}, which specifies a @code{long double}
10717constant.
c906108c
SS
10718
10719@item
10720Enumerated constants consist of enumerated identifiers, or their
10721integral equivalents.
10722
10723@item
10724Character constants are a single character surrounded by single quotes
10725(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 10726(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
10727be represented by a letter or by @dfn{escape sequences}, which are of
10728the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
10729of the character's ordinal value; or of the form @samp{\@var{x}}, where
10730@samp{@var{x}} is a predefined special character---for example,
10731@samp{\n} for newline.
10732
10733@item
96a2c332
SS
10734String constants are a sequence of character constants surrounded by
10735double quotes (@code{"}). Any valid character constant (as described
10736above) may appear. Double quotes within the string must be preceded by
10737a backslash, so for instance @samp{"a\"b'c"} is a string of five
10738characters.
c906108c
SS
10739
10740@item
10741Pointer constants are an integral value. You can also write pointers
10742to constants using the C operator @samp{&}.
10743
10744@item
10745Array constants are comma-separated lists surrounded by braces @samp{@{}
10746and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
10747integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
10748and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
10749@end itemize
10750
79a6e687
BW
10751@node C Plus Plus Expressions
10752@subsubsection C@t{++} Expressions
b37052ae
EZ
10753
10754@cindex expressions in C@t{++}
10755@value{GDBN} expression handling can interpret most C@t{++} expressions.
10756
0179ffac
DC
10757@cindex debugging C@t{++} programs
10758@cindex C@t{++} compilers
10759@cindex debug formats and C@t{++}
10760@cindex @value{NGCC} and C@t{++}
c906108c 10761@quotation
b37052ae 10762@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use the
0179ffac
DC
10763proper compiler and the proper debug format. Currently, @value{GDBN}
10764works best when debugging C@t{++} code that is compiled with
10765@value{NGCC} 2.95.3 or with @value{NGCC} 3.1 or newer, using the options
10766@option{-gdwarf-2} or @option{-gstabs+}. DWARF 2 is preferred over
10767stabs+. Most configurations of @value{NGCC} emit either DWARF 2 or
10768stabs+ as their default debug format, so you usually don't need to
10769specify a debug format explicitly. Other compilers and/or debug formats
10770are likely to work badly or not at all when using @value{GDBN} to debug
10771C@t{++} code.
c906108c 10772@end quotation
c906108c
SS
10773
10774@enumerate
10775
10776@cindex member functions
10777@item
10778Member function calls are allowed; you can use expressions like
10779
474c8240 10780@smallexample
c906108c 10781count = aml->GetOriginal(x, y)
474c8240 10782@end smallexample
c906108c 10783
41afff9a 10784@vindex this@r{, inside C@t{++} member functions}
b37052ae 10785@cindex namespace in C@t{++}
c906108c
SS
10786@item
10787While a member function is active (in the selected stack frame), your
10788expressions have the same namespace available as the member function;
10789that is, @value{GDBN} allows implicit references to the class instance
b37052ae 10790pointer @code{this} following the same rules as C@t{++}.
c906108c 10791
c906108c 10792@cindex call overloaded functions
d4f3574e 10793@cindex overloaded functions, calling
b37052ae 10794@cindex type conversions in C@t{++}
c906108c
SS
10795@item
10796You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 10797call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
10798perform overload resolution involving user-defined type conversions,
10799calls to constructors, or instantiations of templates that do not exist
10800in the program. It also cannot handle ellipsis argument lists or
10801default arguments.
10802
10803It does perform integral conversions and promotions, floating-point
10804promotions, arithmetic conversions, pointer conversions, conversions of
10805class objects to base classes, and standard conversions such as those of
10806functions or arrays to pointers; it requires an exact match on the
10807number of function arguments.
10808
10809Overload resolution is always performed, unless you have specified
79a6e687
BW
10810@code{set overload-resolution off}. @xref{Debugging C Plus Plus,
10811,@value{GDBN} Features for C@t{++}}.
c906108c 10812
d4f3574e 10813You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
10814explicit function signature to call an overloaded function, as in
10815@smallexample
10816p 'foo(char,int)'('x', 13)
10817@end smallexample
d4f3574e 10818
c906108c 10819The @value{GDBN} command-completion facility can simplify this;
79a6e687 10820see @ref{Completion, ,Command Completion}.
c906108c 10821
c906108c
SS
10822@cindex reference declarations
10823@item
b37052ae
EZ
10824@value{GDBN} understands variables declared as C@t{++} references; you can use
10825them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
10826dereferenced.
10827
10828In the parameter list shown when @value{GDBN} displays a frame, the values of
10829reference variables are not displayed (unlike other variables); this
10830avoids clutter, since references are often used for large structures.
10831The @emph{address} of a reference variable is always shown, unless
10832you have specified @samp{set print address off}.
10833
10834@item
b37052ae 10835@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
10836expressions can use it just as expressions in your program do. Since
10837one scope may be defined in another, you can use @code{::} repeatedly if
10838necessary, for example in an expression like
10839@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 10840resolving name scope by reference to source files, in both C and C@t{++}
79a6e687 10841debugging (@pxref{Variables, ,Program Variables}).
c906108c
SS
10842@end enumerate
10843
b37052ae 10844In addition, when used with HP's C@t{++} compiler, @value{GDBN} supports
53a5351d
JM
10845calling virtual functions correctly, printing out virtual bases of
10846objects, calling functions in a base subobject, casting objects, and
10847invoking user-defined operators.
c906108c 10848
6d2ebf8b 10849@node C Defaults
79a6e687 10850@subsubsection C and C@t{++} Defaults
7a292a7a 10851
b37052ae 10852@cindex C and C@t{++} defaults
c906108c 10853
c906108c
SS
10854If you allow @value{GDBN} to set type and range checking automatically, they
10855both default to @code{off} whenever the working language changes to
b37052ae 10856C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 10857selects the working language.
c906108c
SS
10858
10859If you allow @value{GDBN} to set the language automatically, it
10860recognizes source files whose names end with @file{.c}, @file{.C}, or
10861@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
b37052ae 10862these files, it sets the working language to C or C@t{++}.
79a6e687 10863@xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
c906108c
SS
10864for further details.
10865
c906108c
SS
10866@c Type checking is (a) primarily motivated by Modula-2, and (b)
10867@c unimplemented. If (b) changes, it might make sense to let this node
10868@c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7a292a7a 10869
6d2ebf8b 10870@node C Checks
79a6e687 10871@subsubsection C and C@t{++} Type and Range Checks
7a292a7a 10872
b37052ae 10873@cindex C and C@t{++} checks
c906108c 10874
b37052ae 10875By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
c906108c
SS
10876is not used. However, if you turn type checking on, @value{GDBN}
10877considers two variables type equivalent if:
10878
10879@itemize @bullet
10880@item
10881The two variables are structured and have the same structure, union, or
10882enumerated tag.
10883
10884@item
10885The two variables have the same type name, or types that have been
10886declared equivalent through @code{typedef}.
10887
10888@ignore
10889@c leaving this out because neither J Gilmore nor R Pesch understand it.
10890@c FIXME--beers?
10891@item
10892The two @code{struct}, @code{union}, or @code{enum} variables are
10893declared in the same declaration. (Note: this may not be true for all C
10894compilers.)
10895@end ignore
10896@end itemize
10897
10898Range checking, if turned on, is done on mathematical operations. Array
10899indices are not checked, since they are often used to index a pointer
10900that is not itself an array.
c906108c 10901
6d2ebf8b 10902@node Debugging C
c906108c 10903@subsubsection @value{GDBN} and C
c906108c
SS
10904
10905The @code{set print union} and @code{show print union} commands apply to
10906the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
10907inside a @code{struct} or @code{class} is also printed. Otherwise, it
10908appears as @samp{@{...@}}.
c906108c
SS
10909
10910The @code{@@} operator aids in the debugging of dynamic arrays, formed
10911with pointers and a memory allocation function. @xref{Expressions,
10912,Expressions}.
10913
79a6e687
BW
10914@node Debugging C Plus Plus
10915@subsubsection @value{GDBN} Features for C@t{++}
c906108c 10916
b37052ae 10917@cindex commands for C@t{++}
7a292a7a 10918
b37052ae
EZ
10919Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
10920designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
10921
10922@table @code
10923@cindex break in overloaded functions
10924@item @r{breakpoint menus}
10925When you want a breakpoint in a function whose name is overloaded,
6ba66d6a
JB
10926@value{GDBN} has the capability to display a menu of possible breakpoint
10927locations to help you specify which function definition you want.
10928@xref{Ambiguous Expressions,,Ambiguous Expressions}.
c906108c 10929
b37052ae 10930@cindex overloading in C@t{++}
c906108c
SS
10931@item rbreak @var{regex}
10932Setting breakpoints using regular expressions is helpful for setting
10933breakpoints on overloaded functions that are not members of any special
10934classes.
79a6e687 10935@xref{Set Breaks, ,Setting Breakpoints}.
c906108c 10936
b37052ae 10937@cindex C@t{++} exception handling
c906108c
SS
10938@item catch throw
10939@itemx catch catch
b37052ae 10940Debug C@t{++} exception handling using these commands. @xref{Set
79a6e687 10941Catchpoints, , Setting Catchpoints}.
c906108c
SS
10942
10943@cindex inheritance
10944@item ptype @var{typename}
10945Print inheritance relationships as well as other information for type
10946@var{typename}.
10947@xref{Symbols, ,Examining the Symbol Table}.
10948
b37052ae 10949@cindex C@t{++} symbol display
c906108c
SS
10950@item set print demangle
10951@itemx show print demangle
10952@itemx set print asm-demangle
10953@itemx show print asm-demangle
b37052ae
EZ
10954Control whether C@t{++} symbols display in their source form, both when
10955displaying code as C@t{++} source and when displaying disassemblies.
79a6e687 10956@xref{Print Settings, ,Print Settings}.
c906108c
SS
10957
10958@item set print object
10959@itemx show print object
10960Choose whether to print derived (actual) or declared types of objects.
79a6e687 10961@xref{Print Settings, ,Print Settings}.
c906108c
SS
10962
10963@item set print vtbl
10964@itemx show print vtbl
10965Control the format for printing virtual function tables.
79a6e687 10966@xref{Print Settings, ,Print Settings}.
c906108c 10967(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 10968ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
10969
10970@kindex set overload-resolution
d4f3574e 10971@cindex overloaded functions, overload resolution
c906108c 10972@item set overload-resolution on
b37052ae 10973Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
10974is on. For overloaded functions, @value{GDBN} evaluates the arguments
10975and searches for a function whose signature matches the argument types,
79a6e687
BW
10976using the standard C@t{++} conversion rules (see @ref{C Plus Plus
10977Expressions, ,C@t{++} Expressions}, for details).
10978If it cannot find a match, it emits a message.
c906108c
SS
10979
10980@item set overload-resolution off
b37052ae 10981Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
10982overloaded functions that are not class member functions, @value{GDBN}
10983chooses the first function of the specified name that it finds in the
10984symbol table, whether or not its arguments are of the correct type. For
10985overloaded functions that are class member functions, @value{GDBN}
10986searches for a function whose signature @emph{exactly} matches the
10987argument types.
c906108c 10988
9c16f35a
EZ
10989@kindex show overload-resolution
10990@item show overload-resolution
10991Show the current setting of overload resolution.
10992
c906108c
SS
10993@item @r{Overloaded symbol names}
10994You can specify a particular definition of an overloaded symbol, using
b37052ae 10995the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
10996@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
10997also use the @value{GDBN} command-line word completion facilities to list the
10998available choices, or to finish the type list for you.
79a6e687 10999@xref{Completion,, Command Completion}, for details on how to do this.
c906108c 11000@end table
c906108c 11001
febe4383
TJB
11002@node Decimal Floating Point
11003@subsubsection Decimal Floating Point format
11004@cindex decimal floating point format
11005
11006@value{GDBN} can examine, set and perform computations with numbers in
11007decimal floating point format, which in the C language correspond to the
11008@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as
11009specified by the extension to support decimal floating-point arithmetic.
11010
11011There are two encodings in use, depending on the architecture: BID (Binary
11012Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for
99e008fe 11013PowerPC. @value{GDBN} will use the appropriate encoding for the configured
febe4383
TJB
11014target.
11015
11016Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN}
11017to manipulate decimal floating point numbers, it is not possible to convert
11018(using a cast, for example) integers wider than 32-bit to decimal float.
11019
11020In addition, in order to imitate @value{GDBN}'s behaviour with binary floating
11021point computations, error checking in decimal float operations ignores
11022underflow, overflow and divide by zero exceptions.
11023
4acd40f3 11024In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers
99e008fe
EZ
11025to inspect @code{_Decimal128} values stored in floating point registers.
11026See @ref{PowerPC,,PowerPC} for more details.
4acd40f3 11027
b37303ee
AF
11028@node Objective-C
11029@subsection Objective-C
11030
11031@cindex Objective-C
11032This section provides information about some commands and command
721c2651
EZ
11033options that are useful for debugging Objective-C code. See also
11034@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a
11035few more commands specific to Objective-C support.
b37303ee
AF
11036
11037@menu
b383017d
RM
11038* Method Names in Commands::
11039* The Print Command with Objective-C::
b37303ee
AF
11040@end menu
11041
c8f4133a 11042@node Method Names in Commands
b37303ee
AF
11043@subsubsection Method Names in Commands
11044
11045The following commands have been extended to accept Objective-C method
11046names as line specifications:
11047
11048@kindex clear@r{, and Objective-C}
11049@kindex break@r{, and Objective-C}
11050@kindex info line@r{, and Objective-C}
11051@kindex jump@r{, and Objective-C}
11052@kindex list@r{, and Objective-C}
11053@itemize
11054@item @code{clear}
11055@item @code{break}
11056@item @code{info line}
11057@item @code{jump}
11058@item @code{list}
11059@end itemize
11060
11061A fully qualified Objective-C method name is specified as
11062
11063@smallexample
11064-[@var{Class} @var{methodName}]
11065@end smallexample
11066
c552b3bb
JM
11067where the minus sign is used to indicate an instance method and a
11068plus sign (not shown) is used to indicate a class method. The class
11069name @var{Class} and method name @var{methodName} are enclosed in
11070brackets, similar to the way messages are specified in Objective-C
11071source code. For example, to set a breakpoint at the @code{create}
11072instance method of class @code{Fruit} in the program currently being
11073debugged, enter:
b37303ee
AF
11074
11075@smallexample
11076break -[Fruit create]
11077@end smallexample
11078
11079To list ten program lines around the @code{initialize} class method,
11080enter:
11081
11082@smallexample
11083list +[NSText initialize]
11084@end smallexample
11085
c552b3bb
JM
11086In the current version of @value{GDBN}, the plus or minus sign is
11087required. In future versions of @value{GDBN}, the plus or minus
11088sign will be optional, but you can use it to narrow the search. It
11089is also possible to specify just a method name:
b37303ee
AF
11090
11091@smallexample
11092break create
11093@end smallexample
11094
11095You must specify the complete method name, including any colons. If
11096your program's source files contain more than one @code{create} method,
11097you'll be presented with a numbered list of classes that implement that
11098method. Indicate your choice by number, or type @samp{0} to exit if
11099none apply.
11100
11101As another example, to clear a breakpoint established at the
11102@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
11103
11104@smallexample
11105clear -[NSWindow makeKeyAndOrderFront:]
11106@end smallexample
11107
11108@node The Print Command with Objective-C
11109@subsubsection The Print Command With Objective-C
721c2651 11110@cindex Objective-C, print objects
c552b3bb
JM
11111@kindex print-object
11112@kindex po @r{(@code{print-object})}
b37303ee 11113
c552b3bb 11114The print command has also been extended to accept methods. For example:
b37303ee
AF
11115
11116@smallexample
c552b3bb 11117print -[@var{object} hash]
b37303ee
AF
11118@end smallexample
11119
11120@cindex print an Objective-C object description
c552b3bb
JM
11121@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
11122@noindent
11123will tell @value{GDBN} to send the @code{hash} message to @var{object}
11124and print the result. Also, an additional command has been added,
11125@code{print-object} or @code{po} for short, which is meant to print
11126the description of an object. However, this command may only work
11127with certain Objective-C libraries that have a particular hook
11128function, @code{_NSPrintForDebugger}, defined.
b37303ee 11129
09d4efe1
EZ
11130@node Fortran
11131@subsection Fortran
11132@cindex Fortran-specific support in @value{GDBN}
11133
814e32d7
WZ
11134@value{GDBN} can be used to debug programs written in Fortran, but it
11135currently supports only the features of Fortran 77 language.
11136
11137@cindex trailing underscore, in Fortran symbols
11138Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
11139among them) append an underscore to the names of variables and
11140functions. When you debug programs compiled by those compilers, you
11141will need to refer to variables and functions with a trailing
11142underscore.
11143
11144@menu
11145* Fortran Operators:: Fortran operators and expressions
11146* Fortran Defaults:: Default settings for Fortran
79a6e687 11147* Special Fortran Commands:: Special @value{GDBN} commands for Fortran
814e32d7
WZ
11148@end menu
11149
11150@node Fortran Operators
79a6e687 11151@subsubsection Fortran Operators and Expressions
814e32d7
WZ
11152
11153@cindex Fortran operators and expressions
11154
11155Operators must be defined on values of specific types. For instance,
11156@code{+} is defined on numbers, but not on characters or other non-
ff2587ec 11157arithmetic types. Operators are often defined on groups of types.
814e32d7
WZ
11158
11159@table @code
11160@item **
99e008fe 11161The exponentiation operator. It raises the first operand to the power
814e32d7
WZ
11162of the second one.
11163
11164@item :
11165The range operator. Normally used in the form of array(low:high) to
11166represent a section of array.
68837c9d
MD
11167
11168@item %
11169The access component operator. Normally used to access elements in derived
11170types. Also suitable for unions. As unions aren't part of regular Fortran,
11171this can only happen when accessing a register that uses a gdbarch-defined
11172union type.
814e32d7
WZ
11173@end table
11174
11175@node Fortran Defaults
11176@subsubsection Fortran Defaults
11177
11178@cindex Fortran Defaults
11179
11180Fortran symbols are usually case-insensitive, so @value{GDBN} by
11181default uses case-insensitive matches for Fortran symbols. You can
11182change that with the @samp{set case-insensitive} command, see
11183@ref{Symbols}, for the details.
11184
79a6e687
BW
11185@node Special Fortran Commands
11186@subsubsection Special Fortran Commands
814e32d7
WZ
11187
11188@cindex Special Fortran commands
11189
db2e3e2e
BW
11190@value{GDBN} has some commands to support Fortran-specific features,
11191such as displaying common blocks.
814e32d7 11192
09d4efe1
EZ
11193@table @code
11194@cindex @code{COMMON} blocks, Fortran
11195@kindex info common
11196@item info common @r{[}@var{common-name}@r{]}
11197This command prints the values contained in the Fortran @code{COMMON}
11198block whose name is @var{common-name}. With no argument, the names of
d52fb0e9 11199all @code{COMMON} blocks visible at the current program location are
09d4efe1
EZ
11200printed.
11201@end table
11202
9c16f35a
EZ
11203@node Pascal
11204@subsection Pascal
11205
11206@cindex Pascal support in @value{GDBN}, limitations
11207Debugging Pascal programs which use sets, subranges, file variables, or
11208nested functions does not currently work. @value{GDBN} does not support
11209entering expressions, printing values, or similar features using Pascal
11210syntax.
11211
11212The Pascal-specific command @code{set print pascal_static-members}
11213controls whether static members of Pascal objects are displayed.
11214@xref{Print Settings, pascal_static-members}.
11215
09d4efe1 11216@node Modula-2
c906108c 11217@subsection Modula-2
7a292a7a 11218
d4f3574e 11219@cindex Modula-2, @value{GDBN} support
c906108c
SS
11220
11221The extensions made to @value{GDBN} to support Modula-2 only support
11222output from the @sc{gnu} Modula-2 compiler (which is currently being
11223developed). Other Modula-2 compilers are not currently supported, and
11224attempting to debug executables produced by them is most likely
11225to give an error as @value{GDBN} reads in the executable's symbol
11226table.
11227
11228@cindex expressions in Modula-2
11229@menu
11230* M2 Operators:: Built-in operators
11231* Built-In Func/Proc:: Built-in functions and procedures
11232* M2 Constants:: Modula-2 constants
72019c9c 11233* M2 Types:: Modula-2 types
c906108c
SS
11234* M2 Defaults:: Default settings for Modula-2
11235* Deviations:: Deviations from standard Modula-2
11236* M2 Checks:: Modula-2 type and range checks
11237* M2 Scope:: The scope operators @code{::} and @code{.}
11238* GDB/M2:: @value{GDBN} and Modula-2
11239@end menu
11240
6d2ebf8b 11241@node M2 Operators
c906108c
SS
11242@subsubsection Operators
11243@cindex Modula-2 operators
11244
11245Operators must be defined on values of specific types. For instance,
11246@code{+} is defined on numbers, but not on structures. Operators are
11247often defined on groups of types. For the purposes of Modula-2, the
11248following definitions hold:
11249
11250@itemize @bullet
11251
11252@item
11253@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
11254their subranges.
11255
11256@item
11257@emph{Character types} consist of @code{CHAR} and its subranges.
11258
11259@item
11260@emph{Floating-point types} consist of @code{REAL}.
11261
11262@item
11263@emph{Pointer types} consist of anything declared as @code{POINTER TO
11264@var{type}}.
11265
11266@item
11267@emph{Scalar types} consist of all of the above.
11268
11269@item
11270@emph{Set types} consist of @code{SET} and @code{BITSET} types.
11271
11272@item
11273@emph{Boolean types} consist of @code{BOOLEAN}.
11274@end itemize
11275
11276@noindent
11277The following operators are supported, and appear in order of
11278increasing precedence:
11279
11280@table @code
11281@item ,
11282Function argument or array index separator.
11283
11284@item :=
11285Assignment. The value of @var{var} @code{:=} @var{value} is
11286@var{value}.
11287
11288@item <@r{, }>
11289Less than, greater than on integral, floating-point, or enumerated
11290types.
11291
11292@item <=@r{, }>=
96a2c332 11293Less than or equal to, greater than or equal to
c906108c
SS
11294on integral, floating-point and enumerated types, or set inclusion on
11295set types. Same precedence as @code{<}.
11296
11297@item =@r{, }<>@r{, }#
11298Equality and two ways of expressing inequality, valid on scalar types.
11299Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
11300available for inequality, since @code{#} conflicts with the script
11301comment character.
11302
11303@item IN
11304Set membership. Defined on set types and the types of their members.
11305Same precedence as @code{<}.
11306
11307@item OR
11308Boolean disjunction. Defined on boolean types.
11309
11310@item AND@r{, }&
d4f3574e 11311Boolean conjunction. Defined on boolean types.
c906108c
SS
11312
11313@item @@
11314The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
11315
11316@item +@r{, }-
11317Addition and subtraction on integral and floating-point types, or union
11318and difference on set types.
11319
11320@item *
11321Multiplication on integral and floating-point types, or set intersection
11322on set types.
11323
11324@item /
11325Division on floating-point types, or symmetric set difference on set
11326types. Same precedence as @code{*}.
11327
11328@item DIV@r{, }MOD
11329Integer division and remainder. Defined on integral types. Same
11330precedence as @code{*}.
11331
11332@item -
99e008fe 11333Negative. Defined on @code{INTEGER} and @code{REAL} data.
c906108c
SS
11334
11335@item ^
11336Pointer dereferencing. Defined on pointer types.
11337
11338@item NOT
11339Boolean negation. Defined on boolean types. Same precedence as
11340@code{^}.
11341
11342@item .
11343@code{RECORD} field selector. Defined on @code{RECORD} data. Same
11344precedence as @code{^}.
11345
11346@item []
11347Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
11348
11349@item ()
11350Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
11351as @code{^}.
11352
11353@item ::@r{, }.
11354@value{GDBN} and Modula-2 scope operators.
11355@end table
11356
11357@quotation
72019c9c 11358@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN}
c906108c
SS
11359treats the use of the operator @code{IN}, or the use of operators
11360@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
11361@code{<=}, and @code{>=} on sets as an error.
11362@end quotation
11363
cb51c4e0 11364
6d2ebf8b 11365@node Built-In Func/Proc
79a6e687 11366@subsubsection Built-in Functions and Procedures
cb51c4e0 11367@cindex Modula-2 built-ins
c906108c
SS
11368
11369Modula-2 also makes available several built-in procedures and functions.
11370In describing these, the following metavariables are used:
11371
11372@table @var
11373
11374@item a
11375represents an @code{ARRAY} variable.
11376
11377@item c
11378represents a @code{CHAR} constant or variable.
11379
11380@item i
11381represents a variable or constant of integral type.
11382
11383@item m
11384represents an identifier that belongs to a set. Generally used in the
11385same function with the metavariable @var{s}. The type of @var{s} should
11386be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
11387
11388@item n
11389represents a variable or constant of integral or floating-point type.
11390
11391@item r
11392represents a variable or constant of floating-point type.
11393
11394@item t
11395represents a type.
11396
11397@item v
11398represents a variable.
11399
11400@item x
11401represents a variable or constant of one of many types. See the
11402explanation of the function for details.
11403@end table
11404
11405All Modula-2 built-in procedures also return a result, described below.
11406
11407@table @code
11408@item ABS(@var{n})
11409Returns the absolute value of @var{n}.
11410
11411@item CAP(@var{c})
11412If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 11413equivalent, otherwise it returns its argument.
c906108c
SS
11414
11415@item CHR(@var{i})
11416Returns the character whose ordinal value is @var{i}.
11417
11418@item DEC(@var{v})
c3f6f71d 11419Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
11420
11421@item DEC(@var{v},@var{i})
11422Decrements the value in the variable @var{v} by @var{i}. Returns the
11423new value.
11424
11425@item EXCL(@var{m},@var{s})
11426Removes the element @var{m} from the set @var{s}. Returns the new
11427set.
11428
11429@item FLOAT(@var{i})
11430Returns the floating point equivalent of the integer @var{i}.
11431
11432@item HIGH(@var{a})
11433Returns the index of the last member of @var{a}.
11434
11435@item INC(@var{v})
c3f6f71d 11436Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
11437
11438@item INC(@var{v},@var{i})
11439Increments the value in the variable @var{v} by @var{i}. Returns the
11440new value.
11441
11442@item INCL(@var{m},@var{s})
11443Adds the element @var{m} to the set @var{s} if it is not already
11444there. Returns the new set.
11445
11446@item MAX(@var{t})
11447Returns the maximum value of the type @var{t}.
11448
11449@item MIN(@var{t})
11450Returns the minimum value of the type @var{t}.
11451
11452@item ODD(@var{i})
11453Returns boolean TRUE if @var{i} is an odd number.
11454
11455@item ORD(@var{x})
11456Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
11457value of a character is its @sc{ascii} value (on machines supporting the
11458@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
11459integral, character and enumerated types.
11460
11461@item SIZE(@var{x})
11462Returns the size of its argument. @var{x} can be a variable or a type.
11463
11464@item TRUNC(@var{r})
11465Returns the integral part of @var{r}.
11466
844781a1
GM
11467@item TSIZE(@var{x})
11468Returns the size of its argument. @var{x} can be a variable or a type.
11469
c906108c
SS
11470@item VAL(@var{t},@var{i})
11471Returns the member of the type @var{t} whose ordinal value is @var{i}.
11472@end table
11473
11474@quotation
11475@emph{Warning:} Sets and their operations are not yet supported, so
11476@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
11477an error.
11478@end quotation
11479
11480@cindex Modula-2 constants
6d2ebf8b 11481@node M2 Constants
c906108c
SS
11482@subsubsection Constants
11483
11484@value{GDBN} allows you to express the constants of Modula-2 in the following
11485ways:
11486
11487@itemize @bullet
11488
11489@item
11490Integer constants are simply a sequence of digits. When used in an
11491expression, a constant is interpreted to be type-compatible with the
11492rest of the expression. Hexadecimal integers are specified by a
11493trailing @samp{H}, and octal integers by a trailing @samp{B}.
11494
11495@item
11496Floating point constants appear as a sequence of digits, followed by a
11497decimal point and another sequence of digits. An optional exponent can
11498then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
11499@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
11500digits of the floating point constant must be valid decimal (base 10)
11501digits.
11502
11503@item
11504Character constants consist of a single character enclosed by a pair of
11505like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 11506also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
11507followed by a @samp{C}.
11508
11509@item
11510String constants consist of a sequence of characters enclosed by a
11511pair of like quotes, either single (@code{'}) or double (@code{"}).
11512Escape sequences in the style of C are also allowed. @xref{C
79a6e687 11513Constants, ,C and C@t{++} Constants}, for a brief explanation of escape
c906108c
SS
11514sequences.
11515
11516@item
11517Enumerated constants consist of an enumerated identifier.
11518
11519@item
11520Boolean constants consist of the identifiers @code{TRUE} and
11521@code{FALSE}.
11522
11523@item
11524Pointer constants consist of integral values only.
11525
11526@item
11527Set constants are not yet supported.
11528@end itemize
11529
72019c9c
GM
11530@node M2 Types
11531@subsubsection Modula-2 Types
11532@cindex Modula-2 types
11533
11534Currently @value{GDBN} can print the following data types in Modula-2
11535syntax: array types, record types, set types, pointer types, procedure
11536types, enumerated types, subrange types and base types. You can also
11537print the contents of variables declared using these type.
11538This section gives a number of simple source code examples together with
11539sample @value{GDBN} sessions.
11540
11541The first example contains the following section of code:
11542
11543@smallexample
11544VAR
11545 s: SET OF CHAR ;
11546 r: [20..40] ;
11547@end smallexample
11548
11549@noindent
11550and you can request @value{GDBN} to interrogate the type and value of
11551@code{r} and @code{s}.
11552
11553@smallexample
11554(@value{GDBP}) print s
11555@{'A'..'C', 'Z'@}
11556(@value{GDBP}) ptype s
11557SET OF CHAR
11558(@value{GDBP}) print r
1155921
11560(@value{GDBP}) ptype r
11561[20..40]
11562@end smallexample
11563
11564@noindent
11565Likewise if your source code declares @code{s} as:
11566
11567@smallexample
11568VAR
11569 s: SET ['A'..'Z'] ;
11570@end smallexample
11571
11572@noindent
11573then you may query the type of @code{s} by:
11574
11575@smallexample
11576(@value{GDBP}) ptype s
11577type = SET ['A'..'Z']
11578@end smallexample
11579
11580@noindent
11581Note that at present you cannot interactively manipulate set
11582expressions using the debugger.
11583
11584The following example shows how you might declare an array in Modula-2
11585and how you can interact with @value{GDBN} to print its type and contents:
11586
11587@smallexample
11588VAR
11589 s: ARRAY [-10..10] OF CHAR ;
11590@end smallexample
11591
11592@smallexample
11593(@value{GDBP}) ptype s
11594ARRAY [-10..10] OF CHAR
11595@end smallexample
11596
11597Note that the array handling is not yet complete and although the type
11598is printed correctly, expression handling still assumes that all
11599arrays have a lower bound of zero and not @code{-10} as in the example
844781a1 11600above.
72019c9c
GM
11601
11602Here are some more type related Modula-2 examples:
11603
11604@smallexample
11605TYPE
11606 colour = (blue, red, yellow, green) ;
11607 t = [blue..yellow] ;
11608VAR
11609 s: t ;
11610BEGIN
11611 s := blue ;
11612@end smallexample
11613
11614@noindent
11615The @value{GDBN} interaction shows how you can query the data type
11616and value of a variable.
11617
11618@smallexample
11619(@value{GDBP}) print s
11620$1 = blue
11621(@value{GDBP}) ptype t
11622type = [blue..yellow]
11623@end smallexample
11624
11625@noindent
11626In this example a Modula-2 array is declared and its contents
11627displayed. Observe that the contents are written in the same way as
11628their @code{C} counterparts.
11629
11630@smallexample
11631VAR
11632 s: ARRAY [1..5] OF CARDINAL ;
11633BEGIN
11634 s[1] := 1 ;
11635@end smallexample
11636
11637@smallexample
11638(@value{GDBP}) print s
11639$1 = @{1, 0, 0, 0, 0@}
11640(@value{GDBP}) ptype s
11641type = ARRAY [1..5] OF CARDINAL
11642@end smallexample
11643
11644The Modula-2 language interface to @value{GDBN} also understands
11645pointer types as shown in this example:
11646
11647@smallexample
11648VAR
11649 s: POINTER TO ARRAY [1..5] OF CARDINAL ;
11650BEGIN
11651 NEW(s) ;
11652 s^[1] := 1 ;
11653@end smallexample
11654
11655@noindent
11656and you can request that @value{GDBN} describes the type of @code{s}.
11657
11658@smallexample
11659(@value{GDBP}) ptype s
11660type = POINTER TO ARRAY [1..5] OF CARDINAL
11661@end smallexample
11662
11663@value{GDBN} handles compound types as we can see in this example.
11664Here we combine array types, record types, pointer types and subrange
11665types:
11666
11667@smallexample
11668TYPE
11669 foo = RECORD
11670 f1: CARDINAL ;
11671 f2: CHAR ;
11672 f3: myarray ;
11673 END ;
11674
11675 myarray = ARRAY myrange OF CARDINAL ;
11676 myrange = [-2..2] ;
11677VAR
11678 s: POINTER TO ARRAY myrange OF foo ;
11679@end smallexample
11680
11681@noindent
11682and you can ask @value{GDBN} to describe the type of @code{s} as shown
11683below.
11684
11685@smallexample
11686(@value{GDBP}) ptype s
11687type = POINTER TO ARRAY [-2..2] OF foo = RECORD
11688 f1 : CARDINAL;
11689 f2 : CHAR;
11690 f3 : ARRAY [-2..2] OF CARDINAL;
11691END
11692@end smallexample
11693
6d2ebf8b 11694@node M2 Defaults
79a6e687 11695@subsubsection Modula-2 Defaults
c906108c
SS
11696@cindex Modula-2 defaults
11697
11698If type and range checking are set automatically by @value{GDBN}, they
11699both default to @code{on} whenever the working language changes to
d4f3574e 11700Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
11701selected the working language.
11702
11703If you allow @value{GDBN} to set the language automatically, then entering
11704code compiled from a file whose name ends with @file{.mod} sets the
79a6e687
BW
11705working language to Modula-2. @xref{Automatically, ,Having @value{GDBN}
11706Infer the Source Language}, for further details.
c906108c 11707
6d2ebf8b 11708@node Deviations
79a6e687 11709@subsubsection Deviations from Standard Modula-2
c906108c
SS
11710@cindex Modula-2, deviations from
11711
11712A few changes have been made to make Modula-2 programs easier to debug.
11713This is done primarily via loosening its type strictness:
11714
11715@itemize @bullet
11716@item
11717Unlike in standard Modula-2, pointer constants can be formed by
11718integers. This allows you to modify pointer variables during
11719debugging. (In standard Modula-2, the actual address contained in a
11720pointer variable is hidden from you; it can only be modified
11721through direct assignment to another pointer variable or expression that
11722returned a pointer.)
11723
11724@item
11725C escape sequences can be used in strings and characters to represent
11726non-printable characters. @value{GDBN} prints out strings with these
11727escape sequences embedded. Single non-printable characters are
11728printed using the @samp{CHR(@var{nnn})} format.
11729
11730@item
11731The assignment operator (@code{:=}) returns the value of its right-hand
11732argument.
11733
11734@item
11735All built-in procedures both modify @emph{and} return their argument.
11736@end itemize
11737
6d2ebf8b 11738@node M2 Checks
79a6e687 11739@subsubsection Modula-2 Type and Range Checks
c906108c
SS
11740@cindex Modula-2 checks
11741
11742@quotation
11743@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
11744range checking.
11745@end quotation
11746@c FIXME remove warning when type/range checks added
11747
11748@value{GDBN} considers two Modula-2 variables type equivalent if:
11749
11750@itemize @bullet
11751@item
11752They are of types that have been declared equivalent via a @code{TYPE
11753@var{t1} = @var{t2}} statement
11754
11755@item
11756They have been declared on the same line. (Note: This is true of the
11757@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
11758@end itemize
11759
11760As long as type checking is enabled, any attempt to combine variables
11761whose types are not equivalent is an error.
11762
11763Range checking is done on all mathematical operations, assignment, array
11764index bounds, and all built-in functions and procedures.
11765
6d2ebf8b 11766@node M2 Scope
79a6e687 11767@subsubsection The Scope Operators @code{::} and @code{.}
c906108c 11768@cindex scope
41afff9a 11769@cindex @code{.}, Modula-2 scope operator
c906108c
SS
11770@cindex colon, doubled as scope operator
11771@ifinfo
41afff9a 11772@vindex colon-colon@r{, in Modula-2}
c906108c
SS
11773@c Info cannot handle :: but TeX can.
11774@end ifinfo
a67ec3f4 11775@ifnotinfo
41afff9a 11776@vindex ::@r{, in Modula-2}
a67ec3f4 11777@end ifnotinfo
c906108c
SS
11778
11779There are a few subtle differences between the Modula-2 scope operator
11780(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
11781similar syntax:
11782
474c8240 11783@smallexample
c906108c
SS
11784
11785@var{module} . @var{id}
11786@var{scope} :: @var{id}
474c8240 11787@end smallexample
c906108c
SS
11788
11789@noindent
11790where @var{scope} is the name of a module or a procedure,
11791@var{module} the name of a module, and @var{id} is any declared
11792identifier within your program, except another module.
11793
11794Using the @code{::} operator makes @value{GDBN} search the scope
11795specified by @var{scope} for the identifier @var{id}. If it is not
11796found in the specified scope, then @value{GDBN} searches all scopes
11797enclosing the one specified by @var{scope}.
11798
11799Using the @code{.} operator makes @value{GDBN} search the current scope for
11800the identifier specified by @var{id} that was imported from the
11801definition module specified by @var{module}. With this operator, it is
11802an error if the identifier @var{id} was not imported from definition
11803module @var{module}, or if @var{id} is not an identifier in
11804@var{module}.
11805
6d2ebf8b 11806@node GDB/M2
c906108c
SS
11807@subsubsection @value{GDBN} and Modula-2
11808
11809Some @value{GDBN} commands have little use when debugging Modula-2 programs.
11810Five subcommands of @code{set print} and @code{show print} apply
b37052ae 11811specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 11812@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 11813apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
11814analogue in Modula-2.
11815
11816The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 11817with any language, is not useful with Modula-2. Its
c906108c 11818intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 11819created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 11820address can be specified by an integral constant, the construct
d4f3574e 11821@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
11822
11823@cindex @code{#} in Modula-2
11824In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
11825interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 11826
e07c999f
PH
11827@node Ada
11828@subsection Ada
11829@cindex Ada
11830
11831The extensions made to @value{GDBN} for Ada only support
11832output from the @sc{gnu} Ada (GNAT) compiler.
11833Other Ada compilers are not currently supported, and
11834attempting to debug executables produced by them is most likely
11835to be difficult.
11836
11837
11838@cindex expressions in Ada
11839@menu
11840* Ada Mode Intro:: General remarks on the Ada syntax
11841 and semantics supported by Ada mode
11842 in @value{GDBN}.
11843* Omissions from Ada:: Restrictions on the Ada expression syntax.
11844* Additions to Ada:: Extensions of the Ada expression syntax.
11845* Stopping Before Main Program:: Debugging the program during elaboration.
20924a55
JB
11846* Ada Tasks:: Listing and setting breakpoints in tasks.
11847* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files
e07c999f
PH
11848* Ada Glitches:: Known peculiarities of Ada mode.
11849@end menu
11850
11851@node Ada Mode Intro
11852@subsubsection Introduction
11853@cindex Ada mode, general
11854
11855The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression
11856syntax, with some extensions.
11857The philosophy behind the design of this subset is
11858
11859@itemize @bullet
11860@item
11861That @value{GDBN} should provide basic literals and access to operations for
11862arithmetic, dereferencing, field selection, indexing, and subprogram calls,
11863leaving more sophisticated computations to subprograms written into the
11864program (which therefore may be called from @value{GDBN}).
11865
11866@item
11867That type safety and strict adherence to Ada language restrictions
11868are not particularly important to the @value{GDBN} user.
11869
11870@item
11871That brevity is important to the @value{GDBN} user.
11872@end itemize
11873
f3a2dd1a
JB
11874Thus, for brevity, the debugger acts as if all names declared in
11875user-written packages are directly visible, even if they are not visible
11876according to Ada rules, thus making it unnecessary to fully qualify most
11877names with their packages, regardless of context. Where this causes
11878ambiguity, @value{GDBN} asks the user's intent.
e07c999f
PH
11879
11880The debugger will start in Ada mode if it detects an Ada main program.
11881As for other languages, it will enter Ada mode when stopped in a program that
11882was translated from an Ada source file.
11883
11884While in Ada mode, you may use `@t{--}' for comments. This is useful
11885mostly for documenting command files. The standard @value{GDBN} comment
11886(@samp{#}) still works at the beginning of a line in Ada mode, but not in the
11887middle (to allow based literals).
11888
11889The debugger supports limited overloading. Given a subprogram call in which
11890the function symbol has multiple definitions, it will use the number of
11891actual parameters and some information about their types to attempt to narrow
11892the set of definitions. It also makes very limited use of context, preferring
11893procedures to functions in the context of the @code{call} command, and
11894functions to procedures elsewhere.
11895
11896@node Omissions from Ada
11897@subsubsection Omissions from Ada
11898@cindex Ada, omissions from
11899
11900Here are the notable omissions from the subset:
11901
11902@itemize @bullet
11903@item
11904Only a subset of the attributes are supported:
11905
11906@itemize @minus
11907@item
11908@t{'First}, @t{'Last}, and @t{'Length}
11909 on array objects (not on types and subtypes).
11910
11911@item
11912@t{'Min} and @t{'Max}.
11913
11914@item
11915@t{'Pos} and @t{'Val}.
11916
11917@item
11918@t{'Tag}.
11919
11920@item
11921@t{'Range} on array objects (not subtypes), but only as the right
11922operand of the membership (@code{in}) operator.
11923
11924@item
11925@t{'Access}, @t{'Unchecked_Access}, and
11926@t{'Unrestricted_Access} (a GNAT extension).
11927
11928@item
11929@t{'Address}.
11930@end itemize
11931
11932@item
11933The names in
11934@code{Characters.Latin_1} are not available and
11935concatenation is not implemented. Thus, escape characters in strings are
11936not currently available.
11937
11938@item
11939Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise
11940equality of representations. They will generally work correctly
11941for strings and arrays whose elements have integer or enumeration types.
11942They may not work correctly for arrays whose element
11943types have user-defined equality, for arrays of real values
11944(in particular, IEEE-conformant floating point, because of negative
11945zeroes and NaNs), and for arrays whose elements contain unused bits with
11946indeterminate values.
11947
11948@item
11949The other component-by-component array operations (@code{and}, @code{or},
11950@code{xor}, @code{not}, and relational tests other than equality)
11951are not implemented.
11952
11953@item
860701dc
PH
11954@cindex array aggregates (Ada)
11955@cindex record aggregates (Ada)
11956@cindex aggregates (Ada)
11957There is limited support for array and record aggregates. They are
11958permitted only on the right sides of assignments, as in these examples:
11959
11960@smallexample
077e0a52
JB
11961(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6)
11962(@value{GDBP}) set An_Array := (1, others => 0)
11963(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
11964(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
11965(@value{GDBP}) set A_Record := (1, "Peter", True);
11966(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True)
860701dc
PH
11967@end smallexample
11968
11969Changing a
11970discriminant's value by assigning an aggregate has an
11971undefined effect if that discriminant is used within the record.
11972However, you can first modify discriminants by directly assigning to
11973them (which normally would not be allowed in Ada), and then performing an
11974aggregate assignment. For example, given a variable @code{A_Rec}
11975declared to have a type such as:
11976
11977@smallexample
11978type Rec (Len : Small_Integer := 0) is record
11979 Id : Integer;
11980 Vals : IntArray (1 .. Len);
11981end record;
11982@end smallexample
11983
11984you can assign a value with a different size of @code{Vals} with two
11985assignments:
11986
11987@smallexample
077e0a52
JB
11988(@value{GDBP}) set A_Rec.Len := 4
11989(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
860701dc
PH
11990@end smallexample
11991
11992As this example also illustrates, @value{GDBN} is very loose about the usual
11993rules concerning aggregates. You may leave out some of the
11994components of an array or record aggregate (such as the @code{Len}
11995component in the assignment to @code{A_Rec} above); they will retain their
11996original values upon assignment. You may freely use dynamic values as
11997indices in component associations. You may even use overlapping or
11998redundant component associations, although which component values are
11999assigned in such cases is not defined.
e07c999f
PH
12000
12001@item
12002Calls to dispatching subprograms are not implemented.
12003
12004@item
12005The overloading algorithm is much more limited (i.e., less selective)
ae21e955
BW
12006than that of real Ada. It makes only limited use of the context in
12007which a subexpression appears to resolve its meaning, and it is much
12008looser in its rules for allowing type matches. As a result, some
12009function calls will be ambiguous, and the user will be asked to choose
12010the proper resolution.
e07c999f
PH
12011
12012@item
12013The @code{new} operator is not implemented.
12014
12015@item
12016Entry calls are not implemented.
12017
12018@item
12019Aside from printing, arithmetic operations on the native VAX floating-point
12020formats are not supported.
12021
12022@item
12023It is not possible to slice a packed array.
158c7665
PH
12024
12025@item
12026The names @code{True} and @code{False}, when not part of a qualified name,
12027are interpreted as if implicitly prefixed by @code{Standard}, regardless of
12028context.
12029Should your program
12030redefine these names in a package or procedure (at best a dubious practice),
12031you will have to use fully qualified names to access their new definitions.
e07c999f
PH
12032@end itemize
12033
12034@node Additions to Ada
12035@subsubsection Additions to Ada
12036@cindex Ada, deviations from
12037
12038As it does for other languages, @value{GDBN} makes certain generic
12039extensions to Ada (@pxref{Expressions}):
12040
12041@itemize @bullet
12042@item
ae21e955
BW
12043If the expression @var{E} is a variable residing in memory (typically
12044a local variable or array element) and @var{N} is a positive integer,
12045then @code{@var{E}@@@var{N}} displays the values of @var{E} and the
12046@var{N}-1 adjacent variables following it in memory as an array. In
12047Ada, this operator is generally not necessary, since its prime use is
12048in displaying parts of an array, and slicing will usually do this in
12049Ada. However, there are occasional uses when debugging programs in
12050which certain debugging information has been optimized away.
e07c999f
PH
12051
12052@item
ae21e955
BW
12053@code{@var{B}::@var{var}} means ``the variable named @var{var} that
12054appears in function or file @var{B}.'' When @var{B} is a file name,
12055you must typically surround it in single quotes.
e07c999f
PH
12056
12057@item
12058The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type
12059@var{type} that appears at address @var{addr}.''
12060
12061@item
12062A name starting with @samp{$} is a convenience variable
12063(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}).
12064@end itemize
12065
ae21e955
BW
12066In addition, @value{GDBN} provides a few other shortcuts and outright
12067additions specific to Ada:
e07c999f
PH
12068
12069@itemize @bullet
12070@item
12071The assignment statement is allowed as an expression, returning
12072its right-hand operand as its value. Thus, you may enter
12073
12074@smallexample
077e0a52
JB
12075(@value{GDBP}) set x := y + 3
12076(@value{GDBP}) print A(tmp := y + 1)
e07c999f
PH
12077@end smallexample
12078
12079@item
12080The semicolon is allowed as an ``operator,'' returning as its value
12081the value of its right-hand operand.
12082This allows, for example,
12083complex conditional breaks:
12084
12085@smallexample
077e0a52
JB
12086(@value{GDBP}) break f
12087(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100)
e07c999f
PH
12088@end smallexample
12089
12090@item
12091Rather than use catenation and symbolic character names to introduce special
12092characters into strings, one may instead use a special bracket notation,
12093which is also used to print strings. A sequence of characters of the form
12094@samp{["@var{XX}"]} within a string or character literal denotes the
12095(single) character whose numeric encoding is @var{XX} in hexadecimal. The
12096sequence of characters @samp{["""]} also denotes a single quotation mark
12097in strings. For example,
12098@smallexample
12099 "One line.["0a"]Next line.["0a"]"
12100@end smallexample
12101@noindent
ae21e955
BW
12102contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF})
12103after each period.
e07c999f
PH
12104
12105@item
12106The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and
12107@t{'Max} is optional (and is ignored in any case). For example, it is valid
12108to write
12109
12110@smallexample
077e0a52 12111(@value{GDBP}) print 'max(x, y)
e07c999f
PH
12112@end smallexample
12113
12114@item
12115When printing arrays, @value{GDBN} uses positional notation when the
12116array has a lower bound of 1, and uses a modified named notation otherwise.
ae21e955
BW
12117For example, a one-dimensional array of three integers with a lower bound
12118of 3 might print as
e07c999f
PH
12119
12120@smallexample
12121(3 => 10, 17, 1)
12122@end smallexample
12123
12124@noindent
12125That is, in contrast to valid Ada, only the first component has a @code{=>}
12126clause.
12127
12128@item
12129You may abbreviate attributes in expressions with any unique,
12130multi-character subsequence of
12131their names (an exact match gets preference).
12132For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh}
12133in place of @t{a'length}.
12134
12135@item
12136@cindex quoting Ada internal identifiers
12137Since Ada is case-insensitive, the debugger normally maps identifiers you type
12138to lower case. The GNAT compiler uses upper-case characters for
12139some of its internal identifiers, which are normally of no interest to users.
12140For the rare occasions when you actually have to look at them,
12141enclose them in angle brackets to avoid the lower-case mapping.
12142For example,
12143@smallexample
077e0a52 12144(@value{GDBP}) print <JMPBUF_SAVE>[0]
e07c999f
PH
12145@end smallexample
12146
12147@item
12148Printing an object of class-wide type or dereferencing an
12149access-to-class-wide value will display all the components of the object's
12150specific type (as indicated by its run-time tag). Likewise, component
12151selection on such a value will operate on the specific type of the
12152object.
12153
12154@end itemize
12155
12156@node Stopping Before Main Program
12157@subsubsection Stopping at the Very Beginning
12158
12159@cindex breakpointing Ada elaboration code
12160It is sometimes necessary to debug the program during elaboration, and
12161before reaching the main procedure.
12162As defined in the Ada Reference
12163Manual, the elaboration code is invoked from a procedure called
12164@code{adainit}. To run your program up to the beginning of
12165elaboration, simply use the following two commands:
12166@code{tbreak adainit} and @code{run}.
12167
20924a55
JB
12168@node Ada Tasks
12169@subsubsection Extensions for Ada Tasks
12170@cindex Ada, tasking
12171
12172Support for Ada tasks is analogous to that for threads (@pxref{Threads}).
12173@value{GDBN} provides the following task-related commands:
12174
12175@table @code
12176@kindex info tasks
12177@item info tasks
12178This command shows a list of current Ada tasks, as in the following example:
12179
12180
12181@smallexample
12182@iftex
12183@leftskip=0.5cm
12184@end iftex
12185(@value{GDBP}) info tasks
12186 ID TID P-ID Pri State Name
12187 1 8088000 0 15 Child Activation Wait main_task
12188 2 80a4000 1 15 Accept Statement b
12189 3 809a800 1 15 Child Activation Wait a
32cd1edc 12190* 4 80ae800 3 15 Runnable c
20924a55
JB
12191
12192@end smallexample
12193
12194@noindent
12195In this listing, the asterisk before the last task indicates it to be the
12196task currently being inspected.
12197
12198@table @asis
12199@item ID
12200Represents @value{GDBN}'s internal task number.
12201
12202@item TID
12203The Ada task ID.
12204
12205@item P-ID
12206The parent's task ID (@value{GDBN}'s internal task number).
12207
12208@item Pri
12209The base priority of the task.
12210
12211@item State
12212Current state of the task.
12213
12214@table @code
12215@item Unactivated
12216The task has been created but has not been activated. It cannot be
12217executing.
12218
20924a55
JB
12219@item Runnable
12220The task is not blocked for any reason known to Ada. (It may be waiting
12221for a mutex, though.) It is conceptually "executing" in normal mode.
12222
12223@item Terminated
12224The task is terminated, in the sense of ARM 9.3 (5). Any dependents
12225that were waiting on terminate alternatives have been awakened and have
12226terminated themselves.
12227
12228@item Child Activation Wait
12229The task is waiting for created tasks to complete activation.
12230
12231@item Accept Statement
12232The task is waiting on an accept or selective wait statement.
12233
12234@item Waiting on entry call
12235The task is waiting on an entry call.
12236
12237@item Async Select Wait
12238The task is waiting to start the abortable part of an asynchronous
12239select statement.
12240
12241@item Delay Sleep
12242The task is waiting on a select statement with only a delay
12243alternative open.
12244
12245@item Child Termination Wait
12246The task is sleeping having completed a master within itself, and is
12247waiting for the tasks dependent on that master to become terminated or
12248waiting on a terminate Phase.
12249
12250@item Wait Child in Term Alt
12251The task is sleeping waiting for tasks on terminate alternatives to
12252finish terminating.
12253
12254@item Accepting RV with @var{taskno}
12255The task is accepting a rendez-vous with the task @var{taskno}.
12256@end table
12257
12258@item Name
12259Name of the task in the program.
12260
12261@end table
12262
12263@kindex info task @var{taskno}
12264@item info task @var{taskno}
12265This command shows detailled informations on the specified task, as in
12266the following example:
12267@smallexample
12268@iftex
12269@leftskip=0.5cm
12270@end iftex
12271(@value{GDBP}) info tasks
12272 ID TID P-ID Pri State Name
12273 1 8077880 0 15 Child Activation Wait main_task
32cd1edc 12274* 2 807c468 1 15 Runnable task_1
20924a55
JB
12275(@value{GDBP}) info task 2
12276Ada Task: 0x807c468
12277Name: task_1
12278Thread: 0x807f378
12279Parent: 1 (main_task)
12280Base Priority: 15
12281State: Runnable
12282@end smallexample
12283
12284@item task
12285@kindex task@r{ (Ada)}
12286@cindex current Ada task ID
12287This command prints the ID of the current task.
12288
12289@smallexample
12290@iftex
12291@leftskip=0.5cm
12292@end iftex
12293(@value{GDBP}) info tasks
12294 ID TID P-ID Pri State Name
12295 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 12296* 2 807c458 1 15 Runnable t
20924a55
JB
12297(@value{GDBP}) task
12298[Current task is 2]
12299@end smallexample
12300
12301@item task @var{taskno}
12302@cindex Ada task switching
12303This command is like the @code{thread @var{threadno}}
12304command (@pxref{Threads}). It switches the context of debugging
12305from the current task to the given task.
12306
12307@smallexample
12308@iftex
12309@leftskip=0.5cm
12310@end iftex
12311(@value{GDBP}) info tasks
12312 ID TID P-ID Pri State Name
12313 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 12314* 2 807c458 1 15 Runnable t
20924a55
JB
12315(@value{GDBP}) task 1
12316[Switching to task 1]
12317#0 0x8067726 in pthread_cond_wait ()
12318(@value{GDBP}) bt
12319#0 0x8067726 in pthread_cond_wait ()
12320#1 0x8056714 in system.os_interface.pthread_cond_wait ()
12321#2 0x805cb63 in system.task_primitives.operations.sleep ()
12322#3 0x806153e in system.tasking.stages.activate_tasks ()
12323#4 0x804aacc in un () at un.adb:5
12324@end smallexample
12325
45ac276d
JB
12326@item break @var{linespec} task @var{taskno}
12327@itemx break @var{linespec} task @var{taskno} if @dots{}
12328@cindex breakpoints and tasks, in Ada
12329@cindex task breakpoints, in Ada
12330@kindex break @dots{} task @var{taskno}@r{ (Ada)}
12331These commands are like the @code{break @dots{} thread @dots{}}
12332command (@pxref{Thread Stops}).
12333@var{linespec} specifies source lines, as described
12334in @ref{Specify Location}.
12335
12336Use the qualifier @samp{task @var{taskno}} with a breakpoint command
12337to specify that you only want @value{GDBN} to stop the program when a
12338particular Ada task reaches this breakpoint. @var{taskno} is one of the
12339numeric task identifiers assigned by @value{GDBN}, shown in the first
12340column of the @samp{info tasks} display.
12341
12342If you do not specify @samp{task @var{taskno}} when you set a
12343breakpoint, the breakpoint applies to @emph{all} tasks of your
12344program.
12345
12346You can use the @code{task} qualifier on conditional breakpoints as
12347well; in this case, place @samp{task @var{taskno}} before the
12348breakpoint condition (before the @code{if}).
12349
12350For example,
12351
12352@smallexample
12353@iftex
12354@leftskip=0.5cm
12355@end iftex
12356(@value{GDBP}) info tasks
12357 ID TID P-ID Pri State Name
12358 1 140022020 0 15 Child Activation Wait main_task
12359 2 140045060 1 15 Accept/Select Wait t2
12360 3 140044840 1 15 Runnable t1
12361* 4 140056040 1 15 Runnable t3
12362(@value{GDBP}) b 15 task 2
12363Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15.
12364(@value{GDBP}) cont
12365Continuing.
12366task # 1 running
12367task # 2 running
12368
12369Breakpoint 5, test_task_debug () at test_task_debug.adb:15
1237015 flush;
12371(@value{GDBP}) info tasks
12372 ID TID P-ID Pri State Name
12373 1 140022020 0 15 Child Activation Wait main_task
12374* 2 140045060 1 15 Runnable t2
12375 3 140044840 1 15 Runnable t1
12376 4 140056040 1 15 Delay Sleep t3
12377@end smallexample
20924a55
JB
12378@end table
12379
12380@node Ada Tasks and Core Files
12381@subsubsection Tasking Support when Debugging Core Files
12382@cindex Ada tasking and core file debugging
12383
12384When inspecting a core file, as opposed to debugging a live program,
12385tasking support may be limited or even unavailable, depending on
12386the platform being used.
12387For instance, on x86-linux, the list of tasks is available, but task
12388switching is not supported. On Tru64, however, task switching will work
12389as usual.
12390
12391On certain platforms, including Tru64, the debugger needs to perform some
12392memory writes in order to provide Ada tasking support. When inspecting
12393a core file, this means that the core file must be opened with read-write
12394privileges, using the command @samp{"set write on"} (@pxref{Patching}).
12395Under these circumstances, you should make a backup copy of the core
12396file before inspecting it with @value{GDBN}.
12397
e07c999f
PH
12398@node Ada Glitches
12399@subsubsection Known Peculiarities of Ada Mode
12400@cindex Ada, problems
12401
12402Besides the omissions listed previously (@pxref{Omissions from Ada}),
12403we know of several problems with and limitations of Ada mode in
12404@value{GDBN},
12405some of which will be fixed with planned future releases of the debugger
12406and the GNU Ada compiler.
12407
12408@itemize @bullet
12409@item
12410Currently, the debugger
12411has insufficient information to determine whether certain pointers represent
12412pointers to objects or the objects themselves.
12413Thus, the user may have to tack an extra @code{.all} after an expression
12414to get it printed properly.
12415
12416@item
12417Static constants that the compiler chooses not to materialize as objects in
12418storage are invisible to the debugger.
12419
12420@item
12421Named parameter associations in function argument lists are ignored (the
12422argument lists are treated as positional).
12423
12424@item
12425Many useful library packages are currently invisible to the debugger.
12426
12427@item
12428Fixed-point arithmetic, conversions, input, and output is carried out using
12429floating-point arithmetic, and may give results that only approximate those on
12430the host machine.
12431
e07c999f
PH
12432@item
12433The GNAT compiler never generates the prefix @code{Standard} for any of
12434the standard symbols defined by the Ada language. @value{GDBN} knows about
12435this: it will strip the prefix from names when you use it, and will never
12436look for a name you have so qualified among local symbols, nor match against
12437symbols in other packages or subprograms. If you have
12438defined entities anywhere in your program other than parameters and
12439local variables whose simple names match names in @code{Standard},
12440GNAT's lack of qualification here can cause confusion. When this happens,
12441you can usually resolve the confusion
12442by qualifying the problematic names with package
12443@code{Standard} explicitly.
12444@end itemize
12445
79a6e687
BW
12446@node Unsupported Languages
12447@section Unsupported Languages
4e562065
JB
12448
12449@cindex unsupported languages
12450@cindex minimal language
12451In addition to the other fully-supported programming languages,
12452@value{GDBN} also provides a pseudo-language, called @code{minimal}.
12453It does not represent a real programming language, but provides a set
12454of capabilities close to what the C or assembly languages provide.
12455This should allow most simple operations to be performed while debugging
12456an application that uses a language currently not supported by @value{GDBN}.
12457
12458If the language is set to @code{auto}, @value{GDBN} will automatically
12459select this language if the current frame corresponds to an unsupported
12460language.
12461
6d2ebf8b 12462@node Symbols
c906108c
SS
12463@chapter Examining the Symbol Table
12464
d4f3574e 12465The commands described in this chapter allow you to inquire about the
c906108c
SS
12466symbols (names of variables, functions and types) defined in your
12467program. This information is inherent in the text of your program and
12468does not change as your program executes. @value{GDBN} finds it in your
12469program's symbol table, in the file indicated when you started @value{GDBN}
79a6e687
BW
12470(@pxref{File Options, ,Choosing Files}), or by one of the
12471file-management commands (@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
12472
12473@cindex symbol names
12474@cindex names of symbols
12475@cindex quoting names
12476Occasionally, you may need to refer to symbols that contain unusual
12477characters, which @value{GDBN} ordinarily treats as word delimiters. The
12478most frequent case is in referring to static variables in other
79a6e687 12479source files (@pxref{Variables,,Program Variables}). File names
c906108c
SS
12480are recorded in object files as debugging symbols, but @value{GDBN} would
12481ordinarily parse a typical file name, like @file{foo.c}, as the three words
12482@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
12483@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
12484
474c8240 12485@smallexample
c906108c 12486p 'foo.c'::x
474c8240 12487@end smallexample
c906108c
SS
12488
12489@noindent
12490looks up the value of @code{x} in the scope of the file @file{foo.c}.
12491
12492@table @code
a8f24a35
EZ
12493@cindex case-insensitive symbol names
12494@cindex case sensitivity in symbol names
12495@kindex set case-sensitive
12496@item set case-sensitive on
12497@itemx set case-sensitive off
12498@itemx set case-sensitive auto
12499Normally, when @value{GDBN} looks up symbols, it matches their names
12500with case sensitivity determined by the current source language.
12501Occasionally, you may wish to control that. The command @code{set
12502case-sensitive} lets you do that by specifying @code{on} for
12503case-sensitive matches or @code{off} for case-insensitive ones. If
12504you specify @code{auto}, case sensitivity is reset to the default
12505suitable for the source language. The default is case-sensitive
12506matches for all languages except for Fortran, for which the default is
12507case-insensitive matches.
12508
9c16f35a
EZ
12509@kindex show case-sensitive
12510@item show case-sensitive
a8f24a35
EZ
12511This command shows the current setting of case sensitivity for symbols
12512lookups.
12513
c906108c 12514@kindex info address
b37052ae 12515@cindex address of a symbol
c906108c
SS
12516@item info address @var{symbol}
12517Describe where the data for @var{symbol} is stored. For a register
12518variable, this says which register it is kept in. For a non-register
12519local variable, this prints the stack-frame offset at which the variable
12520is always stored.
12521
12522Note the contrast with @samp{print &@var{symbol}}, which does not work
12523at all for a register variable, and for a stack local variable prints
12524the exact address of the current instantiation of the variable.
12525
3d67e040 12526@kindex info symbol
b37052ae 12527@cindex symbol from address
9c16f35a 12528@cindex closest symbol and offset for an address
3d67e040
EZ
12529@item info symbol @var{addr}
12530Print the name of a symbol which is stored at the address @var{addr}.
12531If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
12532nearest symbol and an offset from it:
12533
474c8240 12534@smallexample
3d67e040
EZ
12535(@value{GDBP}) info symbol 0x54320
12536_initialize_vx + 396 in section .text
474c8240 12537@end smallexample
3d67e040
EZ
12538
12539@noindent
12540This is the opposite of the @code{info address} command. You can use
12541it to find out the name of a variable or a function given its address.
12542
c14c28ba
PP
12543For dynamically linked executables, the name of executable or shared
12544library containing the symbol is also printed:
12545
12546@smallexample
12547(@value{GDBP}) info symbol 0x400225
12548_start + 5 in section .text of /tmp/a.out
12549(@value{GDBP}) info symbol 0x2aaaac2811cf
12550__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6
12551@end smallexample
12552
c906108c 12553@kindex whatis
62f3a2ba
FF
12554@item whatis [@var{arg}]
12555Print the data type of @var{arg}, which can be either an expression or
12556a data type. With no argument, print the data type of @code{$}, the
12557last value in the value history. If @var{arg} is an expression, it is
12558not actually evaluated, and any side-effecting operations (such as
12559assignments or function calls) inside it do not take place. If
12560@var{arg} is a type name, it may be the name of a type or typedef, or
12561for C code it may have the form @samp{class @var{class-name}},
12562@samp{struct @var{struct-tag}}, @samp{union @var{union-tag}} or
12563@samp{enum @var{enum-tag}}.
c906108c
SS
12564@xref{Expressions, ,Expressions}.
12565
c906108c 12566@kindex ptype
62f3a2ba
FF
12567@item ptype [@var{arg}]
12568@code{ptype} accepts the same arguments as @code{whatis}, but prints a
12569detailed description of the type, instead of just the name of the type.
12570@xref{Expressions, ,Expressions}.
c906108c
SS
12571
12572For example, for this variable declaration:
12573
474c8240 12574@smallexample
c906108c 12575struct complex @{double real; double imag;@} v;
474c8240 12576@end smallexample
c906108c
SS
12577
12578@noindent
12579the two commands give this output:
12580
474c8240 12581@smallexample
c906108c
SS
12582@group
12583(@value{GDBP}) whatis v
12584type = struct complex
12585(@value{GDBP}) ptype v
12586type = struct complex @{
12587 double real;
12588 double imag;
12589@}
12590@end group
474c8240 12591@end smallexample
c906108c
SS
12592
12593@noindent
12594As with @code{whatis}, using @code{ptype} without an argument refers to
12595the type of @code{$}, the last value in the value history.
12596
ab1adacd
EZ
12597@cindex incomplete type
12598Sometimes, programs use opaque data types or incomplete specifications
12599of complex data structure. If the debug information included in the
12600program does not allow @value{GDBN} to display a full declaration of
12601the data type, it will say @samp{<incomplete type>}. For example,
12602given these declarations:
12603
12604@smallexample
12605 struct foo;
12606 struct foo *fooptr;
12607@end smallexample
12608
12609@noindent
12610but no definition for @code{struct foo} itself, @value{GDBN} will say:
12611
12612@smallexample
ddb50cd7 12613 (@value{GDBP}) ptype foo
ab1adacd
EZ
12614 $1 = <incomplete type>
12615@end smallexample
12616
12617@noindent
12618``Incomplete type'' is C terminology for data types that are not
12619completely specified.
12620
c906108c
SS
12621@kindex info types
12622@item info types @var{regexp}
12623@itemx info types
09d4efe1
EZ
12624Print a brief description of all types whose names match the regular
12625expression @var{regexp} (or all types in your program, if you supply
12626no argument). Each complete typename is matched as though it were a
12627complete line; thus, @samp{i type value} gives information on all
12628types in your program whose names include the string @code{value}, but
12629@samp{i type ^value$} gives information only on types whose complete
12630name is @code{value}.
c906108c
SS
12631
12632This command differs from @code{ptype} in two ways: first, like
12633@code{whatis}, it does not print a detailed description; second, it
12634lists all source files where a type is defined.
12635
b37052ae
EZ
12636@kindex info scope
12637@cindex local variables
09d4efe1 12638@item info scope @var{location}
b37052ae 12639List all the variables local to a particular scope. This command
09d4efe1
EZ
12640accepts a @var{location} argument---a function name, a source line, or
12641an address preceded by a @samp{*}, and prints all the variables local
2a25a5ba
EZ
12642to the scope defined by that location. (@xref{Specify Location}, for
12643details about supported forms of @var{location}.) For example:
b37052ae
EZ
12644
12645@smallexample
12646(@value{GDBP}) @b{info scope command_line_handler}
12647Scope for command_line_handler:
12648Symbol rl is an argument at stack/frame offset 8, length 4.
12649Symbol linebuffer is in static storage at address 0x150a18, length 4.
12650Symbol linelength is in static storage at address 0x150a1c, length 4.
12651Symbol p is a local variable in register $esi, length 4.
12652Symbol p1 is a local variable in register $ebx, length 4.
12653Symbol nline is a local variable in register $edx, length 4.
12654Symbol repeat is a local variable at frame offset -8, length 4.
12655@end smallexample
12656
f5c37c66
EZ
12657@noindent
12658This command is especially useful for determining what data to collect
12659during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
12660collect}.
12661
c906108c
SS
12662@kindex info source
12663@item info source
919d772c
JB
12664Show information about the current source file---that is, the source file for
12665the function containing the current point of execution:
12666@itemize @bullet
12667@item
12668the name of the source file, and the directory containing it,
12669@item
12670the directory it was compiled in,
12671@item
12672its length, in lines,
12673@item
12674which programming language it is written in,
12675@item
12676whether the executable includes debugging information for that file, and
12677if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
12678@item
12679whether the debugging information includes information about
12680preprocessor macros.
12681@end itemize
12682
c906108c
SS
12683
12684@kindex info sources
12685@item info sources
12686Print the names of all source files in your program for which there is
12687debugging information, organized into two lists: files whose symbols
12688have already been read, and files whose symbols will be read when needed.
12689
12690@kindex info functions
12691@item info functions
12692Print the names and data types of all defined functions.
12693
12694@item info functions @var{regexp}
12695Print the names and data types of all defined functions
12696whose names contain a match for regular expression @var{regexp}.
12697Thus, @samp{info fun step} finds all functions whose names
12698include @code{step}; @samp{info fun ^step} finds those whose names
b383017d 12699start with @code{step}. If a function name contains characters
c1468174 12700that conflict with the regular expression language (e.g.@:
1c5dfdad 12701@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
12702
12703@kindex info variables
12704@item info variables
12705Print the names and data types of all variables that are declared
6ca652b0 12706outside of functions (i.e.@: excluding local variables).
c906108c
SS
12707
12708@item info variables @var{regexp}
12709Print the names and data types of all variables (except for local
12710variables) whose names contain a match for regular expression
12711@var{regexp}.
12712
b37303ee 12713@kindex info classes
721c2651 12714@cindex Objective-C, classes and selectors
b37303ee
AF
12715@item info classes
12716@itemx info classes @var{regexp}
12717Display all Objective-C classes in your program, or
12718(with the @var{regexp} argument) all those matching a particular regular
12719expression.
12720
12721@kindex info selectors
12722@item info selectors
12723@itemx info selectors @var{regexp}
12724Display all Objective-C selectors in your program, or
12725(with the @var{regexp} argument) all those matching a particular regular
12726expression.
12727
c906108c
SS
12728@ignore
12729This was never implemented.
12730@kindex info methods
12731@item info methods
12732@itemx info methods @var{regexp}
12733The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
12734methods within C@t{++} program, or (with the @var{regexp} argument) a
12735specific set of methods found in the various C@t{++} classes. Many
12736C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
12737from the @code{ptype} command can be overwhelming and hard to use. The
12738@code{info-methods} command filters the methods, printing only those
12739which match the regular-expression @var{regexp}.
12740@end ignore
12741
c906108c
SS
12742@cindex reloading symbols
12743Some systems allow individual object files that make up your program to
7a292a7a
SS
12744be replaced without stopping and restarting your program. For example,
12745in VxWorks you can simply recompile a defective object file and keep on
12746running. If you are running on one of these systems, you can allow
12747@value{GDBN} to reload the symbols for automatically relinked modules:
c906108c
SS
12748
12749@table @code
12750@kindex set symbol-reloading
12751@item set symbol-reloading on
12752Replace symbol definitions for the corresponding source file when an
12753object file with a particular name is seen again.
12754
12755@item set symbol-reloading off
6d2ebf8b
SS
12756Do not replace symbol definitions when encountering object files of the
12757same name more than once. This is the default state; if you are not
12758running on a system that permits automatic relinking of modules, you
12759should leave @code{symbol-reloading} off, since otherwise @value{GDBN}
12760may discard symbols when linking large programs, that may contain
12761several modules (from different directories or libraries) with the same
12762name.
c906108c
SS
12763
12764@kindex show symbol-reloading
12765@item show symbol-reloading
12766Show the current @code{on} or @code{off} setting.
12767@end table
c906108c 12768
9c16f35a 12769@cindex opaque data types
c906108c
SS
12770@kindex set opaque-type-resolution
12771@item set opaque-type-resolution on
12772Tell @value{GDBN} to resolve opaque types. An opaque type is a type
12773declared as a pointer to a @code{struct}, @code{class}, or
12774@code{union}---for example, @code{struct MyType *}---that is used in one
12775source file although the full declaration of @code{struct MyType} is in
12776another source file. The default is on.
12777
12778A change in the setting of this subcommand will not take effect until
12779the next time symbols for a file are loaded.
12780
12781@item set opaque-type-resolution off
12782Tell @value{GDBN} not to resolve opaque types. In this case, the type
12783is printed as follows:
12784@smallexample
12785@{<no data fields>@}
12786@end smallexample
12787
12788@kindex show opaque-type-resolution
12789@item show opaque-type-resolution
12790Show whether opaque types are resolved or not.
c906108c
SS
12791
12792@kindex maint print symbols
12793@cindex symbol dump
12794@kindex maint print psymbols
12795@cindex partial symbol dump
12796@item maint print symbols @var{filename}
12797@itemx maint print psymbols @var{filename}
12798@itemx maint print msymbols @var{filename}
12799Write a dump of debugging symbol data into the file @var{filename}.
12800These commands are used to debug the @value{GDBN} symbol-reading code. Only
12801symbols with debugging data are included. If you use @samp{maint print
12802symbols}, @value{GDBN} includes all the symbols for which it has already
12803collected full details: that is, @var{filename} reflects symbols for
12804only those files whose symbols @value{GDBN} has read. You can use the
12805command @code{info sources} to find out which files these are. If you
12806use @samp{maint print psymbols} instead, the dump shows information about
12807symbols that @value{GDBN} only knows partially---that is, symbols defined in
12808files that @value{GDBN} has skimmed, but not yet read completely. Finally,
12809@samp{maint print msymbols} dumps just the minimal symbol information
12810required for each object file from which @value{GDBN} has read some symbols.
79a6e687 12811@xref{Files, ,Commands to Specify Files}, for a discussion of how
c906108c 12812@value{GDBN} reads symbols (in the description of @code{symbol-file}).
44ea7b70 12813
5e7b2f39
JB
12814@kindex maint info symtabs
12815@kindex maint info psymtabs
44ea7b70
JB
12816@cindex listing @value{GDBN}'s internal symbol tables
12817@cindex symbol tables, listing @value{GDBN}'s internal
12818@cindex full symbol tables, listing @value{GDBN}'s internal
12819@cindex partial symbol tables, listing @value{GDBN}'s internal
5e7b2f39
JB
12820@item maint info symtabs @r{[} @var{regexp} @r{]}
12821@itemx maint info psymtabs @r{[} @var{regexp} @r{]}
44ea7b70
JB
12822
12823List the @code{struct symtab} or @code{struct partial_symtab}
12824structures whose names match @var{regexp}. If @var{regexp} is not
12825given, list them all. The output includes expressions which you can
12826copy into a @value{GDBN} debugging this one to examine a particular
12827structure in more detail. For example:
12828
12829@smallexample
5e7b2f39 12830(@value{GDBP}) maint info psymtabs dwarf2read
44ea7b70
JB
12831@{ objfile /home/gnu/build/gdb/gdb
12832 ((struct objfile *) 0x82e69d0)
b383017d 12833 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
12834 ((struct partial_symtab *) 0x8474b10)
12835 readin no
12836 fullname (null)
12837 text addresses 0x814d3c8 -- 0x8158074
12838 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
12839 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
12840 dependencies (none)
12841 @}
12842@}
5e7b2f39 12843(@value{GDBP}) maint info symtabs
44ea7b70
JB
12844(@value{GDBP})
12845@end smallexample
12846@noindent
12847We see that there is one partial symbol table whose filename contains
12848the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
12849and we see that @value{GDBN} has not read in any symtabs yet at all.
12850If we set a breakpoint on a function, that will cause @value{GDBN} to
12851read the symtab for the compilation unit containing that function:
12852
12853@smallexample
12854(@value{GDBP}) break dwarf2_psymtab_to_symtab
12855Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
12856line 1574.
5e7b2f39 12857(@value{GDBP}) maint info symtabs
b383017d 12858@{ objfile /home/gnu/build/gdb/gdb
44ea7b70 12859 ((struct objfile *) 0x82e69d0)
b383017d 12860 @{ symtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
12861 ((struct symtab *) 0x86c1f38)
12862 dirname (null)
12863 fullname (null)
12864 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
1b39d5c0 12865 linetable ((struct linetable *) 0x8370fa0)
44ea7b70
JB
12866 debugformat DWARF 2
12867 @}
12868@}
b383017d 12869(@value{GDBP})
44ea7b70 12870@end smallexample
c906108c
SS
12871@end table
12872
44ea7b70 12873
6d2ebf8b 12874@node Altering
c906108c
SS
12875@chapter Altering Execution
12876
12877Once you think you have found an error in your program, you might want to
12878find out for certain whether correcting the apparent error would lead to
12879correct results in the rest of the run. You can find the answer by
12880experiment, using the @value{GDBN} features for altering execution of the
12881program.
12882
12883For example, you can store new values into variables or memory
7a292a7a
SS
12884locations, give your program a signal, restart it at a different
12885address, or even return prematurely from a function.
c906108c
SS
12886
12887@menu
12888* Assignment:: Assignment to variables
12889* Jumping:: Continuing at a different address
c906108c 12890* Signaling:: Giving your program a signal
c906108c
SS
12891* Returning:: Returning from a function
12892* Calling:: Calling your program's functions
12893* Patching:: Patching your program
12894@end menu
12895
6d2ebf8b 12896@node Assignment
79a6e687 12897@section Assignment to Variables
c906108c
SS
12898
12899@cindex assignment
12900@cindex setting variables
12901To alter the value of a variable, evaluate an assignment expression.
12902@xref{Expressions, ,Expressions}. For example,
12903
474c8240 12904@smallexample
c906108c 12905print x=4
474c8240 12906@end smallexample
c906108c
SS
12907
12908@noindent
12909stores the value 4 into the variable @code{x}, and then prints the
5d161b24 12910value of the assignment expression (which is 4).
c906108c
SS
12911@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
12912information on operators in supported languages.
c906108c
SS
12913
12914@kindex set variable
12915@cindex variables, setting
12916If you are not interested in seeing the value of the assignment, use the
12917@code{set} command instead of the @code{print} command. @code{set} is
12918really the same as @code{print} except that the expression's value is
12919not printed and is not put in the value history (@pxref{Value History,
79a6e687 12920,Value History}). The expression is evaluated only for its effects.
c906108c 12921
c906108c
SS
12922If the beginning of the argument string of the @code{set} command
12923appears identical to a @code{set} subcommand, use the @code{set
12924variable} command instead of just @code{set}. This command is identical
12925to @code{set} except for its lack of subcommands. For example, if your
12926program has a variable @code{width}, you get an error if you try to set
12927a new value with just @samp{set width=13}, because @value{GDBN} has the
12928command @code{set width}:
12929
474c8240 12930@smallexample
c906108c
SS
12931(@value{GDBP}) whatis width
12932type = double
12933(@value{GDBP}) p width
12934$4 = 13
12935(@value{GDBP}) set width=47
12936Invalid syntax in expression.
474c8240 12937@end smallexample
c906108c
SS
12938
12939@noindent
12940The invalid expression, of course, is @samp{=47}. In
12941order to actually set the program's variable @code{width}, use
12942
474c8240 12943@smallexample
c906108c 12944(@value{GDBP}) set var width=47
474c8240 12945@end smallexample
53a5351d 12946
c906108c
SS
12947Because the @code{set} command has many subcommands that can conflict
12948with the names of program variables, it is a good idea to use the
12949@code{set variable} command instead of just @code{set}. For example, if
12950your program has a variable @code{g}, you run into problems if you try
12951to set a new value with just @samp{set g=4}, because @value{GDBN} has
12952the command @code{set gnutarget}, abbreviated @code{set g}:
12953
474c8240 12954@smallexample
c906108c
SS
12955@group
12956(@value{GDBP}) whatis g
12957type = double
12958(@value{GDBP}) p g
12959$1 = 1
12960(@value{GDBP}) set g=4
2df3850c 12961(@value{GDBP}) p g
c906108c
SS
12962$2 = 1
12963(@value{GDBP}) r
12964The program being debugged has been started already.
12965Start it from the beginning? (y or n) y
12966Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
12967"/home/smith/cc_progs/a.out": can't open to read symbols:
12968 Invalid bfd target.
c906108c
SS
12969(@value{GDBP}) show g
12970The current BFD target is "=4".
12971@end group
474c8240 12972@end smallexample
c906108c
SS
12973
12974@noindent
12975The program variable @code{g} did not change, and you silently set the
12976@code{gnutarget} to an invalid value. In order to set the variable
12977@code{g}, use
12978
474c8240 12979@smallexample
c906108c 12980(@value{GDBP}) set var g=4
474c8240 12981@end smallexample
c906108c
SS
12982
12983@value{GDBN} allows more implicit conversions in assignments than C; you can
12984freely store an integer value into a pointer variable or vice versa,
12985and you can convert any structure to any other structure that is the
12986same length or shorter.
12987@comment FIXME: how do structs align/pad in these conversions?
12988@comment /doc@cygnus.com 18dec1990
12989
12990To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
12991construct to generate a value of specified type at a specified address
12992(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
12993to memory location @code{0x83040} as an integer (which implies a certain size
12994and representation in memory), and
12995
474c8240 12996@smallexample
c906108c 12997set @{int@}0x83040 = 4
474c8240 12998@end smallexample
c906108c
SS
12999
13000@noindent
13001stores the value 4 into that memory location.
13002
6d2ebf8b 13003@node Jumping
79a6e687 13004@section Continuing at a Different Address
c906108c
SS
13005
13006Ordinarily, when you continue your program, you do so at the place where
13007it stopped, with the @code{continue} command. You can instead continue at
13008an address of your own choosing, with the following commands:
13009
13010@table @code
13011@kindex jump
13012@item jump @var{linespec}
2a25a5ba
EZ
13013@itemx jump @var{location}
13014Resume execution at line @var{linespec} or at address given by
13015@var{location}. Execution stops again immediately if there is a
13016breakpoint there. @xref{Specify Location}, for a description of the
13017different forms of @var{linespec} and @var{location}. It is common
13018practice to use the @code{tbreak} command in conjunction with
13019@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}.
c906108c
SS
13020
13021The @code{jump} command does not change the current stack frame, or
13022the stack pointer, or the contents of any memory location or any
13023register other than the program counter. If line @var{linespec} is in
13024a different function from the one currently executing, the results may
13025be bizarre if the two functions expect different patterns of arguments or
13026of local variables. For this reason, the @code{jump} command requests
13027confirmation if the specified line is not in the function currently
13028executing. However, even bizarre results are predictable if you are
13029well acquainted with the machine-language code of your program.
c906108c
SS
13030@end table
13031
c906108c 13032@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
13033On many systems, you can get much the same effect as the @code{jump}
13034command by storing a new value into the register @code{$pc}. The
13035difference is that this does not start your program running; it only
13036changes the address of where it @emph{will} run when you continue. For
13037example,
c906108c 13038
474c8240 13039@smallexample
c906108c 13040set $pc = 0x485
474c8240 13041@end smallexample
c906108c
SS
13042
13043@noindent
13044makes the next @code{continue} command or stepping command execute at
13045address @code{0x485}, rather than at the address where your program stopped.
79a6e687 13046@xref{Continuing and Stepping, ,Continuing and Stepping}.
c906108c
SS
13047
13048The most common occasion to use the @code{jump} command is to back
13049up---perhaps with more breakpoints set---over a portion of a program
13050that has already executed, in order to examine its execution in more
13051detail.
13052
c906108c 13053@c @group
6d2ebf8b 13054@node Signaling
79a6e687 13055@section Giving your Program a Signal
9c16f35a 13056@cindex deliver a signal to a program
c906108c
SS
13057
13058@table @code
13059@kindex signal
13060@item signal @var{signal}
13061Resume execution where your program stopped, but immediately give it the
13062signal @var{signal}. @var{signal} can be the name or the number of a
13063signal. For example, on many systems @code{signal 2} and @code{signal
13064SIGINT} are both ways of sending an interrupt signal.
13065
13066Alternatively, if @var{signal} is zero, continue execution without
13067giving a signal. This is useful when your program stopped on account of
13068a signal and would ordinary see the signal when resumed with the
13069@code{continue} command; @samp{signal 0} causes it to resume without a
13070signal.
13071
13072@code{signal} does not repeat when you press @key{RET} a second time
13073after executing the command.
13074@end table
13075@c @end group
13076
13077Invoking the @code{signal} command is not the same as invoking the
13078@code{kill} utility from the shell. Sending a signal with @code{kill}
13079causes @value{GDBN} to decide what to do with the signal depending on
13080the signal handling tables (@pxref{Signals}). The @code{signal} command
13081passes the signal directly to your program.
13082
c906108c 13083
6d2ebf8b 13084@node Returning
79a6e687 13085@section Returning from a Function
c906108c
SS
13086
13087@table @code
13088@cindex returning from a function
13089@kindex return
13090@item return
13091@itemx return @var{expression}
13092You can cancel execution of a function call with the @code{return}
13093command. If you give an
13094@var{expression} argument, its value is used as the function's return
13095value.
13096@end table
13097
13098When you use @code{return}, @value{GDBN} discards the selected stack frame
13099(and all frames within it). You can think of this as making the
13100discarded frame return prematurely. If you wish to specify a value to
13101be returned, give that value as the argument to @code{return}.
13102
13103This pops the selected stack frame (@pxref{Selection, ,Selecting a
79a6e687 13104Frame}), and any other frames inside of it, leaving its caller as the
c906108c
SS
13105innermost remaining frame. That frame becomes selected. The
13106specified value is stored in the registers used for returning values
13107of functions.
13108
13109The @code{return} command does not resume execution; it leaves the
13110program stopped in the state that would exist if the function had just
13111returned. In contrast, the @code{finish} command (@pxref{Continuing
79a6e687 13112and Stepping, ,Continuing and Stepping}) resumes execution until the
c906108c
SS
13113selected stack frame returns naturally.
13114
61ff14c6
JK
13115@value{GDBN} needs to know how the @var{expression} argument should be set for
13116the inferior. The concrete registers assignment depends on the OS ABI and the
13117type being returned by the selected stack frame. For example it is common for
13118OS ABI to return floating point values in FPU registers while integer values in
13119CPU registers. Still some ABIs return even floating point values in CPU
13120registers. Larger integer widths (such as @code{long long int}) also have
13121specific placement rules. @value{GDBN} already knows the OS ABI from its
13122current target so it needs to find out also the type being returned to make the
13123assignment into the right register(s).
13124
13125Normally, the selected stack frame has debug info. @value{GDBN} will always
13126use the debug info instead of the implicit type of @var{expression} when the
13127debug info is available. For example, if you type @kbd{return -1}, and the
13128function in the current stack frame is declared to return a @code{long long
13129int}, @value{GDBN} transparently converts the implicit @code{int} value of -1
13130into a @code{long long int}:
13131
13132@smallexample
13133Breakpoint 1, func () at gdb.base/return-nodebug.c:29
1313429 return 31;
13135(@value{GDBP}) return -1
13136Make func return now? (y or n) y
13137#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43
1313843 printf ("result=%lld\n", func ());
13139(@value{GDBP})
13140@end smallexample
13141
13142However, if the selected stack frame does not have a debug info, e.g., if the
13143function was compiled without debug info, @value{GDBN} has to find out the type
13144to return from user. Specifying a different type by mistake may set the value
13145in different inferior registers than the caller code expects. For example,
13146typing @kbd{return -1} with its implicit type @code{int} would set only a part
13147of a @code{long long int} result for a debug info less function (on 32-bit
13148architectures). Therefore the user is required to specify the return type by
13149an appropriate cast explicitly:
13150
13151@smallexample
13152Breakpoint 2, 0x0040050b in func ()
13153(@value{GDBP}) return -1
13154Return value type not available for selected stack frame.
13155Please use an explicit cast of the value to return.
13156(@value{GDBP}) return (long long int) -1
13157Make selected stack frame return now? (y or n) y
13158#0 0x00400526 in main ()
13159(@value{GDBP})
13160@end smallexample
13161
6d2ebf8b 13162@node Calling
79a6e687 13163@section Calling Program Functions
c906108c 13164
f8568604 13165@table @code
c906108c 13166@cindex calling functions
f8568604
EZ
13167@cindex inferior functions, calling
13168@item print @var{expr}
d3e8051b 13169Evaluate the expression @var{expr} and display the resulting value.
f8568604
EZ
13170@var{expr} may include calls to functions in the program being
13171debugged.
13172
c906108c 13173@kindex call
c906108c
SS
13174@item call @var{expr}
13175Evaluate the expression @var{expr} without displaying @code{void}
13176returned values.
c906108c
SS
13177
13178You can use this variant of the @code{print} command if you want to
f8568604
EZ
13179execute a function from your program that does not return anything
13180(a.k.a.@: @dfn{a void function}), but without cluttering the output
13181with @code{void} returned values that @value{GDBN} will otherwise
13182print. If the result is not void, it is printed and saved in the
13183value history.
13184@end table
13185
9c16f35a
EZ
13186It is possible for the function you call via the @code{print} or
13187@code{call} command to generate a signal (e.g., if there's a bug in
13188the function, or if you passed it incorrect arguments). What happens
13189in that case is controlled by the @code{set unwindonsignal} command.
13190
7cd1089b
PM
13191Similarly, with a C@t{++} program it is possible for the function you
13192call via the @code{print} or @code{call} command to generate an
13193exception that is not handled due to the constraints of the dummy
13194frame. In this case, any exception that is raised in the frame, but has
13195an out-of-frame exception handler will not be found. GDB builds a
13196dummy-frame for the inferior function call, and the unwinder cannot
13197seek for exception handlers outside of this dummy-frame. What happens
13198in that case is controlled by the
13199@code{set unwind-on-terminating-exception} command.
13200
9c16f35a
EZ
13201@table @code
13202@item set unwindonsignal
13203@kindex set unwindonsignal
13204@cindex unwind stack in called functions
13205@cindex call dummy stack unwinding
13206Set unwinding of the stack if a signal is received while in a function
13207that @value{GDBN} called in the program being debugged. If set to on,
13208@value{GDBN} unwinds the stack it created for the call and restores
13209the context to what it was before the call. If set to off (the
13210default), @value{GDBN} stops in the frame where the signal was
13211received.
13212
13213@item show unwindonsignal
13214@kindex show unwindonsignal
13215Show the current setting of stack unwinding in the functions called by
13216@value{GDBN}.
7cd1089b
PM
13217
13218@item set unwind-on-terminating-exception
13219@kindex set unwind-on-terminating-exception
13220@cindex unwind stack in called functions with unhandled exceptions
13221@cindex call dummy stack unwinding on unhandled exception.
13222Set unwinding of the stack if a C@t{++} exception is raised, but left
13223unhandled while in a function that @value{GDBN} called in the program being
13224debugged. If set to on (the default), @value{GDBN} unwinds the stack
13225it created for the call and restores the context to what it was before
13226the call. If set to off, @value{GDBN} the exception is delivered to
13227the default C@t{++} exception handler and the inferior terminated.
13228
13229@item show unwind-on-terminating-exception
13230@kindex show unwind-on-terminating-exception
13231Show the current setting of stack unwinding in the functions called by
13232@value{GDBN}.
13233
9c16f35a
EZ
13234@end table
13235
f8568604
EZ
13236@cindex weak alias functions
13237Sometimes, a function you wish to call is actually a @dfn{weak alias}
13238for another function. In such case, @value{GDBN} might not pick up
13239the type information, including the types of the function arguments,
13240which causes @value{GDBN} to call the inferior function incorrectly.
13241As a result, the called function will function erroneously and may
13242even crash. A solution to that is to use the name of the aliased
13243function instead.
c906108c 13244
6d2ebf8b 13245@node Patching
79a6e687 13246@section Patching Programs
7a292a7a 13247
c906108c
SS
13248@cindex patching binaries
13249@cindex writing into executables
c906108c 13250@cindex writing into corefiles
c906108c 13251
7a292a7a
SS
13252By default, @value{GDBN} opens the file containing your program's
13253executable code (or the corefile) read-only. This prevents accidental
13254alterations to machine code; but it also prevents you from intentionally
13255patching your program's binary.
c906108c
SS
13256
13257If you'd like to be able to patch the binary, you can specify that
13258explicitly with the @code{set write} command. For example, you might
13259want to turn on internal debugging flags, or even to make emergency
13260repairs.
13261
13262@table @code
13263@kindex set write
13264@item set write on
13265@itemx set write off
7a292a7a 13266If you specify @samp{set write on}, @value{GDBN} opens executable and
20924a55 13267core files for both reading and writing; if you specify @kbd{set write
c906108c
SS
13268off} (the default), @value{GDBN} opens them read-only.
13269
13270If you have already loaded a file, you must load it again (using the
7a292a7a
SS
13271@code{exec-file} or @code{core-file} command) after changing @code{set
13272write}, for your new setting to take effect.
c906108c
SS
13273
13274@item show write
13275@kindex show write
7a292a7a
SS
13276Display whether executable files and core files are opened for writing
13277as well as reading.
c906108c
SS
13278@end table
13279
6d2ebf8b 13280@node GDB Files
c906108c
SS
13281@chapter @value{GDBN} Files
13282
7a292a7a
SS
13283@value{GDBN} needs to know the file name of the program to be debugged,
13284both in order to read its symbol table and in order to start your
13285program. To debug a core dump of a previous run, you must also tell
13286@value{GDBN} the name of the core dump file.
c906108c
SS
13287
13288@menu
13289* Files:: Commands to specify files
5b5d99cf 13290* Separate Debug Files:: Debugging information in separate files
c906108c 13291* Symbol Errors:: Errors reading symbol files
b14b1491 13292* Data Files:: GDB data files
c906108c
SS
13293@end menu
13294
6d2ebf8b 13295@node Files
79a6e687 13296@section Commands to Specify Files
c906108c 13297
7a292a7a 13298@cindex symbol table
c906108c 13299@cindex core dump file
7a292a7a
SS
13300
13301You may want to specify executable and core dump file names. The usual
13302way to do this is at start-up time, using the arguments to
13303@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
13304Out of @value{GDBN}}).
c906108c
SS
13305
13306Occasionally it is necessary to change to a different file during a
397ca115
EZ
13307@value{GDBN} session. Or you may run @value{GDBN} and forget to
13308specify a file you want to use. Or you are debugging a remote target
79a6e687
BW
13309via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver}
13310Program}). In these situations the @value{GDBN} commands to specify
0869d01b 13311new files are useful.
c906108c
SS
13312
13313@table @code
13314@cindex executable file
13315@kindex file
13316@item file @var{filename}
13317Use @var{filename} as the program to be debugged. It is read for its
13318symbols and for the contents of pure memory. It is also the program
13319executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
13320directory and the file is not found in the @value{GDBN} working directory,
13321@value{GDBN} uses the environment variable @code{PATH} as a list of
13322directories to search, just as the shell does when looking for a program
13323to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
13324and your program, using the @code{path} command.
13325
fc8be69e
EZ
13326@cindex unlinked object files
13327@cindex patching object files
13328You can load unlinked object @file{.o} files into @value{GDBN} using
13329the @code{file} command. You will not be able to ``run'' an object
13330file, but you can disassemble functions and inspect variables. Also,
13331if the underlying BFD functionality supports it, you could use
13332@kbd{gdb -write} to patch object files using this technique. Note
13333that @value{GDBN} can neither interpret nor modify relocations in this
13334case, so branches and some initialized variables will appear to go to
13335the wrong place. But this feature is still handy from time to time.
13336
c906108c
SS
13337@item file
13338@code{file} with no argument makes @value{GDBN} discard any information it
13339has on both executable file and the symbol table.
13340
13341@kindex exec-file
13342@item exec-file @r{[} @var{filename} @r{]}
13343Specify that the program to be run (but not the symbol table) is found
13344in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
13345if necessary to locate your program. Omitting @var{filename} means to
13346discard information on the executable file.
13347
13348@kindex symbol-file
13349@item symbol-file @r{[} @var{filename} @r{]}
13350Read symbol table information from file @var{filename}. @code{PATH} is
13351searched when necessary. Use the @code{file} command to get both symbol
13352table and program to run from the same file.
13353
13354@code{symbol-file} with no argument clears out @value{GDBN} information on your
13355program's symbol table.
13356
ae5a43e0
DJ
13357The @code{symbol-file} command causes @value{GDBN} to forget the contents of
13358some breakpoints and auto-display expressions. This is because they may
13359contain pointers to the internal data recording symbols and data types,
13360which are part of the old symbol table data being discarded inside
13361@value{GDBN}.
c906108c
SS
13362
13363@code{symbol-file} does not repeat if you press @key{RET} again after
13364executing it once.
13365
13366When @value{GDBN} is configured for a particular environment, it
13367understands debugging information in whatever format is the standard
13368generated for that environment; you may use either a @sc{gnu} compiler, or
13369other compilers that adhere to the local conventions.
c906108c 13370Best results are usually obtained from @sc{gnu} compilers; for example,
e22ea452 13371using @code{@value{NGCC}} you can generate debugging information for
c906108c 13372optimized code.
c906108c
SS
13373
13374For most kinds of object files, with the exception of old SVR3 systems
13375using COFF, the @code{symbol-file} command does not normally read the
13376symbol table in full right away. Instead, it scans the symbol table
13377quickly to find which source files and which symbols are present. The
13378details are read later, one source file at a time, as they are needed.
13379
13380The purpose of this two-stage reading strategy is to make @value{GDBN}
13381start up faster. For the most part, it is invisible except for
13382occasional pauses while the symbol table details for a particular source
13383file are being read. (The @code{set verbose} command can turn these
13384pauses into messages if desired. @xref{Messages/Warnings, ,Optional
79a6e687 13385Warnings and Messages}.)
c906108c 13386
c906108c
SS
13387We have not implemented the two-stage strategy for COFF yet. When the
13388symbol table is stored in COFF format, @code{symbol-file} reads the
13389symbol table data in full right away. Note that ``stabs-in-COFF''
13390still does the two-stage strategy, since the debug info is actually
13391in stabs format.
13392
13393@kindex readnow
13394@cindex reading symbols immediately
13395@cindex symbols, reading immediately
a94ab193
EZ
13396@item symbol-file @var{filename} @r{[} -readnow @r{]}
13397@itemx file @var{filename} @r{[} -readnow @r{]}
c906108c
SS
13398You can override the @value{GDBN} two-stage strategy for reading symbol
13399tables by using the @samp{-readnow} option with any of the commands that
13400load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 13401entire symbol table available.
c906108c 13402
c906108c
SS
13403@c FIXME: for now no mention of directories, since this seems to be in
13404@c flux. 13mar1992 status is that in theory GDB would look either in
13405@c current dir or in same dir as myprog; but issues like competing
13406@c GDB's, or clutter in system dirs, mean that in practice right now
13407@c only current dir is used. FFish says maybe a special GDB hierarchy
13408@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
13409@c files.
13410
c906108c 13411@kindex core-file
09d4efe1 13412@item core-file @r{[}@var{filename}@r{]}
4644b6e3 13413@itemx core
c906108c
SS
13414Specify the whereabouts of a core dump file to be used as the ``contents
13415of memory''. Traditionally, core files contain only some parts of the
13416address space of the process that generated them; @value{GDBN} can access the
13417executable file itself for other parts.
13418
13419@code{core-file} with no argument specifies that no core file is
13420to be used.
13421
13422Note that the core file is ignored when your program is actually running
7a292a7a
SS
13423under @value{GDBN}. So, if you have been running your program and you
13424wish to debug a core file instead, you must kill the subprocess in which
13425the program is running. To do this, use the @code{kill} command
79a6e687 13426(@pxref{Kill Process, ,Killing the Child Process}).
c906108c 13427
c906108c
SS
13428@kindex add-symbol-file
13429@cindex dynamic linking
13430@item add-symbol-file @var{filename} @var{address}
a94ab193 13431@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]}
17d9d558 13432@itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address} @dots{}
96a2c332
SS
13433The @code{add-symbol-file} command reads additional symbol table
13434information from the file @var{filename}. You would use this command
13435when @var{filename} has been dynamically loaded (by some other means)
13436into the program that is running. @var{address} should be the memory
13437address at which the file has been loaded; @value{GDBN} cannot figure
d167840f
EZ
13438this out for itself. You can additionally specify an arbitrary number
13439of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
13440section name and base address for that section. You can specify any
13441@var{address} as an expression.
c906108c
SS
13442
13443The symbol table of the file @var{filename} is added to the symbol table
13444originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
13445@code{add-symbol-file} command any number of times; the new symbol data
13446thus read keeps adding to the old. To discard all old symbol data
13447instead, use the @code{symbol-file} command without any arguments.
c906108c 13448
17d9d558
JB
13449@cindex relocatable object files, reading symbols from
13450@cindex object files, relocatable, reading symbols from
13451@cindex reading symbols from relocatable object files
13452@cindex symbols, reading from relocatable object files
13453@cindex @file{.o} files, reading symbols from
13454Although @var{filename} is typically a shared library file, an
13455executable file, or some other object file which has been fully
13456relocated for loading into a process, you can also load symbolic
13457information from relocatable @file{.o} files, as long as:
13458
13459@itemize @bullet
13460@item
13461the file's symbolic information refers only to linker symbols defined in
13462that file, not to symbols defined by other object files,
13463@item
13464every section the file's symbolic information refers to has actually
13465been loaded into the inferior, as it appears in the file, and
13466@item
13467you can determine the address at which every section was loaded, and
13468provide these to the @code{add-symbol-file} command.
13469@end itemize
13470
13471@noindent
13472Some embedded operating systems, like Sun Chorus and VxWorks, can load
13473relocatable files into an already running program; such systems
13474typically make the requirements above easy to meet. However, it's
13475important to recognize that many native systems use complex link
49efadf5 13476procedures (@code{.linkonce} section factoring and C@t{++} constructor table
17d9d558
JB
13477assembly, for example) that make the requirements difficult to meet. In
13478general, one cannot assume that using @code{add-symbol-file} to read a
13479relocatable object file's symbolic information will have the same effect
13480as linking the relocatable object file into the program in the normal
13481way.
13482
c906108c
SS
13483@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
13484
c45da7e6
EZ
13485@kindex add-symbol-file-from-memory
13486@cindex @code{syscall DSO}
13487@cindex load symbols from memory
13488@item add-symbol-file-from-memory @var{address}
13489Load symbols from the given @var{address} in a dynamically loaded
13490object file whose image is mapped directly into the inferior's memory.
13491For example, the Linux kernel maps a @code{syscall DSO} into each
13492process's address space; this DSO provides kernel-specific code for
13493some system calls. The argument can be any expression whose
13494evaluation yields the address of the file's shared object file header.
13495For this command to work, you must have used @code{symbol-file} or
13496@code{exec-file} commands in advance.
13497
09d4efe1
EZ
13498@kindex add-shared-symbol-files
13499@kindex assf
13500@item add-shared-symbol-files @var{library-file}
13501@itemx assf @var{library-file}
13502The @code{add-shared-symbol-files} command can currently be used only
13503in the Cygwin build of @value{GDBN} on MS-Windows OS, where it is an
13504alias for the @code{dll-symbols} command (@pxref{Cygwin Native}).
13505@value{GDBN} automatically looks for shared libraries, however if
13506@value{GDBN} does not find yours, you can invoke
13507@code{add-shared-symbol-files}. It takes one argument: the shared
13508library's file name. @code{assf} is a shorthand alias for
13509@code{add-shared-symbol-files}.
c906108c 13510
c906108c 13511@kindex section
09d4efe1
EZ
13512@item section @var{section} @var{addr}
13513The @code{section} command changes the base address of the named
13514@var{section} of the exec file to @var{addr}. This can be used if the
13515exec file does not contain section addresses, (such as in the
13516@code{a.out} format), or when the addresses specified in the file
13517itself are wrong. Each section must be changed separately. The
13518@code{info files} command, described below, lists all the sections and
13519their addresses.
c906108c
SS
13520
13521@kindex info files
13522@kindex info target
13523@item info files
13524@itemx info target
7a292a7a
SS
13525@code{info files} and @code{info target} are synonymous; both print the
13526current target (@pxref{Targets, ,Specifying a Debugging Target}),
13527including the names of the executable and core dump files currently in
13528use by @value{GDBN}, and the files from which symbols were loaded. The
13529command @code{help target} lists all possible targets rather than
13530current ones.
13531
fe95c787
MS
13532@kindex maint info sections
13533@item maint info sections
13534Another command that can give you extra information about program sections
13535is @code{maint info sections}. In addition to the section information
13536displayed by @code{info files}, this command displays the flags and file
13537offset of each section in the executable and core dump files. In addition,
13538@code{maint info sections} provides the following command options (which
13539may be arbitrarily combined):
13540
13541@table @code
13542@item ALLOBJ
13543Display sections for all loaded object files, including shared libraries.
13544@item @var{sections}
6600abed 13545Display info only for named @var{sections}.
fe95c787
MS
13546@item @var{section-flags}
13547Display info only for sections for which @var{section-flags} are true.
13548The section flags that @value{GDBN} currently knows about are:
13549@table @code
13550@item ALLOC
13551Section will have space allocated in the process when loaded.
13552Set for all sections except those containing debug information.
13553@item LOAD
13554Section will be loaded from the file into the child process memory.
13555Set for pre-initialized code and data, clear for @code{.bss} sections.
13556@item RELOC
13557Section needs to be relocated before loading.
13558@item READONLY
13559Section cannot be modified by the child process.
13560@item CODE
13561Section contains executable code only.
6600abed 13562@item DATA
fe95c787
MS
13563Section contains data only (no executable code).
13564@item ROM
13565Section will reside in ROM.
13566@item CONSTRUCTOR
13567Section contains data for constructor/destructor lists.
13568@item HAS_CONTENTS
13569Section is not empty.
13570@item NEVER_LOAD
13571An instruction to the linker to not output the section.
13572@item COFF_SHARED_LIBRARY
13573A notification to the linker that the section contains
13574COFF shared library information.
13575@item IS_COMMON
13576Section contains common symbols.
13577@end table
13578@end table
6763aef9 13579@kindex set trust-readonly-sections
9c16f35a 13580@cindex read-only sections
6763aef9
MS
13581@item set trust-readonly-sections on
13582Tell @value{GDBN} that readonly sections in your object file
6ca652b0 13583really are read-only (i.e.@: that their contents will not change).
6763aef9
MS
13584In that case, @value{GDBN} can fetch values from these sections
13585out of the object file, rather than from the target program.
13586For some targets (notably embedded ones), this can be a significant
13587enhancement to debugging performance.
13588
13589The default is off.
13590
13591@item set trust-readonly-sections off
15110bc3 13592Tell @value{GDBN} not to trust readonly sections. This means that
6763aef9
MS
13593the contents of the section might change while the program is running,
13594and must therefore be fetched from the target when needed.
9c16f35a
EZ
13595
13596@item show trust-readonly-sections
13597Show the current setting of trusting readonly sections.
c906108c
SS
13598@end table
13599
13600All file-specifying commands allow both absolute and relative file names
13601as arguments. @value{GDBN} always converts the file name to an absolute file
13602name and remembers it that way.
13603
c906108c 13604@cindex shared libraries
9cceb671
DJ
13605@anchor{Shared Libraries}
13606@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix,
9c16f35a 13607and IBM RS/6000 AIX shared libraries.
53a5351d 13608
9cceb671
DJ
13609On MS-Windows @value{GDBN} must be linked with the Expat library to support
13610shared libraries. @xref{Expat}.
13611
c906108c
SS
13612@value{GDBN} automatically loads symbol definitions from shared libraries
13613when you use the @code{run} command, or when you examine a core file.
13614(Before you issue the @code{run} command, @value{GDBN} does not understand
13615references to a function in a shared library, however---unless you are
13616debugging a core file).
53a5351d
JM
13617
13618On HP-UX, if the program loads a library explicitly, @value{GDBN}
13619automatically loads the symbols at the time of the @code{shl_load} call.
13620
c906108c
SS
13621@c FIXME: some @value{GDBN} release may permit some refs to undef
13622@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
13623@c FIXME...lib; check this from time to time when updating manual
13624
b7209cb4
FF
13625There are times, however, when you may wish to not automatically load
13626symbol definitions from shared libraries, such as when they are
13627particularly large or there are many of them.
13628
13629To control the automatic loading of shared library symbols, use the
13630commands:
13631
13632@table @code
13633@kindex set auto-solib-add
13634@item set auto-solib-add @var{mode}
13635If @var{mode} is @code{on}, symbols from all shared object libraries
13636will be loaded automatically when the inferior begins execution, you
13637attach to an independently started inferior, or when the dynamic linker
13638informs @value{GDBN} that a new library has been loaded. If @var{mode}
13639is @code{off}, symbols must be loaded manually, using the
13640@code{sharedlibrary} command. The default value is @code{on}.
13641
dcaf7c2c
EZ
13642@cindex memory used for symbol tables
13643If your program uses lots of shared libraries with debug info that
13644takes large amounts of memory, you can decrease the @value{GDBN}
13645memory footprint by preventing it from automatically loading the
13646symbols from shared libraries. To that end, type @kbd{set
13647auto-solib-add off} before running the inferior, then load each
13648library whose debug symbols you do need with @kbd{sharedlibrary
d3e8051b 13649@var{regexp}}, where @var{regexp} is a regular expression that matches
dcaf7c2c
EZ
13650the libraries whose symbols you want to be loaded.
13651
b7209cb4
FF
13652@kindex show auto-solib-add
13653@item show auto-solib-add
13654Display the current autoloading mode.
13655@end table
13656
c45da7e6 13657@cindex load shared library
b7209cb4
FF
13658To explicitly load shared library symbols, use the @code{sharedlibrary}
13659command:
13660
c906108c
SS
13661@table @code
13662@kindex info sharedlibrary
13663@kindex info share
55333a84
DE
13664@item info share @var{regex}
13665@itemx info sharedlibrary @var{regex}
13666Print the names of the shared libraries which are currently loaded
13667that match @var{regex}. If @var{regex} is omitted then print
13668all shared libraries that are loaded.
c906108c
SS
13669
13670@kindex sharedlibrary
13671@kindex share
13672@item sharedlibrary @var{regex}
13673@itemx share @var{regex}
c906108c
SS
13674Load shared object library symbols for files matching a
13675Unix regular expression.
13676As with files loaded automatically, it only loads shared libraries
13677required by your program for a core file or after typing @code{run}. If
13678@var{regex} is omitted all shared libraries required by your program are
13679loaded.
c45da7e6
EZ
13680
13681@item nosharedlibrary
13682@kindex nosharedlibrary
13683@cindex unload symbols from shared libraries
13684Unload all shared object library symbols. This discards all symbols
13685that have been loaded from all shared libraries. Symbols from shared
13686libraries that were loaded by explicit user requests are not
13687discarded.
c906108c
SS
13688@end table
13689
721c2651
EZ
13690Sometimes you may wish that @value{GDBN} stops and gives you control
13691when any of shared library events happen. Use the @code{set
13692stop-on-solib-events} command for this:
13693
13694@table @code
13695@item set stop-on-solib-events
13696@kindex set stop-on-solib-events
13697This command controls whether @value{GDBN} should give you control
13698when the dynamic linker notifies it about some shared library event.
13699The most common event of interest is loading or unloading of a new
13700shared library.
13701
13702@item show stop-on-solib-events
13703@kindex show stop-on-solib-events
13704Show whether @value{GDBN} stops and gives you control when shared
13705library events happen.
13706@end table
13707
f5ebfba0 13708Shared libraries are also supported in many cross or remote debugging
f1838a98
UW
13709configurations. @value{GDBN} needs to have access to the target's libraries;
13710this can be accomplished either by providing copies of the libraries
13711on the host system, or by asking @value{GDBN} to automatically retrieve the
13712libraries from the target. If copies of the target libraries are
13713provided, they need to be the same as the target libraries, although the
f5ebfba0
DJ
13714copies on the target can be stripped as long as the copies on the host are
13715not.
13716
59b7b46f
EZ
13717@cindex where to look for shared libraries
13718For remote debugging, you need to tell @value{GDBN} where the target
13719libraries are, so that it can load the correct copies---otherwise, it
13720may try to load the host's libraries. @value{GDBN} has two variables
13721to specify the search directories for target libraries.
f5ebfba0
DJ
13722
13723@table @code
59b7b46f 13724@cindex prefix for shared library file names
f822c95b 13725@cindex system root, alternate
f5ebfba0 13726@kindex set solib-absolute-prefix
f822c95b
DJ
13727@kindex set sysroot
13728@item set sysroot @var{path}
13729Use @var{path} as the system root for the program being debugged. Any
13730absolute shared library paths will be prefixed with @var{path}; many
13731runtime loaders store the absolute paths to the shared library in the
13732target program's memory. If you use @code{set sysroot} to find shared
13733libraries, they need to be laid out in the same way that they are on
13734the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy
13735under @var{path}.
13736
f1838a98
UW
13737If @var{path} starts with the sequence @file{remote:}, @value{GDBN} will
13738retrieve the target libraries from the remote system. This is only
13739supported when using a remote target that supports the @code{remote get}
13740command (@pxref{File Transfer,,Sending files to a remote system}).
13741The part of @var{path} following the initial @file{remote:}
13742(if present) is used as system root prefix on the remote file system.
13743@footnote{If you want to specify a local system root using a directory
13744that happens to be named @file{remote:}, you need to use some equivalent
13745variant of the name like @file{./remote:}.}
13746
f822c95b
DJ
13747The @code{set solib-absolute-prefix} command is an alias for @code{set
13748sysroot}.
13749
13750@cindex default system root
59b7b46f 13751@cindex @samp{--with-sysroot}
f822c95b
DJ
13752You can set the default system root by using the configure-time
13753@samp{--with-sysroot} option. If the system root is inside
13754@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
13755@samp{--exec-prefix}), then the default system root will be updated
13756automatically if the installed @value{GDBN} is moved to a new
13757location.
13758
13759@kindex show sysroot
13760@item show sysroot
f5ebfba0
DJ
13761Display the current shared library prefix.
13762
13763@kindex set solib-search-path
13764@item set solib-search-path @var{path}
f822c95b
DJ
13765If this variable is set, @var{path} is a colon-separated list of
13766directories to search for shared libraries. @samp{solib-search-path}
13767is used after @samp{sysroot} fails to locate the library, or if the
13768path to the library is relative instead of absolute. If you want to
13769use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set
d3e8051b 13770@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from
f822c95b 13771finding your host's libraries. @samp{sysroot} is preferred; setting
d3e8051b 13772it to a nonexistent directory may interfere with automatic loading
f822c95b 13773of shared library symbols.
f5ebfba0
DJ
13774
13775@kindex show solib-search-path
13776@item show solib-search-path
13777Display the current shared library search path.
13778@end table
13779
5b5d99cf
JB
13780
13781@node Separate Debug Files
13782@section Debugging Information in Separate Files
13783@cindex separate debugging information files
13784@cindex debugging information in separate files
13785@cindex @file{.debug} subdirectories
13786@cindex debugging information directory, global
13787@cindex global debugging information directory
c7e83d54
EZ
13788@cindex build ID, and separate debugging files
13789@cindex @file{.build-id} directory
5b5d99cf
JB
13790
13791@value{GDBN} allows you to put a program's debugging information in a
13792file separate from the executable itself, in a way that allows
13793@value{GDBN} to find and load the debugging information automatically.
c7e83d54
EZ
13794Since debugging information can be very large---sometimes larger
13795than the executable code itself---some systems distribute debugging
5b5d99cf
JB
13796information for their executables in separate files, which users can
13797install only when they need to debug a problem.
13798
c7e83d54
EZ
13799@value{GDBN} supports two ways of specifying the separate debug info
13800file:
5b5d99cf
JB
13801
13802@itemize @bullet
13803@item
c7e83d54
EZ
13804The executable contains a @dfn{debug link} that specifies the name of
13805the separate debug info file. The separate debug file's name is
13806usually @file{@var{executable}.debug}, where @var{executable} is the
13807name of the corresponding executable file without leading directories
13808(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the
99e008fe
EZ
13809debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC)
13810checksum for the debug file, which @value{GDBN} uses to validate that
13811the executable and the debug file came from the same build.
c7e83d54
EZ
13812
13813@item
7e27a47a 13814The executable contains a @dfn{build ID}, a unique bit string that is
c7e83d54 13815also present in the corresponding debug info file. (This is supported
7e27a47a
EZ
13816only on some operating systems, notably those which use the ELF format
13817for binary files and the @sc{gnu} Binutils.) For more details about
13818this feature, see the description of the @option{--build-id}
13819command-line option in @ref{Options, , Command Line Options, ld.info,
13820The GNU Linker}. The debug info file's name is not specified
13821explicitly by the build ID, but can be computed from the build ID, see
13822below.
d3750b24
JK
13823@end itemize
13824
c7e83d54
EZ
13825Depending on the way the debug info file is specified, @value{GDBN}
13826uses two different methods of looking for the debug file:
d3750b24
JK
13827
13828@itemize @bullet
13829@item
c7e83d54
EZ
13830For the ``debug link'' method, @value{GDBN} looks up the named file in
13831the directory of the executable file, then in a subdirectory of that
13832directory named @file{.debug}, and finally under the global debug
13833directory, in a subdirectory whose name is identical to the leading
13834directories of the executable's absolute file name.
13835
13836@item
83f83d7f 13837For the ``build ID'' method, @value{GDBN} looks in the
c7e83d54
EZ
13838@file{.build-id} subdirectory of the global debug directory for a file
13839named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the
7e27a47a
EZ
13840first 2 hex characters of the build ID bit string, and @var{nnnnnnnn}
13841are the rest of the bit string. (Real build ID strings are 32 or more
13842hex characters, not 10.)
c7e83d54
EZ
13843@end itemize
13844
13845So, for example, suppose you ask @value{GDBN} to debug
7e27a47a
EZ
13846@file{/usr/bin/ls}, which has a debug link that specifies the
13847file @file{ls.debug}, and a build ID whose value in hex is
c7e83d54
EZ
13848@code{abcdef1234}. If the global debug directory is
13849@file{/usr/lib/debug}, then @value{GDBN} will look for the following
13850debug information files, in the indicated order:
13851
13852@itemize @minus
13853@item
13854@file{/usr/lib/debug/.build-id/ab/cdef1234.debug}
d3750b24 13855@item
c7e83d54 13856@file{/usr/bin/ls.debug}
5b5d99cf 13857@item
c7e83d54 13858@file{/usr/bin/.debug/ls.debug}
5b5d99cf 13859@item
c7e83d54 13860@file{/usr/lib/debug/usr/bin/ls.debug}.
5b5d99cf 13861@end itemize
5b5d99cf
JB
13862
13863You can set the global debugging info directory's name, and view the
13864name @value{GDBN} is currently using.
13865
13866@table @code
13867
13868@kindex set debug-file-directory
13869@item set debug-file-directory @var{directory}
13870Set the directory which @value{GDBN} searches for separate debugging
13871information files to @var{directory}.
13872
13873@kindex show debug-file-directory
13874@item show debug-file-directory
13875Show the directory @value{GDBN} searches for separate debugging
13876information files.
13877
13878@end table
13879
13880@cindex @code{.gnu_debuglink} sections
c7e83d54 13881@cindex debug link sections
5b5d99cf
JB
13882A debug link is a special section of the executable file named
13883@code{.gnu_debuglink}. The section must contain:
13884
13885@itemize
13886@item
13887A filename, with any leading directory components removed, followed by
13888a zero byte,
13889@item
13890zero to three bytes of padding, as needed to reach the next four-byte
13891boundary within the section, and
13892@item
13893a four-byte CRC checksum, stored in the same endianness used for the
13894executable file itself. The checksum is computed on the debugging
13895information file's full contents by the function given below, passing
13896zero as the @var{crc} argument.
13897@end itemize
13898
13899Any executable file format can carry a debug link, as long as it can
13900contain a section named @code{.gnu_debuglink} with the contents
13901described above.
13902
d3750b24 13903@cindex @code{.note.gnu.build-id} sections
c7e83d54 13904@cindex build ID sections
7e27a47a
EZ
13905The build ID is a special section in the executable file (and in other
13906ELF binary files that @value{GDBN} may consider). This section is
13907often named @code{.note.gnu.build-id}, but that name is not mandatory.
13908It contains unique identification for the built files---the ID remains
13909the same across multiple builds of the same build tree. The default
13910algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
13911content for the build ID string. The same section with an identical
13912value is present in the original built binary with symbols, in its
13913stripped variant, and in the separate debugging information file.
d3750b24 13914
5b5d99cf
JB
13915The debugging information file itself should be an ordinary
13916executable, containing a full set of linker symbols, sections, and
13917debugging information. The sections of the debugging information file
c7e83d54
EZ
13918should have the same names, addresses, and sizes as the original file,
13919but they need not contain any data---much like a @code{.bss} section
5b5d99cf
JB
13920in an ordinary executable.
13921
7e27a47a 13922The @sc{gnu} binary utilities (Binutils) package includes the
c7e83d54
EZ
13923@samp{objcopy} utility that can produce
13924the separated executable / debugging information file pairs using the
13925following commands:
13926
13927@smallexample
13928@kbd{objcopy --only-keep-debug foo foo.debug}
13929@kbd{strip -g foo}
c7e83d54
EZ
13930@end smallexample
13931
13932@noindent
13933These commands remove the debugging
83f83d7f
JK
13934information from the executable file @file{foo} and place it in the file
13935@file{foo.debug}. You can use the first, second or both methods to link the
13936two files:
13937
13938@itemize @bullet
13939@item
13940The debug link method needs the following additional command to also leave
13941behind a debug link in @file{foo}:
13942
13943@smallexample
13944@kbd{objcopy --add-gnu-debuglink=foo.debug foo}
13945@end smallexample
13946
13947Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains
d3750b24 13948a version of the @code{strip} command such that the command @kbd{strip foo -f
83f83d7f
JK
13949foo.debug} has the same functionality as the two @code{objcopy} commands and
13950the @code{ln -s} command above, together.
13951
13952@item
13953Build ID gets embedded into the main executable using @code{ld --build-id} or
13954the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus
13955compatibility fixes for debug files separation are present in @sc{gnu} binary
7e27a47a 13956utilities (Binutils) package since version 2.18.
83f83d7f
JK
13957@end itemize
13958
13959@noindent
d3750b24 13960
99e008fe
EZ
13961@cindex CRC algorithm definition
13962The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in
13963IEEE 802.3 using the polynomial:
13964
13965@c TexInfo requires naked braces for multi-digit exponents for Tex
13966@c output, but this causes HTML output to barf. HTML has to be set using
13967@c raw commands. So we end up having to specify this equation in 2
13968@c different ways!
13969@ifhtml
13970@display
13971@html
13972 <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>
13973 + <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
13974@end html
13975@end display
13976@end ifhtml
13977@ifnothtml
13978@display
13979 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}}
13980 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1}
13981@end display
13982@end ifnothtml
13983
13984The function is computed byte at a time, taking the least
13985significant bit of each byte first. The initial pattern
13986@code{0xffffffff} is used, to ensure leading zeros affect the CRC and
13987the final result is inverted to ensure trailing zeros also affect the
13988CRC.
13989
13990@emph{Note:} This is the same CRC polynomial as used in handling the
13991@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{Remote Protocol,
13992, @value{GDBN} Remote Serial Protocol}). However in the
13993case of the Remote Serial Protocol, the CRC is computed @emph{most}
13994significant bit first, and the result is not inverted, so trailing
13995zeros have no effect on the CRC value.
13996
13997To complete the description, we show below the code of the function
13998which produces the CRC used in @code{.gnu_debuglink}. Inverting the
13999initially supplied @code{crc} argument means that an initial call to
14000this function passing in zero will start computing the CRC using
14001@code{0xffffffff}.
5b5d99cf 14002
4644b6e3 14003@kindex gnu_debuglink_crc32
5b5d99cf
JB
14004@smallexample
14005unsigned long
14006gnu_debuglink_crc32 (unsigned long crc,
14007 unsigned char *buf, size_t len)
14008@{
14009 static const unsigned long crc32_table[256] =
14010 @{
14011 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
14012 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
14013 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
14014 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
14015 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
14016 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
14017 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
14018 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
14019 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
14020 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
14021 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
14022 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
14023 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
14024 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
14025 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
14026 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
14027 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
14028 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
14029 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
14030 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
14031 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
14032 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
14033 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
14034 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
14035 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
14036 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
14037 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
14038 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
14039 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
14040 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
14041 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
14042 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
14043 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
14044 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
14045 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
14046 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
14047 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
14048 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
14049 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
14050 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
14051 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
14052 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
14053 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
14054 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
14055 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
14056 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
14057 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
14058 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
14059 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
14060 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
14061 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
14062 0x2d02ef8d
14063 @};
14064 unsigned char *end;
14065
14066 crc = ~crc & 0xffffffff;
14067 for (end = buf + len; buf < end; ++buf)
14068 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
e7a3abfc 14069 return ~crc & 0xffffffff;
5b5d99cf
JB
14070@}
14071@end smallexample
14072
c7e83d54
EZ
14073@noindent
14074This computation does not apply to the ``build ID'' method.
14075
5b5d99cf 14076
6d2ebf8b 14077@node Symbol Errors
79a6e687 14078@section Errors Reading Symbol Files
c906108c
SS
14079
14080While reading a symbol file, @value{GDBN} occasionally encounters problems,
14081such as symbol types it does not recognize, or known bugs in compiler
14082output. By default, @value{GDBN} does not notify you of such problems, since
14083they are relatively common and primarily of interest to people
14084debugging compilers. If you are interested in seeing information
14085about ill-constructed symbol tables, you can either ask @value{GDBN} to print
14086only one message about each such type of problem, no matter how many
14087times the problem occurs; or you can ask @value{GDBN} to print more messages,
14088to see how many times the problems occur, with the @code{set
79a6e687
BW
14089complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and
14090Messages}).
c906108c
SS
14091
14092The messages currently printed, and their meanings, include:
14093
14094@table @code
14095@item inner block not inside outer block in @var{symbol}
14096
14097The symbol information shows where symbol scopes begin and end
14098(such as at the start of a function or a block of statements). This
14099error indicates that an inner scope block is not fully contained
14100in its outer scope blocks.
14101
14102@value{GDBN} circumvents the problem by treating the inner block as if it had
14103the same scope as the outer block. In the error message, @var{symbol}
14104may be shown as ``@code{(don't know)}'' if the outer block is not a
14105function.
14106
14107@item block at @var{address} out of order
14108
14109The symbol information for symbol scope blocks should occur in
14110order of increasing addresses. This error indicates that it does not
14111do so.
14112
14113@value{GDBN} does not circumvent this problem, and has trouble
14114locating symbols in the source file whose symbols it is reading. (You
14115can often determine what source file is affected by specifying
79a6e687
BW
14116@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and
14117Messages}.)
c906108c
SS
14118
14119@item bad block start address patched
14120
14121The symbol information for a symbol scope block has a start address
14122smaller than the address of the preceding source line. This is known
14123to occur in the SunOS 4.1.1 (and earlier) C compiler.
14124
14125@value{GDBN} circumvents the problem by treating the symbol scope block as
14126starting on the previous source line.
14127
14128@item bad string table offset in symbol @var{n}
14129
14130@cindex foo
14131Symbol number @var{n} contains a pointer into the string table which is
14132larger than the size of the string table.
14133
14134@value{GDBN} circumvents the problem by considering the symbol to have the
14135name @code{foo}, which may cause other problems if many symbols end up
14136with this name.
14137
14138@item unknown symbol type @code{0x@var{nn}}
14139
7a292a7a
SS
14140The symbol information contains new data types that @value{GDBN} does
14141not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 14142uncomprehended information, in hexadecimal.
c906108c 14143
7a292a7a
SS
14144@value{GDBN} circumvents the error by ignoring this symbol information.
14145This usually allows you to debug your program, though certain symbols
c906108c 14146are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
14147debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
14148on @code{complain}, then go up to the function @code{read_dbx_symtab}
14149and examine @code{*bufp} to see the symbol.
c906108c
SS
14150
14151@item stub type has NULL name
c906108c 14152
7a292a7a 14153@value{GDBN} could not find the full definition for a struct or class.
c906108c 14154
7a292a7a 14155@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 14156The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
14157information that recent versions of the compiler should have output for
14158it.
c906108c
SS
14159
14160@item info mismatch between compiler and debugger
14161
14162@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 14163
c906108c
SS
14164@end table
14165
b14b1491
TT
14166@node Data Files
14167@section GDB Data Files
14168
14169@cindex prefix for data files
14170@value{GDBN} will sometimes read an auxiliary data file. These files
14171are kept in a directory known as the @dfn{data directory}.
14172
14173You can set the data directory's name, and view the name @value{GDBN}
14174is currently using.
14175
14176@table @code
14177@kindex set data-directory
14178@item set data-directory @var{directory}
14179Set the directory which @value{GDBN} searches for auxiliary data files
14180to @var{directory}.
14181
14182@kindex show data-directory
14183@item show data-directory
14184Show the directory @value{GDBN} searches for auxiliary data files.
14185@end table
14186
14187@cindex default data directory
14188@cindex @samp{--with-gdb-datadir}
14189You can set the default data directory by using the configure-time
14190@samp{--with-gdb-datadir} option. If the data directory is inside
14191@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
14192@samp{--exec-prefix}), then the default data directory will be updated
14193automatically if the installed @value{GDBN} is moved to a new
14194location.
14195
6d2ebf8b 14196@node Targets
c906108c 14197@chapter Specifying a Debugging Target
7a292a7a 14198
c906108c 14199@cindex debugging target
c906108c 14200A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
14201
14202Often, @value{GDBN} runs in the same host environment as your program;
14203in that case, the debugging target is specified as a side effect when
14204you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
14205flexibility---for example, running @value{GDBN} on a physically separate
14206host, or controlling a standalone system over a serial port or a
53a5351d
JM
14207realtime system over a TCP/IP connection---you can use the @code{target}
14208command to specify one of the target types configured for @value{GDBN}
79a6e687 14209(@pxref{Target Commands, ,Commands for Managing Targets}).
c906108c 14210
a8f24a35
EZ
14211@cindex target architecture
14212It is possible to build @value{GDBN} for several different @dfn{target
14213architectures}. When @value{GDBN} is built like that, you can choose
14214one of the available architectures with the @kbd{set architecture}
14215command.
14216
14217@table @code
14218@kindex set architecture
14219@kindex show architecture
14220@item set architecture @var{arch}
14221This command sets the current target architecture to @var{arch}. The
14222value of @var{arch} can be @code{"auto"}, in addition to one of the
14223supported architectures.
14224
14225@item show architecture
14226Show the current target architecture.
9c16f35a
EZ
14227
14228@item set processor
14229@itemx processor
14230@kindex set processor
14231@kindex show processor
14232These are alias commands for, respectively, @code{set architecture}
14233and @code{show architecture}.
a8f24a35
EZ
14234@end table
14235
c906108c
SS
14236@menu
14237* Active Targets:: Active targets
14238* Target Commands:: Commands for managing targets
c906108c 14239* Byte Order:: Choosing target byte order
c906108c
SS
14240@end menu
14241
6d2ebf8b 14242@node Active Targets
79a6e687 14243@section Active Targets
7a292a7a 14244
c906108c
SS
14245@cindex stacking targets
14246@cindex active targets
14247@cindex multiple targets
14248
c906108c 14249There are three classes of targets: processes, core files, and
7a292a7a
SS
14250executable files. @value{GDBN} can work concurrently on up to three
14251active targets, one in each class. This allows you to (for example)
14252start a process and inspect its activity without abandoning your work on
14253a core file.
c906108c
SS
14254
14255For example, if you execute @samp{gdb a.out}, then the executable file
14256@code{a.out} is the only active target. If you designate a core file as
14257well---presumably from a prior run that crashed and coredumped---then
14258@value{GDBN} has two active targets and uses them in tandem, looking
14259first in the corefile target, then in the executable file, to satisfy
14260requests for memory addresses. (Typically, these two classes of target
14261are complementary, since core files contain only a program's
14262read-write memory---variables and so on---plus machine status, while
14263executable files contain only the program text and initialized data.)
c906108c
SS
14264
14265When you type @code{run}, your executable file becomes an active process
7a292a7a
SS
14266target as well. When a process target is active, all @value{GDBN}
14267commands requesting memory addresses refer to that target; addresses in
14268an active core file or executable file target are obscured while the
14269process target is active.
c906108c 14270
7a292a7a 14271Use the @code{core-file} and @code{exec-file} commands to select a new
79a6e687
BW
14272core file or executable target (@pxref{Files, ,Commands to Specify
14273Files}). To specify as a target a process that is already running, use
14274the @code{attach} command (@pxref{Attach, ,Debugging an Already-running
14275Process}).
c906108c 14276
6d2ebf8b 14277@node Target Commands
79a6e687 14278@section Commands for Managing Targets
c906108c
SS
14279
14280@table @code
14281@item target @var{type} @var{parameters}
7a292a7a
SS
14282Connects the @value{GDBN} host environment to a target machine or
14283process. A target is typically a protocol for talking to debugging
14284facilities. You use the argument @var{type} to specify the type or
14285protocol of the target machine.
c906108c
SS
14286
14287Further @var{parameters} are interpreted by the target protocol, but
14288typically include things like device names or host names to connect
14289with, process numbers, and baud rates.
c906108c
SS
14290
14291The @code{target} command does not repeat if you press @key{RET} again
14292after executing the command.
14293
14294@kindex help target
14295@item help target
14296Displays the names of all targets available. To display targets
14297currently selected, use either @code{info target} or @code{info files}
79a6e687 14298(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
14299
14300@item help target @var{name}
14301Describe a particular target, including any parameters necessary to
14302select it.
14303
14304@kindex set gnutarget
14305@item set gnutarget @var{args}
5d161b24 14306@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 14307knows whether it is reading an @dfn{executable},
5d161b24
DB
14308a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
14309with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
14310with @code{gnutarget} the @code{target} refers to a program, not a machine.
14311
d4f3574e 14312@quotation
c906108c
SS
14313@emph{Warning:} To specify a file format with @code{set gnutarget},
14314you must know the actual BFD name.
d4f3574e 14315@end quotation
c906108c 14316
d4f3574e 14317@noindent
79a6e687 14318@xref{Files, , Commands to Specify Files}.
c906108c 14319
5d161b24 14320@kindex show gnutarget
c906108c
SS
14321@item show gnutarget
14322Use the @code{show gnutarget} command to display what file format
14323@code{gnutarget} is set to read. If you have not set @code{gnutarget},
14324@value{GDBN} will determine the file format for each file automatically,
14325and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
14326@end table
14327
4644b6e3 14328@cindex common targets
c906108c
SS
14329Here are some common targets (available, or not, depending on the GDB
14330configuration):
c906108c
SS
14331
14332@table @code
4644b6e3 14333@kindex target
c906108c 14334@item target exec @var{program}
4644b6e3 14335@cindex executable file target
c906108c
SS
14336An executable file. @samp{target exec @var{program}} is the same as
14337@samp{exec-file @var{program}}.
14338
c906108c 14339@item target core @var{filename}
4644b6e3 14340@cindex core dump file target
c906108c
SS
14341A core dump file. @samp{target core @var{filename}} is the same as
14342@samp{core-file @var{filename}}.
c906108c 14343
1a10341b 14344@item target remote @var{medium}
4644b6e3 14345@cindex remote target
1a10341b
JB
14346A remote system connected to @value{GDBN} via a serial line or network
14347connection. This command tells @value{GDBN} to use its own remote
14348protocol over @var{medium} for debugging. @xref{Remote Debugging}.
14349
14350For example, if you have a board connected to @file{/dev/ttya} on the
14351machine running @value{GDBN}, you could say:
14352
14353@smallexample
14354target remote /dev/ttya
14355@end smallexample
14356
14357@code{target remote} supports the @code{load} command. This is only
14358useful if you have some other way of getting the stub to the target
14359system, and you can put it somewhere in memory where it won't get
14360clobbered by the download.
c906108c 14361
c906108c 14362@item target sim
4644b6e3 14363@cindex built-in simulator target
2df3850c 14364Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213 14365In general,
474c8240 14366@smallexample
104c1213
JM
14367 target sim
14368 load
14369 run
474c8240 14370@end smallexample
d4f3574e 14371@noindent
104c1213 14372works; however, you cannot assume that a specific memory map, device
d4f3574e 14373drivers, or even basic I/O is available, although some simulators do
104c1213
JM
14374provide these. For info about any processor-specific simulator details,
14375see the appropriate section in @ref{Embedded Processors, ,Embedded
14376Processors}.
14377
c906108c
SS
14378@end table
14379
104c1213 14380Some configurations may include these targets as well:
c906108c
SS
14381
14382@table @code
14383
c906108c 14384@item target nrom @var{dev}
4644b6e3 14385@cindex NetROM ROM emulator target
c906108c
SS
14386NetROM ROM emulator. This target only supports downloading.
14387
c906108c
SS
14388@end table
14389
5d161b24 14390Different targets are available on different configurations of @value{GDBN};
c906108c 14391your configuration may have more or fewer targets.
c906108c 14392
721c2651
EZ
14393Many remote targets require you to download the executable's code once
14394you've successfully established a connection. You may wish to control
3d00d119
DJ
14395various aspects of this process.
14396
14397@table @code
721c2651
EZ
14398
14399@item set hash
14400@kindex set hash@r{, for remote monitors}
14401@cindex hash mark while downloading
14402This command controls whether a hash mark @samp{#} is displayed while
14403downloading a file to the remote monitor. If on, a hash mark is
14404displayed after each S-record is successfully downloaded to the
14405monitor.
14406
14407@item show hash
14408@kindex show hash@r{, for remote monitors}
14409Show the current status of displaying the hash mark.
14410
14411@item set debug monitor
14412@kindex set debug monitor
14413@cindex display remote monitor communications
14414Enable or disable display of communications messages between
14415@value{GDBN} and the remote monitor.
14416
14417@item show debug monitor
14418@kindex show debug monitor
14419Show the current status of displaying communications between
14420@value{GDBN} and the remote monitor.
a8f24a35 14421@end table
c906108c
SS
14422
14423@table @code
14424
14425@kindex load @var{filename}
14426@item load @var{filename}
8edfe269 14427@anchor{load}
c906108c
SS
14428Depending on what remote debugging facilities are configured into
14429@value{GDBN}, the @code{load} command may be available. Where it exists, it
14430is meant to make @var{filename} (an executable) available for debugging
14431on the remote system---by downloading, or dynamic linking, for example.
14432@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
14433the @code{add-symbol-file} command.
14434
14435If your @value{GDBN} does not have a @code{load} command, attempting to
14436execute it gets the error message ``@code{You can't do that when your
14437target is @dots{}}''
c906108c
SS
14438
14439The file is loaded at whatever address is specified in the executable.
14440For some object file formats, you can specify the load address when you
14441link the program; for other formats, like a.out, the object file format
14442specifies a fixed address.
14443@c FIXME! This would be a good place for an xref to the GNU linker doc.
14444
68437a39
DJ
14445Depending on the remote side capabilities, @value{GDBN} may be able to
14446load programs into flash memory.
14447
c906108c
SS
14448@code{load} does not repeat if you press @key{RET} again after using it.
14449@end table
14450
6d2ebf8b 14451@node Byte Order
79a6e687 14452@section Choosing Target Byte Order
7a292a7a 14453
c906108c
SS
14454@cindex choosing target byte order
14455@cindex target byte order
c906108c 14456
172c2a43 14457Some types of processors, such as the MIPS, PowerPC, and Renesas SH,
c906108c
SS
14458offer the ability to run either big-endian or little-endian byte
14459orders. Usually the executable or symbol will include a bit to
14460designate the endian-ness, and you will not need to worry about
14461which to use. However, you may still find it useful to adjust
d4f3574e 14462@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
14463
14464@table @code
4644b6e3 14465@kindex set endian
c906108c
SS
14466@item set endian big
14467Instruct @value{GDBN} to assume the target is big-endian.
14468
c906108c
SS
14469@item set endian little
14470Instruct @value{GDBN} to assume the target is little-endian.
14471
c906108c
SS
14472@item set endian auto
14473Instruct @value{GDBN} to use the byte order associated with the
14474executable.
14475
14476@item show endian
14477Display @value{GDBN}'s current idea of the target byte order.
14478
14479@end table
14480
14481Note that these commands merely adjust interpretation of symbolic
14482data on the host, and that they have absolutely no effect on the
14483target system.
14484
ea35711c
DJ
14485
14486@node Remote Debugging
14487@chapter Debugging Remote Programs
c906108c
SS
14488@cindex remote debugging
14489
14490If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
14491@value{GDBN} in the usual way, it is often useful to use remote debugging.
14492For example, you might use remote debugging on an operating system kernel,
c906108c
SS
14493or on a small system which does not have a general purpose operating system
14494powerful enough to run a full-featured debugger.
14495
14496Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
14497to make this work with particular debugging targets. In addition,
5d161b24 14498@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
14499but not specific to any particular target system) which you can use if you
14500write the remote stubs---the code that runs on the remote system to
14501communicate with @value{GDBN}.
14502
14503Other remote targets may be available in your
14504configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 14505
6b2f586d 14506@menu
07f31aa6 14507* Connecting:: Connecting to a remote target
a6b151f1 14508* File Transfer:: Sending files to a remote system
6b2f586d 14509* Server:: Using the gdbserver program
79a6e687
BW
14510* Remote Configuration:: Remote configuration
14511* Remote Stub:: Implementing a remote stub
6b2f586d
AC
14512@end menu
14513
07f31aa6 14514@node Connecting
79a6e687 14515@section Connecting to a Remote Target
07f31aa6
DJ
14516
14517On the @value{GDBN} host machine, you will need an unstripped copy of
d3e8051b 14518your program, since @value{GDBN} needs symbol and debugging information.
07f31aa6
DJ
14519Start up @value{GDBN} as usual, using the name of the local copy of your
14520program as the first argument.
14521
86941c27
JB
14522@cindex @code{target remote}
14523@value{GDBN} can communicate with the target over a serial line, or
14524over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In
14525each case, @value{GDBN} uses the same protocol for debugging your
14526program; only the medium carrying the debugging packets varies. The
14527@code{target remote} command establishes a connection to the target.
14528Its arguments indicate which medium to use:
14529
14530@table @code
14531
14532@item target remote @var{serial-device}
07f31aa6 14533@cindex serial line, @code{target remote}
86941c27
JB
14534Use @var{serial-device} to communicate with the target. For example,
14535to use a serial line connected to the device named @file{/dev/ttyb}:
14536
14537@smallexample
14538target remote /dev/ttyb
14539@end smallexample
14540
07f31aa6
DJ
14541If you're using a serial line, you may want to give @value{GDBN} the
14542@w{@samp{--baud}} option, or use the @code{set remotebaud} command
79a6e687 14543(@pxref{Remote Configuration, set remotebaud}) before the
9c16f35a 14544@code{target} command.
07f31aa6 14545
86941c27
JB
14546@item target remote @code{@var{host}:@var{port}}
14547@itemx target remote @code{tcp:@var{host}:@var{port}}
14548@cindex @acronym{TCP} port, @code{target remote}
14549Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
14550The @var{host} may be either a host name or a numeric @acronym{IP}
14551address; @var{port} must be a decimal number. The @var{host} could be
14552the target machine itself, if it is directly connected to the net, or
14553it might be a terminal server which in turn has a serial line to the
14554target.
07f31aa6 14555
86941c27
JB
14556For example, to connect to port 2828 on a terminal server named
14557@code{manyfarms}:
07f31aa6
DJ
14558
14559@smallexample
14560target remote manyfarms:2828
14561@end smallexample
14562
86941c27
JB
14563If your remote target is actually running on the same machine as your
14564debugger session (e.g.@: a simulator for your target running on the
14565same host), you can omit the hostname. For example, to connect to
14566port 1234 on your local machine:
07f31aa6
DJ
14567
14568@smallexample
14569target remote :1234
14570@end smallexample
14571@noindent
14572
14573Note that the colon is still required here.
14574
86941c27
JB
14575@item target remote @code{udp:@var{host}:@var{port}}
14576@cindex @acronym{UDP} port, @code{target remote}
14577Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to
14578connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
07f31aa6
DJ
14579
14580@smallexample
14581target remote udp:manyfarms:2828
14582@end smallexample
14583
86941c27
JB
14584When using a @acronym{UDP} connection for remote debugging, you should
14585keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP}
14586can silently drop packets on busy or unreliable networks, which will
14587cause havoc with your debugging session.
14588
66b8c7f6
JB
14589@item target remote | @var{command}
14590@cindex pipe, @code{target remote} to
14591Run @var{command} in the background and communicate with it using a
14592pipe. The @var{command} is a shell command, to be parsed and expanded
14593by the system's command shell, @code{/bin/sh}; it should expect remote
14594protocol packets on its standard input, and send replies on its
14595standard output. You could use this to run a stand-alone simulator
14596that speaks the remote debugging protocol, to make net connections
14597using programs like @code{ssh}, or for other similar tricks.
14598
14599If @var{command} closes its standard output (perhaps by exiting),
14600@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the
14601program has already exited, this will have no effect.)
14602
86941c27 14603@end table
07f31aa6 14604
86941c27 14605Once the connection has been established, you can use all the usual
8edfe269
DJ
14606commands to examine and change data. The remote program is already
14607running; you can use @kbd{step} and @kbd{continue}, and you do not
14608need to use @kbd{run}.
07f31aa6
DJ
14609
14610@cindex interrupting remote programs
14611@cindex remote programs, interrupting
14612Whenever @value{GDBN} is waiting for the remote program, if you type the
c8aa23ab 14613interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the
07f31aa6
DJ
14614program. This may or may not succeed, depending in part on the hardware
14615and the serial drivers the remote system uses. If you type the
14616interrupt character once again, @value{GDBN} displays this prompt:
14617
14618@smallexample
14619Interrupted while waiting for the program.
14620Give up (and stop debugging it)? (y or n)
14621@end smallexample
14622
14623If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
14624(If you decide you want to try again later, you can use @samp{target
14625remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
14626goes back to waiting.
14627
14628@table @code
14629@kindex detach (remote)
14630@item detach
14631When you have finished debugging the remote program, you can use the
14632@code{detach} command to release it from @value{GDBN} control.
14633Detaching from the target normally resumes its execution, but the results
14634will depend on your particular remote stub. After the @code{detach}
14635command, @value{GDBN} is free to connect to another target.
14636
14637@kindex disconnect
14638@item disconnect
14639The @code{disconnect} command behaves like @code{detach}, except that
14640the target is generally not resumed. It will wait for @value{GDBN}
14641(this instance or another one) to connect and continue debugging. After
14642the @code{disconnect} command, @value{GDBN} is again free to connect to
14643another target.
09d4efe1
EZ
14644
14645@cindex send command to remote monitor
fad38dfa
EZ
14646@cindex extend @value{GDBN} for remote targets
14647@cindex add new commands for external monitor
09d4efe1
EZ
14648@kindex monitor
14649@item monitor @var{cmd}
fad38dfa
EZ
14650This command allows you to send arbitrary commands directly to the
14651remote monitor. Since @value{GDBN} doesn't care about the commands it
14652sends like this, this command is the way to extend @value{GDBN}---you
14653can add new commands that only the external monitor will understand
14654and implement.
07f31aa6
DJ
14655@end table
14656
a6b151f1
DJ
14657@node File Transfer
14658@section Sending files to a remote system
14659@cindex remote target, file transfer
14660@cindex file transfer
14661@cindex sending files to remote systems
14662
14663Some remote targets offer the ability to transfer files over the same
14664connection used to communicate with @value{GDBN}. This is convenient
14665for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems
14666running @code{gdbserver} over a network interface. For other targets,
14667e.g.@: embedded devices with only a single serial port, this may be
14668the only way to upload or download files.
14669
14670Not all remote targets support these commands.
14671
14672@table @code
14673@kindex remote put
14674@item remote put @var{hostfile} @var{targetfile}
14675Copy file @var{hostfile} from the host system (the machine running
14676@value{GDBN}) to @var{targetfile} on the target system.
14677
14678@kindex remote get
14679@item remote get @var{targetfile} @var{hostfile}
14680Copy file @var{targetfile} from the target system to @var{hostfile}
14681on the host system.
14682
14683@kindex remote delete
14684@item remote delete @var{targetfile}
14685Delete @var{targetfile} from the target system.
14686
14687@end table
14688
6f05cf9f 14689@node Server
79a6e687 14690@section Using the @code{gdbserver} Program
6f05cf9f
AC
14691
14692@kindex gdbserver
14693@cindex remote connection without stubs
14694@code{gdbserver} is a control program for Unix-like systems, which
14695allows you to connect your program with a remote @value{GDBN} via
14696@code{target remote}---but without linking in the usual debugging stub.
14697
14698@code{gdbserver} is not a complete replacement for the debugging stubs,
14699because it requires essentially the same operating-system facilities
14700that @value{GDBN} itself does. In fact, a system that can run
14701@code{gdbserver} to connect to a remote @value{GDBN} could also run
14702@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
14703because it is a much smaller program than @value{GDBN} itself. It is
14704also easier to port than all of @value{GDBN}, so you may be able to get
14705started more quickly on a new system by using @code{gdbserver}.
14706Finally, if you develop code for real-time systems, you may find that
14707the tradeoffs involved in real-time operation make it more convenient to
14708do as much development work as possible on another system, for example
14709by cross-compiling. You can use @code{gdbserver} to make a similar
14710choice for debugging.
14711
14712@value{GDBN} and @code{gdbserver} communicate via either a serial line
14713or a TCP connection, using the standard @value{GDBN} remote serial
14714protocol.
14715
2d717e4f
DJ
14716@quotation
14717@emph{Warning:} @code{gdbserver} does not have any built-in security.
14718Do not run @code{gdbserver} connected to any public network; a
14719@value{GDBN} connection to @code{gdbserver} provides access to the
14720target system with the same privileges as the user running
14721@code{gdbserver}.
14722@end quotation
14723
14724@subsection Running @code{gdbserver}
14725@cindex arguments, to @code{gdbserver}
14726
14727Run @code{gdbserver} on the target system. You need a copy of the
14728program you want to debug, including any libraries it requires.
6f05cf9f
AC
14729@code{gdbserver} does not need your program's symbol table, so you can
14730strip the program if necessary to save space. @value{GDBN} on the host
14731system does all the symbol handling.
14732
14733To use the server, you must tell it how to communicate with @value{GDBN};
56460a61 14734the name of your program; and the arguments for your program. The usual
6f05cf9f
AC
14735syntax is:
14736
14737@smallexample
14738target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
14739@end smallexample
14740
14741@var{comm} is either a device name (to use a serial line) or a TCP
14742hostname and portnumber. For example, to debug Emacs with the argument
14743@samp{foo.txt} and communicate with @value{GDBN} over the serial port
14744@file{/dev/com1}:
14745
14746@smallexample
14747target> gdbserver /dev/com1 emacs foo.txt
14748@end smallexample
14749
14750@code{gdbserver} waits passively for the host @value{GDBN} to communicate
14751with it.
14752
14753To use a TCP connection instead of a serial line:
14754
14755@smallexample
14756target> gdbserver host:2345 emacs foo.txt
14757@end smallexample
14758
14759The only difference from the previous example is the first argument,
14760specifying that you are communicating with the host @value{GDBN} via
14761TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
14762expect a TCP connection from machine @samp{host} to local TCP port 2345.
14763(Currently, the @samp{host} part is ignored.) You can choose any number
14764you want for the port number as long as it does not conflict with any
14765TCP ports already in use on the target system (for example, @code{23} is
14766reserved for @code{telnet}).@footnote{If you choose a port number that
14767conflicts with another service, @code{gdbserver} prints an error message
14768and exits.} You must use the same port number with the host @value{GDBN}
14769@code{target remote} command.
14770
2d717e4f
DJ
14771@subsubsection Attaching to a Running Program
14772
56460a61
DJ
14773On some targets, @code{gdbserver} can also attach to running programs.
14774This is accomplished via the @code{--attach} argument. The syntax is:
14775
14776@smallexample
2d717e4f 14777target> gdbserver --attach @var{comm} @var{pid}
56460a61
DJ
14778@end smallexample
14779
14780@var{pid} is the process ID of a currently running process. It isn't necessary
14781to point @code{gdbserver} at a binary for the running process.
14782
b1fe9455
DJ
14783@pindex pidof
14784@cindex attach to a program by name
14785You can debug processes by name instead of process ID if your target has the
14786@code{pidof} utility:
14787
14788@smallexample
2d717e4f 14789target> gdbserver --attach @var{comm} `pidof @var{program}`
b1fe9455
DJ
14790@end smallexample
14791
f822c95b 14792In case more than one copy of @var{program} is running, or @var{program}
b1fe9455
DJ
14793has multiple threads, most versions of @code{pidof} support the
14794@code{-s} option to only return the first process ID.
14795
2d717e4f
DJ
14796@subsubsection Multi-Process Mode for @code{gdbserver}
14797@cindex gdbserver, multiple processes
14798@cindex multiple processes with gdbserver
14799
14800When you connect to @code{gdbserver} using @code{target remote},
14801@code{gdbserver} debugs the specified program only once. When the
14802program exits, or you detach from it, @value{GDBN} closes the connection
14803and @code{gdbserver} exits.
14804
6e6c6f50 14805If you connect using @kbd{target extended-remote}, @code{gdbserver}
2d717e4f
DJ
14806enters multi-process mode. When the debugged program exits, or you
14807detach from it, @value{GDBN} stays connected to @code{gdbserver} even
14808though no program is running. The @code{run} and @code{attach}
14809commands instruct @code{gdbserver} to run or attach to a new program.
14810The @code{run} command uses @code{set remote exec-file} (@pxref{set
14811remote exec-file}) to select the program to run. Command line
14812arguments are supported, except for wildcard expansion and I/O
14813redirection (@pxref{Arguments}).
14814
14815To start @code{gdbserver} without supplying an initial command to run
14816or process ID to attach, use the @option{--multi} command line option.
6e6c6f50 14817Then you can connect using @kbd{target extended-remote} and start
2d717e4f
DJ
14818the program you want to debug.
14819
14820@code{gdbserver} does not automatically exit in multi-process mode.
14821You can terminate it by using @code{monitor exit}
14822(@pxref{Monitor Commands for gdbserver}).
14823
14824@subsubsection Other Command-Line Arguments for @code{gdbserver}
14825
62709adf
PA
14826The @option{--debug} option tells @code{gdbserver} to display extra
14827status information about the debugging process. The
14828@option{--remote-debug} option tells @code{gdbserver} to display
14829remote protocol debug output. These options are intended for
14830@code{gdbserver} development and for bug reports to the developers.
2d717e4f 14831
ccd213ac
DJ
14832The @option{--wrapper} option specifies a wrapper to launch programs
14833for debugging. The option should be followed by the name of the
14834wrapper, then any command-line arguments to pass to the wrapper, then
14835@kbd{--} indicating the end of the wrapper arguments.
14836
14837@code{gdbserver} runs the specified wrapper program with a combined
14838command line including the wrapper arguments, then the name of the
14839program to debug, then any arguments to the program. The wrapper
14840runs until it executes your program, and then @value{GDBN} gains control.
14841
14842You can use any program that eventually calls @code{execve} with
14843its arguments as a wrapper. Several standard Unix utilities do
14844this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
14845with @code{exec "$@@"} will also work.
14846
14847For example, you can use @code{env} to pass an environment variable to
14848the debugged program, without setting the variable in @code{gdbserver}'s
14849environment:
14850
14851@smallexample
14852$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog
14853@end smallexample
14854
2d717e4f
DJ
14855@subsection Connecting to @code{gdbserver}
14856
14857Run @value{GDBN} on the host system.
14858
14859First make sure you have the necessary symbol files. Load symbols for
f822c95b
DJ
14860your application using the @code{file} command before you connect. Use
14861@code{set sysroot} to locate target libraries (unless your @value{GDBN}
2d717e4f 14862was compiled with the correct sysroot using @code{--with-sysroot}).
f822c95b
DJ
14863
14864The symbol file and target libraries must exactly match the executable
14865and libraries on the target, with one exception: the files on the host
14866system should not be stripped, even if the files on the target system
14867are. Mismatched or missing files will lead to confusing results
14868during debugging. On @sc{gnu}/Linux targets, mismatched or missing
14869files may also prevent @code{gdbserver} from debugging multi-threaded
14870programs.
14871
79a6e687 14872Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}).
6f05cf9f
AC
14873For TCP connections, you must start up @code{gdbserver} prior to using
14874the @code{target remote} command. Otherwise you may get an error whose
14875text depends on the host system, but which usually looks something like
2d717e4f 14876@samp{Connection refused}. Don't use the @code{load}
397ca115 14877command in @value{GDBN} when using @code{gdbserver}, since the program is
f822c95b 14878already on the target.
07f31aa6 14879
79a6e687 14880@subsection Monitor Commands for @code{gdbserver}
c74d0ad8 14881@cindex monitor commands, for @code{gdbserver}
2d717e4f 14882@anchor{Monitor Commands for gdbserver}
c74d0ad8
DJ
14883
14884During a @value{GDBN} session using @code{gdbserver}, you can use the
14885@code{monitor} command to send special requests to @code{gdbserver}.
2d717e4f 14886Here are the available commands.
c74d0ad8
DJ
14887
14888@table @code
14889@item monitor help
14890List the available monitor commands.
14891
14892@item monitor set debug 0
14893@itemx monitor set debug 1
14894Disable or enable general debugging messages.
14895
14896@item monitor set remote-debug 0
14897@itemx monitor set remote-debug 1
14898Disable or enable specific debugging messages associated with the remote
14899protocol (@pxref{Remote Protocol}).
14900
2d717e4f
DJ
14901@item monitor exit
14902Tell gdbserver to exit immediately. This command should be followed by
14903@code{disconnect} to close the debugging session. @code{gdbserver} will
14904detach from any attached processes and kill any processes it created.
14905Use @code{monitor exit} to terminate @code{gdbserver} at the end
14906of a multi-process mode debug session.
14907
c74d0ad8
DJ
14908@end table
14909
79a6e687
BW
14910@node Remote Configuration
14911@section Remote Configuration
501eef12 14912
9c16f35a
EZ
14913@kindex set remote
14914@kindex show remote
14915This section documents the configuration options available when
14916debugging remote programs. For the options related to the File I/O
fc320d37 14917extensions of the remote protocol, see @ref{system,
9c16f35a 14918system-call-allowed}.
501eef12
AC
14919
14920@table @code
9c16f35a 14921@item set remoteaddresssize @var{bits}
d3e8051b 14922@cindex address size for remote targets
9c16f35a
EZ
14923@cindex bits in remote address
14924Set the maximum size of address in a memory packet to the specified
14925number of bits. @value{GDBN} will mask off the address bits above
14926that number, when it passes addresses to the remote target. The
14927default value is the number of bits in the target's address.
14928
14929@item show remoteaddresssize
14930Show the current value of remote address size in bits.
14931
14932@item set remotebaud @var{n}
14933@cindex baud rate for remote targets
14934Set the baud rate for the remote serial I/O to @var{n} baud. The
14935value is used to set the speed of the serial port used for debugging
14936remote targets.
14937
14938@item show remotebaud
14939Show the current speed of the remote connection.
14940
14941@item set remotebreak
14942@cindex interrupt remote programs
14943@cindex BREAK signal instead of Ctrl-C
9a6253be 14944@anchor{set remotebreak}
9c16f35a 14945If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote
c8aa23ab 14946when you type @kbd{Ctrl-c} to interrupt the program running
9a7a1b36 14947on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C}
9c16f35a
EZ
14948character instead. The default is off, since most remote systems
14949expect to see @samp{Ctrl-C} as the interrupt signal.
14950
14951@item show remotebreak
14952Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to
14953interrupt the remote program.
14954
23776285
MR
14955@item set remoteflow on
14956@itemx set remoteflow off
14957@kindex set remoteflow
14958Enable or disable hardware flow control (@code{RTS}/@code{CTS})
14959on the serial port used to communicate to the remote target.
14960
14961@item show remoteflow
14962@kindex show remoteflow
14963Show the current setting of hardware flow control.
14964
9c16f35a
EZ
14965@item set remotelogbase @var{base}
14966Set the base (a.k.a.@: radix) of logging serial protocol
14967communications to @var{base}. Supported values of @var{base} are:
14968@code{ascii}, @code{octal}, and @code{hex}. The default is
14969@code{ascii}.
14970
14971@item show remotelogbase
14972Show the current setting of the radix for logging remote serial
14973protocol.
14974
14975@item set remotelogfile @var{file}
14976@cindex record serial communications on file
14977Record remote serial communications on the named @var{file}. The
14978default is not to record at all.
14979
14980@item show remotelogfile.
14981Show the current setting of the file name on which to record the
14982serial communications.
14983
14984@item set remotetimeout @var{num}
14985@cindex timeout for serial communications
14986@cindex remote timeout
14987Set the timeout limit to wait for the remote target to respond to
14988@var{num} seconds. The default is 2 seconds.
14989
14990@item show remotetimeout
14991Show the current number of seconds to wait for the remote target
14992responses.
14993
14994@cindex limit hardware breakpoints and watchpoints
14995@cindex remote target, limit break- and watchpoints
501eef12
AC
14996@anchor{set remote hardware-watchpoint-limit}
14997@anchor{set remote hardware-breakpoint-limit}
14998@item set remote hardware-watchpoint-limit @var{limit}
14999@itemx set remote hardware-breakpoint-limit @var{limit}
15000Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
15001watchpoints. A limit of -1, the default, is treated as unlimited.
2d717e4f
DJ
15002
15003@item set remote exec-file @var{filename}
15004@itemx show remote exec-file
15005@anchor{set remote exec-file}
15006@cindex executable file, for remote target
15007Select the file used for @code{run} with @code{target
15008extended-remote}. This should be set to a filename valid on the
15009target system. If it is not set, the target will use a default
15010filename (e.g.@: the last program run).
84603566
SL
15011
15012@kindex set tcp
15013@kindex show tcp
15014@item set tcp auto-retry on
15015@cindex auto-retry, for remote TCP target
15016Enable auto-retry for remote TCP connections. This is useful if the remote
15017debugging agent is launched in parallel with @value{GDBN}; there is a race
15018condition because the agent may not become ready to accept the connection
15019before @value{GDBN} attempts to connect. When auto-retry is
15020enabled, if the initial attempt to connect fails, @value{GDBN} reattempts
15021to establish the connection using the timeout specified by
15022@code{set tcp connect-timeout}.
15023
15024@item set tcp auto-retry off
15025Do not auto-retry failed TCP connections.
15026
15027@item show tcp auto-retry
15028Show the current auto-retry setting.
15029
15030@item set tcp connect-timeout @var{seconds}
15031@cindex connection timeout, for remote TCP target
15032@cindex timeout, for remote target connection
15033Set the timeout for establishing a TCP connection to the remote target to
15034@var{seconds}. The timeout affects both polling to retry failed connections
15035(enabled by @code{set tcp auto-retry on}) and waiting for connections
15036that are merely slow to complete, and represents an approximate cumulative
15037value.
15038
15039@item show tcp connect-timeout
15040Show the current connection timeout setting.
501eef12
AC
15041@end table
15042
427c3a89
DJ
15043@cindex remote packets, enabling and disabling
15044The @value{GDBN} remote protocol autodetects the packets supported by
15045your debugging stub. If you need to override the autodetection, you
15046can use these commands to enable or disable individual packets. Each
15047packet can be set to @samp{on} (the remote target supports this
15048packet), @samp{off} (the remote target does not support this packet),
15049or @samp{auto} (detect remote target support for this packet). They
15050all default to @samp{auto}. For more information about each packet,
15051see @ref{Remote Protocol}.
15052
15053During normal use, you should not have to use any of these commands.
15054If you do, that may be a bug in your remote debugging stub, or a bug
15055in @value{GDBN}. You may want to report the problem to the
15056@value{GDBN} developers.
15057
cfa9d6d9
DJ
15058For each packet @var{name}, the command to enable or disable the
15059packet is @code{set remote @var{name}-packet}. The available settings
15060are:
427c3a89 15061
cfa9d6d9 15062@multitable @columnfractions 0.28 0.32 0.25
427c3a89
DJ
15063@item Command Name
15064@tab Remote Packet
15065@tab Related Features
15066
cfa9d6d9 15067@item @code{fetch-register}
427c3a89
DJ
15068@tab @code{p}
15069@tab @code{info registers}
15070
cfa9d6d9 15071@item @code{set-register}
427c3a89
DJ
15072@tab @code{P}
15073@tab @code{set}
15074
cfa9d6d9 15075@item @code{binary-download}
427c3a89
DJ
15076@tab @code{X}
15077@tab @code{load}, @code{set}
15078
cfa9d6d9 15079@item @code{read-aux-vector}
427c3a89
DJ
15080@tab @code{qXfer:auxv:read}
15081@tab @code{info auxv}
15082
cfa9d6d9 15083@item @code{symbol-lookup}
427c3a89
DJ
15084@tab @code{qSymbol}
15085@tab Detecting multiple threads
15086
2d717e4f
DJ
15087@item @code{attach}
15088@tab @code{vAttach}
15089@tab @code{attach}
15090
cfa9d6d9 15091@item @code{verbose-resume}
427c3a89
DJ
15092@tab @code{vCont}
15093@tab Stepping or resuming multiple threads
15094
2d717e4f
DJ
15095@item @code{run}
15096@tab @code{vRun}
15097@tab @code{run}
15098
cfa9d6d9 15099@item @code{software-breakpoint}
427c3a89
DJ
15100@tab @code{Z0}
15101@tab @code{break}
15102
cfa9d6d9 15103@item @code{hardware-breakpoint}
427c3a89
DJ
15104@tab @code{Z1}
15105@tab @code{hbreak}
15106
cfa9d6d9 15107@item @code{write-watchpoint}
427c3a89
DJ
15108@tab @code{Z2}
15109@tab @code{watch}
15110
cfa9d6d9 15111@item @code{read-watchpoint}
427c3a89
DJ
15112@tab @code{Z3}
15113@tab @code{rwatch}
15114
cfa9d6d9 15115@item @code{access-watchpoint}
427c3a89
DJ
15116@tab @code{Z4}
15117@tab @code{awatch}
15118
cfa9d6d9
DJ
15119@item @code{target-features}
15120@tab @code{qXfer:features:read}
15121@tab @code{set architecture}
15122
15123@item @code{library-info}
15124@tab @code{qXfer:libraries:read}
15125@tab @code{info sharedlibrary}
15126
15127@item @code{memory-map}
15128@tab @code{qXfer:memory-map:read}
15129@tab @code{info mem}
15130
15131@item @code{read-spu-object}
15132@tab @code{qXfer:spu:read}
15133@tab @code{info spu}
15134
15135@item @code{write-spu-object}
15136@tab @code{qXfer:spu:write}
15137@tab @code{info spu}
15138
4aa995e1
PA
15139@item @code{read-siginfo-object}
15140@tab @code{qXfer:siginfo:read}
15141@tab @code{print $_siginfo}
15142
15143@item @code{write-siginfo-object}
15144@tab @code{qXfer:siginfo:write}
15145@tab @code{set $_siginfo}
15146
cfa9d6d9 15147@item @code{get-thread-local-@*storage-address}
427c3a89
DJ
15148@tab @code{qGetTLSAddr}
15149@tab Displaying @code{__thread} variables
15150
08388c79
DE
15151@item @code{search-memory}
15152@tab @code{qSearch:memory}
15153@tab @code{find}
15154
427c3a89
DJ
15155@item @code{supported-packets}
15156@tab @code{qSupported}
15157@tab Remote communications parameters
15158
cfa9d6d9 15159@item @code{pass-signals}
89be2091
DJ
15160@tab @code{QPassSignals}
15161@tab @code{handle @var{signal}}
15162
a6b151f1
DJ
15163@item @code{hostio-close-packet}
15164@tab @code{vFile:close}
15165@tab @code{remote get}, @code{remote put}
15166
15167@item @code{hostio-open-packet}
15168@tab @code{vFile:open}
15169@tab @code{remote get}, @code{remote put}
15170
15171@item @code{hostio-pread-packet}
15172@tab @code{vFile:pread}
15173@tab @code{remote get}, @code{remote put}
15174
15175@item @code{hostio-pwrite-packet}
15176@tab @code{vFile:pwrite}
15177@tab @code{remote get}, @code{remote put}
15178
15179@item @code{hostio-unlink-packet}
15180@tab @code{vFile:unlink}
15181@tab @code{remote delete}
a6f3e723
SL
15182
15183@item @code{noack-packet}
15184@tab @code{QStartNoAckMode}
15185@tab Packet acknowledgment
07e059b5
VP
15186
15187@item @code{osdata}
15188@tab @code{qXfer:osdata:read}
15189@tab @code{info os}
0b16c5cf
PA
15190
15191@item @code{query-attached}
15192@tab @code{qAttached}
15193@tab Querying remote process attach state.
427c3a89
DJ
15194@end multitable
15195
79a6e687
BW
15196@node Remote Stub
15197@section Implementing a Remote Stub
7a292a7a 15198
8e04817f
AC
15199@cindex debugging stub, example
15200@cindex remote stub, example
15201@cindex stub example, remote debugging
15202The stub files provided with @value{GDBN} implement the target side of the
15203communication protocol, and the @value{GDBN} side is implemented in the
15204@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
15205these subroutines to communicate, and ignore the details. (If you're
15206implementing your own stub file, you can still ignore the details: start
15207with one of the existing stub files. @file{sparc-stub.c} is the best
15208organized, and therefore the easiest to read.)
15209
104c1213
JM
15210@cindex remote serial debugging, overview
15211To debug a program running on another machine (the debugging
15212@dfn{target} machine), you must first arrange for all the usual
15213prerequisites for the program to run by itself. For example, for a C
15214program, you need:
c906108c 15215
104c1213
JM
15216@enumerate
15217@item
15218A startup routine to set up the C runtime environment; these usually
15219have a name like @file{crt0}. The startup routine may be supplied by
15220your hardware supplier, or you may have to write your own.
96baa820 15221
5d161b24 15222@item
d4f3574e 15223A C subroutine library to support your program's
104c1213 15224subroutine calls, notably managing input and output.
96baa820 15225
104c1213
JM
15226@item
15227A way of getting your program to the other machine---for example, a
15228download program. These are often supplied by the hardware
15229manufacturer, but you may have to write your own from hardware
15230documentation.
15231@end enumerate
96baa820 15232
104c1213
JM
15233The next step is to arrange for your program to use a serial port to
15234communicate with the machine where @value{GDBN} is running (the @dfn{host}
15235machine). In general terms, the scheme looks like this:
96baa820 15236
104c1213
JM
15237@table @emph
15238@item On the host,
15239@value{GDBN} already understands how to use this protocol; when everything
15240else is set up, you can simply use the @samp{target remote} command
15241(@pxref{Targets,,Specifying a Debugging Target}).
15242
15243@item On the target,
15244you must link with your program a few special-purpose subroutines that
15245implement the @value{GDBN} remote serial protocol. The file containing these
15246subroutines is called a @dfn{debugging stub}.
15247
15248On certain remote targets, you can use an auxiliary program
15249@code{gdbserver} instead of linking a stub into your program.
79a6e687 15250@xref{Server,,Using the @code{gdbserver} Program}, for details.
104c1213 15251@end table
96baa820 15252
104c1213
JM
15253The debugging stub is specific to the architecture of the remote
15254machine; for example, use @file{sparc-stub.c} to debug programs on
15255@sc{sparc} boards.
96baa820 15256
104c1213
JM
15257@cindex remote serial stub list
15258These working remote stubs are distributed with @value{GDBN}:
96baa820 15259
104c1213
JM
15260@table @code
15261
15262@item i386-stub.c
41afff9a 15263@cindex @file{i386-stub.c}
104c1213
JM
15264@cindex Intel
15265@cindex i386
15266For Intel 386 and compatible architectures.
15267
15268@item m68k-stub.c
41afff9a 15269@cindex @file{m68k-stub.c}
104c1213
JM
15270@cindex Motorola 680x0
15271@cindex m680x0
15272For Motorola 680x0 architectures.
15273
15274@item sh-stub.c
41afff9a 15275@cindex @file{sh-stub.c}
172c2a43 15276@cindex Renesas
104c1213 15277@cindex SH
172c2a43 15278For Renesas SH architectures.
104c1213
JM
15279
15280@item sparc-stub.c
41afff9a 15281@cindex @file{sparc-stub.c}
104c1213
JM
15282@cindex Sparc
15283For @sc{sparc} architectures.
15284
15285@item sparcl-stub.c
41afff9a 15286@cindex @file{sparcl-stub.c}
104c1213
JM
15287@cindex Fujitsu
15288@cindex SparcLite
15289For Fujitsu @sc{sparclite} architectures.
15290
15291@end table
15292
15293The @file{README} file in the @value{GDBN} distribution may list other
15294recently added stubs.
15295
15296@menu
15297* Stub Contents:: What the stub can do for you
15298* Bootstrapping:: What you must do for the stub
15299* Debug Session:: Putting it all together
104c1213
JM
15300@end menu
15301
6d2ebf8b 15302@node Stub Contents
79a6e687 15303@subsection What the Stub Can Do for You
104c1213
JM
15304
15305@cindex remote serial stub
15306The debugging stub for your architecture supplies these three
15307subroutines:
15308
15309@table @code
15310@item set_debug_traps
4644b6e3 15311@findex set_debug_traps
104c1213
JM
15312@cindex remote serial stub, initialization
15313This routine arranges for @code{handle_exception} to run when your
15314program stops. You must call this subroutine explicitly near the
15315beginning of your program.
15316
15317@item handle_exception
4644b6e3 15318@findex handle_exception
104c1213
JM
15319@cindex remote serial stub, main routine
15320This is the central workhorse, but your program never calls it
15321explicitly---the setup code arranges for @code{handle_exception} to
15322run when a trap is triggered.
15323
15324@code{handle_exception} takes control when your program stops during
15325execution (for example, on a breakpoint), and mediates communications
15326with @value{GDBN} on the host machine. This is where the communications
15327protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 15328representative on the target machine. It begins by sending summary
104c1213
JM
15329information on the state of your program, then continues to execute,
15330retrieving and transmitting any information @value{GDBN} needs, until you
15331execute a @value{GDBN} command that makes your program resume; at that point,
15332@code{handle_exception} returns control to your own code on the target
5d161b24 15333machine.
104c1213
JM
15334
15335@item breakpoint
15336@cindex @code{breakpoint} subroutine, remote
15337Use this auxiliary subroutine to make your program contain a
15338breakpoint. Depending on the particular situation, this may be the only
15339way for @value{GDBN} to get control. For instance, if your target
15340machine has some sort of interrupt button, you won't need to call this;
15341pressing the interrupt button transfers control to
15342@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
15343simply receiving characters on the serial port may also trigger a trap;
15344again, in that situation, you don't need to call @code{breakpoint} from
15345your own program---simply running @samp{target remote} from the host
5d161b24 15346@value{GDBN} session gets control.
104c1213
JM
15347
15348Call @code{breakpoint} if none of these is true, or if you simply want
15349to make certain your program stops at a predetermined point for the
15350start of your debugging session.
15351@end table
15352
6d2ebf8b 15353@node Bootstrapping
79a6e687 15354@subsection What You Must Do for the Stub
104c1213
JM
15355
15356@cindex remote stub, support routines
15357The debugging stubs that come with @value{GDBN} are set up for a particular
15358chip architecture, but they have no information about the rest of your
15359debugging target machine.
15360
15361First of all you need to tell the stub how to communicate with the
15362serial port.
15363
15364@table @code
15365@item int getDebugChar()
4644b6e3 15366@findex getDebugChar
104c1213
JM
15367Write this subroutine to read a single character from the serial port.
15368It may be identical to @code{getchar} for your target system; a
15369different name is used to allow you to distinguish the two if you wish.
15370
15371@item void putDebugChar(int)
4644b6e3 15372@findex putDebugChar
104c1213 15373Write this subroutine to write a single character to the serial port.
5d161b24 15374It may be identical to @code{putchar} for your target system; a
104c1213
JM
15375different name is used to allow you to distinguish the two if you wish.
15376@end table
15377
15378@cindex control C, and remote debugging
15379@cindex interrupting remote targets
15380If you want @value{GDBN} to be able to stop your program while it is
15381running, you need to use an interrupt-driven serial driver, and arrange
15382for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
15383character). That is the character which @value{GDBN} uses to tell the
15384remote system to stop.
15385
15386Getting the debugging target to return the proper status to @value{GDBN}
15387probably requires changes to the standard stub; one quick and dirty way
15388is to just execute a breakpoint instruction (the ``dirty'' part is that
15389@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
15390
15391Other routines you need to supply are:
15392
15393@table @code
15394@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
4644b6e3 15395@findex exceptionHandler
104c1213
JM
15396Write this function to install @var{exception_address} in the exception
15397handling tables. You need to do this because the stub does not have any
15398way of knowing what the exception handling tables on your target system
15399are like (for example, the processor's table might be in @sc{rom},
15400containing entries which point to a table in @sc{ram}).
15401@var{exception_number} is the exception number which should be changed;
15402its meaning is architecture-dependent (for example, different numbers
15403might represent divide by zero, misaligned access, etc). When this
15404exception occurs, control should be transferred directly to
15405@var{exception_address}, and the processor state (stack, registers,
15406and so on) should be just as it is when a processor exception occurs. So if
15407you want to use a jump instruction to reach @var{exception_address}, it
15408should be a simple jump, not a jump to subroutine.
15409
15410For the 386, @var{exception_address} should be installed as an interrupt
15411gate so that interrupts are masked while the handler runs. The gate
15412should be at privilege level 0 (the most privileged level). The
15413@sc{sparc} and 68k stubs are able to mask interrupts themselves without
15414help from @code{exceptionHandler}.
15415
15416@item void flush_i_cache()
4644b6e3 15417@findex flush_i_cache
d4f3574e 15418On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
15419instruction cache, if any, on your target machine. If there is no
15420instruction cache, this subroutine may be a no-op.
15421
15422On target machines that have instruction caches, @value{GDBN} requires this
15423function to make certain that the state of your program is stable.
15424@end table
15425
15426@noindent
15427You must also make sure this library routine is available:
15428
15429@table @code
15430@item void *memset(void *, int, int)
4644b6e3 15431@findex memset
104c1213
JM
15432This is the standard library function @code{memset} that sets an area of
15433memory to a known value. If you have one of the free versions of
15434@code{libc.a}, @code{memset} can be found there; otherwise, you must
15435either obtain it from your hardware manufacturer, or write your own.
15436@end table
15437
15438If you do not use the GNU C compiler, you may need other standard
15439library subroutines as well; this varies from one stub to another,
15440but in general the stubs are likely to use any of the common library
e22ea452 15441subroutines which @code{@value{NGCC}} generates as inline code.
104c1213
JM
15442
15443
6d2ebf8b 15444@node Debug Session
79a6e687 15445@subsection Putting it All Together
104c1213
JM
15446
15447@cindex remote serial debugging summary
15448In summary, when your program is ready to debug, you must follow these
15449steps.
15450
15451@enumerate
15452@item
6d2ebf8b 15453Make sure you have defined the supporting low-level routines
79a6e687 15454(@pxref{Bootstrapping,,What You Must Do for the Stub}):
104c1213
JM
15455@display
15456@code{getDebugChar}, @code{putDebugChar},
15457@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
15458@end display
15459
15460@item
15461Insert these lines near the top of your program:
15462
474c8240 15463@smallexample
104c1213
JM
15464set_debug_traps();
15465breakpoint();
474c8240 15466@end smallexample
104c1213
JM
15467
15468@item
15469For the 680x0 stub only, you need to provide a variable called
15470@code{exceptionHook}. Normally you just use:
15471
474c8240 15472@smallexample
104c1213 15473void (*exceptionHook)() = 0;
474c8240 15474@end smallexample
104c1213 15475
d4f3574e 15476@noindent
104c1213 15477but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 15478function in your program, that function is called when
104c1213
JM
15479@code{@value{GDBN}} continues after stopping on a trap (for example, bus
15480error). The function indicated by @code{exceptionHook} is called with
15481one parameter: an @code{int} which is the exception number.
15482
15483@item
15484Compile and link together: your program, the @value{GDBN} debugging stub for
15485your target architecture, and the supporting subroutines.
15486
15487@item
15488Make sure you have a serial connection between your target machine and
15489the @value{GDBN} host, and identify the serial port on the host.
15490
15491@item
15492@c The "remote" target now provides a `load' command, so we should
15493@c document that. FIXME.
15494Download your program to your target machine (or get it there by
15495whatever means the manufacturer provides), and start it.
15496
15497@item
07f31aa6 15498Start @value{GDBN} on the host, and connect to the target
79a6e687 15499(@pxref{Connecting,,Connecting to a Remote Target}).
9db8d71f 15500
104c1213
JM
15501@end enumerate
15502
8e04817f
AC
15503@node Configurations
15504@chapter Configuration-Specific Information
104c1213 15505
8e04817f
AC
15506While nearly all @value{GDBN} commands are available for all native and
15507cross versions of the debugger, there are some exceptions. This chapter
15508describes things that are only available in certain configurations.
104c1213 15509
8e04817f
AC
15510There are three major categories of configurations: native
15511configurations, where the host and target are the same, embedded
15512operating system configurations, which are usually the same for several
15513different processor architectures, and bare embedded processors, which
15514are quite different from each other.
104c1213 15515
8e04817f
AC
15516@menu
15517* Native::
15518* Embedded OS::
15519* Embedded Processors::
15520* Architectures::
15521@end menu
104c1213 15522
8e04817f
AC
15523@node Native
15524@section Native
104c1213 15525
8e04817f
AC
15526This section describes details specific to particular native
15527configurations.
6cf7e474 15528
8e04817f
AC
15529@menu
15530* HP-UX:: HP-UX
7561d450 15531* BSD libkvm Interface:: Debugging BSD kernel memory images
8e04817f
AC
15532* SVR4 Process Information:: SVR4 process information
15533* DJGPP Native:: Features specific to the DJGPP port
78c47bea 15534* Cygwin Native:: Features specific to the Cygwin port
14d6dd68 15535* Hurd Native:: Features specific to @sc{gnu} Hurd
a64548ea 15536* Neutrino:: Features specific to QNX Neutrino
a80b95ba 15537* Darwin:: Features specific to Darwin
8e04817f 15538@end menu
6cf7e474 15539
8e04817f
AC
15540@node HP-UX
15541@subsection HP-UX
104c1213 15542
8e04817f
AC
15543On HP-UX systems, if you refer to a function or variable name that
15544begins with a dollar sign, @value{GDBN} searches for a user or system
15545name first, before it searches for a convenience variable.
104c1213 15546
9c16f35a 15547
7561d450
MK
15548@node BSD libkvm Interface
15549@subsection BSD libkvm Interface
15550
15551@cindex libkvm
15552@cindex kernel memory image
15553@cindex kernel crash dump
15554
15555BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
15556interface that provides a uniform interface for accessing kernel virtual
15557memory images, including live systems and crash dumps. @value{GDBN}
15558uses this interface to allow you to debug live kernels and kernel crash
15559dumps on many native BSD configurations. This is implemented as a
15560special @code{kvm} debugging target. For debugging a live system, load
15561the currently running kernel into @value{GDBN} and connect to the
15562@code{kvm} target:
15563
15564@smallexample
15565(@value{GDBP}) @b{target kvm}
15566@end smallexample
15567
15568For debugging crash dumps, provide the file name of the crash dump as an
15569argument:
15570
15571@smallexample
15572(@value{GDBP}) @b{target kvm /var/crash/bsd.0}
15573@end smallexample
15574
15575Once connected to the @code{kvm} target, the following commands are
15576available:
15577
15578@table @code
15579@kindex kvm
15580@item kvm pcb
721c2651 15581Set current context from the @dfn{Process Control Block} (PCB) address.
7561d450
MK
15582
15583@item kvm proc
15584Set current context from proc address. This command isn't available on
15585modern FreeBSD systems.
15586@end table
15587
8e04817f 15588@node SVR4 Process Information
79a6e687 15589@subsection SVR4 Process Information
60bf7e09
EZ
15590@cindex /proc
15591@cindex examine process image
15592@cindex process info via @file{/proc}
104c1213 15593
60bf7e09
EZ
15594Many versions of SVR4 and compatible systems provide a facility called
15595@samp{/proc} that can be used to examine the image of a running
15596process using file-system subroutines. If @value{GDBN} is configured
15597for an operating system with this facility, the command @code{info
15598proc} is available to report information about the process running
15599your program, or about any process running on your system. @code{info
15600proc} works only on SVR4 systems that include the @code{procfs} code.
15601This includes, as of this writing, @sc{gnu}/Linux, OSF/1 (Digital
15602Unix), Solaris, Irix, and Unixware, but not HP-UX, for example.
104c1213 15603
8e04817f
AC
15604@table @code
15605@kindex info proc
60bf7e09 15606@cindex process ID
8e04817f 15607@item info proc
60bf7e09
EZ
15608@itemx info proc @var{process-id}
15609Summarize available information about any running process. If a
15610process ID is specified by @var{process-id}, display information about
15611that process; otherwise display information about the program being
15612debugged. The summary includes the debugged process ID, the command
15613line used to invoke it, its current working directory, and its
15614executable file's absolute file name.
15615
15616On some systems, @var{process-id} can be of the form
15617@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID
15618within a process. If the optional @var{pid} part is missing, it means
15619a thread from the process being debugged (the leading @samp{/} still
15620needs to be present, or else @value{GDBN} will interpret the number as
15621a process ID rather than a thread ID).
6cf7e474 15622
8e04817f 15623@item info proc mappings
60bf7e09
EZ
15624@cindex memory address space mappings
15625Report the memory address space ranges accessible in the program, with
15626information on whether the process has read, write, or execute access
15627rights to each range. On @sc{gnu}/Linux systems, each memory range
15628includes the object file which is mapped to that range, instead of the
15629memory access rights to that range.
15630
15631@item info proc stat
15632@itemx info proc status
15633@cindex process detailed status information
15634These subcommands are specific to @sc{gnu}/Linux systems. They show
15635the process-related information, including the user ID and group ID;
15636how many threads are there in the process; its virtual memory usage;
15637the signals that are pending, blocked, and ignored; its TTY; its
15638consumption of system and user time; its stack size; its @samp{nice}
2eecc4ab 15639value; etc. For more information, see the @samp{proc} man page
60bf7e09
EZ
15640(type @kbd{man 5 proc} from your shell prompt).
15641
15642@item info proc all
15643Show all the information about the process described under all of the
15644above @code{info proc} subcommands.
15645
8e04817f
AC
15646@ignore
15647@comment These sub-options of 'info proc' were not included when
15648@comment procfs.c was re-written. Keep their descriptions around
15649@comment against the day when someone finds the time to put them back in.
15650@kindex info proc times
15651@item info proc times
15652Starting time, user CPU time, and system CPU time for your program and
15653its children.
6cf7e474 15654
8e04817f
AC
15655@kindex info proc id
15656@item info proc id
15657Report on the process IDs related to your program: its own process ID,
15658the ID of its parent, the process group ID, and the session ID.
8e04817f 15659@end ignore
721c2651
EZ
15660
15661@item set procfs-trace
15662@kindex set procfs-trace
15663@cindex @code{procfs} API calls
15664This command enables and disables tracing of @code{procfs} API calls.
15665
15666@item show procfs-trace
15667@kindex show procfs-trace
15668Show the current state of @code{procfs} API call tracing.
15669
15670@item set procfs-file @var{file}
15671@kindex set procfs-file
15672Tell @value{GDBN} to write @code{procfs} API trace to the named
15673@var{file}. @value{GDBN} appends the trace info to the previous
15674contents of the file. The default is to display the trace on the
15675standard output.
15676
15677@item show procfs-file
15678@kindex show procfs-file
15679Show the file to which @code{procfs} API trace is written.
15680
15681@item proc-trace-entry
15682@itemx proc-trace-exit
15683@itemx proc-untrace-entry
15684@itemx proc-untrace-exit
15685@kindex proc-trace-entry
15686@kindex proc-trace-exit
15687@kindex proc-untrace-entry
15688@kindex proc-untrace-exit
15689These commands enable and disable tracing of entries into and exits
15690from the @code{syscall} interface.
15691
15692@item info pidlist
15693@kindex info pidlist
15694@cindex process list, QNX Neutrino
15695For QNX Neutrino only, this command displays the list of all the
15696processes and all the threads within each process.
15697
15698@item info meminfo
15699@kindex info meminfo
15700@cindex mapinfo list, QNX Neutrino
15701For QNX Neutrino only, this command displays the list of all mapinfos.
8e04817f 15702@end table
104c1213 15703
8e04817f
AC
15704@node DJGPP Native
15705@subsection Features for Debugging @sc{djgpp} Programs
15706@cindex @sc{djgpp} debugging
15707@cindex native @sc{djgpp} debugging
15708@cindex MS-DOS-specific commands
104c1213 15709
514c4d71
EZ
15710@cindex DPMI
15711@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and
8e04817f
AC
15712MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
15713that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
15714top of real-mode DOS systems and their emulations.
104c1213 15715
8e04817f
AC
15716@value{GDBN} supports native debugging of @sc{djgpp} programs, and
15717defines a few commands specific to the @sc{djgpp} port. This
15718subsection describes those commands.
104c1213 15719
8e04817f
AC
15720@table @code
15721@kindex info dos
15722@item info dos
15723This is a prefix of @sc{djgpp}-specific commands which print
15724information about the target system and important OS structures.
f1251bdd 15725
8e04817f
AC
15726@kindex sysinfo
15727@cindex MS-DOS system info
15728@cindex free memory information (MS-DOS)
15729@item info dos sysinfo
15730This command displays assorted information about the underlying
15731platform: the CPU type and features, the OS version and flavor, the
15732DPMI version, and the available conventional and DPMI memory.
104c1213 15733
8e04817f
AC
15734@cindex GDT
15735@cindex LDT
15736@cindex IDT
15737@cindex segment descriptor tables
15738@cindex descriptor tables display
15739@item info dos gdt
15740@itemx info dos ldt
15741@itemx info dos idt
15742These 3 commands display entries from, respectively, Global, Local,
15743and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
15744tables are data structures which store a descriptor for each segment
15745that is currently in use. The segment's selector is an index into a
15746descriptor table; the table entry for that index holds the
15747descriptor's base address and limit, and its attributes and access
15748rights.
104c1213 15749
8e04817f
AC
15750A typical @sc{djgpp} program uses 3 segments: a code segment, a data
15751segment (used for both data and the stack), and a DOS segment (which
15752allows access to DOS/BIOS data structures and absolute addresses in
15753conventional memory). However, the DPMI host will usually define
15754additional segments in order to support the DPMI environment.
d4f3574e 15755
8e04817f
AC
15756@cindex garbled pointers
15757These commands allow to display entries from the descriptor tables.
15758Without an argument, all entries from the specified table are
15759displayed. An argument, which should be an integer expression, means
15760display a single entry whose index is given by the argument. For
15761example, here's a convenient way to display information about the
15762debugged program's data segment:
104c1213 15763
8e04817f
AC
15764@smallexample
15765@exdent @code{(@value{GDBP}) info dos ldt $ds}
15766@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
15767@end smallexample
104c1213 15768
8e04817f
AC
15769@noindent
15770This comes in handy when you want to see whether a pointer is outside
15771the data segment's limit (i.e.@: @dfn{garbled}).
104c1213 15772
8e04817f
AC
15773@cindex page tables display (MS-DOS)
15774@item info dos pde
15775@itemx info dos pte
15776These two commands display entries from, respectively, the Page
15777Directory and the Page Tables. Page Directories and Page Tables are
15778data structures which control how virtual memory addresses are mapped
15779into physical addresses. A Page Table includes an entry for every
15780page of memory that is mapped into the program's address space; there
15781may be several Page Tables, each one holding up to 4096 entries. A
15782Page Directory has up to 4096 entries, one each for every Page Table
15783that is currently in use.
104c1213 15784
8e04817f
AC
15785Without an argument, @kbd{info dos pde} displays the entire Page
15786Directory, and @kbd{info dos pte} displays all the entries in all of
15787the Page Tables. An argument, an integer expression, given to the
15788@kbd{info dos pde} command means display only that entry from the Page
15789Directory table. An argument given to the @kbd{info dos pte} command
15790means display entries from a single Page Table, the one pointed to by
15791the specified entry in the Page Directory.
104c1213 15792
8e04817f
AC
15793@cindex direct memory access (DMA) on MS-DOS
15794These commands are useful when your program uses @dfn{DMA} (Direct
15795Memory Access), which needs physical addresses to program the DMA
15796controller.
104c1213 15797
8e04817f 15798These commands are supported only with some DPMI servers.
104c1213 15799
8e04817f
AC
15800@cindex physical address from linear address
15801@item info dos address-pte @var{addr}
15802This command displays the Page Table entry for a specified linear
514c4d71
EZ
15803address. The argument @var{addr} is a linear address which should
15804already have the appropriate segment's base address added to it,
15805because this command accepts addresses which may belong to @emph{any}
15806segment. For example, here's how to display the Page Table entry for
15807the page where a variable @code{i} is stored:
104c1213 15808
b383017d 15809@smallexample
8e04817f
AC
15810@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
15811@exdent @code{Page Table entry for address 0x11a00d30:}
b383017d 15812@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
8e04817f 15813@end smallexample
104c1213 15814
8e04817f
AC
15815@noindent
15816This says that @code{i} is stored at offset @code{0xd30} from the page
514c4d71 15817whose physical base address is @code{0x02698000}, and shows all the
8e04817f 15818attributes of that page.
104c1213 15819
8e04817f
AC
15820Note that you must cast the addresses of variables to a @code{char *},
15821since otherwise the value of @code{__djgpp_base_address}, the base
15822address of all variables and functions in a @sc{djgpp} program, will
15823be added using the rules of C pointer arithmetics: if @code{i} is
15824declared an @code{int}, @value{GDBN} will add 4 times the value of
15825@code{__djgpp_base_address} to the address of @code{i}.
104c1213 15826
8e04817f
AC
15827Here's another example, it displays the Page Table entry for the
15828transfer buffer:
104c1213 15829
8e04817f
AC
15830@smallexample
15831@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
15832@exdent @code{Page Table entry for address 0x29110:}
15833@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
15834@end smallexample
104c1213 15835
8e04817f
AC
15836@noindent
15837(The @code{+ 3} offset is because the transfer buffer's address is the
514c4d71
EZ
158383rd member of the @code{_go32_info_block} structure.) The output
15839clearly shows that this DPMI server maps the addresses in conventional
15840memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and
15841linear (@code{0x29110}) addresses are identical.
104c1213 15842
8e04817f
AC
15843This command is supported only with some DPMI servers.
15844@end table
104c1213 15845
c45da7e6 15846@cindex DOS serial data link, remote debugging
a8f24a35
EZ
15847In addition to native debugging, the DJGPP port supports remote
15848debugging via a serial data link. The following commands are specific
15849to remote serial debugging in the DJGPP port of @value{GDBN}.
15850
15851@table @code
15852@kindex set com1base
15853@kindex set com1irq
15854@kindex set com2base
15855@kindex set com2irq
15856@kindex set com3base
15857@kindex set com3irq
15858@kindex set com4base
15859@kindex set com4irq
15860@item set com1base @var{addr}
15861This command sets the base I/O port address of the @file{COM1} serial
15862port.
15863
15864@item set com1irq @var{irq}
15865This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use
15866for the @file{COM1} serial port.
15867
15868There are similar commands @samp{set com2base}, @samp{set com3irq},
15869etc.@: for setting the port address and the @code{IRQ} lines for the
15870other 3 COM ports.
15871
15872@kindex show com1base
15873@kindex show com1irq
15874@kindex show com2base
15875@kindex show com2irq
15876@kindex show com3base
15877@kindex show com3irq
15878@kindex show com4base
15879@kindex show com4irq
15880The related commands @samp{show com1base}, @samp{show com1irq} etc.@:
15881display the current settings of the base address and the @code{IRQ}
15882lines used by the COM ports.
c45da7e6
EZ
15883
15884@item info serial
15885@kindex info serial
15886@cindex DOS serial port status
15887This command prints the status of the 4 DOS serial ports. For each
15888port, it prints whether it's active or not, its I/O base address and
15889IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the
15890counts of various errors encountered so far.
a8f24a35
EZ
15891@end table
15892
15893
78c47bea 15894@node Cygwin Native
79a6e687 15895@subsection Features for Debugging MS Windows PE Executables
78c47bea
PM
15896@cindex MS Windows debugging
15897@cindex native Cygwin debugging
15898@cindex Cygwin-specific commands
15899
be448670 15900@value{GDBN} supports native debugging of MS Windows programs, including
db2e3e2e
BW
15901DLLs with and without symbolic debugging information. There are various
15902additional Cygwin-specific commands, described in this section.
15903Working with DLLs that have no debugging symbols is described in
15904@ref{Non-debug DLL Symbols}.
78c47bea
PM
15905
15906@table @code
15907@kindex info w32
15908@item info w32
db2e3e2e 15909This is a prefix of MS Windows-specific commands which print
78c47bea
PM
15910information about the target system and important OS structures.
15911
15912@item info w32 selector
15913This command displays information returned by
15914the Win32 API @code{GetThreadSelectorEntry} function.
15915It takes an optional argument that is evaluated to
15916a long value to give the information about this given selector.
15917Without argument, this command displays information
d3e8051b 15918about the six segment registers.
78c47bea
PM
15919
15920@kindex info dll
15921@item info dll
db2e3e2e 15922This is a Cygwin-specific alias of @code{info shared}.
78c47bea
PM
15923
15924@kindex dll-symbols
15925@item dll-symbols
15926This command loads symbols from a dll similarly to
15927add-sym command but without the need to specify a base address.
15928
be90c084 15929@kindex set cygwin-exceptions
e16b02ee
EZ
15930@cindex debugging the Cygwin DLL
15931@cindex Cygwin DLL, debugging
be90c084 15932@item set cygwin-exceptions @var{mode}
e16b02ee
EZ
15933If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that
15934happen inside the Cygwin DLL. If @var{mode} is @code{off},
15935@value{GDBN} will delay recognition of exceptions, and may ignore some
15936exceptions which seem to be caused by internal Cygwin DLL
15937``bookkeeping''. This option is meant primarily for debugging the
15938Cygwin DLL itself; the default value is @code{off} to avoid annoying
15939@value{GDBN} users with false @code{SIGSEGV} signals.
be90c084
CF
15940
15941@kindex show cygwin-exceptions
15942@item show cygwin-exceptions
e16b02ee
EZ
15943Displays whether @value{GDBN} will break on exceptions that happen
15944inside the Cygwin DLL itself.
be90c084 15945
b383017d 15946@kindex set new-console
78c47bea 15947@item set new-console @var{mode}
b383017d 15948If @var{mode} is @code{on} the debuggee will
78c47bea
PM
15949be started in a new console on next start.
15950If @var{mode} is @code{off}i, the debuggee will
15951be started in the same console as the debugger.
15952
15953@kindex show new-console
15954@item show new-console
15955Displays whether a new console is used
15956when the debuggee is started.
15957
15958@kindex set new-group
15959@item set new-group @var{mode}
15960This boolean value controls whether the debuggee should
15961start a new group or stay in the same group as the debugger.
15962This affects the way the Windows OS handles
c8aa23ab 15963@samp{Ctrl-C}.
78c47bea
PM
15964
15965@kindex show new-group
15966@item show new-group
15967Displays current value of new-group boolean.
15968
15969@kindex set debugevents
15970@item set debugevents
219eec71
EZ
15971This boolean value adds debug output concerning kernel events related
15972to the debuggee seen by the debugger. This includes events that
15973signal thread and process creation and exit, DLL loading and
15974unloading, console interrupts, and debugging messages produced by the
15975Windows @code{OutputDebugString} API call.
78c47bea
PM
15976
15977@kindex set debugexec
15978@item set debugexec
b383017d 15979This boolean value adds debug output concerning execute events
219eec71 15980(such as resume thread) seen by the debugger.
78c47bea
PM
15981
15982@kindex set debugexceptions
15983@item set debugexceptions
219eec71
EZ
15984This boolean value adds debug output concerning exceptions in the
15985debuggee seen by the debugger.
78c47bea
PM
15986
15987@kindex set debugmemory
15988@item set debugmemory
219eec71
EZ
15989This boolean value adds debug output concerning debuggee memory reads
15990and writes by the debugger.
78c47bea
PM
15991
15992@kindex set shell
15993@item set shell
15994This boolean values specifies whether the debuggee is called
15995via a shell or directly (default value is on).
15996
15997@kindex show shell
15998@item show shell
15999Displays if the debuggee will be started with a shell.
16000
16001@end table
16002
be448670 16003@menu
79a6e687 16004* Non-debug DLL Symbols:: Support for DLLs without debugging symbols
be448670
CF
16005@end menu
16006
79a6e687
BW
16007@node Non-debug DLL Symbols
16008@subsubsection Support for DLLs without Debugging Symbols
be448670
CF
16009@cindex DLLs with no debugging symbols
16010@cindex Minimal symbols and DLLs
16011
16012Very often on windows, some of the DLLs that your program relies on do
16013not include symbolic debugging information (for example,
db2e3e2e 16014@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
be448670 16015symbols in a DLL, it relies on the minimal amount of symbolic
db2e3e2e 16016information contained in the DLL's export table. This section
be448670
CF
16017describes working with such symbols, known internally to @value{GDBN} as
16018``minimal symbols''.
16019
16020Note that before the debugged program has started execution, no DLLs
db2e3e2e 16021will have been loaded. The easiest way around this problem is simply to
be448670 16022start the program --- either by setting a breakpoint or letting the
db2e3e2e 16023program run once to completion. It is also possible to force
be448670 16024@value{GDBN} to load a particular DLL before starting the executable ---
12c27660 16025see the shared library information in @ref{Files}, or the
db2e3e2e 16026@code{dll-symbols} command in @ref{Cygwin Native}. Currently,
be448670
CF
16027explicitly loading symbols from a DLL with no debugging information will
16028cause the symbol names to be duplicated in @value{GDBN}'s lookup table,
16029which may adversely affect symbol lookup performance.
16030
79a6e687 16031@subsubsection DLL Name Prefixes
be448670
CF
16032
16033In keeping with the naming conventions used by the Microsoft debugging
16034tools, DLL export symbols are made available with a prefix based on the
16035DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
16036also entered into the symbol table, so @code{CreateFileA} is often
99e008fe 16037sufficient. In some cases there will be name clashes within a program
be448670
CF
16038(particularly if the executable itself includes full debugging symbols)
16039necessitating the use of the fully qualified name when referring to the
99e008fe 16040contents of the DLL. Use single-quotes around the name to avoid the
be448670
CF
16041exclamation mark (``!'') being interpreted as a language operator.
16042
16043Note that the internal name of the DLL may be all upper-case, even
99e008fe 16044though the file name of the DLL is lower-case, or vice-versa. Since
be448670
CF
16045symbols within @value{GDBN} are @emph{case-sensitive} this may cause
16046some confusion. If in doubt, try the @code{info functions} and
0869d01b
NR
16047@code{info variables} commands or even @code{maint print msymbols}
16048(@pxref{Symbols}). Here's an example:
be448670
CF
16049
16050@smallexample
f7dc1244 16051(@value{GDBP}) info function CreateFileA
be448670
CF
16052All functions matching regular expression "CreateFileA":
16053
16054Non-debugging symbols:
160550x77e885f4 CreateFileA
160560x77e885f4 KERNEL32!CreateFileA
16057@end smallexample
16058
16059@smallexample
f7dc1244 16060(@value{GDBP}) info function !
be448670
CF
16061All functions matching regular expression "!":
16062
16063Non-debugging symbols:
160640x6100114c cygwin1!__assert
160650x61004034 cygwin1!_dll_crt0@@0
160660x61004240 cygwin1!dll_crt0(per_process *)
16067[etc...]
16068@end smallexample
16069
79a6e687 16070@subsubsection Working with Minimal Symbols
be448670
CF
16071
16072Symbols extracted from a DLL's export table do not contain very much
16073type information. All that @value{GDBN} can do is guess whether a symbol
16074refers to a function or variable depending on the linker section that
16075contains the symbol. Also note that the actual contents of the memory
16076contained in a DLL are not available unless the program is running. This
16077means that you cannot examine the contents of a variable or disassemble
16078a function within a DLL without a running program.
16079
16080Variables are generally treated as pointers and dereferenced
16081automatically. For this reason, it is often necessary to prefix a
16082variable name with the address-of operator (``&'') and provide explicit
16083type information in the command. Here's an example of the type of
16084problem:
16085
16086@smallexample
f7dc1244 16087(@value{GDBP}) print 'cygwin1!__argv'
be448670
CF
16088$1 = 268572168
16089@end smallexample
16090
16091@smallexample
f7dc1244 16092(@value{GDBP}) x 'cygwin1!__argv'
be448670
CF
160930x10021610: "\230y\""
16094@end smallexample
16095
16096And two possible solutions:
16097
16098@smallexample
f7dc1244 16099(@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
be448670
CF
16100$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
16101@end smallexample
16102
16103@smallexample
f7dc1244 16104(@value{GDBP}) x/2x &'cygwin1!__argv'
be448670 161050x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
f7dc1244 16106(@value{GDBP}) x/x 0x10021608
be448670 161070x10021608: 0x0022fd98
f7dc1244 16108(@value{GDBP}) x/s 0x0022fd98
be448670
CF
161090x22fd98: "/cygdrive/c/mydirectory/myprogram"
16110@end smallexample
16111
16112Setting a break point within a DLL is possible even before the program
16113starts execution. However, under these circumstances, @value{GDBN} can't
16114examine the initial instructions of the function in order to skip the
16115function's frame set-up code. You can work around this by using ``*&''
16116to set the breakpoint at a raw memory address:
16117
16118@smallexample
f7dc1244 16119(@value{GDBP}) break *&'python22!PyOS_Readline'
be448670
CF
16120Breakpoint 1 at 0x1e04eff0
16121@end smallexample
16122
16123The author of these extensions is not entirely convinced that setting a
16124break point within a shared DLL like @file{kernel32.dll} is completely
16125safe.
16126
14d6dd68 16127@node Hurd Native
79a6e687 16128@subsection Commands Specific to @sc{gnu} Hurd Systems
14d6dd68
EZ
16129@cindex @sc{gnu} Hurd debugging
16130
16131This subsection describes @value{GDBN} commands specific to the
16132@sc{gnu} Hurd native debugging.
16133
16134@table @code
16135@item set signals
16136@itemx set sigs
16137@kindex set signals@r{, Hurd command}
16138@kindex set sigs@r{, Hurd command}
16139This command toggles the state of inferior signal interception by
16140@value{GDBN}. Mach exceptions, such as breakpoint traps, are not
16141affected by this command. @code{sigs} is a shorthand alias for
16142@code{signals}.
16143
16144@item show signals
16145@itemx show sigs
16146@kindex show signals@r{, Hurd command}
16147@kindex show sigs@r{, Hurd command}
16148Show the current state of intercepting inferior's signals.
16149
16150@item set signal-thread
16151@itemx set sigthread
16152@kindex set signal-thread
16153@kindex set sigthread
16154This command tells @value{GDBN} which thread is the @code{libc} signal
16155thread. That thread is run when a signal is delivered to a running
16156process. @code{set sigthread} is the shorthand alias of @code{set
16157signal-thread}.
16158
16159@item show signal-thread
16160@itemx show sigthread
16161@kindex show signal-thread
16162@kindex show sigthread
16163These two commands show which thread will run when the inferior is
16164delivered a signal.
16165
16166@item set stopped
16167@kindex set stopped@r{, Hurd command}
16168This commands tells @value{GDBN} that the inferior process is stopped,
16169as with the @code{SIGSTOP} signal. The stopped process can be
16170continued by delivering a signal to it.
16171
16172@item show stopped
16173@kindex show stopped@r{, Hurd command}
16174This command shows whether @value{GDBN} thinks the debuggee is
16175stopped.
16176
16177@item set exceptions
16178@kindex set exceptions@r{, Hurd command}
16179Use this command to turn off trapping of exceptions in the inferior.
16180When exception trapping is off, neither breakpoints nor
16181single-stepping will work. To restore the default, set exception
16182trapping on.
16183
16184@item show exceptions
16185@kindex show exceptions@r{, Hurd command}
16186Show the current state of trapping exceptions in the inferior.
16187
16188@item set task pause
16189@kindex set task@r{, Hurd commands}
16190@cindex task attributes (@sc{gnu} Hurd)
16191@cindex pause current task (@sc{gnu} Hurd)
16192This command toggles task suspension when @value{GDBN} has control.
16193Setting it to on takes effect immediately, and the task is suspended
16194whenever @value{GDBN} gets control. Setting it to off will take
16195effect the next time the inferior is continued. If this option is set
16196to off, you can use @code{set thread default pause on} or @code{set
16197thread pause on} (see below) to pause individual threads.
16198
16199@item show task pause
16200@kindex show task@r{, Hurd commands}
16201Show the current state of task suspension.
16202
16203@item set task detach-suspend-count
16204@cindex task suspend count
16205@cindex detach from task, @sc{gnu} Hurd
16206This command sets the suspend count the task will be left with when
16207@value{GDBN} detaches from it.
16208
16209@item show task detach-suspend-count
16210Show the suspend count the task will be left with when detaching.
16211
16212@item set task exception-port
16213@itemx set task excp
16214@cindex task exception port, @sc{gnu} Hurd
16215This command sets the task exception port to which @value{GDBN} will
16216forward exceptions. The argument should be the value of the @dfn{send
16217rights} of the task. @code{set task excp} is a shorthand alias.
16218
16219@item set noninvasive
16220@cindex noninvasive task options
16221This command switches @value{GDBN} to a mode that is the least
16222invasive as far as interfering with the inferior is concerned. This
16223is the same as using @code{set task pause}, @code{set exceptions}, and
16224@code{set signals} to values opposite to the defaults.
16225
16226@item info send-rights
16227@itemx info receive-rights
16228@itemx info port-rights
16229@itemx info port-sets
16230@itemx info dead-names
16231@itemx info ports
16232@itemx info psets
16233@cindex send rights, @sc{gnu} Hurd
16234@cindex receive rights, @sc{gnu} Hurd
16235@cindex port rights, @sc{gnu} Hurd
16236@cindex port sets, @sc{gnu} Hurd
16237@cindex dead names, @sc{gnu} Hurd
16238These commands display information about, respectively, send rights,
16239receive rights, port rights, port sets, and dead names of a task.
16240There are also shorthand aliases: @code{info ports} for @code{info
16241port-rights} and @code{info psets} for @code{info port-sets}.
16242
16243@item set thread pause
16244@kindex set thread@r{, Hurd command}
16245@cindex thread properties, @sc{gnu} Hurd
16246@cindex pause current thread (@sc{gnu} Hurd)
16247This command toggles current thread suspension when @value{GDBN} has
16248control. Setting it to on takes effect immediately, and the current
16249thread is suspended whenever @value{GDBN} gets control. Setting it to
16250off will take effect the next time the inferior is continued.
16251Normally, this command has no effect, since when @value{GDBN} has
16252control, the whole task is suspended. However, if you used @code{set
16253task pause off} (see above), this command comes in handy to suspend
16254only the current thread.
16255
16256@item show thread pause
16257@kindex show thread@r{, Hurd command}
16258This command shows the state of current thread suspension.
16259
16260@item set thread run
d3e8051b 16261This command sets whether the current thread is allowed to run.
14d6dd68
EZ
16262
16263@item show thread run
16264Show whether the current thread is allowed to run.
16265
16266@item set thread detach-suspend-count
16267@cindex thread suspend count, @sc{gnu} Hurd
16268@cindex detach from thread, @sc{gnu} Hurd
16269This command sets the suspend count @value{GDBN} will leave on a
16270thread when detaching. This number is relative to the suspend count
16271found by @value{GDBN} when it notices the thread; use @code{set thread
16272takeover-suspend-count} to force it to an absolute value.
16273
16274@item show thread detach-suspend-count
16275Show the suspend count @value{GDBN} will leave on the thread when
16276detaching.
16277
16278@item set thread exception-port
16279@itemx set thread excp
16280Set the thread exception port to which to forward exceptions. This
16281overrides the port set by @code{set task exception-port} (see above).
16282@code{set thread excp} is the shorthand alias.
16283
16284@item set thread takeover-suspend-count
16285Normally, @value{GDBN}'s thread suspend counts are relative to the
16286value @value{GDBN} finds when it notices each thread. This command
16287changes the suspend counts to be absolute instead.
16288
16289@item set thread default
16290@itemx show thread default
16291@cindex thread default settings, @sc{gnu} Hurd
16292Each of the above @code{set thread} commands has a @code{set thread
16293default} counterpart (e.g., @code{set thread default pause}, @code{set
16294thread default exception-port}, etc.). The @code{thread default}
16295variety of commands sets the default thread properties for all
16296threads; you can then change the properties of individual threads with
16297the non-default commands.
16298@end table
16299
16300
a64548ea
EZ
16301@node Neutrino
16302@subsection QNX Neutrino
16303@cindex QNX Neutrino
16304
16305@value{GDBN} provides the following commands specific to the QNX
16306Neutrino target:
16307
16308@table @code
16309@item set debug nto-debug
16310@kindex set debug nto-debug
16311When set to on, enables debugging messages specific to the QNX
16312Neutrino support.
16313
16314@item show debug nto-debug
16315@kindex show debug nto-debug
16316Show the current state of QNX Neutrino messages.
16317@end table
16318
a80b95ba
TG
16319@node Darwin
16320@subsection Darwin
16321@cindex Darwin
16322
16323@value{GDBN} provides the following commands specific to the Darwin target:
16324
16325@table @code
16326@item set debug darwin @var{num}
16327@kindex set debug darwin
16328When set to a non zero value, enables debugging messages specific to
16329the Darwin support. Higher values produce more verbose output.
16330
16331@item show debug darwin
16332@kindex show debug darwin
16333Show the current state of Darwin messages.
16334
16335@item set debug mach-o @var{num}
16336@kindex set debug mach-o
16337When set to a non zero value, enables debugging messages while
16338@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the
16339file format used on Darwin for object and executable files.) Higher
16340values produce more verbose output. This is a command to diagnose
16341problems internal to @value{GDBN} and should not be needed in normal
16342usage.
16343
16344@item show debug mach-o
16345@kindex show debug mach-o
16346Show the current state of Mach-O file messages.
16347
16348@item set mach-exceptions on
16349@itemx set mach-exceptions off
16350@kindex set mach-exceptions
16351On Darwin, faults are first reported as a Mach exception and are then
16352mapped to a Posix signal. Use this command to turn on trapping of
16353Mach exceptions in the inferior. This might be sometimes useful to
16354better understand the cause of a fault. The default is off.
16355
16356@item show mach-exceptions
16357@kindex show mach-exceptions
16358Show the current state of exceptions trapping.
16359@end table
16360
a64548ea 16361
8e04817f
AC
16362@node Embedded OS
16363@section Embedded Operating Systems
104c1213 16364
8e04817f
AC
16365This section describes configurations involving the debugging of
16366embedded operating systems that are available for several different
16367architectures.
d4f3574e 16368
8e04817f
AC
16369@menu
16370* VxWorks:: Using @value{GDBN} with VxWorks
16371@end menu
104c1213 16372
8e04817f
AC
16373@value{GDBN} includes the ability to debug programs running on
16374various real-time operating systems.
104c1213 16375
8e04817f
AC
16376@node VxWorks
16377@subsection Using @value{GDBN} with VxWorks
104c1213 16378
8e04817f 16379@cindex VxWorks
104c1213 16380
8e04817f 16381@table @code
104c1213 16382
8e04817f
AC
16383@kindex target vxworks
16384@item target vxworks @var{machinename}
16385A VxWorks system, attached via TCP/IP. The argument @var{machinename}
16386is the target system's machine name or IP address.
104c1213 16387
8e04817f 16388@end table
104c1213 16389
8e04817f
AC
16390On VxWorks, @code{load} links @var{filename} dynamically on the
16391current target system as well as adding its symbols in @value{GDBN}.
104c1213 16392
8e04817f
AC
16393@value{GDBN} enables developers to spawn and debug tasks running on networked
16394VxWorks targets from a Unix host. Already-running tasks spawned from
16395the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
16396both the Unix host and on the VxWorks target. The program
16397@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
16398installed with the name @code{vxgdb}, to distinguish it from a
16399@value{GDBN} for debugging programs on the host itself.)
104c1213 16400
8e04817f
AC
16401@table @code
16402@item VxWorks-timeout @var{args}
16403@kindex vxworks-timeout
16404All VxWorks-based targets now support the option @code{vxworks-timeout}.
16405This option is set by the user, and @var{args} represents the number of
16406seconds @value{GDBN} waits for responses to rpc's. You might use this if
16407your VxWorks target is a slow software simulator or is on the far side
16408of a thin network line.
16409@end table
104c1213 16410
8e04817f
AC
16411The following information on connecting to VxWorks was current when
16412this manual was produced; newer releases of VxWorks may use revised
16413procedures.
104c1213 16414
4644b6e3 16415@findex INCLUDE_RDB
8e04817f
AC
16416To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
16417to include the remote debugging interface routines in the VxWorks
16418library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
16419VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
16420kernel. The resulting kernel contains @file{rdb.a}, and spawns the
16421source debugging task @code{tRdbTask} when VxWorks is booted. For more
16422information on configuring and remaking VxWorks, see the manufacturer's
16423manual.
16424@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
104c1213 16425
8e04817f
AC
16426Once you have included @file{rdb.a} in your VxWorks system image and set
16427your Unix execution search path to find @value{GDBN}, you are ready to
16428run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
16429@code{vxgdb}, depending on your installation).
104c1213 16430
8e04817f 16431@value{GDBN} comes up showing the prompt:
104c1213 16432
474c8240 16433@smallexample
8e04817f 16434(vxgdb)
474c8240 16435@end smallexample
104c1213 16436
8e04817f
AC
16437@menu
16438* VxWorks Connection:: Connecting to VxWorks
16439* VxWorks Download:: VxWorks download
16440* VxWorks Attach:: Running tasks
16441@end menu
104c1213 16442
8e04817f
AC
16443@node VxWorks Connection
16444@subsubsection Connecting to VxWorks
104c1213 16445
8e04817f
AC
16446The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
16447network. To connect to a target whose host name is ``@code{tt}'', type:
104c1213 16448
474c8240 16449@smallexample
8e04817f 16450(vxgdb) target vxworks tt
474c8240 16451@end smallexample
104c1213 16452
8e04817f
AC
16453@need 750
16454@value{GDBN} displays messages like these:
104c1213 16455
8e04817f
AC
16456@smallexample
16457Attaching remote machine across net...
16458Connected to tt.
16459@end smallexample
104c1213 16460
8e04817f
AC
16461@need 1000
16462@value{GDBN} then attempts to read the symbol tables of any object modules
16463loaded into the VxWorks target since it was last booted. @value{GDBN} locates
16464these files by searching the directories listed in the command search
79a6e687 16465path (@pxref{Environment, ,Your Program's Environment}); if it fails
8e04817f 16466to find an object file, it displays a message such as:
5d161b24 16467
474c8240 16468@smallexample
8e04817f 16469prog.o: No such file or directory.
474c8240 16470@end smallexample
104c1213 16471
8e04817f
AC
16472When this happens, add the appropriate directory to the search path with
16473the @value{GDBN} command @code{path}, and execute the @code{target}
16474command again.
104c1213 16475
8e04817f 16476@node VxWorks Download
79a6e687 16477@subsubsection VxWorks Download
104c1213 16478
8e04817f
AC
16479@cindex download to VxWorks
16480If you have connected to the VxWorks target and you want to debug an
16481object that has not yet been loaded, you can use the @value{GDBN}
16482@code{load} command to download a file from Unix to VxWorks
16483incrementally. The object file given as an argument to the @code{load}
16484command is actually opened twice: first by the VxWorks target in order
16485to download the code, then by @value{GDBN} in order to read the symbol
16486table. This can lead to problems if the current working directories on
16487the two systems differ. If both systems have NFS mounted the same
16488filesystems, you can avoid these problems by using absolute paths.
16489Otherwise, it is simplest to set the working directory on both systems
16490to the directory in which the object file resides, and then to reference
16491the file by its name, without any path. For instance, a program
16492@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
16493and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
16494program, type this on VxWorks:
104c1213 16495
474c8240 16496@smallexample
8e04817f 16497-> cd "@var{vxpath}/vw/demo/rdb"
474c8240 16498@end smallexample
104c1213 16499
8e04817f
AC
16500@noindent
16501Then, in @value{GDBN}, type:
104c1213 16502
474c8240 16503@smallexample
8e04817f
AC
16504(vxgdb) cd @var{hostpath}/vw/demo/rdb
16505(vxgdb) load prog.o
474c8240 16506@end smallexample
104c1213 16507
8e04817f 16508@value{GDBN} displays a response similar to this:
104c1213 16509
8e04817f
AC
16510@smallexample
16511Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
16512@end smallexample
104c1213 16513
8e04817f
AC
16514You can also use the @code{load} command to reload an object module
16515after editing and recompiling the corresponding source file. Note that
16516this makes @value{GDBN} delete all currently-defined breakpoints,
16517auto-displays, and convenience variables, and to clear the value
16518history. (This is necessary in order to preserve the integrity of
16519debugger's data structures that reference the target system's symbol
16520table.)
104c1213 16521
8e04817f 16522@node VxWorks Attach
79a6e687 16523@subsubsection Running Tasks
104c1213
JM
16524
16525@cindex running VxWorks tasks
16526You can also attach to an existing task using the @code{attach} command as
16527follows:
16528
474c8240 16529@smallexample
104c1213 16530(vxgdb) attach @var{task}
474c8240 16531@end smallexample
104c1213
JM
16532
16533@noindent
16534where @var{task} is the VxWorks hexadecimal task ID. The task can be running
16535or suspended when you attach to it. Running tasks are suspended at
16536the time of attachment.
16537
6d2ebf8b 16538@node Embedded Processors
104c1213
JM
16539@section Embedded Processors
16540
16541This section goes into details specific to particular embedded
16542configurations.
16543
c45da7e6
EZ
16544@cindex send command to simulator
16545Whenever a specific embedded processor has a simulator, @value{GDBN}
16546allows to send an arbitrary command to the simulator.
16547
16548@table @code
16549@item sim @var{command}
16550@kindex sim@r{, a command}
16551Send an arbitrary @var{command} string to the simulator. Consult the
16552documentation for the specific simulator in use for information about
16553acceptable commands.
16554@end table
16555
7d86b5d5 16556
104c1213 16557@menu
c45da7e6 16558* ARM:: ARM RDI
172c2a43 16559* M32R/D:: Renesas M32R/D
104c1213 16560* M68K:: Motorola M68K
104c1213 16561* MIPS Embedded:: MIPS Embedded
a37295f9 16562* OpenRISC 1000:: OpenRisc 1000
104c1213 16563* PA:: HP PA Embedded
4acd40f3 16564* PowerPC Embedded:: PowerPC Embedded
104c1213
JM
16565* Sparclet:: Tsqware Sparclet
16566* Sparclite:: Fujitsu Sparclite
104c1213 16567* Z8000:: Zilog Z8000
a64548ea
EZ
16568* AVR:: Atmel AVR
16569* CRIS:: CRIS
16570* Super-H:: Renesas Super-H
104c1213
JM
16571@end menu
16572
6d2ebf8b 16573@node ARM
104c1213 16574@subsection ARM
c45da7e6 16575@cindex ARM RDI
104c1213
JM
16576
16577@table @code
8e04817f
AC
16578@kindex target rdi
16579@item target rdi @var{dev}
16580ARM Angel monitor, via RDI library interface to ADP protocol. You may
16581use this target to communicate with both boards running the Angel
16582monitor, or with the EmbeddedICE JTAG debug device.
16583
16584@kindex target rdp
16585@item target rdp @var{dev}
16586ARM Demon monitor.
16587
16588@end table
16589
e2f4edfd
EZ
16590@value{GDBN} provides the following ARM-specific commands:
16591
16592@table @code
16593@item set arm disassembler
16594@kindex set arm
16595This commands selects from a list of disassembly styles. The
16596@code{"std"} style is the standard style.
16597
16598@item show arm disassembler
16599@kindex show arm
16600Show the current disassembly style.
16601
16602@item set arm apcs32
16603@cindex ARM 32-bit mode
16604This command toggles ARM operation mode between 32-bit and 26-bit.
16605
16606@item show arm apcs32
16607Display the current usage of the ARM 32-bit mode.
16608
16609@item set arm fpu @var{fputype}
16610This command sets the ARM floating-point unit (FPU) type. The
16611argument @var{fputype} can be one of these:
16612
16613@table @code
16614@item auto
16615Determine the FPU type by querying the OS ABI.
16616@item softfpa
16617Software FPU, with mixed-endian doubles on little-endian ARM
16618processors.
16619@item fpa
16620GCC-compiled FPA co-processor.
16621@item softvfp
16622Software FPU with pure-endian doubles.
16623@item vfp
16624VFP co-processor.
16625@end table
16626
16627@item show arm fpu
16628Show the current type of the FPU.
16629
16630@item set arm abi
16631This command forces @value{GDBN} to use the specified ABI.
16632
16633@item show arm abi
16634Show the currently used ABI.
16635
0428b8f5
DJ
16636@item set arm fallback-mode (arm|thumb|auto)
16637@value{GDBN} uses the symbol table, when available, to determine
16638whether instructions are ARM or Thumb. This command controls
16639@value{GDBN}'s default behavior when the symbol table is not
16640available. The default is @samp{auto}, which causes @value{GDBN} to
16641use the current execution mode (from the @code{T} bit in the @code{CPSR}
16642register).
16643
16644@item show arm fallback-mode
16645Show the current fallback instruction mode.
16646
16647@item set arm force-mode (arm|thumb|auto)
16648This command overrides use of the symbol table to determine whether
16649instructions are ARM or Thumb. The default is @samp{auto}, which
16650causes @value{GDBN} to use the symbol table and then the setting
16651of @samp{set arm fallback-mode}.
16652
16653@item show arm force-mode
16654Show the current forced instruction mode.
16655
e2f4edfd
EZ
16656@item set debug arm
16657Toggle whether to display ARM-specific debugging messages from the ARM
16658target support subsystem.
16659
16660@item show debug arm
16661Show whether ARM-specific debugging messages are enabled.
16662@end table
16663
c45da7e6
EZ
16664The following commands are available when an ARM target is debugged
16665using the RDI interface:
16666
16667@table @code
16668@item rdilogfile @r{[}@var{file}@r{]}
16669@kindex rdilogfile
16670@cindex ADP (Angel Debugger Protocol) logging
16671Set the filename for the ADP (Angel Debugger Protocol) packet log.
16672With an argument, sets the log file to the specified @var{file}. With
16673no argument, show the current log file name. The default log file is
16674@file{rdi.log}.
16675
16676@item rdilogenable @r{[}@var{arg}@r{]}
16677@kindex rdilogenable
16678Control logging of ADP packets. With an argument of 1 or @code{"yes"}
16679enables logging, with an argument 0 or @code{"no"} disables it. With
16680no arguments displays the current setting. When logging is enabled,
16681ADP packets exchanged between @value{GDBN} and the RDI target device
16682are logged to a file.
16683
16684@item set rdiromatzero
16685@kindex set rdiromatzero
16686@cindex ROM at zero address, RDI
16687Tell @value{GDBN} whether the target has ROM at address 0. If on,
16688vector catching is disabled, so that zero address can be used. If off
16689(the default), vector catching is enabled. For this command to take
16690effect, it needs to be invoked prior to the @code{target rdi} command.
16691
16692@item show rdiromatzero
16693@kindex show rdiromatzero
16694Show the current setting of ROM at zero address.
16695
16696@item set rdiheartbeat
16697@kindex set rdiheartbeat
16698@cindex RDI heartbeat
16699Enable or disable RDI heartbeat packets. It is not recommended to
16700turn on this option, since it confuses ARM and EPI JTAG interface, as
16701well as the Angel monitor.
16702
16703@item show rdiheartbeat
16704@kindex show rdiheartbeat
16705Show the setting of RDI heartbeat packets.
16706@end table
16707
e2f4edfd 16708
8e04817f 16709@node M32R/D
ba04e063 16710@subsection Renesas M32R/D and M32R/SDI
8e04817f
AC
16711
16712@table @code
8e04817f
AC
16713@kindex target m32r
16714@item target m32r @var{dev}
172c2a43 16715Renesas M32R/D ROM monitor.
8e04817f 16716
fb3e19c0
KI
16717@kindex target m32rsdi
16718@item target m32rsdi @var{dev}
16719Renesas M32R SDI server, connected via parallel port to the board.
721c2651
EZ
16720@end table
16721
16722The following @value{GDBN} commands are specific to the M32R monitor:
16723
16724@table @code
16725@item set download-path @var{path}
16726@kindex set download-path
16727@cindex find downloadable @sc{srec} files (M32R)
d3e8051b 16728Set the default path for finding downloadable @sc{srec} files.
721c2651
EZ
16729
16730@item show download-path
16731@kindex show download-path
16732Show the default path for downloadable @sc{srec} files.
fb3e19c0 16733
721c2651
EZ
16734@item set board-address @var{addr}
16735@kindex set board-address
16736@cindex M32-EVA target board address
16737Set the IP address for the M32R-EVA target board.
16738
16739@item show board-address
16740@kindex show board-address
16741Show the current IP address of the target board.
16742
16743@item set server-address @var{addr}
16744@kindex set server-address
16745@cindex download server address (M32R)
16746Set the IP address for the download server, which is the @value{GDBN}'s
16747host machine.
16748
16749@item show server-address
16750@kindex show server-address
16751Display the IP address of the download server.
16752
16753@item upload @r{[}@var{file}@r{]}
16754@kindex upload@r{, M32R}
16755Upload the specified @sc{srec} @var{file} via the monitor's Ethernet
16756upload capability. If no @var{file} argument is given, the current
16757executable file is uploaded.
16758
16759@item tload @r{[}@var{file}@r{]}
16760@kindex tload@r{, M32R}
16761Test the @code{upload} command.
8e04817f
AC
16762@end table
16763
ba04e063
EZ
16764The following commands are available for M32R/SDI:
16765
16766@table @code
16767@item sdireset
16768@kindex sdireset
16769@cindex reset SDI connection, M32R
16770This command resets the SDI connection.
16771
16772@item sdistatus
16773@kindex sdistatus
16774This command shows the SDI connection status.
16775
16776@item debug_chaos
16777@kindex debug_chaos
16778@cindex M32R/Chaos debugging
16779Instructs the remote that M32R/Chaos debugging is to be used.
16780
16781@item use_debug_dma
16782@kindex use_debug_dma
16783Instructs the remote to use the DEBUG_DMA method of accessing memory.
16784
16785@item use_mon_code
16786@kindex use_mon_code
16787Instructs the remote to use the MON_CODE method of accessing memory.
16788
16789@item use_ib_break
16790@kindex use_ib_break
16791Instructs the remote to set breakpoints by IB break.
16792
16793@item use_dbt_break
16794@kindex use_dbt_break
16795Instructs the remote to set breakpoints by DBT.
16796@end table
16797
8e04817f
AC
16798@node M68K
16799@subsection M68k
16800
7ce59000
DJ
16801The Motorola m68k configuration includes ColdFire support, and a
16802target command for the following ROM monitor.
8e04817f
AC
16803
16804@table @code
16805
8e04817f
AC
16806@kindex target dbug
16807@item target dbug @var{dev}
16808dBUG ROM monitor for Motorola ColdFire.
16809
8e04817f
AC
16810@end table
16811
8e04817f
AC
16812@node MIPS Embedded
16813@subsection MIPS Embedded
16814
16815@cindex MIPS boards
16816@value{GDBN} can use the MIPS remote debugging protocol to talk to a
16817MIPS board attached to a serial line. This is available when
16818you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
104c1213 16819
8e04817f
AC
16820@need 1000
16821Use these @value{GDBN} commands to specify the connection to your target board:
104c1213 16822
8e04817f
AC
16823@table @code
16824@item target mips @var{port}
16825@kindex target mips @var{port}
16826To run a program on the board, start up @code{@value{GDBP}} with the
16827name of your program as the argument. To connect to the board, use the
16828command @samp{target mips @var{port}}, where @var{port} is the name of
16829the serial port connected to the board. If the program has not already
16830been downloaded to the board, you may use the @code{load} command to
16831download it. You can then use all the usual @value{GDBN} commands.
104c1213 16832
8e04817f
AC
16833For example, this sequence connects to the target board through a serial
16834port, and loads and runs a program called @var{prog} through the
16835debugger:
104c1213 16836
474c8240 16837@smallexample
8e04817f
AC
16838host$ @value{GDBP} @var{prog}
16839@value{GDBN} is free software and @dots{}
16840(@value{GDBP}) target mips /dev/ttyb
16841(@value{GDBP}) load @var{prog}
16842(@value{GDBP}) run
474c8240 16843@end smallexample
104c1213 16844
8e04817f
AC
16845@item target mips @var{hostname}:@var{portnumber}
16846On some @value{GDBN} host configurations, you can specify a TCP
16847connection (for instance, to a serial line managed by a terminal
16848concentrator) instead of a serial port, using the syntax
16849@samp{@var{hostname}:@var{portnumber}}.
104c1213 16850
8e04817f
AC
16851@item target pmon @var{port}
16852@kindex target pmon @var{port}
16853PMON ROM monitor.
104c1213 16854
8e04817f
AC
16855@item target ddb @var{port}
16856@kindex target ddb @var{port}
16857NEC's DDB variant of PMON for Vr4300.
104c1213 16858
8e04817f
AC
16859@item target lsi @var{port}
16860@kindex target lsi @var{port}
16861LSI variant of PMON.
104c1213 16862
8e04817f
AC
16863@kindex target r3900
16864@item target r3900 @var{dev}
16865Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
104c1213 16866
8e04817f
AC
16867@kindex target array
16868@item target array @var{dev}
16869Array Tech LSI33K RAID controller board.
104c1213 16870
8e04817f 16871@end table
104c1213 16872
104c1213 16873
8e04817f
AC
16874@noindent
16875@value{GDBN} also supports these special commands for MIPS targets:
104c1213 16876
8e04817f 16877@table @code
8e04817f
AC
16878@item set mipsfpu double
16879@itemx set mipsfpu single
16880@itemx set mipsfpu none
a64548ea 16881@itemx set mipsfpu auto
8e04817f
AC
16882@itemx show mipsfpu
16883@kindex set mipsfpu
16884@kindex show mipsfpu
16885@cindex MIPS remote floating point
16886@cindex floating point, MIPS remote
16887If your target board does not support the MIPS floating point
16888coprocessor, you should use the command @samp{set mipsfpu none} (if you
16889need this, you may wish to put the command in your @value{GDBN} init
16890file). This tells @value{GDBN} how to find the return value of
16891functions which return floating point values. It also allows
16892@value{GDBN} to avoid saving the floating point registers when calling
16893functions on the board. If you are using a floating point coprocessor
16894with only single precision floating point support, as on the @sc{r4650}
16895processor, use the command @samp{set mipsfpu single}. The default
16896double precision floating point coprocessor may be selected using
16897@samp{set mipsfpu double}.
104c1213 16898
8e04817f
AC
16899In previous versions the only choices were double precision or no
16900floating point, so @samp{set mipsfpu on} will select double precision
16901and @samp{set mipsfpu off} will select no floating point.
104c1213 16902
8e04817f
AC
16903As usual, you can inquire about the @code{mipsfpu} variable with
16904@samp{show mipsfpu}.
104c1213 16905
8e04817f
AC
16906@item set timeout @var{seconds}
16907@itemx set retransmit-timeout @var{seconds}
16908@itemx show timeout
16909@itemx show retransmit-timeout
16910@cindex @code{timeout}, MIPS protocol
16911@cindex @code{retransmit-timeout}, MIPS protocol
16912@kindex set timeout
16913@kindex show timeout
16914@kindex set retransmit-timeout
16915@kindex show retransmit-timeout
16916You can control the timeout used while waiting for a packet, in the MIPS
16917remote protocol, with the @code{set timeout @var{seconds}} command. The
16918default is 5 seconds. Similarly, you can control the timeout used while
a6f3e723 16919waiting for an acknowledgment of a packet with the @code{set
8e04817f
AC
16920retransmit-timeout @var{seconds}} command. The default is 3 seconds.
16921You can inspect both values with @code{show timeout} and @code{show
16922retransmit-timeout}. (These commands are @emph{only} available when
16923@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
104c1213 16924
8e04817f
AC
16925The timeout set by @code{set timeout} does not apply when @value{GDBN}
16926is waiting for your program to stop. In that case, @value{GDBN} waits
16927forever because it has no way of knowing how long the program is going
16928to run before stopping.
ba04e063
EZ
16929
16930@item set syn-garbage-limit @var{num}
16931@kindex set syn-garbage-limit@r{, MIPS remote}
16932@cindex synchronize with remote MIPS target
16933Limit the maximum number of characters @value{GDBN} should ignore when
16934it tries to synchronize with the remote target. The default is 10
16935characters. Setting the limit to -1 means there's no limit.
16936
16937@item show syn-garbage-limit
16938@kindex show syn-garbage-limit@r{, MIPS remote}
16939Show the current limit on the number of characters to ignore when
16940trying to synchronize with the remote system.
16941
16942@item set monitor-prompt @var{prompt}
16943@kindex set monitor-prompt@r{, MIPS remote}
16944@cindex remote monitor prompt
16945Tell @value{GDBN} to expect the specified @var{prompt} string from the
16946remote monitor. The default depends on the target:
16947@table @asis
16948@item pmon target
16949@samp{PMON}
16950@item ddb target
16951@samp{NEC010}
16952@item lsi target
16953@samp{PMON>}
16954@end table
16955
16956@item show monitor-prompt
16957@kindex show monitor-prompt@r{, MIPS remote}
16958Show the current strings @value{GDBN} expects as the prompt from the
16959remote monitor.
16960
16961@item set monitor-warnings
16962@kindex set monitor-warnings@r{, MIPS remote}
16963Enable or disable monitor warnings about hardware breakpoints. This
16964has effect only for the @code{lsi} target. When on, @value{GDBN} will
16965display warning messages whose codes are returned by the @code{lsi}
16966PMON monitor for breakpoint commands.
16967
16968@item show monitor-warnings
16969@kindex show monitor-warnings@r{, MIPS remote}
16970Show the current setting of printing monitor warnings.
16971
16972@item pmon @var{command}
16973@kindex pmon@r{, MIPS remote}
16974@cindex send PMON command
16975This command allows sending an arbitrary @var{command} string to the
16976monitor. The monitor must be in debug mode for this to work.
8e04817f 16977@end table
104c1213 16978
a37295f9
MM
16979@node OpenRISC 1000
16980@subsection OpenRISC 1000
16981@cindex OpenRISC 1000
16982
16983@cindex or1k boards
16984See OR1k Architecture document (@uref{www.opencores.org}) for more information
16985about platform and commands.
16986
16987@table @code
16988
16989@kindex target jtag
16990@item target jtag jtag://@var{host}:@var{port}
16991
16992Connects to remote JTAG server.
16993JTAG remote server can be either an or1ksim or JTAG server,
16994connected via parallel port to the board.
16995
16996Example: @code{target jtag jtag://localhost:9999}
16997
16998@kindex or1ksim
16999@item or1ksim @var{command}
17000If connected to @code{or1ksim} OpenRISC 1000 Architectural
17001Simulator, proprietary commands can be executed.
17002
17003@kindex info or1k spr
17004@item info or1k spr
17005Displays spr groups.
17006
17007@item info or1k spr @var{group}
17008@itemx info or1k spr @var{groupno}
17009Displays register names in selected group.
17010
17011@item info or1k spr @var{group} @var{register}
17012@itemx info or1k spr @var{register}
17013@itemx info or1k spr @var{groupno} @var{registerno}
17014@itemx info or1k spr @var{registerno}
17015Shows information about specified spr register.
17016
17017@kindex spr
17018@item spr @var{group} @var{register} @var{value}
17019@itemx spr @var{register @var{value}}
17020@itemx spr @var{groupno} @var{registerno @var{value}}
17021@itemx spr @var{registerno @var{value}}
17022Writes @var{value} to specified spr register.
17023@end table
17024
17025Some implementations of OpenRISC 1000 Architecture also have hardware trace.
17026It is very similar to @value{GDBN} trace, except it does not interfere with normal
17027program execution and is thus much faster. Hardware breakpoints/watchpoint
17028triggers can be set using:
17029@table @code
17030@item $LEA/$LDATA
17031Load effective address/data
17032@item $SEA/$SDATA
17033Store effective address/data
17034@item $AEA/$ADATA
17035Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
17036@item $FETCH
17037Fetch data
17038@end table
17039
17040When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
17041@code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
17042
17043@code{htrace} commands:
17044@cindex OpenRISC 1000 htrace
17045@table @code
17046@kindex hwatch
17047@item hwatch @var{conditional}
d3e8051b 17048Set hardware watchpoint on combination of Load/Store Effective Address(es)
a37295f9
MM
17049or Data. For example:
17050
17051@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
17052
17053@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
17054
4644b6e3 17055@kindex htrace
a37295f9
MM
17056@item htrace info
17057Display information about current HW trace configuration.
17058
a37295f9
MM
17059@item htrace trigger @var{conditional}
17060Set starting criteria for HW trace.
17061
a37295f9
MM
17062@item htrace qualifier @var{conditional}
17063Set acquisition qualifier for HW trace.
17064
a37295f9
MM
17065@item htrace stop @var{conditional}
17066Set HW trace stopping criteria.
17067
f153cc92 17068@item htrace record [@var{data}]*
a37295f9
MM
17069Selects the data to be recorded, when qualifier is met and HW trace was
17070triggered.
17071
a37295f9 17072@item htrace enable
a37295f9
MM
17073@itemx htrace disable
17074Enables/disables the HW trace.
17075
f153cc92 17076@item htrace rewind [@var{filename}]
a37295f9
MM
17077Clears currently recorded trace data.
17078
17079If filename is specified, new trace file is made and any newly collected data
17080will be written there.
17081
f153cc92 17082@item htrace print [@var{start} [@var{len}]]
a37295f9
MM
17083Prints trace buffer, using current record configuration.
17084
a37295f9
MM
17085@item htrace mode continuous
17086Set continuous trace mode.
17087
a37295f9
MM
17088@item htrace mode suspend
17089Set suspend trace mode.
17090
17091@end table
17092
4acd40f3
TJB
17093@node PowerPC Embedded
17094@subsection PowerPC Embedded
104c1213 17095
55eddb0f
DJ
17096@value{GDBN} provides the following PowerPC-specific commands:
17097
104c1213 17098@table @code
55eddb0f
DJ
17099@kindex set powerpc
17100@item set powerpc soft-float
17101@itemx show powerpc soft-float
17102Force @value{GDBN} to use (or not use) a software floating point calling
17103convention. By default, @value{GDBN} selects the calling convention based
17104on the selected architecture and the provided executable file.
17105
17106@item set powerpc vector-abi
17107@itemx show powerpc vector-abi
17108Force @value{GDBN} to use the specified calling convention for vector
17109arguments and return values. The valid options are @samp{auto};
17110@samp{generic}, to avoid vector registers even if they are present;
17111@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE
17112registers. By default, @value{GDBN} selects the calling convention
17113based on the selected architecture and the provided executable file.
17114
8e04817f
AC
17115@kindex target dink32
17116@item target dink32 @var{dev}
17117DINK32 ROM monitor.
104c1213 17118
8e04817f
AC
17119@kindex target ppcbug
17120@item target ppcbug @var{dev}
17121@kindex target ppcbug1
17122@item target ppcbug1 @var{dev}
17123PPCBUG ROM monitor for PowerPC.
104c1213 17124
8e04817f
AC
17125@kindex target sds
17126@item target sds @var{dev}
17127SDS monitor, running on a PowerPC board (such as Motorola's ADS).
c45da7e6 17128@end table
8e04817f 17129
c45da7e6 17130@cindex SDS protocol
d52fb0e9 17131The following commands specific to the SDS protocol are supported
55eddb0f 17132by @value{GDBN}:
c45da7e6
EZ
17133
17134@table @code
17135@item set sdstimeout @var{nsec}
17136@kindex set sdstimeout
17137Set the timeout for SDS protocol reads to be @var{nsec} seconds. The
17138default is 2 seconds.
17139
17140@item show sdstimeout
17141@kindex show sdstimeout
17142Show the current value of the SDS timeout.
17143
17144@item sds @var{command}
17145@kindex sds@r{, a command}
17146Send the specified @var{command} string to the SDS monitor.
8e04817f
AC
17147@end table
17148
c45da7e6 17149
8e04817f
AC
17150@node PA
17151@subsection HP PA Embedded
104c1213
JM
17152
17153@table @code
17154
8e04817f
AC
17155@kindex target op50n
17156@item target op50n @var{dev}
17157OP50N monitor, running on an OKI HPPA board.
17158
17159@kindex target w89k
17160@item target w89k @var{dev}
17161W89K monitor, running on a Winbond HPPA board.
104c1213
JM
17162
17163@end table
17164
8e04817f
AC
17165@node Sparclet
17166@subsection Tsqware Sparclet
104c1213 17167
8e04817f
AC
17168@cindex Sparclet
17169
17170@value{GDBN} enables developers to debug tasks running on
17171Sparclet targets from a Unix host.
17172@value{GDBN} uses code that runs on
17173both the Unix host and on the Sparclet target. The program
17174@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213 17175
8e04817f
AC
17176@table @code
17177@item remotetimeout @var{args}
17178@kindex remotetimeout
17179@value{GDBN} supports the option @code{remotetimeout}.
17180This option is set by the user, and @var{args} represents the number of
17181seconds @value{GDBN} waits for responses.
104c1213
JM
17182@end table
17183
8e04817f
AC
17184@cindex compiling, on Sparclet
17185When compiling for debugging, include the options @samp{-g} to get debug
17186information and @samp{-Ttext} to relocate the program to where you wish to
17187load it on the target. You may also want to add the options @samp{-n} or
17188@samp{-N} in order to reduce the size of the sections. Example:
104c1213 17189
474c8240 17190@smallexample
8e04817f 17191sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
474c8240 17192@end smallexample
104c1213 17193
8e04817f 17194You can use @code{objdump} to verify that the addresses are what you intended:
104c1213 17195
474c8240 17196@smallexample
8e04817f 17197sparclet-aout-objdump --headers --syms prog
474c8240 17198@end smallexample
104c1213 17199
8e04817f
AC
17200@cindex running, on Sparclet
17201Once you have set
17202your Unix execution search path to find @value{GDBN}, you are ready to
17203run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
17204(or @code{sparclet-aout-gdb}, depending on your installation).
104c1213 17205
8e04817f
AC
17206@value{GDBN} comes up showing the prompt:
17207
474c8240 17208@smallexample
8e04817f 17209(gdbslet)
474c8240 17210@end smallexample
104c1213
JM
17211
17212@menu
8e04817f
AC
17213* Sparclet File:: Setting the file to debug
17214* Sparclet Connection:: Connecting to Sparclet
17215* Sparclet Download:: Sparclet download
17216* Sparclet Execution:: Running and debugging
104c1213
JM
17217@end menu
17218
8e04817f 17219@node Sparclet File
79a6e687 17220@subsubsection Setting File to Debug
104c1213 17221
8e04817f 17222The @value{GDBN} command @code{file} lets you choose with program to debug.
104c1213 17223
474c8240 17224@smallexample
8e04817f 17225(gdbslet) file prog
474c8240 17226@end smallexample
104c1213 17227
8e04817f
AC
17228@need 1000
17229@value{GDBN} then attempts to read the symbol table of @file{prog}.
17230@value{GDBN} locates
17231the file by searching the directories listed in the command search
17232path.
12c27660 17233If the file was compiled with debug information (option @samp{-g}), source
8e04817f
AC
17234files will be searched as well.
17235@value{GDBN} locates
17236the source files by searching the directories listed in the directory search
79a6e687 17237path (@pxref{Environment, ,Your Program's Environment}).
8e04817f
AC
17238If it fails
17239to find a file, it displays a message such as:
104c1213 17240
474c8240 17241@smallexample
8e04817f 17242prog: No such file or directory.
474c8240 17243@end smallexample
104c1213 17244
8e04817f
AC
17245When this happens, add the appropriate directories to the search paths with
17246the @value{GDBN} commands @code{path} and @code{dir}, and execute the
17247@code{target} command again.
104c1213 17248
8e04817f
AC
17249@node Sparclet Connection
17250@subsubsection Connecting to Sparclet
104c1213 17251
8e04817f
AC
17252The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
17253To connect to a target on serial port ``@code{ttya}'', type:
104c1213 17254
474c8240 17255@smallexample
8e04817f
AC
17256(gdbslet) target sparclet /dev/ttya
17257Remote target sparclet connected to /dev/ttya
17258main () at ../prog.c:3
474c8240 17259@end smallexample
104c1213 17260
8e04817f
AC
17261@need 750
17262@value{GDBN} displays messages like these:
104c1213 17263
474c8240 17264@smallexample
8e04817f 17265Connected to ttya.
474c8240 17266@end smallexample
104c1213 17267
8e04817f 17268@node Sparclet Download
79a6e687 17269@subsubsection Sparclet Download
104c1213 17270
8e04817f
AC
17271@cindex download to Sparclet
17272Once connected to the Sparclet target,
17273you can use the @value{GDBN}
17274@code{load} command to download the file from the host to the target.
17275The file name and load offset should be given as arguments to the @code{load}
17276command.
17277Since the file format is aout, the program must be loaded to the starting
17278address. You can use @code{objdump} to find out what this value is. The load
17279offset is an offset which is added to the VMA (virtual memory address)
17280of each of the file's sections.
17281For instance, if the program
17282@file{prog} was linked to text address 0x1201000, with data at 0x12010160
17283and bss at 0x12010170, in @value{GDBN}, type:
104c1213 17284
474c8240 17285@smallexample
8e04817f
AC
17286(gdbslet) load prog 0x12010000
17287Loading section .text, size 0xdb0 vma 0x12010000
474c8240 17288@end smallexample
104c1213 17289
8e04817f
AC
17290If the code is loaded at a different address then what the program was linked
17291to, you may need to use the @code{section} and @code{add-symbol-file} commands
17292to tell @value{GDBN} where to map the symbol table.
17293
17294@node Sparclet Execution
79a6e687 17295@subsubsection Running and Debugging
8e04817f
AC
17296
17297@cindex running and debugging Sparclet programs
17298You can now begin debugging the task using @value{GDBN}'s execution control
17299commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
17300manual for the list of commands.
17301
474c8240 17302@smallexample
8e04817f
AC
17303(gdbslet) b main
17304Breakpoint 1 at 0x12010000: file prog.c, line 3.
17305(gdbslet) run
17306Starting program: prog
17307Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
173083 char *symarg = 0;
17309(gdbslet) step
173104 char *execarg = "hello!";
17311(gdbslet)
474c8240 17312@end smallexample
8e04817f
AC
17313
17314@node Sparclite
17315@subsection Fujitsu Sparclite
104c1213
JM
17316
17317@table @code
17318
8e04817f
AC
17319@kindex target sparclite
17320@item target sparclite @var{dev}
17321Fujitsu sparclite boards, used only for the purpose of loading.
17322You must use an additional command to debug the program.
17323For example: target remote @var{dev} using @value{GDBN} standard
17324remote protocol.
104c1213
JM
17325
17326@end table
17327
8e04817f
AC
17328@node Z8000
17329@subsection Zilog Z8000
104c1213 17330
8e04817f
AC
17331@cindex Z8000
17332@cindex simulator, Z8000
17333@cindex Zilog Z8000 simulator
104c1213 17334
8e04817f
AC
17335When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
17336a Z8000 simulator.
17337
17338For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
17339unsegmented variant of the Z8000 architecture) or the Z8001 (the
17340segmented variant). The simulator recognizes which architecture is
17341appropriate by inspecting the object code.
104c1213 17342
8e04817f
AC
17343@table @code
17344@item target sim @var{args}
17345@kindex sim
17346@kindex target sim@r{, with Z8000}
17347Debug programs on a simulated CPU. If the simulator supports setup
17348options, specify them via @var{args}.
104c1213
JM
17349@end table
17350
8e04817f
AC
17351@noindent
17352After specifying this target, you can debug programs for the simulated
17353CPU in the same style as programs for your host computer; use the
17354@code{file} command to load a new program image, the @code{run} command
17355to run your program, and so on.
17356
17357As well as making available all the usual machine registers
17358(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
17359additional items of information as specially named registers:
104c1213
JM
17360
17361@table @code
17362
8e04817f
AC
17363@item cycles
17364Counts clock-ticks in the simulator.
104c1213 17365
8e04817f
AC
17366@item insts
17367Counts instructions run in the simulator.
104c1213 17368
8e04817f
AC
17369@item time
17370Execution time in 60ths of a second.
104c1213 17371
8e04817f 17372@end table
104c1213 17373
8e04817f
AC
17374You can refer to these values in @value{GDBN} expressions with the usual
17375conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
17376conditional breakpoint that suspends only after at least 5000
17377simulated clock ticks.
104c1213 17378
a64548ea
EZ
17379@node AVR
17380@subsection Atmel AVR
17381@cindex AVR
17382
17383When configured for debugging the Atmel AVR, @value{GDBN} supports the
17384following AVR-specific commands:
17385
17386@table @code
17387@item info io_registers
17388@kindex info io_registers@r{, AVR}
17389@cindex I/O registers (Atmel AVR)
17390This command displays information about the AVR I/O registers. For
17391each register, @value{GDBN} prints its number and value.
17392@end table
17393
17394@node CRIS
17395@subsection CRIS
17396@cindex CRIS
17397
17398When configured for debugging CRIS, @value{GDBN} provides the
17399following CRIS-specific commands:
17400
17401@table @code
17402@item set cris-version @var{ver}
17403@cindex CRIS version
e22e55c9
OF
17404Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}.
17405The CRIS version affects register names and sizes. This command is useful in
17406case autodetection of the CRIS version fails.
a64548ea
EZ
17407
17408@item show cris-version
17409Show the current CRIS version.
17410
17411@item set cris-dwarf2-cfi
17412@cindex DWARF-2 CFI and CRIS
e22e55c9
OF
17413Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}.
17414Change to @samp{off} when using @code{gcc-cris} whose version is below
17415@code{R59}.
a64548ea
EZ
17416
17417@item show cris-dwarf2-cfi
17418Show the current state of using DWARF-2 CFI.
e22e55c9
OF
17419
17420@item set cris-mode @var{mode}
17421@cindex CRIS mode
17422Set the current CRIS mode to @var{mode}. It should only be changed when
17423debugging in guru mode, in which case it should be set to
17424@samp{guru} (the default is @samp{normal}).
17425
17426@item show cris-mode
17427Show the current CRIS mode.
a64548ea
EZ
17428@end table
17429
17430@node Super-H
17431@subsection Renesas Super-H
17432@cindex Super-H
17433
17434For the Renesas Super-H processor, @value{GDBN} provides these
17435commands:
17436
17437@table @code
17438@item regs
17439@kindex regs@r{, Super-H}
17440Show the values of all Super-H registers.
c055b101
CV
17441
17442@item set sh calling-convention @var{convention}
17443@kindex set sh calling-convention
17444Set the calling-convention used when calling functions from @value{GDBN}.
17445Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}.
17446With the @samp{gcc} setting, functions are called using the @value{NGCC} calling
17447convention. If the DWARF-2 information of the called function specifies
17448that the function follows the Renesas calling convention, the function
17449is called using the Renesas calling convention. If the calling convention
17450is set to @samp{renesas}, the Renesas calling convention is always used,
17451regardless of the DWARF-2 information. This can be used to override the
17452default of @samp{gcc} if debug information is missing, or the compiler
17453does not emit the DWARF-2 calling convention entry for a function.
17454
17455@item show sh calling-convention
17456@kindex show sh calling-convention
17457Show the current calling convention setting.
17458
a64548ea
EZ
17459@end table
17460
17461
8e04817f
AC
17462@node Architectures
17463@section Architectures
104c1213 17464
8e04817f
AC
17465This section describes characteristics of architectures that affect
17466all uses of @value{GDBN} with the architecture, both native and cross.
104c1213 17467
8e04817f 17468@menu
9c16f35a 17469* i386::
8e04817f
AC
17470* A29K::
17471* Alpha::
17472* MIPS::
a64548ea 17473* HPPA:: HP PA architecture
23d964e7 17474* SPU:: Cell Broadband Engine SPU architecture
4acd40f3 17475* PowerPC::
8e04817f 17476@end menu
104c1213 17477
9c16f35a 17478@node i386
db2e3e2e 17479@subsection x86 Architecture-specific Issues
9c16f35a
EZ
17480
17481@table @code
17482@item set struct-convention @var{mode}
17483@kindex set struct-convention
17484@cindex struct return convention
17485@cindex struct/union returned in registers
17486Set the convention used by the inferior to return @code{struct}s and
17487@code{union}s from functions to @var{mode}. Possible values of
17488@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the
17489default). @code{"default"} or @code{"pcc"} means that @code{struct}s
17490are returned on the stack, while @code{"reg"} means that a
17491@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will
17492be returned in a register.
17493
17494@item show struct-convention
17495@kindex show struct-convention
17496Show the current setting of the convention to return @code{struct}s
17497from functions.
17498@end table
17499
8e04817f
AC
17500@node A29K
17501@subsection A29K
104c1213
JM
17502
17503@table @code
104c1213 17504
8e04817f
AC
17505@kindex set rstack_high_address
17506@cindex AMD 29K register stack
17507@cindex register stack, AMD29K
17508@item set rstack_high_address @var{address}
17509On AMD 29000 family processors, registers are saved in a separate
17510@dfn{register stack}. There is no way for @value{GDBN} to determine the
17511extent of this stack. Normally, @value{GDBN} just assumes that the
17512stack is ``large enough''. This may result in @value{GDBN} referencing
17513memory locations that do not exist. If necessary, you can get around
17514this problem by specifying the ending address of the register stack with
17515the @code{set rstack_high_address} command. The argument should be an
17516address, which you probably want to precede with @samp{0x} to specify in
17517hexadecimal.
104c1213 17518
8e04817f
AC
17519@kindex show rstack_high_address
17520@item show rstack_high_address
17521Display the current limit of the register stack, on AMD 29000 family
17522processors.
104c1213 17523
8e04817f 17524@end table
104c1213 17525
8e04817f
AC
17526@node Alpha
17527@subsection Alpha
104c1213 17528
8e04817f 17529See the following section.
104c1213 17530
8e04817f
AC
17531@node MIPS
17532@subsection MIPS
104c1213 17533
8e04817f
AC
17534@cindex stack on Alpha
17535@cindex stack on MIPS
17536@cindex Alpha stack
17537@cindex MIPS stack
17538Alpha- and MIPS-based computers use an unusual stack frame, which
17539sometimes requires @value{GDBN} to search backward in the object code to
17540find the beginning of a function.
104c1213 17541
8e04817f
AC
17542@cindex response time, MIPS debugging
17543To improve response time (especially for embedded applications, where
17544@value{GDBN} may be restricted to a slow serial line for this search)
17545you may want to limit the size of this search, using one of these
17546commands:
104c1213 17547
8e04817f
AC
17548@table @code
17549@cindex @code{heuristic-fence-post} (Alpha, MIPS)
17550@item set heuristic-fence-post @var{limit}
17551Restrict @value{GDBN} to examining at most @var{limit} bytes in its
17552search for the beginning of a function. A value of @var{0} (the
17553default) means there is no limit. However, except for @var{0}, the
17554larger the limit the more bytes @code{heuristic-fence-post} must search
e2f4edfd
EZ
17555and therefore the longer it takes to run. You should only need to use
17556this command when debugging a stripped executable.
104c1213 17557
8e04817f
AC
17558@item show heuristic-fence-post
17559Display the current limit.
17560@end table
104c1213
JM
17561
17562@noindent
8e04817f
AC
17563These commands are available @emph{only} when @value{GDBN} is configured
17564for debugging programs on Alpha or MIPS processors.
104c1213 17565
a64548ea
EZ
17566Several MIPS-specific commands are available when debugging MIPS
17567programs:
17568
17569@table @code
a64548ea
EZ
17570@item set mips abi @var{arg}
17571@kindex set mips abi
17572@cindex set ABI for MIPS
17573Tell @value{GDBN} which MIPS ABI is used by the inferior. Possible
17574values of @var{arg} are:
17575
17576@table @samp
17577@item auto
17578The default ABI associated with the current binary (this is the
17579default).
17580@item o32
17581@item o64
17582@item n32
17583@item n64
17584@item eabi32
17585@item eabi64
17586@item auto
17587@end table
17588
17589@item show mips abi
17590@kindex show mips abi
17591Show the MIPS ABI used by @value{GDBN} to debug the inferior.
17592
17593@item set mipsfpu
17594@itemx show mipsfpu
17595@xref{MIPS Embedded, set mipsfpu}.
17596
17597@item set mips mask-address @var{arg}
17598@kindex set mips mask-address
17599@cindex MIPS addresses, masking
17600This command determines whether the most-significant 32 bits of 64-bit
17601MIPS addresses are masked off. The argument @var{arg} can be
17602@samp{on}, @samp{off}, or @samp{auto}. The latter is the default
17603setting, which lets @value{GDBN} determine the correct value.
17604
17605@item show mips mask-address
17606@kindex show mips mask-address
17607Show whether the upper 32 bits of MIPS addresses are masked off or
17608not.
17609
17610@item set remote-mips64-transfers-32bit-regs
17611@kindex set remote-mips64-transfers-32bit-regs
17612This command controls compatibility with 64-bit MIPS targets that
17613transfer data in 32-bit quantities. If you have an old MIPS 64 target
17614that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr},
17615and 64 bits for other registers, set this option to @samp{on}.
17616
17617@item show remote-mips64-transfers-32bit-regs
17618@kindex show remote-mips64-transfers-32bit-regs
17619Show the current setting of compatibility with older MIPS 64 targets.
17620
17621@item set debug mips
17622@kindex set debug mips
17623This command turns on and off debugging messages for the MIPS-specific
17624target code in @value{GDBN}.
17625
17626@item show debug mips
17627@kindex show debug mips
17628Show the current setting of MIPS debugging messages.
17629@end table
17630
17631
17632@node HPPA
17633@subsection HPPA
17634@cindex HPPA support
17635
d3e8051b 17636When @value{GDBN} is debugging the HP PA architecture, it provides the
a64548ea
EZ
17637following special commands:
17638
17639@table @code
17640@item set debug hppa
17641@kindex set debug hppa
db2e3e2e 17642This command determines whether HPPA architecture-specific debugging
a64548ea
EZ
17643messages are to be displayed.
17644
17645@item show debug hppa
17646Show whether HPPA debugging messages are displayed.
17647
17648@item maint print unwind @var{address}
17649@kindex maint print unwind@r{, HPPA}
17650This command displays the contents of the unwind table entry at the
17651given @var{address}.
17652
17653@end table
17654
104c1213 17655
23d964e7
UW
17656@node SPU
17657@subsection Cell Broadband Engine SPU architecture
17658@cindex Cell Broadband Engine
17659@cindex SPU
17660
17661When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
17662it provides the following special commands:
17663
17664@table @code
17665@item info spu event
17666@kindex info spu
17667Display SPU event facility status. Shows current event mask
17668and pending event status.
17669
17670@item info spu signal
17671Display SPU signal notification facility status. Shows pending
17672signal-control word and signal notification mode of both signal
17673notification channels.
17674
17675@item info spu mailbox
17676Display SPU mailbox facility status. Shows all pending entries,
17677in order of processing, in each of the SPU Write Outbound,
17678SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
17679
17680@item info spu dma
17681Display MFC DMA status. Shows all pending commands in the MFC
17682DMA queue. For each entry, opcode, tag, class IDs, effective
17683and local store addresses and transfer size are shown.
17684
17685@item info spu proxydma
17686Display MFC Proxy-DMA status. Shows all pending commands in the MFC
17687Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
17688and local store addresses and transfer size are shown.
17689
17690@end table
17691
3285f3fe
UW
17692When @value{GDBN} is debugging a combined PowerPC/SPU application
17693on the Cell Broadband Engine, it provides in addition the following
17694special commands:
17695
17696@table @code
17697@item set spu stop-on-load @var{arg}
17698@kindex set spu
17699Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN}
17700will give control to the user when a new SPE thread enters its @code{main}
17701function. The default is @code{off}.
17702
17703@item show spu stop-on-load
17704@kindex show spu
17705Show whether to stop for new SPE threads.
17706
ff1a52c6
UW
17707@item set spu auto-flush-cache @var{arg}
17708Set whether to automatically flush the software-managed cache. When set to
17709@code{on}, @value{GDBN} will automatically cause the SPE software-managed
17710cache to be flushed whenever SPE execution stops. This provides a consistent
17711view of PowerPC memory that is accessed via the cache. If an application
17712does not use the software-managed cache, this option has no effect.
17713
17714@item show spu auto-flush-cache
17715Show whether to automatically flush the software-managed cache.
17716
3285f3fe
UW
17717@end table
17718
4acd40f3
TJB
17719@node PowerPC
17720@subsection PowerPC
17721@cindex PowerPC architecture
17722
17723When @value{GDBN} is debugging the PowerPC architecture, it provides a set of
17724pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
17725numbers stored in the floating point registers. These values must be stored
17726in two consecutive registers, always starting at an even register like
17727@code{f0} or @code{f2}.
17728
17729The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed
17730by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0},
17731@code{f2} and @code{f3} for @code{$dl1} and so on.
17732
aeac0ff9 17733For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit
677c5bb1
LM
17734wide Extended Floating Point Registers (@samp{f32} through @samp{f63}).
17735
23d964e7 17736
8e04817f
AC
17737@node Controlling GDB
17738@chapter Controlling @value{GDBN}
17739
17740You can alter the way @value{GDBN} interacts with you by using the
17741@code{set} command. For commands controlling how @value{GDBN} displays
79a6e687 17742data, see @ref{Print Settings, ,Print Settings}. Other settings are
8e04817f
AC
17743described here.
17744
17745@menu
17746* Prompt:: Prompt
17747* Editing:: Command editing
d620b259 17748* Command History:: Command history
8e04817f
AC
17749* Screen Size:: Screen size
17750* Numbers:: Numbers
1e698235 17751* ABI:: Configuring the current ABI
8e04817f
AC
17752* Messages/Warnings:: Optional warnings and messages
17753* Debugging Output:: Optional messages about internal happenings
14fb1bac 17754* Other Misc Settings:: Other Miscellaneous Settings
8e04817f
AC
17755@end menu
17756
17757@node Prompt
17758@section Prompt
104c1213 17759
8e04817f 17760@cindex prompt
104c1213 17761
8e04817f
AC
17762@value{GDBN} indicates its readiness to read a command by printing a string
17763called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
17764can change the prompt string with the @code{set prompt} command. For
17765instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
17766the prompt in one of the @value{GDBN} sessions so that you can always tell
17767which one you are talking to.
104c1213 17768
8e04817f
AC
17769@emph{Note:} @code{set prompt} does not add a space for you after the
17770prompt you set. This allows you to set a prompt which ends in a space
17771or a prompt that does not.
104c1213 17772
8e04817f
AC
17773@table @code
17774@kindex set prompt
17775@item set prompt @var{newprompt}
17776Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
104c1213 17777
8e04817f
AC
17778@kindex show prompt
17779@item show prompt
17780Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
104c1213
JM
17781@end table
17782
8e04817f 17783@node Editing
79a6e687 17784@section Command Editing
8e04817f
AC
17785@cindex readline
17786@cindex command line editing
104c1213 17787
703663ab 17788@value{GDBN} reads its input commands via the @dfn{Readline} interface. This
8e04817f
AC
17789@sc{gnu} library provides consistent behavior for programs which provide a
17790command line interface to the user. Advantages are @sc{gnu} Emacs-style
17791or @dfn{vi}-style inline editing of commands, @code{csh}-like history
17792substitution, and a storage and recall of command history across
17793debugging sessions.
104c1213 17794
8e04817f
AC
17795You may control the behavior of command line editing in @value{GDBN} with the
17796command @code{set}.
104c1213 17797
8e04817f
AC
17798@table @code
17799@kindex set editing
17800@cindex editing
17801@item set editing
17802@itemx set editing on
17803Enable command line editing (enabled by default).
104c1213 17804
8e04817f
AC
17805@item set editing off
17806Disable command line editing.
104c1213 17807
8e04817f
AC
17808@kindex show editing
17809@item show editing
17810Show whether command line editing is enabled.
104c1213
JM
17811@end table
17812
703663ab
EZ
17813@xref{Command Line Editing}, for more details about the Readline
17814interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
17815encouraged to read that chapter.
17816
d620b259 17817@node Command History
79a6e687 17818@section Command History
703663ab 17819@cindex command history
8e04817f
AC
17820
17821@value{GDBN} can keep track of the commands you type during your
17822debugging sessions, so that you can be certain of precisely what
17823happened. Use these commands to manage the @value{GDBN} command
17824history facility.
104c1213 17825
703663ab
EZ
17826@value{GDBN} uses the @sc{gnu} History library, a part of the Readline
17827package, to provide the history facility. @xref{Using History
17828Interactively}, for the detailed description of the History library.
17829
d620b259 17830To issue a command to @value{GDBN} without affecting certain aspects of
9e6c4bd5
NR
17831the state which is seen by users, prefix it with @samp{server }
17832(@pxref{Server Prefix}). This
d620b259
NR
17833means that this command will not affect the command history, nor will it
17834affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
17835pressed on a line by itself.
17836
17837@cindex @code{server}, command prefix
17838The server prefix does not affect the recording of values into the value
17839history; to print a value without recording it into the value history,
17840use the @code{output} command instead of the @code{print} command.
17841
703663ab
EZ
17842Here is the description of @value{GDBN} commands related to command
17843history.
17844
104c1213 17845@table @code
8e04817f
AC
17846@cindex history substitution
17847@cindex history file
17848@kindex set history filename
4644b6e3 17849@cindex @env{GDBHISTFILE}, environment variable
8e04817f
AC
17850@item set history filename @var{fname}
17851Set the name of the @value{GDBN} command history file to @var{fname}.
17852This is the file where @value{GDBN} reads an initial command history
17853list, and where it writes the command history from this session when it
17854exits. You can access this list through history expansion or through
17855the history command editing characters listed below. This file defaults
17856to the value of the environment variable @code{GDBHISTFILE}, or to
17857@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
17858is not set.
104c1213 17859
9c16f35a
EZ
17860@cindex save command history
17861@kindex set history save
8e04817f
AC
17862@item set history save
17863@itemx set history save on
17864Record command history in a file, whose name may be specified with the
17865@code{set history filename} command. By default, this option is disabled.
104c1213 17866
8e04817f
AC
17867@item set history save off
17868Stop recording command history in a file.
104c1213 17869
8e04817f 17870@cindex history size
9c16f35a 17871@kindex set history size
6fc08d32 17872@cindex @env{HISTSIZE}, environment variable
8e04817f
AC
17873@item set history size @var{size}
17874Set the number of commands which @value{GDBN} keeps in its history list.
17875This defaults to the value of the environment variable
17876@code{HISTSIZE}, or to 256 if this variable is not set.
104c1213
JM
17877@end table
17878
8e04817f 17879History expansion assigns special meaning to the character @kbd{!}.
703663ab 17880@xref{Event Designators}, for more details.
8e04817f 17881
703663ab 17882@cindex history expansion, turn on/off
8e04817f
AC
17883Since @kbd{!} is also the logical not operator in C, history expansion
17884is off by default. If you decide to enable history expansion with the
17885@code{set history expansion on} command, you may sometimes need to
17886follow @kbd{!} (when it is used as logical not, in an expression) with
17887a space or a tab to prevent it from being expanded. The readline
17888history facilities do not attempt substitution on the strings
17889@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
17890
17891The commands to control history expansion are:
104c1213
JM
17892
17893@table @code
8e04817f
AC
17894@item set history expansion on
17895@itemx set history expansion
703663ab 17896@kindex set history expansion
8e04817f 17897Enable history expansion. History expansion is off by default.
104c1213 17898
8e04817f
AC
17899@item set history expansion off
17900Disable history expansion.
104c1213 17901
8e04817f
AC
17902@c @group
17903@kindex show history
17904@item show history
17905@itemx show history filename
17906@itemx show history save
17907@itemx show history size
17908@itemx show history expansion
17909These commands display the state of the @value{GDBN} history parameters.
17910@code{show history} by itself displays all four states.
17911@c @end group
17912@end table
17913
17914@table @code
9c16f35a
EZ
17915@kindex show commands
17916@cindex show last commands
17917@cindex display command history
8e04817f
AC
17918@item show commands
17919Display the last ten commands in the command history.
104c1213 17920
8e04817f
AC
17921@item show commands @var{n}
17922Print ten commands centered on command number @var{n}.
17923
17924@item show commands +
17925Print ten commands just after the commands last printed.
104c1213
JM
17926@end table
17927
8e04817f 17928@node Screen Size
79a6e687 17929@section Screen Size
8e04817f
AC
17930@cindex size of screen
17931@cindex pauses in output
104c1213 17932
8e04817f
AC
17933Certain commands to @value{GDBN} may produce large amounts of
17934information output to the screen. To help you read all of it,
17935@value{GDBN} pauses and asks you for input at the end of each page of
17936output. Type @key{RET} when you want to continue the output, or @kbd{q}
17937to discard the remaining output. Also, the screen width setting
17938determines when to wrap lines of output. Depending on what is being
17939printed, @value{GDBN} tries to break the line at a readable place,
17940rather than simply letting it overflow onto the following line.
17941
17942Normally @value{GDBN} knows the size of the screen from the terminal
17943driver software. For example, on Unix @value{GDBN} uses the termcap data base
17944together with the value of the @code{TERM} environment variable and the
17945@code{stty rows} and @code{stty cols} settings. If this is not correct,
17946you can override it with the @code{set height} and @code{set
17947width} commands:
17948
17949@table @code
17950@kindex set height
17951@kindex set width
17952@kindex show width
17953@kindex show height
17954@item set height @var{lpp}
17955@itemx show height
17956@itemx set width @var{cpl}
17957@itemx show width
17958These @code{set} commands specify a screen height of @var{lpp} lines and
17959a screen width of @var{cpl} characters. The associated @code{show}
17960commands display the current settings.
104c1213 17961
8e04817f
AC
17962If you specify a height of zero lines, @value{GDBN} does not pause during
17963output no matter how long the output is. This is useful if output is to a
17964file or to an editor buffer.
104c1213 17965
8e04817f
AC
17966Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
17967from wrapping its output.
9c16f35a
EZ
17968
17969@item set pagination on
17970@itemx set pagination off
17971@kindex set pagination
17972Turn the output pagination on or off; the default is on. Turning
17973pagination off is the alternative to @code{set height 0}.
17974
17975@item show pagination
17976@kindex show pagination
17977Show the current pagination mode.
104c1213
JM
17978@end table
17979
8e04817f
AC
17980@node Numbers
17981@section Numbers
17982@cindex number representation
17983@cindex entering numbers
104c1213 17984
8e04817f
AC
17985You can always enter numbers in octal, decimal, or hexadecimal in
17986@value{GDBN} by the usual conventions: octal numbers begin with
17987@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
eb2dae08
EZ
17988begin with @samp{0x}. Numbers that neither begin with @samp{0} or
17989@samp{0x}, nor end with a @samp{.} are, by default, entered in base
1799010; likewise, the default display for numbers---when no particular
17991format is specified---is base 10. You can change the default base for
17992both input and output with the commands described below.
104c1213 17993
8e04817f
AC
17994@table @code
17995@kindex set input-radix
17996@item set input-radix @var{base}
17997Set the default base for numeric input. Supported choices
17998for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 17999specified either unambiguously or using the current input radix; for
8e04817f 18000example, any of
104c1213 18001
8e04817f 18002@smallexample
9c16f35a
EZ
18003set input-radix 012
18004set input-radix 10.
18005set input-radix 0xa
8e04817f 18006@end smallexample
104c1213 18007
8e04817f 18008@noindent
9c16f35a 18009sets the input base to decimal. On the other hand, @samp{set input-radix 10}
eb2dae08
EZ
18010leaves the input radix unchanged, no matter what it was, since
18011@samp{10}, being without any leading or trailing signs of its base, is
18012interpreted in the current radix. Thus, if the current radix is 16,
18013@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't
18014change the radix.
104c1213 18015
8e04817f
AC
18016@kindex set output-radix
18017@item set output-radix @var{base}
18018Set the default base for numeric display. Supported choices
18019for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 18020specified either unambiguously or using the current input radix.
104c1213 18021
8e04817f
AC
18022@kindex show input-radix
18023@item show input-radix
18024Display the current default base for numeric input.
104c1213 18025
8e04817f
AC
18026@kindex show output-radix
18027@item show output-radix
18028Display the current default base for numeric display.
9c16f35a
EZ
18029
18030@item set radix @r{[}@var{base}@r{]}
18031@itemx show radix
18032@kindex set radix
18033@kindex show radix
18034These commands set and show the default base for both input and output
18035of numbers. @code{set radix} sets the radix of input and output to
18036the same base; without an argument, it resets the radix back to its
18037default value of 10.
18038
8e04817f 18039@end table
104c1213 18040
1e698235 18041@node ABI
79a6e687 18042@section Configuring the Current ABI
1e698235
DJ
18043
18044@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
18045application automatically. However, sometimes you need to override its
18046conclusions. Use these commands to manage @value{GDBN}'s view of the
18047current ABI.
18048
98b45e30
DJ
18049@cindex OS ABI
18050@kindex set osabi
b4e9345d 18051@kindex show osabi
98b45e30
DJ
18052
18053One @value{GDBN} configuration can debug binaries for multiple operating
b383017d 18054system targets, either via remote debugging or native emulation.
98b45e30
DJ
18055@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
18056but you can override its conclusion using the @code{set osabi} command.
18057One example where this is useful is in debugging of binaries which use
18058an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
18059not have the same identifying marks that the standard C library for your
18060platform provides.
18061
18062@table @code
18063@item show osabi
18064Show the OS ABI currently in use.
18065
18066@item set osabi
18067With no argument, show the list of registered available OS ABI's.
18068
18069@item set osabi @var{abi}
18070Set the current OS ABI to @var{abi}.
18071@end table
18072
1e698235 18073@cindex float promotion
1e698235
DJ
18074
18075Generally, the way that an argument of type @code{float} is passed to a
18076function depends on whether the function is prototyped. For a prototyped
18077(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
18078according to the architecture's convention for @code{float}. For unprototyped
18079(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
18080@code{double} and then passed.
18081
18082Unfortunately, some forms of debug information do not reliably indicate whether
18083a function is prototyped. If @value{GDBN} calls a function that is not marked
18084as prototyped, it consults @kbd{set coerce-float-to-double}.
18085
18086@table @code
a8f24a35 18087@kindex set coerce-float-to-double
1e698235
DJ
18088@item set coerce-float-to-double
18089@itemx set coerce-float-to-double on
18090Arguments of type @code{float} will be promoted to @code{double} when passed
18091to an unprototyped function. This is the default setting.
18092
18093@item set coerce-float-to-double off
18094Arguments of type @code{float} will be passed directly to unprototyped
18095functions.
9c16f35a
EZ
18096
18097@kindex show coerce-float-to-double
18098@item show coerce-float-to-double
18099Show the current setting of promoting @code{float} to @code{double}.
1e698235
DJ
18100@end table
18101
f1212245
DJ
18102@kindex set cp-abi
18103@kindex show cp-abi
18104@value{GDBN} needs to know the ABI used for your program's C@t{++}
18105objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
18106used to build your application. @value{GDBN} only fully supports
18107programs with a single C@t{++} ABI; if your program contains code using
18108multiple C@t{++} ABI's or if @value{GDBN} can not identify your
18109program's ABI correctly, you can tell @value{GDBN} which ABI to use.
18110Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
18111before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
18112``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
18113use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
18114``auto''.
18115
18116@table @code
18117@item show cp-abi
18118Show the C@t{++} ABI currently in use.
18119
18120@item set cp-abi
18121With no argument, show the list of supported C@t{++} ABI's.
18122
18123@item set cp-abi @var{abi}
18124@itemx set cp-abi auto
18125Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
18126@end table
18127
8e04817f 18128@node Messages/Warnings
79a6e687 18129@section Optional Warnings and Messages
104c1213 18130
9c16f35a
EZ
18131@cindex verbose operation
18132@cindex optional warnings
8e04817f
AC
18133By default, @value{GDBN} is silent about its inner workings. If you are
18134running on a slow machine, you may want to use the @code{set verbose}
18135command. This makes @value{GDBN} tell you when it does a lengthy
18136internal operation, so you will not think it has crashed.
104c1213 18137
8e04817f
AC
18138Currently, the messages controlled by @code{set verbose} are those
18139which announce that the symbol table for a source file is being read;
79a6e687 18140see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}.
104c1213 18141
8e04817f
AC
18142@table @code
18143@kindex set verbose
18144@item set verbose on
18145Enables @value{GDBN} output of certain informational messages.
104c1213 18146
8e04817f
AC
18147@item set verbose off
18148Disables @value{GDBN} output of certain informational messages.
104c1213 18149
8e04817f
AC
18150@kindex show verbose
18151@item show verbose
18152Displays whether @code{set verbose} is on or off.
18153@end table
104c1213 18154
8e04817f
AC
18155By default, if @value{GDBN} encounters bugs in the symbol table of an
18156object file, it is silent; but if you are debugging a compiler, you may
79a6e687
BW
18157find this information useful (@pxref{Symbol Errors, ,Errors Reading
18158Symbol Files}).
104c1213 18159
8e04817f 18160@table @code
104c1213 18161
8e04817f
AC
18162@kindex set complaints
18163@item set complaints @var{limit}
18164Permits @value{GDBN} to output @var{limit} complaints about each type of
18165unusual symbols before becoming silent about the problem. Set
18166@var{limit} to zero to suppress all complaints; set it to a large number
18167to prevent complaints from being suppressed.
104c1213 18168
8e04817f
AC
18169@kindex show complaints
18170@item show complaints
18171Displays how many symbol complaints @value{GDBN} is permitted to produce.
104c1213 18172
8e04817f 18173@end table
104c1213 18174
d837706a 18175@anchor{confirmation requests}
8e04817f
AC
18176By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
18177lot of stupid questions to confirm certain commands. For example, if
18178you try to run a program which is already running:
104c1213 18179
474c8240 18180@smallexample
8e04817f
AC
18181(@value{GDBP}) run
18182The program being debugged has been started already.
18183Start it from the beginning? (y or n)
474c8240 18184@end smallexample
104c1213 18185
8e04817f
AC
18186If you are willing to unflinchingly face the consequences of your own
18187commands, you can disable this ``feature'':
104c1213 18188
8e04817f 18189@table @code
104c1213 18190
8e04817f
AC
18191@kindex set confirm
18192@cindex flinching
18193@cindex confirmation
18194@cindex stupid questions
18195@item set confirm off
18196Disables confirmation requests.
104c1213 18197
8e04817f
AC
18198@item set confirm on
18199Enables confirmation requests (the default).
104c1213 18200
8e04817f
AC
18201@kindex show confirm
18202@item show confirm
18203Displays state of confirmation requests.
18204
18205@end table
104c1213 18206
16026cd7
AS
18207@cindex command tracing
18208If you need to debug user-defined commands or sourced files you may find it
18209useful to enable @dfn{command tracing}. In this mode each command will be
18210printed as it is executed, prefixed with one or more @samp{+} symbols, the
18211quantity denoting the call depth of each command.
18212
18213@table @code
18214@kindex set trace-commands
18215@cindex command scripts, debugging
18216@item set trace-commands on
18217Enable command tracing.
18218@item set trace-commands off
18219Disable command tracing.
18220@item show trace-commands
18221Display the current state of command tracing.
18222@end table
18223
8e04817f 18224@node Debugging Output
79a6e687 18225@section Optional Messages about Internal Happenings
4644b6e3
EZ
18226@cindex optional debugging messages
18227
da316a69
EZ
18228@value{GDBN} has commands that enable optional debugging messages from
18229various @value{GDBN} subsystems; normally these commands are of
18230interest to @value{GDBN} maintainers, or when reporting a bug. This
18231section documents those commands.
18232
104c1213 18233@table @code
a8f24a35
EZ
18234@kindex set exec-done-display
18235@item set exec-done-display
18236Turns on or off the notification of asynchronous commands'
18237completion. When on, @value{GDBN} will print a message when an
18238asynchronous command finishes its execution. The default is off.
18239@kindex show exec-done-display
18240@item show exec-done-display
18241Displays the current setting of asynchronous command completion
18242notification.
4644b6e3
EZ
18243@kindex set debug
18244@cindex gdbarch debugging info
a8f24a35 18245@cindex architecture debugging info
8e04817f 18246@item set debug arch
a8f24a35 18247Turns on or off display of gdbarch debugging info. The default is off
4644b6e3 18248@kindex show debug
8e04817f
AC
18249@item show debug arch
18250Displays the current state of displaying gdbarch debugging info.
721c2651
EZ
18251@item set debug aix-thread
18252@cindex AIX threads
18253Display debugging messages about inner workings of the AIX thread
18254module.
18255@item show debug aix-thread
18256Show the current state of AIX thread debugging info display.
d97bc12b
DE
18257@item set debug dwarf2-die
18258@cindex DWARF2 DIEs
18259Dump DWARF2 DIEs after they are read in.
18260The value is the number of nesting levels to print.
18261A value of zero turns off the display.
18262@item show debug dwarf2-die
18263Show the current state of DWARF2 DIE debugging.
237fc4c9
PA
18264@item set debug displaced
18265@cindex displaced stepping debugging info
18266Turns on or off display of @value{GDBN} debugging info for the
18267displaced stepping support. The default is off.
18268@item show debug displaced
18269Displays the current state of displaying @value{GDBN} debugging info
18270related to displaced stepping.
8e04817f 18271@item set debug event
4644b6e3 18272@cindex event debugging info
a8f24a35 18273Turns on or off display of @value{GDBN} event debugging info. The
8e04817f 18274default is off.
8e04817f
AC
18275@item show debug event
18276Displays the current state of displaying @value{GDBN} event debugging
18277info.
8e04817f 18278@item set debug expression
4644b6e3 18279@cindex expression debugging info
721c2651
EZ
18280Turns on or off display of debugging info about @value{GDBN}
18281expression parsing. The default is off.
8e04817f 18282@item show debug expression
721c2651
EZ
18283Displays the current state of displaying debugging info about
18284@value{GDBN} expression parsing.
7453dc06 18285@item set debug frame
4644b6e3 18286@cindex frame debugging info
7453dc06
AC
18287Turns on or off display of @value{GDBN} frame debugging info. The
18288default is off.
7453dc06
AC
18289@item show debug frame
18290Displays the current state of displaying @value{GDBN} frame debugging
18291info.
cbe54154
PA
18292@item set debug gnu-nat
18293@cindex @sc{gnu}/Hurd debug messages
18294Turns on or off debugging messages from the @sc{gnu}/Hurd debug support.
18295@item show debug gnu-nat
18296Show the current state of @sc{gnu}/Hurd debugging messages.
30e91e0b
RC
18297@item set debug infrun
18298@cindex inferior debugging info
18299Turns on or off display of @value{GDBN} debugging info for running the inferior.
18300The default is off. @file{infrun.c} contains GDB's runtime state machine used
18301for implementing operations such as single-stepping the inferior.
18302@item show debug infrun
18303Displays the current state of @value{GDBN} inferior debugging.
da316a69
EZ
18304@item set debug lin-lwp
18305@cindex @sc{gnu}/Linux LWP debug messages
18306@cindex Linux lightweight processes
721c2651 18307Turns on or off debugging messages from the Linux LWP debug support.
da316a69
EZ
18308@item show debug lin-lwp
18309Show the current state of Linux LWP debugging messages.
b84876c2
PA
18310@item set debug lin-lwp-async
18311@cindex @sc{gnu}/Linux LWP async debug messages
18312@cindex Linux lightweight processes
18313Turns on or off debugging messages from the Linux LWP async debug support.
18314@item show debug lin-lwp-async
18315Show the current state of Linux LWP async debugging messages.
2b4855ab 18316@item set debug observer
4644b6e3 18317@cindex observer debugging info
2b4855ab
AC
18318Turns on or off display of @value{GDBN} observer debugging. This
18319includes info such as the notification of observable events.
2b4855ab
AC
18320@item show debug observer
18321Displays the current state of observer debugging.
8e04817f 18322@item set debug overload
4644b6e3 18323@cindex C@t{++} overload debugging info
8e04817f 18324Turns on or off display of @value{GDBN} C@t{++} overload debugging
359df76b 18325info. This includes info such as ranking of functions, etc. The default
8e04817f 18326is off.
8e04817f
AC
18327@item show debug overload
18328Displays the current state of displaying @value{GDBN} C@t{++} overload
18329debugging info.
8e04817f
AC
18330@cindex packets, reporting on stdout
18331@cindex serial connections, debugging
605a56cb
DJ
18332@cindex debug remote protocol
18333@cindex remote protocol debugging
18334@cindex display remote packets
8e04817f
AC
18335@item set debug remote
18336Turns on or off display of reports on all packets sent back and forth across
18337the serial line to the remote machine. The info is printed on the
18338@value{GDBN} standard output stream. The default is off.
8e04817f
AC
18339@item show debug remote
18340Displays the state of display of remote packets.
8e04817f
AC
18341@item set debug serial
18342Turns on or off display of @value{GDBN} serial debugging info. The
18343default is off.
8e04817f
AC
18344@item show debug serial
18345Displays the current state of displaying @value{GDBN} serial debugging
18346info.
c45da7e6
EZ
18347@item set debug solib-frv
18348@cindex FR-V shared-library debugging
18349Turns on or off debugging messages for FR-V shared-library code.
18350@item show debug solib-frv
18351Display the current state of FR-V shared-library code debugging
18352messages.
8e04817f 18353@item set debug target
4644b6e3 18354@cindex target debugging info
8e04817f
AC
18355Turns on or off display of @value{GDBN} target debugging info. This info
18356includes what is going on at the target level of GDB, as it happens. The
701b08bb
DJ
18357default is 0. Set it to 1 to track events, and to 2 to also track the
18358value of large memory transfers. Changes to this flag do not take effect
18359until the next time you connect to a target or use the @code{run} command.
8e04817f
AC
18360@item show debug target
18361Displays the current state of displaying @value{GDBN} target debugging
18362info.
75feb17d
DJ
18363@item set debug timestamp
18364@cindex timestampping debugging info
18365Turns on or off display of timestamps with @value{GDBN} debugging info.
18366When enabled, seconds and microseconds are displayed before each debugging
18367message.
18368@item show debug timestamp
18369Displays the current state of displaying timestamps with @value{GDBN}
18370debugging info.
c45da7e6 18371@item set debugvarobj
4644b6e3 18372@cindex variable object debugging info
8e04817f
AC
18373Turns on or off display of @value{GDBN} variable object debugging
18374info. The default is off.
c45da7e6 18375@item show debugvarobj
8e04817f
AC
18376Displays the current state of displaying @value{GDBN} variable object
18377debugging info.
e776119f
DJ
18378@item set debug xml
18379@cindex XML parser debugging
18380Turns on or off debugging messages for built-in XML parsers.
18381@item show debug xml
18382Displays the current state of XML debugging messages.
8e04817f 18383@end table
104c1213 18384
14fb1bac
JB
18385@node Other Misc Settings
18386@section Other Miscellaneous Settings
18387@cindex miscellaneous settings
18388
18389@table @code
18390@kindex set interactive-mode
18391@item set interactive-mode
18392If @code{on}, forces @value{GDBN} to operate interactively.
18393If @code{off}, forces @value{GDBN} to operate non-interactively,
18394If @code{auto} (the default), @value{GDBN} guesses which mode to use,
18395based on whether the debugger was started in a terminal or not.
18396
18397In the vast majority of cases, the debugger should be able to guess
18398correctly which mode should be used. But this setting can be useful
18399in certain specific cases, such as running a MinGW @value{GDBN}
18400inside a cygwin window.
18401
18402@kindex show interactive-mode
18403@item show interactive-mode
18404Displays whether the debugger is operating in interactive mode or not.
18405@end table
18406
d57a3c85
TJB
18407@node Extending GDB
18408@chapter Extending @value{GDBN}
18409@cindex extending GDB
18410
18411@value{GDBN} provides two mechanisms for extension. The first is based
18412on composition of @value{GDBN} commands, and the second is based on the
18413Python scripting language.
18414
18415@menu
18416* Sequences:: Canned Sequences of Commands
18417* Python:: Scripting @value{GDBN} using Python
18418@end menu
18419
8e04817f 18420@node Sequences
d57a3c85 18421@section Canned Sequences of Commands
104c1213 18422
8e04817f 18423Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
79a6e687 18424Command Lists}), @value{GDBN} provides two ways to store sequences of
8e04817f
AC
18425commands for execution as a unit: user-defined commands and command
18426files.
104c1213 18427
8e04817f 18428@menu
fcc73fe3
EZ
18429* Define:: How to define your own commands
18430* Hooks:: Hooks for user-defined commands
18431* Command Files:: How to write scripts of commands to be stored in a file
18432* Output:: Commands for controlled output
8e04817f 18433@end menu
104c1213 18434
8e04817f 18435@node Define
d57a3c85 18436@subsection User-defined Commands
104c1213 18437
8e04817f 18438@cindex user-defined command
fcc73fe3 18439@cindex arguments, to user-defined commands
8e04817f
AC
18440A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
18441which you assign a new name as a command. This is done with the
18442@code{define} command. User commands may accept up to 10 arguments
18443separated by whitespace. Arguments are accessed within the user command
c03c782f 18444via @code{$arg0@dots{}$arg9}. A trivial example:
104c1213 18445
8e04817f
AC
18446@smallexample
18447define adder
18448 print $arg0 + $arg1 + $arg2
c03c782f 18449end
8e04817f 18450@end smallexample
104c1213
JM
18451
18452@noindent
8e04817f 18453To execute the command use:
104c1213 18454
8e04817f
AC
18455@smallexample
18456adder 1 2 3
18457@end smallexample
104c1213 18458
8e04817f
AC
18459@noindent
18460This defines the command @code{adder}, which prints the sum of
18461its three arguments. Note the arguments are text substitutions, so they may
18462reference variables, use complex expressions, or even perform inferior
18463functions calls.
104c1213 18464
fcc73fe3
EZ
18465@cindex argument count in user-defined commands
18466@cindex how many arguments (user-defined commands)
c03c782f
AS
18467In addition, @code{$argc} may be used to find out how many arguments have
18468been passed. This expands to a number in the range 0@dots{}10.
18469
18470@smallexample
18471define adder
18472 if $argc == 2
18473 print $arg0 + $arg1
18474 end
18475 if $argc == 3
18476 print $arg0 + $arg1 + $arg2
18477 end
18478end
18479@end smallexample
18480
104c1213 18481@table @code
104c1213 18482
8e04817f
AC
18483@kindex define
18484@item define @var{commandname}
18485Define a command named @var{commandname}. If there is already a command
18486by that name, you are asked to confirm that you want to redefine it.
adb483fe
DJ
18487@var{commandname} may be a bare command name consisting of letters,
18488numbers, dashes, and underscores. It may also start with any predefined
18489prefix command. For example, @samp{define target my-target} creates
18490a user-defined @samp{target my-target} command.
104c1213 18491
8e04817f
AC
18492The definition of the command is made up of other @value{GDBN} command lines,
18493which are given following the @code{define} command. The end of these
18494commands is marked by a line containing @code{end}.
104c1213 18495
8e04817f 18496@kindex document
ca91424e 18497@kindex end@r{ (user-defined commands)}
8e04817f
AC
18498@item document @var{commandname}
18499Document the user-defined command @var{commandname}, so that it can be
18500accessed by @code{help}. The command @var{commandname} must already be
18501defined. This command reads lines of documentation just as @code{define}
18502reads the lines of the command definition, ending with @code{end}.
18503After the @code{document} command is finished, @code{help} on command
18504@var{commandname} displays the documentation you have written.
104c1213 18505
8e04817f
AC
18506You may use the @code{document} command again to change the
18507documentation of a command. Redefining the command with @code{define}
18508does not change the documentation.
104c1213 18509
c45da7e6
EZ
18510@kindex dont-repeat
18511@cindex don't repeat command
18512@item dont-repeat
18513Used inside a user-defined command, this tells @value{GDBN} that this
18514command should not be repeated when the user hits @key{RET}
18515(@pxref{Command Syntax, repeat last command}).
18516
8e04817f
AC
18517@kindex help user-defined
18518@item help user-defined
18519List all user-defined commands, with the first line of the documentation
18520(if any) for each.
104c1213 18521
8e04817f
AC
18522@kindex show user
18523@item show user
18524@itemx show user @var{commandname}
18525Display the @value{GDBN} commands used to define @var{commandname} (but
18526not its documentation). If no @var{commandname} is given, display the
18527definitions for all user-defined commands.
104c1213 18528
fcc73fe3 18529@cindex infinite recursion in user-defined commands
20f01a46
DH
18530@kindex show max-user-call-depth
18531@kindex set max-user-call-depth
18532@item show max-user-call-depth
5ca0cb28
DH
18533@itemx set max-user-call-depth
18534The value of @code{max-user-call-depth} controls how many recursion
3f94c067 18535levels are allowed in user-defined commands before @value{GDBN} suspects an
5ca0cb28 18536infinite recursion and aborts the command.
104c1213
JM
18537@end table
18538
fcc73fe3
EZ
18539In addition to the above commands, user-defined commands frequently
18540use control flow commands, described in @ref{Command Files}.
18541
8e04817f
AC
18542When user-defined commands are executed, the
18543commands of the definition are not printed. An error in any command
18544stops execution of the user-defined command.
104c1213 18545
8e04817f
AC
18546If used interactively, commands that would ask for confirmation proceed
18547without asking when used inside a user-defined command. Many @value{GDBN}
18548commands that normally print messages to say what they are doing omit the
18549messages when used in a user-defined command.
104c1213 18550
8e04817f 18551@node Hooks
d57a3c85 18552@subsection User-defined Command Hooks
8e04817f
AC
18553@cindex command hooks
18554@cindex hooks, for commands
18555@cindex hooks, pre-command
104c1213 18556
8e04817f 18557@kindex hook
8e04817f
AC
18558You may define @dfn{hooks}, which are a special kind of user-defined
18559command. Whenever you run the command @samp{foo}, if the user-defined
18560command @samp{hook-foo} exists, it is executed (with no arguments)
18561before that command.
104c1213 18562
8e04817f
AC
18563@cindex hooks, post-command
18564@kindex hookpost
8e04817f
AC
18565A hook may also be defined which is run after the command you executed.
18566Whenever you run the command @samp{foo}, if the user-defined command
18567@samp{hookpost-foo} exists, it is executed (with no arguments) after
18568that command. Post-execution hooks may exist simultaneously with
18569pre-execution hooks, for the same command.
104c1213 18570
8e04817f 18571It is valid for a hook to call the command which it hooks. If this
9f1c6395 18572occurs, the hook is not re-executed, thereby avoiding infinite recursion.
104c1213 18573
8e04817f
AC
18574@c It would be nice if hookpost could be passed a parameter indicating
18575@c if the command it hooks executed properly or not. FIXME!
104c1213 18576
8e04817f
AC
18577@kindex stop@r{, a pseudo-command}
18578In addition, a pseudo-command, @samp{stop} exists. Defining
18579(@samp{hook-stop}) makes the associated commands execute every time
18580execution stops in your program: before breakpoint commands are run,
18581displays are printed, or the stack frame is printed.
104c1213 18582
8e04817f
AC
18583For example, to ignore @code{SIGALRM} signals while
18584single-stepping, but treat them normally during normal execution,
18585you could define:
104c1213 18586
474c8240 18587@smallexample
8e04817f
AC
18588define hook-stop
18589handle SIGALRM nopass
18590end
104c1213 18591
8e04817f
AC
18592define hook-run
18593handle SIGALRM pass
18594end
104c1213 18595
8e04817f 18596define hook-continue
d3e8051b 18597handle SIGALRM pass
8e04817f 18598end
474c8240 18599@end smallexample
104c1213 18600
d3e8051b 18601As a further example, to hook at the beginning and end of the @code{echo}
b383017d 18602command, and to add extra text to the beginning and end of the message,
8e04817f 18603you could define:
104c1213 18604
474c8240 18605@smallexample
8e04817f
AC
18606define hook-echo
18607echo <<<---
18608end
104c1213 18609
8e04817f
AC
18610define hookpost-echo
18611echo --->>>\n
18612end
104c1213 18613
8e04817f
AC
18614(@value{GDBP}) echo Hello World
18615<<<---Hello World--->>>
18616(@value{GDBP})
104c1213 18617
474c8240 18618@end smallexample
104c1213 18619
8e04817f
AC
18620You can define a hook for any single-word command in @value{GDBN}, but
18621not for command aliases; you should define a hook for the basic command
c1468174 18622name, e.g.@: @code{backtrace} rather than @code{bt}.
8e04817f
AC
18623@c FIXME! So how does Joe User discover whether a command is an alias
18624@c or not?
adb483fe
DJ
18625You can hook a multi-word command by adding @code{hook-} or
18626@code{hookpost-} to the last word of the command, e.g.@:
18627@samp{define target hook-remote} to add a hook to @samp{target remote}.
18628
8e04817f
AC
18629If an error occurs during the execution of your hook, execution of
18630@value{GDBN} commands stops and @value{GDBN} issues a prompt
18631(before the command that you actually typed had a chance to run).
104c1213 18632
8e04817f
AC
18633If you try to define a hook which does not match any known command, you
18634get a warning from the @code{define} command.
c906108c 18635
8e04817f 18636@node Command Files
d57a3c85 18637@subsection Command Files
c906108c 18638
8e04817f 18639@cindex command files
fcc73fe3 18640@cindex scripting commands
6fc08d32
EZ
18641A command file for @value{GDBN} is a text file made of lines that are
18642@value{GDBN} commands. Comments (lines starting with @kbd{#}) may
18643also be included. An empty line in a command file does nothing; it
18644does not mean to repeat the last command, as it would from the
18645terminal.
c906108c 18646
6fc08d32
EZ
18647You can request the execution of a command file with the @code{source}
18648command:
c906108c 18649
8e04817f
AC
18650@table @code
18651@kindex source
ca91424e 18652@cindex execute commands from a file
16026cd7 18653@item source [@code{-v}] @var{filename}
8e04817f 18654Execute the command file @var{filename}.
c906108c
SS
18655@end table
18656
fcc73fe3
EZ
18657The lines in a command file are generally executed sequentially,
18658unless the order of execution is changed by one of the
18659@emph{flow-control commands} described below. The commands are not
a71ec265
DH
18660printed as they are executed. An error in any command terminates
18661execution of the command file and control is returned to the console.
c906108c 18662
4b505b12
AS
18663@value{GDBN} searches for @var{filename} in the current directory and then
18664on the search path (specified with the @samp{directory} command).
18665
16026cd7
AS
18666If @code{-v}, for verbose mode, is given then @value{GDBN} displays
18667each command as it is executed. The option must be given before
18668@var{filename}, and is interpreted as part of the filename anywhere else.
18669
8e04817f
AC
18670Commands that would ask for confirmation if used interactively proceed
18671without asking when used in a command file. Many @value{GDBN} commands that
18672normally print messages to say what they are doing omit the messages
18673when called from command files.
c906108c 18674
8e04817f
AC
18675@value{GDBN} also accepts command input from standard input. In this
18676mode, normal output goes to standard output and error output goes to
18677standard error. Errors in a command file supplied on standard input do
6fc08d32 18678not terminate execution of the command file---execution continues with
8e04817f 18679the next command.
c906108c 18680
474c8240 18681@smallexample
8e04817f 18682gdb < cmds > log 2>&1
474c8240 18683@end smallexample
c906108c 18684
8e04817f
AC
18685(The syntax above will vary depending on the shell used.) This example
18686will execute commands from the file @file{cmds}. All output and errors
18687would be directed to @file{log}.
c906108c 18688
fcc73fe3
EZ
18689Since commands stored on command files tend to be more general than
18690commands typed interactively, they frequently need to deal with
18691complicated situations, such as different or unexpected values of
18692variables and symbols, changes in how the program being debugged is
18693built, etc. @value{GDBN} provides a set of flow-control commands to
18694deal with these complexities. Using these commands, you can write
18695complex scripts that loop over data structures, execute commands
18696conditionally, etc.
18697
18698@table @code
18699@kindex if
18700@kindex else
18701@item if
18702@itemx else
18703This command allows to include in your script conditionally executed
18704commands. The @code{if} command takes a single argument, which is an
18705expression to evaluate. It is followed by a series of commands that
18706are executed only if the expression is true (its value is nonzero).
18707There can then optionally be an @code{else} line, followed by a series
18708of commands that are only executed if the expression was false. The
18709end of the list is marked by a line containing @code{end}.
18710
18711@kindex while
18712@item while
18713This command allows to write loops. Its syntax is similar to
18714@code{if}: the command takes a single argument, which is an expression
18715to evaluate, and must be followed by the commands to execute, one per
18716line, terminated by an @code{end}. These commands are called the
18717@dfn{body} of the loop. The commands in the body of @code{while} are
18718executed repeatedly as long as the expression evaluates to true.
18719
18720@kindex loop_break
18721@item loop_break
18722This command exits the @code{while} loop in whose body it is included.
18723Execution of the script continues after that @code{while}s @code{end}
18724line.
18725
18726@kindex loop_continue
18727@item loop_continue
18728This command skips the execution of the rest of the body of commands
18729in the @code{while} loop in whose body it is included. Execution
18730branches to the beginning of the @code{while} loop, where it evaluates
18731the controlling expression.
ca91424e
EZ
18732
18733@kindex end@r{ (if/else/while commands)}
18734@item end
18735Terminate the block of commands that are the body of @code{if},
18736@code{else}, or @code{while} flow-control commands.
fcc73fe3
EZ
18737@end table
18738
18739
8e04817f 18740@node Output
d57a3c85 18741@subsection Commands for Controlled Output
c906108c 18742
8e04817f
AC
18743During the execution of a command file or a user-defined command, normal
18744@value{GDBN} output is suppressed; the only output that appears is what is
18745explicitly printed by the commands in the definition. This section
18746describes three commands useful for generating exactly the output you
18747want.
c906108c
SS
18748
18749@table @code
8e04817f
AC
18750@kindex echo
18751@item echo @var{text}
18752@c I do not consider backslash-space a standard C escape sequence
18753@c because it is not in ANSI.
18754Print @var{text}. Nonprinting characters can be included in
18755@var{text} using C escape sequences, such as @samp{\n} to print a
18756newline. @strong{No newline is printed unless you specify one.}
18757In addition to the standard C escape sequences, a backslash followed
18758by a space stands for a space. This is useful for displaying a
18759string with spaces at the beginning or the end, since leading and
18760trailing spaces are otherwise trimmed from all arguments.
18761To print @samp{@w{ }and foo =@w{ }}, use the command
18762@samp{echo \@w{ }and foo = \@w{ }}.
c906108c 18763
8e04817f
AC
18764A backslash at the end of @var{text} can be used, as in C, to continue
18765the command onto subsequent lines. For example,
c906108c 18766
474c8240 18767@smallexample
8e04817f
AC
18768echo This is some text\n\
18769which is continued\n\
18770onto several lines.\n
474c8240 18771@end smallexample
c906108c 18772
8e04817f 18773produces the same output as
c906108c 18774
474c8240 18775@smallexample
8e04817f
AC
18776echo This is some text\n
18777echo which is continued\n
18778echo onto several lines.\n
474c8240 18779@end smallexample
c906108c 18780
8e04817f
AC
18781@kindex output
18782@item output @var{expression}
18783Print the value of @var{expression} and nothing but that value: no
18784newlines, no @samp{$@var{nn} = }. The value is not entered in the
18785value history either. @xref{Expressions, ,Expressions}, for more information
18786on expressions.
c906108c 18787
8e04817f
AC
18788@item output/@var{fmt} @var{expression}
18789Print the value of @var{expression} in format @var{fmt}. You can use
18790the same formats as for @code{print}. @xref{Output Formats,,Output
79a6e687 18791Formats}, for more information.
c906108c 18792
8e04817f 18793@kindex printf
82160952
EZ
18794@item printf @var{template}, @var{expressions}@dots{}
18795Print the values of one or more @var{expressions} under the control of
18796the string @var{template}. To print several values, make
18797@var{expressions} be a comma-separated list of individual expressions,
18798which may be either numbers or pointers. Their values are printed as
18799specified by @var{template}, exactly as a C program would do by
18800executing the code below:
c906108c 18801
474c8240 18802@smallexample
82160952 18803printf (@var{template}, @var{expressions}@dots{});
474c8240 18804@end smallexample
c906108c 18805
82160952
EZ
18806As in @code{C} @code{printf}, ordinary characters in @var{template}
18807are printed verbatim, while @dfn{conversion specification} introduced
18808by the @samp{%} character cause subsequent @var{expressions} to be
18809evaluated, their values converted and formatted according to type and
18810style information encoded in the conversion specifications, and then
18811printed.
18812
8e04817f 18813For example, you can print two values in hex like this:
c906108c 18814
8e04817f
AC
18815@smallexample
18816printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
18817@end smallexample
c906108c 18818
82160952
EZ
18819@code{printf} supports all the standard @code{C} conversion
18820specifications, including the flags and modifiers between the @samp{%}
18821character and the conversion letter, with the following exceptions:
18822
18823@itemize @bullet
18824@item
18825The argument-ordering modifiers, such as @samp{2$}, are not supported.
18826
18827@item
18828The modifier @samp{*} is not supported for specifying precision or
18829width.
18830
18831@item
18832The @samp{'} flag (for separation of digits into groups according to
18833@code{LC_NUMERIC'}) is not supported.
18834
18835@item
18836The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not
18837supported.
18838
18839@item
18840The conversion letter @samp{n} (as in @samp{%n}) is not supported.
18841
18842@item
18843The conversion letters @samp{a} and @samp{A} are not supported.
18844@end itemize
18845
18846@noindent
18847Note that the @samp{ll} type modifier is supported only if the
18848underlying @code{C} implementation used to build @value{GDBN} supports
18849the @code{long long int} type, and the @samp{L} type modifier is
18850supported only if @code{long double} type is available.
18851
18852As in @code{C}, @code{printf} supports simple backslash-escape
18853sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"},
18854@samp{\a}, and @samp{\f}, that consist of backslash followed by a
18855single character. Octal and hexadecimal escape sequences are not
18856supported.
1a619819
LM
18857
18858Additionally, @code{printf} supports conversion specifications for DFP
0aea4bf3
LM
18859(@dfn{Decimal Floating Point}) types using the following length modifiers
18860together with a floating point specifier.
1a619819
LM
18861letters:
18862
18863@itemize @bullet
18864@item
18865@samp{H} for printing @code{Decimal32} types.
18866
18867@item
18868@samp{D} for printing @code{Decimal64} types.
18869
18870@item
18871@samp{DD} for printing @code{Decimal128} types.
18872@end itemize
18873
18874If the underlying @code{C} implementation used to build @value{GDBN} has
0aea4bf3 18875support for the three length modifiers for DFP types, other modifiers
3b784c4f 18876such as width and precision will also be available for @value{GDBN} to use.
1a619819
LM
18877
18878In case there is no such @code{C} support, no additional modifiers will be
18879available and the value will be printed in the standard way.
18880
18881Here's an example of printing DFP types using the above conversion letters:
18882@smallexample
0aea4bf3 18883printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
1a619819
LM
18884@end smallexample
18885
c906108c
SS
18886@end table
18887
d57a3c85
TJB
18888@node Python
18889@section Scripting @value{GDBN} using Python
18890@cindex python scripting
18891@cindex scripting with python
18892
18893You can script @value{GDBN} using the @uref{http://www.python.org/,
18894Python programming language}. This feature is available only if
18895@value{GDBN} was configured using @option{--with-python}.
18896
18897@menu
18898* Python Commands:: Accessing Python from @value{GDBN}.
18899* Python API:: Accessing @value{GDBN} from Python.
18900@end menu
18901
18902@node Python Commands
18903@subsection Python Commands
18904@cindex python commands
18905@cindex commands to access python
18906
18907@value{GDBN} provides one command for accessing the Python interpreter,
18908and one related setting:
18909
18910@table @code
18911@kindex python
18912@item python @r{[}@var{code}@r{]}
18913The @code{python} command can be used to evaluate Python code.
18914
18915If given an argument, the @code{python} command will evaluate the
18916argument as a Python command. For example:
18917
18918@smallexample
18919(@value{GDBP}) python print 23
1892023
18921@end smallexample
18922
18923If you do not provide an argument to @code{python}, it will act as a
18924multi-line command, like @code{define}. In this case, the Python
18925script is made up of subsequent command lines, given after the
18926@code{python} command. This command list is terminated using a line
18927containing @code{end}. For example:
18928
18929@smallexample
18930(@value{GDBP}) python
18931Type python script
18932End with a line saying just "end".
18933>print 23
18934>end
1893523
18936@end smallexample
18937
18938@kindex maint set python print-stack
18939@item maint set python print-stack
18940By default, @value{GDBN} will print a stack trace when an error occurs
18941in a Python script. This can be controlled using @code{maint set
18942python print-stack}: if @code{on}, the default, then Python stack
18943printing is enabled; if @code{off}, then Python stack printing is
18944disabled.
18945@end table
18946
18947@node Python API
18948@subsection Python API
18949@cindex python api
18950@cindex programming in python
18951
18952@cindex python stdout
18953@cindex python pagination
18954At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
18955@code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
18956A Python program which outputs to one of these streams may have its
18957output interrupted by the user (@pxref{Screen Size}). In this
18958situation, a Python @code{KeyboardInterrupt} exception is thrown.
18959
18960@menu
18961* Basic Python:: Basic Python Functions.
18962* Exception Handling::
89c73ade 18963* Auto-loading:: Automatically loading Python code.
a08702d6 18964* Values From Inferior::
2c74e833 18965* Types In Python:: Python representation of types.
a6bac58e
TT
18966* Pretty Printing:: Pretty-printing values.
18967* Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
d8906c6f 18968* Commands In Python:: Implementing new commands in Python.
bc3b79fd 18969* Functions In Python:: Writing new convenience functions.
89c73ade 18970* Objfiles In Python:: Object files.
f8f6f20b 18971* Frames In Python:: Acessing inferior stack frames from Python.
d57a3c85
TJB
18972@end menu
18973
18974@node Basic Python
18975@subsubsection Basic Python
18976
18977@cindex python functions
18978@cindex python module
18979@cindex gdb module
18980@value{GDBN} introduces a new Python module, named @code{gdb}. All
18981methods and classes added by @value{GDBN} are placed in this module.
18982@value{GDBN} automatically @code{import}s the @code{gdb} module for
18983use in all scripts evaluated by the @code{python} command.
18984
18985@findex gdb.execute
12453b93 18986@defun execute command [from_tty]
d57a3c85
TJB
18987Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
18988If a GDB exception happens while @var{command} runs, it is
18989translated as described in @ref{Exception Handling,,Exception Handling}.
18990If no exceptions occur, this function returns @code{None}.
12453b93
TJB
18991
18992@var{from_tty} specifies whether @value{GDBN} ought to consider this
18993command as having originated from the user invoking it interactively.
18994It must be a boolean value. If omitted, it defaults to @code{False}.
d57a3c85
TJB
18995@end defun
18996
8f500870
TT
18997@findex gdb.parameter
18998@defun parameter parameter
d57a3c85
TJB
18999Return the value of a @value{GDBN} parameter. @var{parameter} is a
19000string naming the parameter to look up; @var{parameter} may contain
19001spaces if the parameter has a multi-part name. For example,
19002@samp{print object} is a valid parameter name.
19003
19004If the named parameter does not exist, this function throws a
19005@code{RuntimeError}. Otherwise, the parameter's value is converted to
19006a Python value of the appropriate type, and returned.
19007@end defun
19008
08c637de
TJB
19009@findex gdb.history
19010@defun history number
19011Return a value from @value{GDBN}'s value history (@pxref{Value
19012History}). @var{number} indicates which history element to return.
19013If @var{number} is negative, then @value{GDBN} will take its absolute value
19014and count backward from the last element (i.e., the most recent element) to
19015find the value to return. If @var{number} is zero, then @value{GDBN} will
a0c36267 19016return the most recent element. If the element specified by @var{number}
08c637de
TJB
19017doesn't exist in the value history, a @code{RuntimeError} exception will be
19018raised.
19019
19020If no exception is raised, the return value is always an instance of
19021@code{gdb.Value} (@pxref{Values From Inferior}).
19022@end defun
19023
d57a3c85
TJB
19024@findex gdb.write
19025@defun write string
19026Print a string to @value{GDBN}'s paginated standard output stream.
19027Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
19028call this function.
19029@end defun
19030
19031@findex gdb.flush
19032@defun flush
19033Flush @value{GDBN}'s paginated standard output stream. Flushing
19034@code{sys.stdout} or @code{sys.stderr} will automatically call this
19035function.
19036@end defun
19037
19038@node Exception Handling
19039@subsubsection Exception Handling
19040@cindex python exceptions
19041@cindex exceptions, python
19042
19043When executing the @code{python} command, Python exceptions
19044uncaught within the Python code are translated to calls to
19045@value{GDBN} error-reporting mechanism. If the command that called
19046@code{python} does not handle the error, @value{GDBN} will
19047terminate it and print an error message containing the Python
19048exception name, the associated value, and the Python call stack
19049backtrace at the point where the exception was raised. Example:
19050
19051@smallexample
19052(@value{GDBP}) python print foo
19053Traceback (most recent call last):
19054 File "<string>", line 1, in <module>
19055NameError: name 'foo' is not defined
19056@end smallexample
19057
19058@value{GDBN} errors that happen in @value{GDBN} commands invoked by Python
19059code are converted to Python @code{RuntimeError} exceptions. User
19060interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
19061prompt) is translated to a Python @code{KeyboardInterrupt}
19062exception. If you catch these exceptions in your Python code, your
19063exception handler will see @code{RuntimeError} or
19064@code{KeyboardInterrupt} as the exception type, the @value{GDBN} error
19065message as its value, and the Python call stack backtrace at the
19066Python statement closest to where the @value{GDBN} error occured as the
19067traceback.
19068
89c73ade
TT
19069@node Auto-loading
19070@subsubsection Auto-loading
19071@cindex auto-loading, Python
19072
19073When a new object file is read (for example, due to the @code{file}
19074command, or because the inferior has loaded a shared library),
19075@value{GDBN} will look for a file named @file{@var{objfile}-gdb.py},
19076where @var{objfile} is the object file's real name, formed by ensuring
19077that the file name is absolute, following all symlinks, and resolving
19078@code{.} and @code{..} components. If this file exists and is
19079readable, @value{GDBN} will evaluate it as a Python script.
19080
19081If this file does not exist, and if the parameter
19082@code{debug-file-directory} is set (@pxref{Separate Debug Files}),
19083then @value{GDBN} will use the file named
19084@file{@var{debug-file-directory}/@var{real-name}}, where
19085@var{real-name} is the object file's real name, as described above.
19086
19087Finally, if this file does not exist, then @value{GDBN} will look for
19088a file named @file{@var{data-directory}/python/auto-load/@var{real-name}}, where
19089@var{data-directory} is @value{GDBN}'s data directory (available via
19090@code{show data-directory}, @pxref{Data Files}), and @var{real-name}
19091is the object file's real name, as described above.
19092
19093When reading an auto-loaded file, @value{GDBN} sets the ``current
19094objfile''. This is available via the @code{gdb.current_objfile}
19095function (@pxref{Objfiles In Python}). This can be useful for
19096registering objfile-specific pretty-printers.
19097
19098The auto-loading feature is useful for supplying application-specific
19099debugging commands and scripts. You can enable or disable this
19100feature, and view its current state.
19101
19102@table @code
19103@kindex maint set python auto-load
19104@item maint set python auto-load [yes|no]
19105Enable or disable the Python auto-loading feature.
19106
19107@kindex show python auto-load
19108@item show python auto-load
19109Show whether Python auto-loading is enabled or disabled.
19110@end table
19111
19112@value{GDBN} does not track which files it has already auto-loaded.
19113So, your @samp{-gdb.py} file should take care to ensure that it may be
19114evaluated multiple times without error.
19115
a08702d6
TJB
19116@node Values From Inferior
19117@subsubsection Values From Inferior
19118@cindex values from inferior, with Python
19119@cindex python, working with values from inferior
19120
19121@cindex @code{gdb.Value}
19122@value{GDBN} provides values it obtains from the inferior program in
19123an object of type @code{gdb.Value}. @value{GDBN} uses this object
19124for its internal bookkeeping of the inferior's values, and for
19125fetching values when necessary.
19126
19127Inferior values that are simple scalars can be used directly in
19128Python expressions that are valid for the value's data type. Here's
19129an example for an integer or floating-point value @code{some_val}:
19130
19131@smallexample
19132bar = some_val + 2
19133@end smallexample
19134
19135@noindent
19136As result of this, @code{bar} will also be a @code{gdb.Value} object
19137whose values are of the same type as those of @code{some_val}.
19138
19139Inferior values that are structures or instances of some class can
19140be accessed using the Python @dfn{dictionary syntax}. For example, if
19141@code{some_val} is a @code{gdb.Value} instance holding a structure, you
19142can access its @code{foo} element with:
19143
19144@smallexample
19145bar = some_val['foo']
19146@end smallexample
19147
19148Again, @code{bar} will also be a @code{gdb.Value} object.
19149
c0c6f777 19150The following attributes are provided:
a08702d6 19151
def2b000 19152@table @code
2c74e833 19153@defivar Value address
c0c6f777
TJB
19154If this object is addressable, this read-only attribute holds a
19155@code{gdb.Value} object representing the address. Otherwise,
19156this attribute holds @code{None}.
2c74e833 19157@end defivar
c0c6f777 19158
def2b000 19159@cindex optimized out value in Python
2c74e833 19160@defivar Value is_optimized_out
def2b000
TJB
19161This read-only boolean attribute is true if the compiler optimized out
19162this value, thus it is not available for fetching from the inferior.
2c74e833
TT
19163@end defivar
19164
19165@defivar Value type
19166The type of this @code{gdb.Value}. The value of this attribute is a
19167@code{gdb.Type} object.
19168@end defivar
def2b000
TJB
19169@end table
19170
19171The following methods are provided:
19172
19173@table @code
a08702d6 19174@defmethod Value dereference
def2b000
TJB
19175For pointer data types, this method returns a new @code{gdb.Value} object
19176whose contents is the object pointed to by the pointer. For example, if
19177@code{foo} is a C pointer to an @code{int}, declared in your C program as
a08702d6
TJB
19178
19179@smallexample
19180int *foo;
19181@end smallexample
19182
19183@noindent
19184then you can use the corresponding @code{gdb.Value} to access what
19185@code{foo} points to like this:
19186
19187@smallexample
19188bar = foo.dereference ()
19189@end smallexample
19190
19191The result @code{bar} will be a @code{gdb.Value} object holding the
19192value pointed to by @code{foo}.
19193@end defmethod
19194
fbb8f299 19195@defmethod Value string @r{[}encoding@r{]} @r{[}errors@r{]} @r{[}length@r{]}
b6cb8e7d
TJB
19196If this @code{gdb.Value} represents a string, then this method
19197converts the contents to a Python string. Otherwise, this method will
19198throw an exception.
19199
19200Strings are recognized in a language-specific way; whether a given
19201@code{gdb.Value} represents a string is determined by the current
19202language.
19203
19204For C-like languages, a value is a string if it is a pointer to or an
19205array of characters or ints. The string is assumed to be terminated
fbb8f299
PM
19206by a zero of the appropriate width. However if the optional length
19207argument is given, the string will be converted to that given length,
19208ignoring any embedded zeros that the string may contain.
b6cb8e7d
TJB
19209
19210If the optional @var{encoding} argument is given, it must be a string
19211naming the encoding of the string in the @code{gdb.Value}, such as
19212@code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
19213the same encodings as the corresponding argument to Python's
19214@code{string.decode} method, and the Python codec machinery will be used
19215to convert the string. If @var{encoding} is not given, or if
19216@var{encoding} is the empty string, then either the @code{target-charset}
19217(@pxref{Character Sets}) will be used, or a language-specific encoding
19218will be used, if the current language is able to supply one.
19219
19220The optional @var{errors} argument is the same as the corresponding
19221argument to Python's @code{string.decode} method.
fbb8f299
PM
19222
19223If the optional @var{length} argument is given, the string will be
19224fetched and converted to the given length.
b6cb8e7d 19225@end defmethod
def2b000 19226@end table
b6cb8e7d 19227
2c74e833
TT
19228@node Types In Python
19229@subsubsection Types In Python
19230@cindex types in Python
19231@cindex Python, working with types
19232
19233@tindex gdb.Type
19234@value{GDBN} represents types from the inferior using the class
19235@code{gdb.Type}.
19236
19237The following type-related functions are available in the @code{gdb}
19238module:
19239
19240@findex gdb.lookup_type
19241@defun lookup_type name [block]
19242This function looks up a type by name. @var{name} is the name of the
19243type to look up. It must be a string.
19244
19245Ordinarily, this function will return an instance of @code{gdb.Type}.
19246If the named type cannot be found, it will throw an exception.
19247@end defun
19248
19249An instance of @code{Type} has the following attributes:
19250
19251@table @code
19252@defivar Type code
19253The type code for this type. The type code will be one of the
19254@code{TYPE_CODE_} constants defined below.
19255@end defivar
19256
19257@defivar Type sizeof
19258The size of this type, in target @code{char} units. Usually, a
19259target's @code{char} type will be an 8-bit byte. However, on some
19260unusual platforms, this type may have a different size.
19261@end defivar
19262
19263@defivar Type tag
19264The tag name for this type. The tag name is the name after
19265@code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
19266languages have this concept. If this type has no tag name, then
19267@code{None} is returned.
19268@end defivar
19269@end table
19270
19271The following methods are provided:
19272
19273@table @code
19274@defmethod Type fields
19275For structure and union types, this method returns the fields. Range
19276types have two fields, the minimum and maximum values. Enum types
19277have one field per enum constant. Function and method types have one
19278field per parameter. The base types of C@t{++} classes are also
19279represented as fields. If the type has no fields, or does not fit
19280into one of these categories, an empty sequence will be returned.
19281
19282Each field is an object, with some pre-defined attributes:
19283@table @code
19284@item bitpos
19285This attribute is not available for @code{static} fields (as in
19286C@t{++} or Java). For non-@code{static} fields, the value is the bit
19287position of the field.
19288
19289@item name
19290The name of the field, or @code{None} for anonymous fields.
19291
19292@item artificial
19293This is @code{True} if the field is artificial, usually meaning that
19294it was provided by the compiler and not the user. This attribute is
19295always provided, and is @code{False} if the field is not artificial.
19296
19297@item bitsize
19298If the field is packed, or is a bitfield, then this will have a
19299non-zero value, which is the size of the field in bits. Otherwise,
19300this will be zero; in this case the field's size is given by its type.
19301
19302@item type
19303The type of the field. This is usually an instance of @code{Type},
19304but it can be @code{None} in some situations.
19305@end table
19306@end defmethod
19307
19308@defmethod Type const
19309Return a new @code{gdb.Type} object which represents a
19310@code{const}-qualified variant of this type.
19311@end defmethod
19312
19313@defmethod Type volatile
19314Return a new @code{gdb.Type} object which represents a
19315@code{volatile}-qualified variant of this type.
19316@end defmethod
19317
19318@defmethod Type unqualified
19319Return a new @code{gdb.Type} object which represents an unqualified
19320variant of this type. That is, the result is neither @code{const} nor
19321@code{volatile}.
19322@end defmethod
19323
19324@defmethod Type reference
19325Return a new @code{gdb.Type} object which represents a reference to this
19326type.
19327@end defmethod
19328
19329@defmethod Type strip_typedefs
19330Return a new @code{gdb.Type} that represents the real type,
19331after removing all layers of typedefs.
19332@end defmethod
19333
19334@defmethod Type target
19335Return a new @code{gdb.Type} object which represents the target type
19336of this type.
19337
19338For a pointer type, the target type is the type of the pointed-to
19339object. For an array type (meaning C-like arrays), the target type is
19340the type of the elements of the array. For a function or method type,
19341the target type is the type of the return value. For a complex type,
19342the target type is the type of the elements. For a typedef, the
19343target type is the aliased type.
19344
19345If the type does not have a target, this method will throw an
19346exception.
19347@end defmethod
19348
19349@defmethod Type template_argument n
19350If this @code{gdb.Type} is an instantiation of a template, this will
19351return a new @code{gdb.Type} which represents the type of the
19352@var{n}th template argument.
19353
19354If this @code{gdb.Type} is not a template type, this will throw an
19355exception. Ordinarily, only C@t{++} code will have template types.
19356
19357@var{name} is searched for globally.
19358@end defmethod
19359@end table
19360
19361
19362Each type has a code, which indicates what category this type falls
19363into. The available type categories are represented by constants
19364defined in the @code{gdb} module:
19365
19366@table @code
19367@findex TYPE_CODE_PTR
19368@findex gdb.TYPE_CODE_PTR
19369@item TYPE_CODE_PTR
19370The type is a pointer.
19371
19372@findex TYPE_CODE_ARRAY
19373@findex gdb.TYPE_CODE_ARRAY
19374@item TYPE_CODE_ARRAY
19375The type is an array.
19376
19377@findex TYPE_CODE_STRUCT
19378@findex gdb.TYPE_CODE_STRUCT
19379@item TYPE_CODE_STRUCT
19380The type is a structure.
19381
19382@findex TYPE_CODE_UNION
19383@findex gdb.TYPE_CODE_UNION
19384@item TYPE_CODE_UNION
19385The type is a union.
19386
19387@findex TYPE_CODE_ENUM
19388@findex gdb.TYPE_CODE_ENUM
19389@item TYPE_CODE_ENUM
19390The type is an enum.
19391
19392@findex TYPE_CODE_FLAGS
19393@findex gdb.TYPE_CODE_FLAGS
19394@item TYPE_CODE_FLAGS
19395A bit flags type, used for things such as status registers.
19396
19397@findex TYPE_CODE_FUNC
19398@findex gdb.TYPE_CODE_FUNC
19399@item TYPE_CODE_FUNC
19400The type is a function.
19401
19402@findex TYPE_CODE_INT
19403@findex gdb.TYPE_CODE_INT
19404@item TYPE_CODE_INT
19405The type is an integer type.
19406
19407@findex TYPE_CODE_FLT
19408@findex gdb.TYPE_CODE_FLT
19409@item TYPE_CODE_FLT
19410A floating point type.
19411
19412@findex TYPE_CODE_VOID
19413@findex gdb.TYPE_CODE_VOID
19414@item TYPE_CODE_VOID
19415The special type @code{void}.
19416
19417@findex TYPE_CODE_SET
19418@findex gdb.TYPE_CODE_SET
19419@item TYPE_CODE_SET
19420A Pascal set type.
19421
19422@findex TYPE_CODE_RANGE
19423@findex gdb.TYPE_CODE_RANGE
19424@item TYPE_CODE_RANGE
19425A range type, that is, an integer type with bounds.
19426
19427@findex TYPE_CODE_STRING
19428@findex gdb.TYPE_CODE_STRING
19429@item TYPE_CODE_STRING
19430A string type. Note that this is only used for certain languages with
19431language-defined string types; C strings are not represented this way.
19432
19433@findex TYPE_CODE_BITSTRING
19434@findex gdb.TYPE_CODE_BITSTRING
19435@item TYPE_CODE_BITSTRING
19436A string of bits.
19437
19438@findex TYPE_CODE_ERROR
19439@findex gdb.TYPE_CODE_ERROR
19440@item TYPE_CODE_ERROR
19441An unknown or erroneous type.
19442
19443@findex TYPE_CODE_METHOD
19444@findex gdb.TYPE_CODE_METHOD
19445@item TYPE_CODE_METHOD
19446A method type, as found in C@t{++} or Java.
19447
19448@findex TYPE_CODE_METHODPTR
19449@findex gdb.TYPE_CODE_METHODPTR
19450@item TYPE_CODE_METHODPTR
19451A pointer-to-member-function.
19452
19453@findex TYPE_CODE_MEMBERPTR
19454@findex gdb.TYPE_CODE_MEMBERPTR
19455@item TYPE_CODE_MEMBERPTR
19456A pointer-to-member.
19457
19458@findex TYPE_CODE_REF
19459@findex gdb.TYPE_CODE_REF
19460@item TYPE_CODE_REF
19461A reference type.
19462
19463@findex TYPE_CODE_CHAR
19464@findex gdb.TYPE_CODE_CHAR
19465@item TYPE_CODE_CHAR
19466A character type.
19467
19468@findex TYPE_CODE_BOOL
19469@findex gdb.TYPE_CODE_BOOL
19470@item TYPE_CODE_BOOL
19471A boolean type.
19472
19473@findex TYPE_CODE_COMPLEX
19474@findex gdb.TYPE_CODE_COMPLEX
19475@item TYPE_CODE_COMPLEX
19476A complex float type.
19477
19478@findex TYPE_CODE_TYPEDEF
19479@findex gdb.TYPE_CODE_TYPEDEF
19480@item TYPE_CODE_TYPEDEF
19481A typedef to some other type.
19482
19483@findex TYPE_CODE_NAMESPACE
19484@findex gdb.TYPE_CODE_NAMESPACE
19485@item TYPE_CODE_NAMESPACE
19486A C@t{++} namespace.
19487
19488@findex TYPE_CODE_DECFLOAT
19489@findex gdb.TYPE_CODE_DECFLOAT
19490@item TYPE_CODE_DECFLOAT
19491A decimal floating point type.
19492
19493@findex TYPE_CODE_INTERNAL_FUNCTION
19494@findex gdb.TYPE_CODE_INTERNAL_FUNCTION
19495@item TYPE_CODE_INTERNAL_FUNCTION
19496A function internal to @value{GDBN}. This is the type used to represent
19497convenience functions.
19498@end table
19499
a6bac58e
TT
19500@node Pretty Printing
19501@subsubsection Pretty Printing
19502
19503@value{GDBN} provides a mechanism to allow pretty-printing of values
19504using Python code. The pretty-printer API allows application-specific
19505code to greatly simplify the display of complex objects. This
19506mechanism works for both MI and the CLI.
19507
19508For example, here is how a C@t{++} @code{std::string} looks without a
19509pretty-printer:
19510
19511@smallexample
19512(@value{GDBP}) print s
19513$1 = @{
19514 static npos = 4294967295,
19515 _M_dataplus = @{
19516 <std::allocator<char>> = @{
19517 <__gnu_cxx::new_allocator<char>> = @{<No data fields>@}, <No data fields>@},
19518 members of std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider:
19519 _M_p = 0x804a014 "abcd"
19520 @}
19521@}
19522@end smallexample
19523
19524After a pretty-printer for @code{std::string} has been installed, only
19525the contents are printed:
19526
19527@smallexample
19528(@value{GDBP}) print s
19529$2 = "abcd"
19530@end smallexample
19531
19532A pretty-printer is just an object that holds a value and implements a
19533specific interface, defined here.
19534
19535@defop Operation {pretty printer} children (self)
19536@value{GDBN} will call this method on a pretty-printer to compute the
19537children of the pretty-printer's value.
19538
19539This method must return an object conforming to the Python iterator
19540protocol. Each item returned by the iterator must be a tuple holding
19541two elements. The first element is the ``name'' of the child; the
19542second element is the child's value. The value can be any Python
19543object which is convertible to a @value{GDBN} value.
19544
19545This method is optional. If it does not exist, @value{GDBN} will act
19546as though the value has no children.
19547@end defop
19548
19549@defop Operation {pretty printer} display_hint (self)
19550The CLI may call this method and use its result to change the
19551formatting of a value. The result will also be supplied to an MI
19552consumer as a @samp{displayhint} attribute of the variable being
19553printed.
19554
19555This method is optional. If it does exist, this method must return a
19556string.
19557
19558Some display hints are predefined by @value{GDBN}:
19559
19560@table @samp
19561@item array
19562Indicate that the object being printed is ``array-like''. The CLI
19563uses this to respect parameters such as @code{set print elements} and
19564@code{set print array}.
19565
19566@item map
19567Indicate that the object being printed is ``map-like'', and that the
19568children of this value can be assumed to alternate between keys and
19569values.
19570
19571@item string
19572Indicate that the object being printed is ``string-like''. If the
19573printer's @code{to_string} method returns a Python string of some
19574kind, then @value{GDBN} will call its internal language-specific
19575string-printing function to format the string. For the CLI this means
19576adding quotation marks, possibly escaping some characters, respecting
19577@code{set print elements}, and the like.
19578@end table
19579@end defop
19580
19581@defop Operation {pretty printer} to_string (self)
19582@value{GDBN} will call this method to display the string
19583representation of the value passed to the object's constructor.
19584
19585When printing from the CLI, if the @code{to_string} method exists,
19586then @value{GDBN} will prepend its result to the values returned by
19587@code{children}. Exactly how this formatting is done is dependent on
19588the display hint, and may change as more hints are added. Also,
19589depending on the print settings (@pxref{Print Settings}), the CLI may
19590print just the result of @code{to_string} in a stack trace, omitting
19591the result of @code{children}.
19592
19593If this method returns a string, it is printed verbatim.
19594
19595Otherwise, if this method returns an instance of @code{gdb.Value},
19596then @value{GDBN} prints this value. This may result in a call to
19597another pretty-printer.
19598
19599If instead the method returns a Python value which is convertible to a
19600@code{gdb.Value}, then @value{GDBN} performs the conversion and prints
19601the resulting value. Again, this may result in a call to another
19602pretty-printer. Python scalars (integers, floats, and booleans) and
19603strings are convertible to @code{gdb.Value}; other types are not.
19604
19605If the result is not one of these types, an exception is raised.
19606@end defop
19607
19608@node Selecting Pretty-Printers
19609@subsubsection Selecting Pretty-Printers
19610
19611The Python list @code{gdb.pretty_printers} contains an array of
19612functions that have been registered via addition as a pretty-printer.
19613Each @code{gdb.Objfile} also contains a @code{pretty_printers}
19614attribute.
19615
19616A function on one of these lists is passed a single @code{gdb.Value}
19617argument and should return a pretty-printer object conforming to the
19618interface definition above (@pxref{Pretty Printing}). If a function
19619cannot create a pretty-printer for the value, it should return
19620@code{None}.
19621
19622@value{GDBN} first checks the @code{pretty_printers} attribute of each
19623@code{gdb.Objfile} and iteratively calls each function in the list for
19624that @code{gdb.Objfile} until it receives a pretty-printer object.
19625After these lists have been exhausted, it tries the global
19626@code{gdb.pretty-printers} list, again calling each function until an
19627object is returned.
19628
19629The order in which the objfiles are searched is not specified. For a
19630given list, functions are always invoked from the head of the list,
19631and iterated over sequentially until the end of the list, or a printer
19632object is returned.
19633
19634Here is an example showing how a @code{std::string} printer might be
19635written:
19636
19637@smallexample
19638class StdStringPrinter:
19639 "Print a std::string"
19640
19641 def __init__ (self, val):
19642 self.val = val
19643
19644 def to_string (self):
19645 return self.val['_M_dataplus']['_M_p']
19646
19647 def display_hint (self):
19648 return 'string'
19649@end smallexample
19650
19651And here is an example showing how a lookup function for the printer
19652example above might be written.
19653
19654@smallexample
19655def str_lookup_function (val):
19656
19657 lookup_tag = val.type.tag
19658 regex = re.compile ("^std::basic_string<char,.*>$")
19659 if lookup_tag == None:
19660 return None
19661 if regex.match (lookup_tag):
19662 return StdStringPrinter (val)
19663
19664 return None
19665@end smallexample
19666
19667The example lookup function extracts the value's type, and attempts to
19668match it to a type that it can pretty-print. If it is a type the
19669printer can pretty-print, it will return a printer object. If not, it
19670returns @code{None}.
19671
19672We recommend that you put your core pretty-printers into a Python
19673package. If your pretty-printers are for use with a library, we
19674further recommend embedding a version number into the package name.
19675This practice will enable @value{GDBN} to load multiple versions of
19676your pretty-printers at the same time, because they will have
19677different names.
19678
19679You should write auto-loaded code (@pxref{Auto-loading}) such that it
19680can be evaluated multiple times without changing its meaning. An
19681ideal auto-load file will consist solely of @code{import}s of your
19682printer modules, followed by a call to a register pretty-printers with
19683the current objfile.
19684
19685Taken as a whole, this approach will scale nicely to multiple
19686inferiors, each potentially using a different library version.
19687Embedding a version number in the Python package name will ensure that
19688@value{GDBN} is able to load both sets of printers simultaneously.
19689Then, because the search for pretty-printers is done by objfile, and
19690because your auto-loaded code took care to register your library's
19691printers with a specific objfile, @value{GDBN} will find the correct
19692printers for the specific version of the library used by each
19693inferior.
19694
19695To continue the @code{std::string} example (@pxref{Pretty Printing}),
19696this code might appear in @code{gdb.libstdcxx.v6}:
19697
19698@smallexample
19699def register_printers (objfile):
19700 objfile.pretty_printers.add (str_lookup_function)
19701@end smallexample
19702
19703@noindent
19704And then the corresponding contents of the auto-load file would be:
19705
19706@smallexample
19707import gdb.libstdcxx.v6
19708gdb.libstdcxx.v6.register_printers (gdb.current_objfile ())
19709@end smallexample
19710
d8906c6f
TJB
19711@node Commands In Python
19712@subsubsection Commands In Python
19713
19714@cindex commands in python
19715@cindex python commands
d8906c6f
TJB
19716You can implement new @value{GDBN} CLI commands in Python. A CLI
19717command is implemented using an instance of the @code{gdb.Command}
19718class, most commonly using a subclass.
19719
cc924cad 19720@defmethod Command __init__ name @var{command_class} @r{[}@var{completer_class}@r{]} @r{[}@var{prefix}@r{]}
d8906c6f
TJB
19721The object initializer for @code{Command} registers the new command
19722with @value{GDBN}. This initializer is normally invoked from the
19723subclass' own @code{__init__} method.
19724
19725@var{name} is the name of the command. If @var{name} consists of
19726multiple words, then the initial words are looked for as prefix
19727commands. In this case, if one of the prefix commands does not exist,
19728an exception is raised.
19729
19730There is no support for multi-line commands.
19731
cc924cad 19732@var{command_class} should be one of the @samp{COMMAND_} constants
d8906c6f
TJB
19733defined below. This argument tells @value{GDBN} how to categorize the
19734new command in the help system.
19735
cc924cad 19736@var{completer_class} is an optional argument. If given, it should be
d8906c6f
TJB
19737one of the @samp{COMPLETE_} constants defined below. This argument
19738tells @value{GDBN} how to perform completion for this command. If not
19739given, @value{GDBN} will attempt to complete using the object's
19740@code{complete} method (see below); if no such method is found, an
19741error will occur when completion is attempted.
19742
19743@var{prefix} is an optional argument. If @code{True}, then the new
19744command is a prefix command; sub-commands of this command may be
19745registered.
19746
19747The help text for the new command is taken from the Python
19748documentation string for the command's class, if there is one. If no
19749documentation string is provided, the default value ``This command is
19750not documented.'' is used.
19751@end defmethod
19752
a0c36267 19753@cindex don't repeat Python command
d8906c6f
TJB
19754@defmethod Command dont_repeat
19755By default, a @value{GDBN} command is repeated when the user enters a
19756blank line at the command prompt. A command can suppress this
19757behavior by invoking the @code{dont_repeat} method. This is similar
19758to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
19759@end defmethod
19760
19761@defmethod Command invoke argument from_tty
19762This method is called by @value{GDBN} when this command is invoked.
19763
19764@var{argument} is a string. It is the argument to the command, after
19765leading and trailing whitespace has been stripped.
19766
19767@var{from_tty} is a boolean argument. When true, this means that the
19768command was entered by the user at the terminal; when false it means
19769that the command came from elsewhere.
19770
19771If this method throws an exception, it is turned into a @value{GDBN}
19772@code{error} call. Otherwise, the return value is ignored.
19773@end defmethod
19774
a0c36267 19775@cindex completion of Python commands
d8906c6f
TJB
19776@defmethod Command complete text word
19777This method is called by @value{GDBN} when the user attempts
19778completion on this command. All forms of completion are handled by
a0c36267
EZ
19779this method, that is, the @key{TAB} and @key{M-?} key bindings
19780(@pxref{Completion}), and the @code{complete} command (@pxref{Help,
19781complete}).
d8906c6f
TJB
19782
19783The arguments @var{text} and @var{word} are both strings. @var{text}
19784holds the complete command line up to the cursor's location.
19785@var{word} holds the last word of the command line; this is computed
19786using a word-breaking heuristic.
19787
19788The @code{complete} method can return several values:
19789@itemize @bullet
19790@item
19791If the return value is a sequence, the contents of the sequence are
19792used as the completions. It is up to @code{complete} to ensure that the
19793contents actually do complete the word. A zero-length sequence is
19794allowed, it means that there were no completions available. Only
19795string elements of the sequence are used; other elements in the
19796sequence are ignored.
19797
19798@item
19799If the return value is one of the @samp{COMPLETE_} constants defined
19800below, then the corresponding @value{GDBN}-internal completion
19801function is invoked, and its result is used.
19802
19803@item
19804All other results are treated as though there were no available
19805completions.
19806@end itemize
19807@end defmethod
19808
d8906c6f
TJB
19809When a new command is registered, it must be declared as a member of
19810some general class of commands. This is used to classify top-level
19811commands in the on-line help system; note that prefix commands are not
19812listed under their own category but rather that of their top-level
19813command. The available classifications are represented by constants
19814defined in the @code{gdb} module:
19815
19816@table @code
19817@findex COMMAND_NONE
19818@findex gdb.COMMAND_NONE
19819@item COMMAND_NONE
19820The command does not belong to any particular class. A command in
19821this category will not be displayed in any of the help categories.
19822
19823@findex COMMAND_RUNNING
19824@findex gdb.COMMAND_RUNNING
a0c36267 19825@item COMMAND_RUNNING
d8906c6f
TJB
19826The command is related to running the inferior. For example,
19827@code{start}, @code{step}, and @code{continue} are in this category.
a0c36267 19828Type @kbd{help running} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
19829commands in this category.
19830
19831@findex COMMAND_DATA
19832@findex gdb.COMMAND_DATA
a0c36267 19833@item COMMAND_DATA
d8906c6f
TJB
19834The command is related to data or variables. For example,
19835@code{call}, @code{find}, and @code{print} are in this category. Type
a0c36267 19836@kbd{help data} at the @value{GDBN} prompt to see a list of commands
d8906c6f
TJB
19837in this category.
19838
19839@findex COMMAND_STACK
19840@findex gdb.COMMAND_STACK
19841@item COMMAND_STACK
19842The command has to do with manipulation of the stack. For example,
19843@code{backtrace}, @code{frame}, and @code{return} are in this
a0c36267 19844category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
d8906c6f
TJB
19845list of commands in this category.
19846
19847@findex COMMAND_FILES
19848@findex gdb.COMMAND_FILES
19849@item COMMAND_FILES
19850This class is used for file-related commands. For example,
19851@code{file}, @code{list} and @code{section} are in this category.
a0c36267 19852Type @kbd{help files} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
19853commands in this category.
19854
19855@findex COMMAND_SUPPORT
19856@findex gdb.COMMAND_SUPPORT
19857@item COMMAND_SUPPORT
19858This should be used for ``support facilities'', generally meaning
19859things that are useful to the user when interacting with @value{GDBN},
19860but not related to the state of the inferior. For example,
19861@code{help}, @code{make}, and @code{shell} are in this category. Type
a0c36267 19862@kbd{help support} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
19863commands in this category.
19864
19865@findex COMMAND_STATUS
19866@findex gdb.COMMAND_STATUS
a0c36267 19867@item COMMAND_STATUS
d8906c6f
TJB
19868The command is an @samp{info}-related command, that is, related to the
19869state of @value{GDBN} itself. For example, @code{info}, @code{macro},
a0c36267 19870and @code{show} are in this category. Type @kbd{help status} at the
d8906c6f
TJB
19871@value{GDBN} prompt to see a list of commands in this category.
19872
19873@findex COMMAND_BREAKPOINTS
19874@findex gdb.COMMAND_BREAKPOINTS
a0c36267 19875@item COMMAND_BREAKPOINTS
d8906c6f 19876The command has to do with breakpoints. For example, @code{break},
a0c36267 19877@code{clear}, and @code{delete} are in this category. Type @kbd{help
d8906c6f
TJB
19878breakpoints} at the @value{GDBN} prompt to see a list of commands in
19879this category.
19880
19881@findex COMMAND_TRACEPOINTS
19882@findex gdb.COMMAND_TRACEPOINTS
a0c36267 19883@item COMMAND_TRACEPOINTS
d8906c6f
TJB
19884The command has to do with tracepoints. For example, @code{trace},
19885@code{actions}, and @code{tfind} are in this category. Type
a0c36267 19886@kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
19887commands in this category.
19888
19889@findex COMMAND_OBSCURE
19890@findex gdb.COMMAND_OBSCURE
19891@item COMMAND_OBSCURE
19892The command is only used in unusual circumstances, or is not of
19893general interest to users. For example, @code{checkpoint},
a0c36267 19894@code{fork}, and @code{stop} are in this category. Type @kbd{help
d8906c6f
TJB
19895obscure} at the @value{GDBN} prompt to see a list of commands in this
19896category.
19897
19898@findex COMMAND_MAINTENANCE
19899@findex gdb.COMMAND_MAINTENANCE
19900@item COMMAND_MAINTENANCE
19901The command is only useful to @value{GDBN} maintainers. The
19902@code{maintenance} and @code{flushregs} commands are in this category.
a0c36267 19903Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
19904commands in this category.
19905@end table
19906
d8906c6f
TJB
19907A new command can use a predefined completion function, either by
19908specifying it via an argument at initialization, or by returning it
19909from the @code{complete} method. These predefined completion
19910constants are all defined in the @code{gdb} module:
19911
19912@table @code
19913@findex COMPLETE_NONE
19914@findex gdb.COMPLETE_NONE
19915@item COMPLETE_NONE
19916This constant means that no completion should be done.
19917
19918@findex COMPLETE_FILENAME
19919@findex gdb.COMPLETE_FILENAME
19920@item COMPLETE_FILENAME
19921This constant means that filename completion should be performed.
19922
19923@findex COMPLETE_LOCATION
19924@findex gdb.COMPLETE_LOCATION
19925@item COMPLETE_LOCATION
19926This constant means that location completion should be done.
19927@xref{Specify Location}.
19928
19929@findex COMPLETE_COMMAND
19930@findex gdb.COMPLETE_COMMAND
19931@item COMPLETE_COMMAND
19932This constant means that completion should examine @value{GDBN}
19933command names.
19934
19935@findex COMPLETE_SYMBOL
19936@findex gdb.COMPLETE_SYMBOL
19937@item COMPLETE_SYMBOL
19938This constant means that completion should be done using symbol names
19939as the source.
19940@end table
19941
19942The following code snippet shows how a trivial CLI command can be
19943implemented in Python:
19944
19945@smallexample
19946class HelloWorld (gdb.Command):
19947 """Greet the whole world."""
19948
19949 def __init__ (self):
19950 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_OBSCURE)
19951
19952 def invoke (self, arg, from_tty):
19953 print "Hello, World!"
19954
19955HelloWorld ()
19956@end smallexample
19957
19958The last line instantiates the class, and is necessary to trigger the
19959registration of the command with @value{GDBN}. Depending on how the
19960Python code is read into @value{GDBN}, you may need to import the
19961@code{gdb} module explicitly.
19962
bc3b79fd
TJB
19963@node Functions In Python
19964@subsubsection Writing new convenience functions
19965
19966@cindex writing convenience functions
19967@cindex convenience functions in python
19968@cindex python convenience functions
19969@tindex gdb.Function
19970@tindex Function
19971You can implement new convenience functions (@pxref{Convenience Vars})
19972in Python. A convenience function is an instance of a subclass of the
19973class @code{gdb.Function}.
19974
19975@defmethod Function __init__ name
19976The initializer for @code{Function} registers the new function with
19977@value{GDBN}. The argument @var{name} is the name of the function,
19978a string. The function will be visible to the user as a convenience
19979variable of type @code{internal function}, whose name is the same as
19980the given @var{name}.
19981
19982The documentation for the new function is taken from the documentation
19983string for the new class.
19984@end defmethod
19985
19986@defmethod Function invoke @var{*args}
19987When a convenience function is evaluated, its arguments are converted
19988to instances of @code{gdb.Value}, and then the function's
19989@code{invoke} method is called. Note that @value{GDBN} does not
19990predetermine the arity of convenience functions. Instead, all
19991available arguments are passed to @code{invoke}, following the
19992standard Python calling convention. In particular, a convenience
19993function can have default values for parameters without ill effect.
19994
19995The return value of this method is used as its value in the enclosing
19996expression. If an ordinary Python value is returned, it is converted
19997to a @code{gdb.Value} following the usual rules.
19998@end defmethod
19999
20000The following code snippet shows how a trivial convenience function can
20001be implemented in Python:
20002
20003@smallexample
20004class Greet (gdb.Function):
20005 """Return string to greet someone.
20006Takes a name as argument."""
20007
20008 def __init__ (self):
20009 super (Greet, self).__init__ ("greet")
20010
20011 def invoke (self, name):
20012 return "Hello, %s!" % name.string ()
20013
20014Greet ()
20015@end smallexample
20016
20017The last line instantiates the class, and is necessary to trigger the
20018registration of the function with @value{GDBN}. Depending on how the
20019Python code is read into @value{GDBN}, you may need to import the
20020@code{gdb} module explicitly.
20021
89c73ade
TT
20022@node Objfiles In Python
20023@subsubsection Objfiles In Python
20024
20025@cindex objfiles in python
20026@tindex gdb.Objfile
20027@tindex Objfile
20028@value{GDBN} loads symbols for an inferior from various
20029symbol-containing files (@pxref{Files}). These include the primary
20030executable file, any shared libraries used by the inferior, and any
20031separate debug info files (@pxref{Separate Debug Files}).
20032@value{GDBN} calls these symbol-containing files @dfn{objfiles}.
20033
20034The following objfile-related functions are available in the
20035@code{gdb} module:
20036
20037@findex gdb.current_objfile
20038@defun current_objfile
20039When auto-loading a Python script (@pxref{Auto-loading}), @value{GDBN}
20040sets the ``current objfile'' to the corresponding objfile. This
20041function returns the current objfile. If there is no current objfile,
20042this function returns @code{None}.
20043@end defun
20044
20045@findex gdb.objfiles
20046@defun objfiles
20047Return a sequence of all the objfiles current known to @value{GDBN}.
20048@xref{Objfiles In Python}.
20049@end defun
20050
20051Each objfile is represented by an instance of the @code{gdb.Objfile}
20052class.
20053
20054@defivar Objfile filename
20055The file name of the objfile as a string.
20056@end defivar
20057
20058@defivar Objfile pretty_printers
20059The @code{pretty_printers} attribute is a list of functions. It is
20060used to look up pretty-printers. A @code{Value} is passed to each
20061function in order; if the function returns @code{None}, then the
20062search continues. Otherwise, the return value should be an object
a6bac58e
TT
20063which is used to format the value. @xref{Pretty Printing}, for more
20064information.
89c73ade
TT
20065@end defivar
20066
f8f6f20b
TJB
20067@node Frames In Python
20068@subsubsection Acessing inferior stack frames from Python.
20069
20070@cindex frames in python
20071When the debugged program stops, @value{GDBN} is able to analyze its call
20072stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
20073represents a frame in the stack. A @code{gdb.Frame} object is only valid
20074while its corresponding frame exists in the inferior's stack. If you try
20075to use an invalid frame object, @value{GDBN} will throw a @code{RuntimeError}
20076exception.
20077
20078Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
20079operator, like:
20080
20081@smallexample
20082(@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
20083True
20084@end smallexample
20085
20086The following frame-related functions are available in the @code{gdb} module:
20087
20088@findex gdb.selected_frame
20089@defun selected_frame
20090Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
20091@end defun
20092
20093@defun frame_stop_reason_string reason
20094Return a string explaining the reason why @value{GDBN} stopped unwinding
20095frames, as expressed by the given @var{reason} code (an integer, see the
20096@code{unwind_stop_reason} method further down in this section).
20097@end defun
20098
20099A @code{gdb.Frame} object has the following methods:
20100
20101@table @code
20102@defmethod Frame is_valid
20103Returns true if the @code{gdb.Frame} object is valid, false if not.
20104A frame object can become invalid if the frame it refers to doesn't
20105exist anymore in the inferior. All @code{gdb.Frame} methods will throw
20106an exception if it is invalid at the time the method is called.
20107@end defmethod
20108
20109@defmethod Frame name
20110Returns the function name of the frame, or @code{None} if it can't be
20111obtained.
20112@end defmethod
20113
20114@defmethod Frame type
20115Returns the type of the frame. The value can be one of
20116@code{gdb.NORMAL_FRAME}, @code{gdb.DUMMY_FRAME}, @code{gdb.SIGTRAMP_FRAME}
20117or @code{gdb.SENTINEL_FRAME}.
20118@end defmethod
20119
20120@defmethod Frame unwind_stop_reason
20121Return an integer representing the reason why it's not possible to find
20122more frames toward the outermost frame. Use
20123@code{gdb.frame_stop_reason_string} to convert the value returned by this
20124function to a string.
20125@end defmethod
20126
20127@defmethod Frame pc
20128Returns the frame's resume address.
20129@end defmethod
20130
20131@defmethod Frame older
20132Return the frame that called this frame.
20133@end defmethod
20134
20135@defmethod Frame newer
20136Return the frame called by this frame.
20137@end defmethod
20138
20139@defmethod Frame read_var variable
20140Return the value of the given variable in this frame. @var{variable} must
20141be a string.
20142@end defmethod
20143@end table
20144
21c294e6
AC
20145@node Interpreters
20146@chapter Command Interpreters
20147@cindex command interpreters
20148
20149@value{GDBN} supports multiple command interpreters, and some command
20150infrastructure to allow users or user interface writers to switch
20151between interpreters or run commands in other interpreters.
20152
20153@value{GDBN} currently supports two command interpreters, the console
20154interpreter (sometimes called the command-line interpreter or @sc{cli})
20155and the machine interface interpreter (or @sc{gdb/mi}). This manual
20156describes both of these interfaces in great detail.
20157
20158By default, @value{GDBN} will start with the console interpreter.
20159However, the user may choose to start @value{GDBN} with another
20160interpreter by specifying the @option{-i} or @option{--interpreter}
20161startup options. Defined interpreters include:
20162
20163@table @code
20164@item console
20165@cindex console interpreter
20166The traditional console or command-line interpreter. This is the most often
20167used interpreter with @value{GDBN}. With no interpreter specified at runtime,
20168@value{GDBN} will use this interpreter.
20169
20170@item mi
20171@cindex mi interpreter
20172The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
20173by programs wishing to use @value{GDBN} as a backend for a debugger GUI
20174or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
20175Interface}.
20176
20177@item mi2
20178@cindex mi2 interpreter
20179The current @sc{gdb/mi} interface.
20180
20181@item mi1
20182@cindex mi1 interpreter
20183The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
20184
20185@end table
20186
20187@cindex invoke another interpreter
20188The interpreter being used by @value{GDBN} may not be dynamically
20189switched at runtime. Although possible, this could lead to a very
20190precarious situation. Consider an IDE using @sc{gdb/mi}. If a user
20191enters the command "interpreter-set console" in a console view,
20192@value{GDBN} would switch to using the console interpreter, rendering
20193the IDE inoperable!
20194
20195@kindex interpreter-exec
20196Although you may only choose a single interpreter at startup, you may execute
20197commands in any interpreter from the current interpreter using the appropriate
20198command. If you are running the console interpreter, simply use the
20199@code{interpreter-exec} command:
20200
20201@smallexample
20202interpreter-exec mi "-data-list-register-names"
20203@end smallexample
20204
20205@sc{gdb/mi} has a similar command, although it is only available in versions of
20206@value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
20207
8e04817f
AC
20208@node TUI
20209@chapter @value{GDBN} Text User Interface
20210@cindex TUI
d0d5df6f 20211@cindex Text User Interface
c906108c 20212
8e04817f
AC
20213@menu
20214* TUI Overview:: TUI overview
20215* TUI Keys:: TUI key bindings
7cf36c78 20216* TUI Single Key Mode:: TUI single key mode
db2e3e2e 20217* TUI Commands:: TUI-specific commands
8e04817f
AC
20218* TUI Configuration:: TUI configuration variables
20219@end menu
c906108c 20220
46ba6afa 20221The @value{GDBN} Text User Interface (TUI) is a terminal
d0d5df6f
AC
20222interface which uses the @code{curses} library to show the source
20223file, the assembly output, the program registers and @value{GDBN}
46ba6afa
BW
20224commands in separate text windows. The TUI mode is supported only
20225on platforms where a suitable version of the @code{curses} library
20226is available.
d0d5df6f 20227
46ba6afa
BW
20228@pindex @value{GDBTUI}
20229The TUI mode is enabled by default when you invoke @value{GDBN} as
20230either @samp{@value{GDBTUI}} or @samp{@value{GDBP} -tui}.
20231You can also switch in and out of TUI mode while @value{GDBN} runs by
20232using various TUI commands and key bindings, such as @kbd{C-x C-a}.
20233@xref{TUI Keys, ,TUI Key Bindings}.
c906108c 20234
8e04817f 20235@node TUI Overview
79a6e687 20236@section TUI Overview
c906108c 20237
46ba6afa 20238In TUI mode, @value{GDBN} can display several text windows:
c906108c 20239
8e04817f
AC
20240@table @emph
20241@item command
20242This window is the @value{GDBN} command window with the @value{GDBN}
46ba6afa
BW
20243prompt and the @value{GDBN} output. The @value{GDBN} input is still
20244managed using readline.
c906108c 20245
8e04817f
AC
20246@item source
20247The source window shows the source file of the program. The current
46ba6afa 20248line and active breakpoints are displayed in this window.
c906108c 20249
8e04817f
AC
20250@item assembly
20251The assembly window shows the disassembly output of the program.
c906108c 20252
8e04817f 20253@item register
46ba6afa
BW
20254This window shows the processor registers. Registers are highlighted
20255when their values change.
c906108c
SS
20256@end table
20257
269c21fe 20258The source and assembly windows show the current program position
46ba6afa
BW
20259by highlighting the current line and marking it with a @samp{>} marker.
20260Breakpoints are indicated with two markers. The first marker
269c21fe
SC
20261indicates the breakpoint type:
20262
20263@table @code
20264@item B
20265Breakpoint which was hit at least once.
20266
20267@item b
20268Breakpoint which was never hit.
20269
20270@item H
20271Hardware breakpoint which was hit at least once.
20272
20273@item h
20274Hardware breakpoint which was never hit.
269c21fe
SC
20275@end table
20276
20277The second marker indicates whether the breakpoint is enabled or not:
20278
20279@table @code
20280@item +
20281Breakpoint is enabled.
20282
20283@item -
20284Breakpoint is disabled.
269c21fe
SC
20285@end table
20286
46ba6afa
BW
20287The source, assembly and register windows are updated when the current
20288thread changes, when the frame changes, or when the program counter
20289changes.
20290
20291These windows are not all visible at the same time. The command
20292window is always visible. The others can be arranged in several
20293layouts:
c906108c 20294
8e04817f
AC
20295@itemize @bullet
20296@item
46ba6afa 20297source only,
2df3850c 20298
8e04817f 20299@item
46ba6afa 20300assembly only,
8e04817f
AC
20301
20302@item
46ba6afa 20303source and assembly,
8e04817f
AC
20304
20305@item
46ba6afa 20306source and registers, or
c906108c 20307
8e04817f 20308@item
46ba6afa 20309assembly and registers.
8e04817f 20310@end itemize
c906108c 20311
46ba6afa 20312A status line above the command window shows the following information:
b7bb15bc
SC
20313
20314@table @emph
20315@item target
46ba6afa 20316Indicates the current @value{GDBN} target.
b7bb15bc
SC
20317(@pxref{Targets, ,Specifying a Debugging Target}).
20318
20319@item process
46ba6afa 20320Gives the current process or thread number.
b7bb15bc
SC
20321When no process is being debugged, this field is set to @code{No process}.
20322
20323@item function
20324Gives the current function name for the selected frame.
20325The name is demangled if demangling is turned on (@pxref{Print Settings}).
46ba6afa 20326When there is no symbol corresponding to the current program counter,
b7bb15bc
SC
20327the string @code{??} is displayed.
20328
20329@item line
20330Indicates the current line number for the selected frame.
46ba6afa 20331When the current line number is not known, the string @code{??} is displayed.
b7bb15bc
SC
20332
20333@item pc
20334Indicates the current program counter address.
b7bb15bc
SC
20335@end table
20336
8e04817f
AC
20337@node TUI Keys
20338@section TUI Key Bindings
20339@cindex TUI key bindings
c906108c 20340
8e04817f 20341The TUI installs several key bindings in the readline keymaps
46ba6afa 20342(@pxref{Command Line Editing}). The following key bindings
8e04817f 20343are installed for both TUI mode and the @value{GDBN} standard mode.
c906108c 20344
8e04817f
AC
20345@table @kbd
20346@kindex C-x C-a
20347@item C-x C-a
20348@kindex C-x a
20349@itemx C-x a
20350@kindex C-x A
20351@itemx C-x A
46ba6afa
BW
20352Enter or leave the TUI mode. When leaving the TUI mode,
20353the curses window management stops and @value{GDBN} operates using
20354its standard mode, writing on the terminal directly. When reentering
20355the TUI mode, control is given back to the curses windows.
8e04817f 20356The screen is then refreshed.
c906108c 20357
8e04817f
AC
20358@kindex C-x 1
20359@item C-x 1
20360Use a TUI layout with only one window. The layout will
20361either be @samp{source} or @samp{assembly}. When the TUI mode
20362is not active, it will switch to the TUI mode.
2df3850c 20363
8e04817f 20364Think of this key binding as the Emacs @kbd{C-x 1} binding.
c906108c 20365
8e04817f
AC
20366@kindex C-x 2
20367@item C-x 2
20368Use a TUI layout with at least two windows. When the current
46ba6afa 20369layout already has two windows, the next layout with two windows is used.
8e04817f
AC
20370When a new layout is chosen, one window will always be common to the
20371previous layout and the new one.
c906108c 20372
8e04817f 20373Think of it as the Emacs @kbd{C-x 2} binding.
2df3850c 20374
72ffddc9
SC
20375@kindex C-x o
20376@item C-x o
20377Change the active window. The TUI associates several key bindings
46ba6afa 20378(like scrolling and arrow keys) with the active window. This command
72ffddc9
SC
20379gives the focus to the next TUI window.
20380
20381Think of it as the Emacs @kbd{C-x o} binding.
20382
7cf36c78
SC
20383@kindex C-x s
20384@item C-x s
46ba6afa
BW
20385Switch in and out of the TUI SingleKey mode that binds single
20386keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}).
c906108c
SS
20387@end table
20388
46ba6afa 20389The following key bindings only work in the TUI mode:
5d161b24 20390
46ba6afa 20391@table @asis
8e04817f 20392@kindex PgUp
46ba6afa 20393@item @key{PgUp}
8e04817f 20394Scroll the active window one page up.
c906108c 20395
8e04817f 20396@kindex PgDn
46ba6afa 20397@item @key{PgDn}
8e04817f 20398Scroll the active window one page down.
c906108c 20399
8e04817f 20400@kindex Up
46ba6afa 20401@item @key{Up}
8e04817f 20402Scroll the active window one line up.
c906108c 20403
8e04817f 20404@kindex Down
46ba6afa 20405@item @key{Down}
8e04817f 20406Scroll the active window one line down.
c906108c 20407
8e04817f 20408@kindex Left
46ba6afa 20409@item @key{Left}
8e04817f 20410Scroll the active window one column left.
c906108c 20411
8e04817f 20412@kindex Right
46ba6afa 20413@item @key{Right}
8e04817f 20414Scroll the active window one column right.
c906108c 20415
8e04817f 20416@kindex C-L
46ba6afa 20417@item @kbd{C-L}
8e04817f 20418Refresh the screen.
8e04817f 20419@end table
c906108c 20420
46ba6afa
BW
20421Because the arrow keys scroll the active window in the TUI mode, they
20422are not available for their normal use by readline unless the command
20423window has the focus. When another window is active, you must use
20424other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b}
20425and @kbd{C-f} to control the command window.
8e04817f 20426
7cf36c78
SC
20427@node TUI Single Key Mode
20428@section TUI Single Key Mode
20429@cindex TUI single key mode
20430
46ba6afa
BW
20431The TUI also provides a @dfn{SingleKey} mode, which binds several
20432frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to
20433switch into this mode, where the following key bindings are used:
7cf36c78
SC
20434
20435@table @kbd
20436@kindex c @r{(SingleKey TUI key)}
20437@item c
20438continue
20439
20440@kindex d @r{(SingleKey TUI key)}
20441@item d
20442down
20443
20444@kindex f @r{(SingleKey TUI key)}
20445@item f
20446finish
20447
20448@kindex n @r{(SingleKey TUI key)}
20449@item n
20450next
20451
20452@kindex q @r{(SingleKey TUI key)}
20453@item q
46ba6afa 20454exit the SingleKey mode.
7cf36c78
SC
20455
20456@kindex r @r{(SingleKey TUI key)}
20457@item r
20458run
20459
20460@kindex s @r{(SingleKey TUI key)}
20461@item s
20462step
20463
20464@kindex u @r{(SingleKey TUI key)}
20465@item u
20466up
20467
20468@kindex v @r{(SingleKey TUI key)}
20469@item v
20470info locals
20471
20472@kindex w @r{(SingleKey TUI key)}
20473@item w
20474where
7cf36c78
SC
20475@end table
20476
20477Other keys temporarily switch to the @value{GDBN} command prompt.
20478The key that was pressed is inserted in the editing buffer so that
20479it is possible to type most @value{GDBN} commands without interaction
46ba6afa
BW
20480with the TUI SingleKey mode. Once the command is entered the TUI
20481SingleKey mode is restored. The only way to permanently leave
7f9087cb 20482this mode is by typing @kbd{q} or @kbd{C-x s}.
7cf36c78
SC
20483
20484
8e04817f 20485@node TUI Commands
db2e3e2e 20486@section TUI-specific Commands
8e04817f
AC
20487@cindex TUI commands
20488
20489The TUI has specific commands to control the text windows.
46ba6afa
BW
20490These commands are always available, even when @value{GDBN} is not in
20491the TUI mode. When @value{GDBN} is in the standard mode, most
20492of these commands will automatically switch to the TUI mode.
c906108c
SS
20493
20494@table @code
3d757584
SC
20495@item info win
20496@kindex info win
20497List and give the size of all displayed windows.
20498
8e04817f 20499@item layout next
4644b6e3 20500@kindex layout
8e04817f 20501Display the next layout.
2df3850c 20502
8e04817f 20503@item layout prev
8e04817f 20504Display the previous layout.
c906108c 20505
8e04817f 20506@item layout src
8e04817f 20507Display the source window only.
c906108c 20508
8e04817f 20509@item layout asm
8e04817f 20510Display the assembly window only.
c906108c 20511
8e04817f 20512@item layout split
8e04817f 20513Display the source and assembly window.
c906108c 20514
8e04817f 20515@item layout regs
8e04817f
AC
20516Display the register window together with the source or assembly window.
20517
46ba6afa 20518@item focus next
8e04817f 20519@kindex focus
46ba6afa
BW
20520Make the next window active for scrolling.
20521
20522@item focus prev
20523Make the previous window active for scrolling.
20524
20525@item focus src
20526Make the source window active for scrolling.
20527
20528@item focus asm
20529Make the assembly window active for scrolling.
20530
20531@item focus regs
20532Make the register window active for scrolling.
20533
20534@item focus cmd
20535Make the command window active for scrolling.
c906108c 20536
8e04817f
AC
20537@item refresh
20538@kindex refresh
7f9087cb 20539Refresh the screen. This is similar to typing @kbd{C-L}.
c906108c 20540
6a1b180d
SC
20541@item tui reg float
20542@kindex tui reg
20543Show the floating point registers in the register window.
20544
20545@item tui reg general
20546Show the general registers in the register window.
20547
20548@item tui reg next
20549Show the next register group. The list of register groups as well as
20550their order is target specific. The predefined register groups are the
20551following: @code{general}, @code{float}, @code{system}, @code{vector},
20552@code{all}, @code{save}, @code{restore}.
20553
20554@item tui reg system
20555Show the system registers in the register window.
20556
8e04817f
AC
20557@item update
20558@kindex update
20559Update the source window and the current execution point.
c906108c 20560
8e04817f
AC
20561@item winheight @var{name} +@var{count}
20562@itemx winheight @var{name} -@var{count}
20563@kindex winheight
20564Change the height of the window @var{name} by @var{count}
20565lines. Positive counts increase the height, while negative counts
20566decrease it.
2df3850c 20567
46ba6afa
BW
20568@item tabset @var{nchars}
20569@kindex tabset
c45da7e6 20570Set the width of tab stops to be @var{nchars} characters.
c906108c
SS
20571@end table
20572
8e04817f 20573@node TUI Configuration
79a6e687 20574@section TUI Configuration Variables
8e04817f 20575@cindex TUI configuration variables
c906108c 20576
46ba6afa 20577Several configuration variables control the appearance of TUI windows.
c906108c 20578
8e04817f
AC
20579@table @code
20580@item set tui border-kind @var{kind}
20581@kindex set tui border-kind
20582Select the border appearance for the source, assembly and register windows.
20583The possible values are the following:
20584@table @code
20585@item space
20586Use a space character to draw the border.
c906108c 20587
8e04817f 20588@item ascii
46ba6afa 20589Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border.
c906108c 20590
8e04817f
AC
20591@item acs
20592Use the Alternate Character Set to draw the border. The border is
20593drawn using character line graphics if the terminal supports them.
8e04817f 20594@end table
c78b4128 20595
8e04817f
AC
20596@item set tui border-mode @var{mode}
20597@kindex set tui border-mode
46ba6afa
BW
20598@itemx set tui active-border-mode @var{mode}
20599@kindex set tui active-border-mode
20600Select the display attributes for the borders of the inactive windows
20601or the active window. The @var{mode} can be one of the following:
8e04817f
AC
20602@table @code
20603@item normal
20604Use normal attributes to display the border.
c906108c 20605
8e04817f
AC
20606@item standout
20607Use standout mode.
c906108c 20608
8e04817f
AC
20609@item reverse
20610Use reverse video mode.
c906108c 20611
8e04817f
AC
20612@item half
20613Use half bright mode.
c906108c 20614
8e04817f
AC
20615@item half-standout
20616Use half bright and standout mode.
c906108c 20617
8e04817f
AC
20618@item bold
20619Use extra bright or bold mode.
c78b4128 20620
8e04817f
AC
20621@item bold-standout
20622Use extra bright or bold and standout mode.
8e04817f 20623@end table
8e04817f 20624@end table
c78b4128 20625
8e04817f
AC
20626@node Emacs
20627@chapter Using @value{GDBN} under @sc{gnu} Emacs
c78b4128 20628
8e04817f
AC
20629@cindex Emacs
20630@cindex @sc{gnu} Emacs
20631A special interface allows you to use @sc{gnu} Emacs to view (and
20632edit) the source files for the program you are debugging with
20633@value{GDBN}.
c906108c 20634
8e04817f
AC
20635To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
20636executable file you want to debug as an argument. This command starts
20637@value{GDBN} as a subprocess of Emacs, with input and output through a newly
20638created Emacs buffer.
20639@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c 20640
5e252a2e 20641Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two
8e04817f 20642things:
c906108c 20643
8e04817f
AC
20644@itemize @bullet
20645@item
5e252a2e
NR
20646All ``terminal'' input and output goes through an Emacs buffer, called
20647the GUD buffer.
c906108c 20648
8e04817f
AC
20649This applies both to @value{GDBN} commands and their output, and to the input
20650and output done by the program you are debugging.
bf0184be 20651
8e04817f
AC
20652This is useful because it means that you can copy the text of previous
20653commands and input them again; you can even use parts of the output
20654in this way.
bf0184be 20655
8e04817f
AC
20656All the facilities of Emacs' Shell mode are available for interacting
20657with your program. In particular, you can send signals the usual
20658way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
20659stop.
bf0184be
ND
20660
20661@item
8e04817f 20662@value{GDBN} displays source code through Emacs.
bf0184be 20663
8e04817f
AC
20664Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
20665source file for that frame and puts an arrow (@samp{=>}) at the
20666left margin of the current line. Emacs uses a separate buffer for
20667source display, and splits the screen to show both your @value{GDBN} session
20668and the source.
bf0184be 20669
8e04817f
AC
20670Explicit @value{GDBN} @code{list} or search commands still produce output as
20671usual, but you probably have no reason to use them from Emacs.
5e252a2e
NR
20672@end itemize
20673
20674We call this @dfn{text command mode}. Emacs 22.1, and later, also uses
20675a graphical mode, enabled by default, which provides further buffers
20676that can control the execution and describe the state of your program.
20677@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}.
c906108c 20678
64fabec2
AC
20679If you specify an absolute file name when prompted for the @kbd{M-x
20680gdb} argument, then Emacs sets your current working directory to where
20681your program resides. If you only specify the file name, then Emacs
20682sets your current working directory to to the directory associated
20683with the previous buffer. In this case, @value{GDBN} may find your
20684program by searching your environment's @code{PATH} variable, but on
20685some operating systems it might not find the source. So, although the
20686@value{GDBN} input and output session proceeds normally, the auxiliary
20687buffer does not display the current source and line of execution.
20688
20689The initial working directory of @value{GDBN} is printed on the top
5e252a2e
NR
20690line of the GUD buffer and this serves as a default for the commands
20691that specify files for @value{GDBN} to operate on. @xref{Files,
20692,Commands to Specify Files}.
64fabec2
AC
20693
20694By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
20695need to call @value{GDBN} by a different name (for example, if you
20696keep several configurations around, with different names) you can
20697customize the Emacs variable @code{gud-gdb-command-name} to run the
20698one you want.
8e04817f 20699
5e252a2e 20700In the GUD buffer, you can use these special Emacs commands in
8e04817f 20701addition to the standard Shell mode commands:
c906108c 20702
8e04817f
AC
20703@table @kbd
20704@item C-h m
5e252a2e 20705Describe the features of Emacs' GUD Mode.
c906108c 20706
64fabec2 20707@item C-c C-s
8e04817f
AC
20708Execute to another source line, like the @value{GDBN} @code{step} command; also
20709update the display window to show the current file and location.
c906108c 20710
64fabec2 20711@item C-c C-n
8e04817f
AC
20712Execute to next source line in this function, skipping all function
20713calls, like the @value{GDBN} @code{next} command. Then update the display window
20714to show the current file and location.
c906108c 20715
64fabec2 20716@item C-c C-i
8e04817f
AC
20717Execute one instruction, like the @value{GDBN} @code{stepi} command; update
20718display window accordingly.
c906108c 20719
8e04817f
AC
20720@item C-c C-f
20721Execute until exit from the selected stack frame, like the @value{GDBN}
20722@code{finish} command.
c906108c 20723
64fabec2 20724@item C-c C-r
8e04817f
AC
20725Continue execution of your program, like the @value{GDBN} @code{continue}
20726command.
b433d00b 20727
64fabec2 20728@item C-c <
8e04817f
AC
20729Go up the number of frames indicated by the numeric argument
20730(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
20731like the @value{GDBN} @code{up} command.
b433d00b 20732
64fabec2 20733@item C-c >
8e04817f
AC
20734Go down the number of frames indicated by the numeric argument, like the
20735@value{GDBN} @code{down} command.
8e04817f 20736@end table
c906108c 20737
7f9087cb 20738In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break})
8e04817f 20739tells @value{GDBN} to set a breakpoint on the source line point is on.
c906108c 20740
5e252a2e
NR
20741In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a
20742separate frame which shows a backtrace when the GUD buffer is current.
20743Move point to any frame in the stack and type @key{RET} to make it
20744become the current frame and display the associated source in the
20745source buffer. Alternatively, click @kbd{Mouse-2} to make the
20746selected frame become the current one. In graphical mode, the
20747speedbar displays watch expressions.
64fabec2 20748
8e04817f
AC
20749If you accidentally delete the source-display buffer, an easy way to get
20750it back is to type the command @code{f} in the @value{GDBN} buffer, to
20751request a frame display; when you run under Emacs, this recreates
20752the source buffer if necessary to show you the context of the current
20753frame.
c906108c 20754
8e04817f
AC
20755The source files displayed in Emacs are in ordinary Emacs buffers
20756which are visiting the source files in the usual way. You can edit
20757the files with these buffers if you wish; but keep in mind that @value{GDBN}
20758communicates with Emacs in terms of line numbers. If you add or
20759delete lines from the text, the line numbers that @value{GDBN} knows cease
20760to correspond properly with the code.
b383017d 20761
5e252a2e
NR
20762A more detailed description of Emacs' interaction with @value{GDBN} is
20763given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu}
20764Emacs Manual}).
c906108c 20765
8e04817f
AC
20766@c The following dropped because Epoch is nonstandard. Reactivate
20767@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
20768@ignore
20769@kindex Emacs Epoch environment
20770@kindex Epoch
20771@kindex inspect
c906108c 20772
8e04817f
AC
20773Version 18 of @sc{gnu} Emacs has a built-in window system
20774called the @code{epoch}
20775environment. Users of this environment can use a new command,
20776@code{inspect} which performs identically to @code{print} except that
20777each value is printed in its own window.
20778@end ignore
c906108c 20779
922fbb7b
AC
20780
20781@node GDB/MI
20782@chapter The @sc{gdb/mi} Interface
20783
20784@unnumberedsec Function and Purpose
20785
20786@cindex @sc{gdb/mi}, its purpose
6b5e8c01
NR
20787@sc{gdb/mi} is a line based machine oriented text interface to
20788@value{GDBN} and is activated by specifying using the
20789@option{--interpreter} command line option (@pxref{Mode Options}). It
20790is specifically intended to support the development of systems which
20791use the debugger as just one small component of a larger system.
922fbb7b
AC
20792
20793This chapter is a specification of the @sc{gdb/mi} interface. It is written
20794in the form of a reference manual.
20795
20796Note that @sc{gdb/mi} is still under construction, so some of the
af6eff6f
NR
20797features described below are incomplete and subject to change
20798(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}).
922fbb7b
AC
20799
20800@unnumberedsec Notation and Terminology
20801
20802@cindex notational conventions, for @sc{gdb/mi}
20803This chapter uses the following notation:
20804
20805@itemize @bullet
20806@item
20807@code{|} separates two alternatives.
20808
20809@item
20810@code{[ @var{something} ]} indicates that @var{something} is optional:
20811it may or may not be given.
20812
20813@item
20814@code{( @var{group} )*} means that @var{group} inside the parentheses
20815may repeat zero or more times.
20816
20817@item
20818@code{( @var{group} )+} means that @var{group} inside the parentheses
20819may repeat one or more times.
20820
20821@item
20822@code{"@var{string}"} means a literal @var{string}.
20823@end itemize
20824
20825@ignore
20826@heading Dependencies
20827@end ignore
20828
922fbb7b 20829@menu
c3b108f7 20830* GDB/MI General Design::
922fbb7b
AC
20831* GDB/MI Command Syntax::
20832* GDB/MI Compatibility with CLI::
af6eff6f 20833* GDB/MI Development and Front Ends::
922fbb7b 20834* GDB/MI Output Records::
ef21caaf 20835* GDB/MI Simple Examples::
922fbb7b 20836* GDB/MI Command Description Format::
ef21caaf 20837* GDB/MI Breakpoint Commands::
a2c02241
NR
20838* GDB/MI Program Context::
20839* GDB/MI Thread Commands::
20840* GDB/MI Program Execution::
20841* GDB/MI Stack Manipulation::
20842* GDB/MI Variable Objects::
922fbb7b 20843* GDB/MI Data Manipulation::
a2c02241
NR
20844* GDB/MI Tracepoint Commands::
20845* GDB/MI Symbol Query::
351ff01a 20846* GDB/MI File Commands::
922fbb7b
AC
20847@ignore
20848* GDB/MI Kod Commands::
20849* GDB/MI Memory Overlay Commands::
20850* GDB/MI Signal Handling Commands::
20851@end ignore
922fbb7b 20852* GDB/MI Target Manipulation::
a6b151f1 20853* GDB/MI File Transfer Commands::
ef21caaf 20854* GDB/MI Miscellaneous Commands::
922fbb7b
AC
20855@end menu
20856
c3b108f7
VP
20857@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
20858@node GDB/MI General Design
20859@section @sc{gdb/mi} General Design
20860@cindex GDB/MI General Design
20861
20862Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three
20863parts---commands sent to @value{GDBN}, responses to those commands
20864and notifications. Each command results in exactly one response,
20865indicating either successful completion of the command, or an error.
20866For the commands that do not resume the target, the response contains the
20867requested information. For the commands that resume the target, the
20868response only indicates whether the target was successfully resumed.
20869Notifications is the mechanism for reporting changes in the state of the
20870target, or in @value{GDBN} state, that cannot conveniently be associated with
20871a command and reported as part of that command response.
20872
20873The important examples of notifications are:
20874@itemize @bullet
20875
20876@item
20877Exec notifications. These are used to report changes in
20878target state---when a target is resumed, or stopped. It would not
20879be feasible to include this information in response of resuming
20880commands, because one resume commands can result in multiple events in
20881different threads. Also, quite some time may pass before any event
20882happens in the target, while a frontend needs to know whether the resuming
20883command itself was successfully executed.
20884
20885@item
20886Console output, and status notifications. Console output
20887notifications are used to report output of CLI commands, as well as
20888diagnostics for other commands. Status notifications are used to
20889report the progress of a long-running operation. Naturally, including
20890this information in command response would mean no output is produced
20891until the command is finished, which is undesirable.
20892
20893@item
20894General notifications. Commands may have various side effects on
20895the @value{GDBN} or target state beyond their official purpose. For example,
20896a command may change the selected thread. Although such changes can
20897be included in command response, using notification allows for more
20898orthogonal frontend design.
20899
20900@end itemize
20901
20902There's no guarantee that whenever an MI command reports an error,
20903@value{GDBN} or the target are in any specific state, and especially,
20904the state is not reverted to the state before the MI command was
20905processed. Therefore, whenever an MI command results in an error,
20906we recommend that the frontend refreshes all the information shown in
20907the user interface.
20908
508094de
NR
20909
20910@menu
20911* Context management::
20912* Asynchronous and non-stop modes::
20913* Thread groups::
20914@end menu
20915
20916@node Context management
c3b108f7
VP
20917@subsection Context management
20918
20919In most cases when @value{GDBN} accesses the target, this access is
20920done in context of a specific thread and frame (@pxref{Frames}).
20921Often, even when accessing global data, the target requires that a thread
20922be specified. The CLI interface maintains the selected thread and frame,
20923and supplies them to target on each command. This is convenient,
20924because a command line user would not want to specify that information
20925explicitly on each command, and because user interacts with
20926@value{GDBN} via a single terminal, so no confusion is possible as
20927to what thread and frame are the current ones.
20928
20929In the case of MI, the concept of selected thread and frame is less
20930useful. First, a frontend can easily remember this information
20931itself. Second, a graphical frontend can have more than one window,
20932each one used for debugging a different thread, and the frontend might
20933want to access additional threads for internal purposes. This
20934increases the risk that by relying on implicitly selected thread, the
20935frontend may be operating on a wrong one. Therefore, each MI command
20936should explicitly specify which thread and frame to operate on. To
20937make it possible, each MI command accepts the @samp{--thread} and
20938@samp{--frame} options, the value to each is @value{GDBN} identifier
20939for thread and frame to operate on.
20940
20941Usually, each top-level window in a frontend allows the user to select
20942a thread and a frame, and remembers the user selection for further
20943operations. However, in some cases @value{GDBN} may suggest that the
20944current thread be changed. For example, when stopping on a breakpoint
20945it is reasonable to switch to the thread where breakpoint is hit. For
20946another example, if the user issues the CLI @samp{thread} command via
20947the frontend, it is desirable to change the frontend's selected thread to the
20948one specified by user. @value{GDBN} communicates the suggestion to
20949change current thread using the @samp{=thread-selected} notification.
20950No such notification is available for the selected frame at the moment.
20951
20952Note that historically, MI shares the selected thread with CLI, so
20953frontends used the @code{-thread-select} to execute commands in the
20954right context. However, getting this to work right is cumbersome. The
20955simplest way is for frontend to emit @code{-thread-select} command
20956before every command. This doubles the number of commands that need
20957to be sent. The alternative approach is to suppress @code{-thread-select}
20958if the selected thread in @value{GDBN} is supposed to be identical to the
20959thread the frontend wants to operate on. However, getting this
20960optimization right can be tricky. In particular, if the frontend
20961sends several commands to @value{GDBN}, and one of the commands changes the
20962selected thread, then the behaviour of subsequent commands will
20963change. So, a frontend should either wait for response from such
20964problematic commands, or explicitly add @code{-thread-select} for
20965all subsequent commands. No frontend is known to do this exactly
20966right, so it is suggested to just always pass the @samp{--thread} and
20967@samp{--frame} options.
20968
508094de 20969@node Asynchronous and non-stop modes
c3b108f7
VP
20970@subsection Asynchronous command execution and non-stop mode
20971
20972On some targets, @value{GDBN} is capable of processing MI commands
20973even while the target is running. This is called @dfn{asynchronous
20974command execution} (@pxref{Background Execution}). The frontend may
20975specify a preferrence for asynchronous execution using the
20976@code{-gdb-set target-async 1} command, which should be emitted before
20977either running the executable or attaching to the target. After the
20978frontend has started the executable or attached to the target, it can
20979find if asynchronous execution is enabled using the
20980@code{-list-target-features} command.
20981
20982Even if @value{GDBN} can accept a command while target is running,
20983many commands that access the target do not work when the target is
20984running. Therefore, asynchronous command execution is most useful
20985when combined with non-stop mode (@pxref{Non-Stop Mode}). Then,
20986it is possible to examine the state of one thread, while other threads
20987are running.
20988
20989When a given thread is running, MI commands that try to access the
20990target in the context of that thread may not work, or may work only on
20991some targets. In particular, commands that try to operate on thread's
20992stack will not work, on any target. Commands that read memory, or
20993modify breakpoints, may work or not work, depending on the target. Note
20994that even commands that operate on global state, such as @code{print},
20995@code{set}, and breakpoint commands, still access the target in the
20996context of a specific thread, so frontend should try to find a
20997stopped thread and perform the operation on that thread (using the
20998@samp{--thread} option).
20999
21000Which commands will work in the context of a running thread is
21001highly target dependent. However, the two commands
21002@code{-exec-interrupt}, to stop a thread, and @code{-thread-info},
21003to find the state of a thread, will always work.
21004
508094de 21005@node Thread groups
c3b108f7
VP
21006@subsection Thread groups
21007@value{GDBN} may be used to debug several processes at the same time.
21008On some platfroms, @value{GDBN} may support debugging of several
21009hardware systems, each one having several cores with several different
21010processes running on each core. This section describes the MI
21011mechanism to support such debugging scenarios.
21012
21013The key observation is that regardless of the structure of the
21014target, MI can have a global list of threads, because most commands that
21015accept the @samp{--thread} option do not need to know what process that
21016thread belongs to. Therefore, it is not necessary to introduce
21017neither additional @samp{--process} option, nor an notion of the
21018current process in the MI interface. The only strictly new feature
21019that is required is the ability to find how the threads are grouped
21020into processes.
21021
21022To allow the user to discover such grouping, and to support arbitrary
21023hierarchy of machines/cores/processes, MI introduces the concept of a
21024@dfn{thread group}. Thread group is a collection of threads and other
21025thread groups. A thread group always has a string identifier, a type,
21026and may have additional attributes specific to the type. A new
21027command, @code{-list-thread-groups}, returns the list of top-level
21028thread groups, which correspond to processes that @value{GDBN} is
21029debugging at the moment. By passing an identifier of a thread group
21030to the @code{-list-thread-groups} command, it is possible to obtain
21031the members of specific thread group.
21032
21033To allow the user to easily discover processes, and other objects, he
21034wishes to debug, a concept of @dfn{available thread group} is
21035introduced. Available thread group is an thread group that
21036@value{GDBN} is not debugging, but that can be attached to, using the
21037@code{-target-attach} command. The list of available top-level thread
21038groups can be obtained using @samp{-list-thread-groups --available}.
21039In general, the content of a thread group may be only retrieved only
21040after attaching to that thread group.
21041
922fbb7b
AC
21042@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21043@node GDB/MI Command Syntax
21044@section @sc{gdb/mi} Command Syntax
21045
21046@menu
21047* GDB/MI Input Syntax::
21048* GDB/MI Output Syntax::
922fbb7b
AC
21049@end menu
21050
21051@node GDB/MI Input Syntax
21052@subsection @sc{gdb/mi} Input Syntax
21053
21054@cindex input syntax for @sc{gdb/mi}
21055@cindex @sc{gdb/mi}, input syntax
21056@table @code
21057@item @var{command} @expansion{}
21058@code{@var{cli-command} | @var{mi-command}}
21059
21060@item @var{cli-command} @expansion{}
21061@code{[ @var{token} ] @var{cli-command} @var{nl}}, where
21062@var{cli-command} is any existing @value{GDBN} CLI command.
21063
21064@item @var{mi-command} @expansion{}
21065@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
21066@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
21067
21068@item @var{token} @expansion{}
21069"any sequence of digits"
21070
21071@item @var{option} @expansion{}
21072@code{"-" @var{parameter} [ " " @var{parameter} ]}
21073
21074@item @var{parameter} @expansion{}
21075@code{@var{non-blank-sequence} | @var{c-string}}
21076
21077@item @var{operation} @expansion{}
21078@emph{any of the operations described in this chapter}
21079
21080@item @var{non-blank-sequence} @expansion{}
21081@emph{anything, provided it doesn't contain special characters such as
21082"-", @var{nl}, """ and of course " "}
21083
21084@item @var{c-string} @expansion{}
21085@code{""" @var{seven-bit-iso-c-string-content} """}
21086
21087@item @var{nl} @expansion{}
21088@code{CR | CR-LF}
21089@end table
21090
21091@noindent
21092Notes:
21093
21094@itemize @bullet
21095@item
21096The CLI commands are still handled by the @sc{mi} interpreter; their
21097output is described below.
21098
21099@item
21100The @code{@var{token}}, when present, is passed back when the command
21101finishes.
21102
21103@item
21104Some @sc{mi} commands accept optional arguments as part of the parameter
21105list. Each option is identified by a leading @samp{-} (dash) and may be
21106followed by an optional argument parameter. Options occur first in the
21107parameter list and can be delimited from normal parameters using
21108@samp{--} (this is useful when some parameters begin with a dash).
21109@end itemize
21110
21111Pragmatics:
21112
21113@itemize @bullet
21114@item
21115We want easy access to the existing CLI syntax (for debugging).
21116
21117@item
21118We want it to be easy to spot a @sc{mi} operation.
21119@end itemize
21120
21121@node GDB/MI Output Syntax
21122@subsection @sc{gdb/mi} Output Syntax
21123
21124@cindex output syntax of @sc{gdb/mi}
21125@cindex @sc{gdb/mi}, output syntax
21126The output from @sc{gdb/mi} consists of zero or more out-of-band records
21127followed, optionally, by a single result record. This result record
21128is for the most recent command. The sequence of output records is
594fe323 21129terminated by @samp{(gdb)}.
922fbb7b
AC
21130
21131If an input command was prefixed with a @code{@var{token}} then the
21132corresponding output for that command will also be prefixed by that same
21133@var{token}.
21134
21135@table @code
21136@item @var{output} @expansion{}
594fe323 21137@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
922fbb7b
AC
21138
21139@item @var{result-record} @expansion{}
21140@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
21141
21142@item @var{out-of-band-record} @expansion{}
21143@code{@var{async-record} | @var{stream-record}}
21144
21145@item @var{async-record} @expansion{}
21146@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
21147
21148@item @var{exec-async-output} @expansion{}
21149@code{[ @var{token} ] "*" @var{async-output}}
21150
21151@item @var{status-async-output} @expansion{}
21152@code{[ @var{token} ] "+" @var{async-output}}
21153
21154@item @var{notify-async-output} @expansion{}
21155@code{[ @var{token} ] "=" @var{async-output}}
21156
21157@item @var{async-output} @expansion{}
21158@code{@var{async-class} ( "," @var{result} )* @var{nl}}
21159
21160@item @var{result-class} @expansion{}
21161@code{"done" | "running" | "connected" | "error" | "exit"}
21162
21163@item @var{async-class} @expansion{}
21164@code{"stopped" | @var{others}} (where @var{others} will be added
21165depending on the needs---this is still in development).
21166
21167@item @var{result} @expansion{}
21168@code{ @var{variable} "=" @var{value}}
21169
21170@item @var{variable} @expansion{}
21171@code{ @var{string} }
21172
21173@item @var{value} @expansion{}
21174@code{ @var{const} | @var{tuple} | @var{list} }
21175
21176@item @var{const} @expansion{}
21177@code{@var{c-string}}
21178
21179@item @var{tuple} @expansion{}
21180@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
21181
21182@item @var{list} @expansion{}
21183@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
21184@var{result} ( "," @var{result} )* "]" }
21185
21186@item @var{stream-record} @expansion{}
21187@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
21188
21189@item @var{console-stream-output} @expansion{}
21190@code{"~" @var{c-string}}
21191
21192@item @var{target-stream-output} @expansion{}
21193@code{"@@" @var{c-string}}
21194
21195@item @var{log-stream-output} @expansion{}
21196@code{"&" @var{c-string}}
21197
21198@item @var{nl} @expansion{}
21199@code{CR | CR-LF}
21200
21201@item @var{token} @expansion{}
21202@emph{any sequence of digits}.
21203@end table
21204
21205@noindent
21206Notes:
21207
21208@itemize @bullet
21209@item
21210All output sequences end in a single line containing a period.
21211
21212@item
721c02de
VP
21213The @code{@var{token}} is from the corresponding request. Note that
21214for all async output, while the token is allowed by the grammar and
21215may be output by future versions of @value{GDBN} for select async
21216output messages, it is generally omitted. Frontends should treat
21217all async output as reporting general changes in the state of the
21218target and there should be no need to associate async output to any
21219prior command.
922fbb7b
AC
21220
21221@item
21222@cindex status output in @sc{gdb/mi}
21223@var{status-async-output} contains on-going status information about the
21224progress of a slow operation. It can be discarded. All status output is
21225prefixed by @samp{+}.
21226
21227@item
21228@cindex async output in @sc{gdb/mi}
21229@var{exec-async-output} contains asynchronous state change on the target
21230(stopped, started, disappeared). All async output is prefixed by
21231@samp{*}.
21232
21233@item
21234@cindex notify output in @sc{gdb/mi}
21235@var{notify-async-output} contains supplementary information that the
21236client should handle (e.g., a new breakpoint information). All notify
21237output is prefixed by @samp{=}.
21238
21239@item
21240@cindex console output in @sc{gdb/mi}
21241@var{console-stream-output} is output that should be displayed as is in the
21242console. It is the textual response to a CLI command. All the console
21243output is prefixed by @samp{~}.
21244
21245@item
21246@cindex target output in @sc{gdb/mi}
21247@var{target-stream-output} is the output produced by the target program.
21248All the target output is prefixed by @samp{@@}.
21249
21250@item
21251@cindex log output in @sc{gdb/mi}
21252@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
21253instance messages that should be displayed as part of an error log. All
21254the log output is prefixed by @samp{&}.
21255
21256@item
21257@cindex list output in @sc{gdb/mi}
21258New @sc{gdb/mi} commands should only output @var{lists} containing
21259@var{values}.
21260
21261
21262@end itemize
21263
21264@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
21265details about the various output records.
21266
922fbb7b
AC
21267@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21268@node GDB/MI Compatibility with CLI
21269@section @sc{gdb/mi} Compatibility with CLI
21270
21271@cindex compatibility, @sc{gdb/mi} and CLI
21272@cindex @sc{gdb/mi}, compatibility with CLI
922fbb7b 21273
a2c02241
NR
21274For the developers convenience CLI commands can be entered directly,
21275but there may be some unexpected behaviour. For example, commands
21276that query the user will behave as if the user replied yes, breakpoint
21277command lists are not executed and some CLI commands, such as
21278@code{if}, @code{when} and @code{define}, prompt for further input with
21279@samp{>}, which is not valid MI output.
ef21caaf
NR
21280
21281This feature may be removed at some stage in the future and it is
a2c02241
NR
21282recommended that front ends use the @code{-interpreter-exec} command
21283(@pxref{-interpreter-exec}).
922fbb7b 21284
af6eff6f
NR
21285@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21286@node GDB/MI Development and Front Ends
21287@section @sc{gdb/mi} Development and Front Ends
21288@cindex @sc{gdb/mi} development
21289
21290The application which takes the MI output and presents the state of the
21291program being debugged to the user is called a @dfn{front end}.
21292
21293Although @sc{gdb/mi} is still incomplete, it is currently being used
21294by a variety of front ends to @value{GDBN}. This makes it difficult
21295to introduce new functionality without breaking existing usage. This
21296section tries to minimize the problems by describing how the protocol
21297might change.
21298
21299Some changes in MI need not break a carefully designed front end, and
21300for these the MI version will remain unchanged. The following is a
21301list of changes that may occur within one level, so front ends should
21302parse MI output in a way that can handle them:
21303
21304@itemize @bullet
21305@item
21306New MI commands may be added.
21307
21308@item
21309New fields may be added to the output of any MI command.
21310
36ece8b3
NR
21311@item
21312The range of values for fields with specified values, e.g.,
9f708cb2 21313@code{in_scope} (@pxref{-var-update}) may be extended.
36ece8b3 21314
af6eff6f
NR
21315@c The format of field's content e.g type prefix, may change so parse it
21316@c at your own risk. Yes, in general?
21317
21318@c The order of fields may change? Shouldn't really matter but it might
21319@c resolve inconsistencies.
21320@end itemize
21321
21322If the changes are likely to break front ends, the MI version level
21323will be increased by one. This will allow the front end to parse the
21324output according to the MI version. Apart from mi0, new versions of
21325@value{GDBN} will not support old versions of MI and it will be the
21326responsibility of the front end to work with the new one.
21327
21328@c Starting with mi3, add a new command -mi-version that prints the MI
21329@c version?
21330
21331The best way to avoid unexpected changes in MI that might break your front
21332end is to make your project known to @value{GDBN} developers and
7a9a6b69 21333follow development on @email{gdb@@sourceware.org} and
fa0f268d 21334@email{gdb-patches@@sourceware.org}.
af6eff6f
NR
21335@cindex mailing lists
21336
922fbb7b
AC
21337@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21338@node GDB/MI Output Records
21339@section @sc{gdb/mi} Output Records
21340
21341@menu
21342* GDB/MI Result Records::
21343* GDB/MI Stream Records::
82f68b1c 21344* GDB/MI Async Records::
c3b108f7 21345* GDB/MI Frame Information::
922fbb7b
AC
21346@end menu
21347
21348@node GDB/MI Result Records
21349@subsection @sc{gdb/mi} Result Records
21350
21351@cindex result records in @sc{gdb/mi}
21352@cindex @sc{gdb/mi}, result records
21353In addition to a number of out-of-band notifications, the response to a
21354@sc{gdb/mi} command includes one of the following result indications:
21355
21356@table @code
21357@findex ^done
21358@item "^done" [ "," @var{results} ]
21359The synchronous operation was successful, @code{@var{results}} are the return
21360values.
21361
21362@item "^running"
21363@findex ^running
21364@c Is this one correct? Should it be an out-of-band notification?
21365The asynchronous operation was successfully started. The target is
21366running.
21367
ef21caaf
NR
21368@item "^connected"
21369@findex ^connected
3f94c067 21370@value{GDBN} has connected to a remote target.
ef21caaf 21371
922fbb7b
AC
21372@item "^error" "," @var{c-string}
21373@findex ^error
21374The operation failed. The @code{@var{c-string}} contains the corresponding
21375error message.
ef21caaf
NR
21376
21377@item "^exit"
21378@findex ^exit
3f94c067 21379@value{GDBN} has terminated.
ef21caaf 21380
922fbb7b
AC
21381@end table
21382
21383@node GDB/MI Stream Records
21384@subsection @sc{gdb/mi} Stream Records
21385
21386@cindex @sc{gdb/mi}, stream records
21387@cindex stream records in @sc{gdb/mi}
21388@value{GDBN} internally maintains a number of output streams: the console, the
21389target, and the log. The output intended for each of these streams is
21390funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
21391
21392Each stream record begins with a unique @dfn{prefix character} which
21393identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
21394Syntax}). In addition to the prefix, each stream record contains a
21395@code{@var{string-output}}. This is either raw text (with an implicit new
21396line) or a quoted C string (which does not contain an implicit newline).
21397
21398@table @code
21399@item "~" @var{string-output}
21400The console output stream contains text that should be displayed in the
21401CLI console window. It contains the textual responses to CLI commands.
21402
21403@item "@@" @var{string-output}
21404The target output stream contains any textual output from the running
ef21caaf
NR
21405target. This is only present when GDB's event loop is truly
21406asynchronous, which is currently only the case for remote targets.
922fbb7b
AC
21407
21408@item "&" @var{string-output}
21409The log stream contains debugging messages being produced by @value{GDBN}'s
21410internals.
21411@end table
21412
82f68b1c
VP
21413@node GDB/MI Async Records
21414@subsection @sc{gdb/mi} Async Records
922fbb7b 21415
82f68b1c
VP
21416@cindex async records in @sc{gdb/mi}
21417@cindex @sc{gdb/mi}, async records
21418@dfn{Async} records are used to notify the @sc{gdb/mi} client of
922fbb7b 21419additional changes that have occurred. Those changes can either be a
82f68b1c 21420consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of
922fbb7b
AC
21421target activity (e.g., target stopped).
21422
8eb41542 21423The following is the list of possible async records:
922fbb7b
AC
21424
21425@table @code
034dad6f 21426
e1ac3328
VP
21427@item *running,thread-id="@var{thread}"
21428The target is now running. The @var{thread} field tells which
21429specific thread is now running, and can be @samp{all} if all threads
21430are running. The frontend should assume that no interaction with a
21431running thread is possible after this notification is produced.
21432The frontend should not assume that this notification is output
21433only once for any command. @value{GDBN} may emit this notification
21434several times, either for different threads, because it cannot resume
21435all threads together, or even for a single thread, if the thread must
21436be stepped though some code before letting it run freely.
21437
c3b108f7 21438@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}"
82f68b1c
VP
21439The target has stopped. The @var{reason} field can have one of the
21440following values:
034dad6f
BR
21441
21442@table @code
21443@item breakpoint-hit
21444A breakpoint was reached.
21445@item watchpoint-trigger
21446A watchpoint was triggered.
21447@item read-watchpoint-trigger
21448A read watchpoint was triggered.
21449@item access-watchpoint-trigger
21450An access watchpoint was triggered.
21451@item function-finished
21452An -exec-finish or similar CLI command was accomplished.
21453@item location-reached
21454An -exec-until or similar CLI command was accomplished.
21455@item watchpoint-scope
21456A watchpoint has gone out of scope.
21457@item end-stepping-range
21458An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or
21459similar CLI command was accomplished.
21460@item exited-signalled
21461The inferior exited because of a signal.
21462@item exited
21463The inferior exited.
21464@item exited-normally
21465The inferior exited normally.
21466@item signal-received
21467A signal was received by the inferior.
922fbb7b
AC
21468@end table
21469
c3b108f7
VP
21470The @var{id} field identifies the thread that directly caused the stop
21471-- for example by hitting a breakpoint. Depending on whether all-stop
21472mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either
21473stop all threads, or only the thread that directly triggered the stop.
21474If all threads are stopped, the @var{stopped} field will have the
21475value of @code{"all"}. Otherwise, the value of the @var{stopped}
21476field will be a list of thread identifiers. Presently, this list will
21477always include a single thread, but frontend should be prepared to see
21478several threads in the list.
21479
21480@item =thread-group-created,id="@var{id}"
21481@itemx =thread-group-exited,id="@var{id}"
21482A thread thread group either was attached to, or has exited/detached
21483from. The @var{id} field contains the @value{GDBN} identifier of the
21484thread group.
21485
21486@item =thread-created,id="@var{id}",group-id="@var{gid}"
21487@itemx =thread-exited,id="@var{id}",group-id="@var{gid}"
82f68b1c 21488A thread either was created, or has exited. The @var{id} field
c3b108f7
VP
21489contains the @value{GDBN} identifier of the thread. The @var{gid}
21490field identifies the thread group this thread belongs to.
66bb093b
VP
21491
21492@item =thread-selected,id="@var{id}"
21493Informs that the selected thread was changed as result of the last
21494command. This notification is not emitted as result of @code{-thread-select}
21495command but is emitted whenever an MI command that is not documented
21496to change the selected thread actually changes it. In particular,
21497invoking, directly or indirectly (via user-defined command), the CLI
21498@code{thread} command, will generate this notification.
21499
21500We suggest that in response to this notification, front ends
21501highlight the selected thread and cause subsequent commands to apply to
21502that thread.
21503
c86cf029
VP
21504@item =library-loaded,...
21505Reports that a new library file was loaded by the program. This
21506notification has 4 fields---@var{id}, @var{target-name},
134eb42c 21507@var{host-name}, and @var{symbols-loaded}. The @var{id} field is an
c86cf029
VP
21508opaque identifier of the library. For remote debugging case,
21509@var{target-name} and @var{host-name} fields give the name of the
134eb42c
VP
21510library file on the target, and on the host respectively. For native
21511debugging, both those fields have the same value. The
c86cf029
VP
21512@var{symbols-loaded} field reports if the debug symbols for this
21513library are loaded.
21514
21515@item =library-unloaded,...
134eb42c 21516Reports that a library was unloaded by the program. This notification
c86cf029
VP
21517has 3 fields---@var{id}, @var{target-name} and @var{host-name} with
21518the same meaning as for the @code{=library-loaded} notification
21519
82f68b1c
VP
21520@end table
21521
c3b108f7
VP
21522@node GDB/MI Frame Information
21523@subsection @sc{gdb/mi} Frame Information
21524
21525Response from many MI commands includes an information about stack
21526frame. This information is a tuple that may have the following
21527fields:
21528
21529@table @code
21530@item level
21531The level of the stack frame. The innermost frame has the level of
21532zero. This field is always present.
21533
21534@item func
21535The name of the function corresponding to the frame. This field may
21536be absent if @value{GDBN} is unable to determine the function name.
21537
21538@item addr
21539The code address for the frame. This field is always present.
21540
21541@item file
21542The name of the source files that correspond to the frame's code
21543address. This field may be absent.
21544
21545@item line
21546The source line corresponding to the frames' code address. This field
21547may be absent.
21548
21549@item from
21550The name of the binary file (either executable or shared library) the
21551corresponds to the frame's code address. This field may be absent.
21552
21553@end table
82f68b1c 21554
922fbb7b 21555
ef21caaf
NR
21556@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21557@node GDB/MI Simple Examples
21558@section Simple Examples of @sc{gdb/mi} Interaction
21559@cindex @sc{gdb/mi}, simple examples
21560
21561This subsection presents several simple examples of interaction using
21562the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
21563following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
21564the output received from @sc{gdb/mi}.
21565
d3e8051b 21566Note the line breaks shown in the examples are here only for
ef21caaf
NR
21567readability, they don't appear in the real output.
21568
79a6e687 21569@subheading Setting a Breakpoint
ef21caaf
NR
21570
21571Setting a breakpoint generates synchronous output which contains detailed
21572information of the breakpoint.
21573
21574@smallexample
21575-> -break-insert main
21576<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
21577 enabled="y",addr="0x08048564",func="main",file="myprog.c",
21578 fullname="/home/nickrob/myprog.c",line="68",times="0"@}
21579<- (gdb)
21580@end smallexample
21581
21582@subheading Program Execution
21583
21584Program execution generates asynchronous records and MI gives the
21585reason that execution stopped.
21586
21587@smallexample
21588-> -exec-run
21589<- ^running
21590<- (gdb)
a47ec5fe 21591<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
ef21caaf
NR
21592 frame=@{addr="0x08048564",func="main",
21593 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}],
21594 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@}
21595<- (gdb)
21596-> -exec-continue
21597<- ^running
21598<- (gdb)
21599<- *stopped,reason="exited-normally"
21600<- (gdb)
21601@end smallexample
21602
3f94c067 21603@subheading Quitting @value{GDBN}
ef21caaf 21604
3f94c067 21605Quitting @value{GDBN} just prints the result class @samp{^exit}.
ef21caaf
NR
21606
21607@smallexample
21608-> (gdb)
21609<- -gdb-exit
21610<- ^exit
21611@end smallexample
21612
a2c02241 21613@subheading A Bad Command
ef21caaf
NR
21614
21615Here's what happens if you pass a non-existent command:
21616
21617@smallexample
21618-> -rubbish
21619<- ^error,msg="Undefined MI command: rubbish"
594fe323 21620<- (gdb)
ef21caaf
NR
21621@end smallexample
21622
21623
922fbb7b
AC
21624@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21625@node GDB/MI Command Description Format
21626@section @sc{gdb/mi} Command Description Format
21627
21628The remaining sections describe blocks of commands. Each block of
21629commands is laid out in a fashion similar to this section.
21630
922fbb7b
AC
21631@subheading Motivation
21632
21633The motivation for this collection of commands.
21634
21635@subheading Introduction
21636
21637A brief introduction to this collection of commands as a whole.
21638
21639@subheading Commands
21640
21641For each command in the block, the following is described:
21642
21643@subsubheading Synopsis
21644
21645@smallexample
21646 -command @var{args}@dots{}
21647@end smallexample
21648
922fbb7b
AC
21649@subsubheading Result
21650
265eeb58 21651@subsubheading @value{GDBN} Command
922fbb7b 21652
265eeb58 21653The corresponding @value{GDBN} CLI command(s), if any.
922fbb7b
AC
21654
21655@subsubheading Example
21656
ef21caaf
NR
21657Example(s) formatted for readability. Some of the described commands have
21658not been implemented yet and these are labeled N.A.@: (not available).
21659
21660
922fbb7b 21661@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ef21caaf
NR
21662@node GDB/MI Breakpoint Commands
21663@section @sc{gdb/mi} Breakpoint Commands
922fbb7b
AC
21664
21665@cindex breakpoint commands for @sc{gdb/mi}
21666@cindex @sc{gdb/mi}, breakpoint commands
21667This section documents @sc{gdb/mi} commands for manipulating
21668breakpoints.
21669
21670@subheading The @code{-break-after} Command
21671@findex -break-after
21672
21673@subsubheading Synopsis
21674
21675@smallexample
21676 -break-after @var{number} @var{count}
21677@end smallexample
21678
21679The breakpoint number @var{number} is not in effect until it has been
21680hit @var{count} times. To see how this is reflected in the output of
21681the @samp{-break-list} command, see the description of the
21682@samp{-break-list} command below.
21683
21684@subsubheading @value{GDBN} Command
21685
21686The corresponding @value{GDBN} command is @samp{ignore}.
21687
21688@subsubheading Example
21689
21690@smallexample
594fe323 21691(gdb)
922fbb7b 21692-break-insert main
a47ec5fe
AR
21693^done,bkpt=@{number="1",type="breakpoint",disp="keep",
21694enabled="y",addr="0x000100d0",func="main",file="hello.c",
948d5102 21695fullname="/home/foo/hello.c",line="5",times="0"@}
594fe323 21696(gdb)
922fbb7b
AC
21697-break-after 1 3
21698~
21699^done
594fe323 21700(gdb)
922fbb7b
AC
21701-break-list
21702^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
21703hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
21704@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
21705@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
21706@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
21707@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
21708@{width="40",alignment="2",col_name="what",colhdr="What"@}],
21709body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
21710addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
21711line="5",times="0",ignore="3"@}]@}
594fe323 21712(gdb)
922fbb7b
AC
21713@end smallexample
21714
21715@ignore
21716@subheading The @code{-break-catch} Command
21717@findex -break-catch
48cb2d85 21718@end ignore
922fbb7b
AC
21719
21720@subheading The @code{-break-commands} Command
21721@findex -break-commands
922fbb7b 21722
48cb2d85
VP
21723@subsubheading Synopsis
21724
21725@smallexample
21726 -break-commands @var{number} [ @var{command1} ... @var{commandN} ]
21727@end smallexample
21728
21729Specifies the CLI commands that should be executed when breakpoint
21730@var{number} is hit. The parameters @var{command1} to @var{commandN}
21731are the commands. If no command is specified, any previously-set
21732commands are cleared. @xref{Break Commands}. Typical use of this
21733functionality is tracing a program, that is, printing of values of
21734some variables whenever breakpoint is hit and then continuing.
21735
21736@subsubheading @value{GDBN} Command
21737
21738The corresponding @value{GDBN} command is @samp{commands}.
21739
21740@subsubheading Example
21741
21742@smallexample
21743(gdb)
21744-break-insert main
21745^done,bkpt=@{number="1",type="breakpoint",disp="keep",
21746enabled="y",addr="0x000100d0",func="main",file="hello.c",
21747fullname="/home/foo/hello.c",line="5",times="0"@}
21748(gdb)
21749-break-commands 1 "print v" "continue"
21750^done
21751(gdb)
21752@end smallexample
922fbb7b
AC
21753
21754@subheading The @code{-break-condition} Command
21755@findex -break-condition
21756
21757@subsubheading Synopsis
21758
21759@smallexample
21760 -break-condition @var{number} @var{expr}
21761@end smallexample
21762
21763Breakpoint @var{number} will stop the program only if the condition in
21764@var{expr} is true. The condition becomes part of the
21765@samp{-break-list} output (see the description of the @samp{-break-list}
21766command below).
21767
21768@subsubheading @value{GDBN} Command
21769
21770The corresponding @value{GDBN} command is @samp{condition}.
21771
21772@subsubheading Example
21773
21774@smallexample
594fe323 21775(gdb)
922fbb7b
AC
21776-break-condition 1 1
21777^done
594fe323 21778(gdb)
922fbb7b
AC
21779-break-list
21780^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
21781hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
21782@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
21783@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
21784@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
21785@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
21786@{width="40",alignment="2",col_name="what",colhdr="What"@}],
21787body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
21788addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
21789line="5",cond="1",times="0",ignore="3"@}]@}
594fe323 21790(gdb)
922fbb7b
AC
21791@end smallexample
21792
21793@subheading The @code{-break-delete} Command
21794@findex -break-delete
21795
21796@subsubheading Synopsis
21797
21798@smallexample
21799 -break-delete ( @var{breakpoint} )+
21800@end smallexample
21801
21802Delete the breakpoint(s) whose number(s) are specified in the argument
21803list. This is obviously reflected in the breakpoint list.
21804
79a6e687 21805@subsubheading @value{GDBN} Command
922fbb7b
AC
21806
21807The corresponding @value{GDBN} command is @samp{delete}.
21808
21809@subsubheading Example
21810
21811@smallexample
594fe323 21812(gdb)
922fbb7b
AC
21813-break-delete 1
21814^done
594fe323 21815(gdb)
922fbb7b
AC
21816-break-list
21817^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
21818hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
21819@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
21820@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
21821@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
21822@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
21823@{width="40",alignment="2",col_name="what",colhdr="What"@}],
21824body=[]@}
594fe323 21825(gdb)
922fbb7b
AC
21826@end smallexample
21827
21828@subheading The @code{-break-disable} Command
21829@findex -break-disable
21830
21831@subsubheading Synopsis
21832
21833@smallexample
21834 -break-disable ( @var{breakpoint} )+
21835@end smallexample
21836
21837Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
21838break list is now set to @samp{n} for the named @var{breakpoint}(s).
21839
21840@subsubheading @value{GDBN} Command
21841
21842The corresponding @value{GDBN} command is @samp{disable}.
21843
21844@subsubheading Example
21845
21846@smallexample
594fe323 21847(gdb)
922fbb7b
AC
21848-break-disable 2
21849^done
594fe323 21850(gdb)
922fbb7b
AC
21851-break-list
21852^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
21853hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
21854@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
21855@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
21856@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
21857@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
21858@{width="40",alignment="2",col_name="what",colhdr="What"@}],
21859body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
948d5102
NR
21860addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
21861line="5",times="0"@}]@}
594fe323 21862(gdb)
922fbb7b
AC
21863@end smallexample
21864
21865@subheading The @code{-break-enable} Command
21866@findex -break-enable
21867
21868@subsubheading Synopsis
21869
21870@smallexample
21871 -break-enable ( @var{breakpoint} )+
21872@end smallexample
21873
21874Enable (previously disabled) @var{breakpoint}(s).
21875
21876@subsubheading @value{GDBN} Command
21877
21878The corresponding @value{GDBN} command is @samp{enable}.
21879
21880@subsubheading Example
21881
21882@smallexample
594fe323 21883(gdb)
922fbb7b
AC
21884-break-enable 2
21885^done
594fe323 21886(gdb)
922fbb7b
AC
21887-break-list
21888^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
21889hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
21890@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
21891@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
21892@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
21893@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
21894@{width="40",alignment="2",col_name="what",colhdr="What"@}],
21895body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
21896addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
21897line="5",times="0"@}]@}
594fe323 21898(gdb)
922fbb7b
AC
21899@end smallexample
21900
21901@subheading The @code{-break-info} Command
21902@findex -break-info
21903
21904@subsubheading Synopsis
21905
21906@smallexample
21907 -break-info @var{breakpoint}
21908@end smallexample
21909
21910@c REDUNDANT???
21911Get information about a single breakpoint.
21912
79a6e687 21913@subsubheading @value{GDBN} Command
922fbb7b
AC
21914
21915The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
21916
21917@subsubheading Example
21918N.A.
21919
21920@subheading The @code{-break-insert} Command
21921@findex -break-insert
21922
21923@subsubheading Synopsis
21924
21925@smallexample
41447f92 21926 -break-insert [ -t ] [ -h ] [ -f ] [ -d ]
922fbb7b 21927 [ -c @var{condition} ] [ -i @var{ignore-count} ]
afe8ab22 21928 [ -p @var{thread} ] [ @var{location} ]
922fbb7b
AC
21929@end smallexample
21930
21931@noindent
afe8ab22 21932If specified, @var{location}, can be one of:
922fbb7b
AC
21933
21934@itemize @bullet
21935@item function
21936@c @item +offset
21937@c @item -offset
21938@c @item linenum
21939@item filename:linenum
21940@item filename:function
21941@item *address
21942@end itemize
21943
21944The possible optional parameters of this command are:
21945
21946@table @samp
21947@item -t
948d5102 21948Insert a temporary breakpoint.
922fbb7b
AC
21949@item -h
21950Insert a hardware breakpoint.
21951@item -c @var{condition}
21952Make the breakpoint conditional on @var{condition}.
21953@item -i @var{ignore-count}
21954Initialize the @var{ignore-count}.
afe8ab22
VP
21955@item -f
21956If @var{location} cannot be parsed (for example if it
21957refers to unknown files or functions), create a pending
21958breakpoint. Without this flag, @value{GDBN} will report
21959an error, and won't create a breakpoint, if @var{location}
21960cannot be parsed.
41447f92
VP
21961@item -d
21962Create a disabled breakpoint.
922fbb7b
AC
21963@end table
21964
21965@subsubheading Result
21966
21967The result is in the form:
21968
21969@smallexample
948d5102
NR
21970^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
21971enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filename}",
ef21caaf
NR
21972fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{threadno},]
21973times="@var{times}"@}
922fbb7b
AC
21974@end smallexample
21975
21976@noindent
948d5102
NR
21977where @var{number} is the @value{GDBN} number for this breakpoint,
21978@var{funcname} is the name of the function where the breakpoint was
21979inserted, @var{filename} is the name of the source file which contains
21980this function, @var{lineno} is the source line number within that file
21981and @var{times} the number of times that the breakpoint has been hit
21982(always 0 for -break-insert but may be greater for -break-info or -break-list
21983which use the same output).
922fbb7b
AC
21984
21985Note: this format is open to change.
21986@c An out-of-band breakpoint instead of part of the result?
21987
21988@subsubheading @value{GDBN} Command
21989
21990The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
21991@samp{hbreak}, @samp{thbreak}, and @samp{rbreak}.
21992
21993@subsubheading Example
21994
21995@smallexample
594fe323 21996(gdb)
922fbb7b 21997-break-insert main
948d5102
NR
21998^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
21999fullname="/home/foo/recursive2.c,line="4",times="0"@}
594fe323 22000(gdb)
922fbb7b 22001-break-insert -t foo
948d5102
NR
22002^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
22003fullname="/home/foo/recursive2.c,line="11",times="0"@}
594fe323 22004(gdb)
922fbb7b
AC
22005-break-list
22006^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
22007hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
22008@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
22009@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
22010@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
22011@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
22012@{width="40",alignment="2",col_name="what",colhdr="What"@}],
22013body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
22014addr="0x0001072c", func="main",file="recursive2.c",
22015fullname="/home/foo/recursive2.c,"line="4",times="0"@},
922fbb7b 22016bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
948d5102
NR
22017addr="0x00010774",func="foo",file="recursive2.c",
22018fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
594fe323 22019(gdb)
922fbb7b
AC
22020-break-insert -r foo.*
22021~int foo(int, int);
948d5102
NR
22022^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
22023"fullname="/home/foo/recursive2.c",line="11",times="0"@}
594fe323 22024(gdb)
922fbb7b
AC
22025@end smallexample
22026
22027@subheading The @code{-break-list} Command
22028@findex -break-list
22029
22030@subsubheading Synopsis
22031
22032@smallexample
22033 -break-list
22034@end smallexample
22035
22036Displays the list of inserted breakpoints, showing the following fields:
22037
22038@table @samp
22039@item Number
22040number of the breakpoint
22041@item Type
22042type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
22043@item Disposition
22044should the breakpoint be deleted or disabled when it is hit: @samp{keep}
22045or @samp{nokeep}
22046@item Enabled
22047is the breakpoint enabled or no: @samp{y} or @samp{n}
22048@item Address
22049memory location at which the breakpoint is set
22050@item What
22051logical location of the breakpoint, expressed by function name, file
22052name, line number
22053@item Times
22054number of times the breakpoint has been hit
22055@end table
22056
22057If there are no breakpoints or watchpoints, the @code{BreakpointTable}
22058@code{body} field is an empty list.
22059
22060@subsubheading @value{GDBN} Command
22061
22062The corresponding @value{GDBN} command is @samp{info break}.
22063
22064@subsubheading Example
22065
22066@smallexample
594fe323 22067(gdb)
922fbb7b
AC
22068-break-list
22069^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
22070hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
22071@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
22072@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
22073@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
22074@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
22075@{width="40",alignment="2",col_name="what",colhdr="What"@}],
22076body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
22077addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
22078bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
22079addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
22080line="13",times="0"@}]@}
594fe323 22081(gdb)
922fbb7b
AC
22082@end smallexample
22083
22084Here's an example of the result when there are no breakpoints:
22085
22086@smallexample
594fe323 22087(gdb)
922fbb7b
AC
22088-break-list
22089^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
22090hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
22091@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
22092@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
22093@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
22094@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
22095@{width="40",alignment="2",col_name="what",colhdr="What"@}],
22096body=[]@}
594fe323 22097(gdb)
922fbb7b
AC
22098@end smallexample
22099
22100@subheading The @code{-break-watch} Command
22101@findex -break-watch
22102
22103@subsubheading Synopsis
22104
22105@smallexample
22106 -break-watch [ -a | -r ]
22107@end smallexample
22108
22109Create a watchpoint. With the @samp{-a} option it will create an
d3e8051b 22110@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a
922fbb7b 22111read from or on a write to the memory location. With the @samp{-r}
d3e8051b 22112option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will
922fbb7b
AC
22113trigger only when the memory location is accessed for reading. Without
22114either of the options, the watchpoint created is a regular watchpoint,
d3e8051b 22115i.e., it will trigger when the memory location is accessed for writing.
79a6e687 22116@xref{Set Watchpoints, , Setting Watchpoints}.
922fbb7b
AC
22117
22118Note that @samp{-break-list} will report a single list of watchpoints and
22119breakpoints inserted.
22120
22121@subsubheading @value{GDBN} Command
22122
22123The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
22124@samp{rwatch}.
22125
22126@subsubheading Example
22127
22128Setting a watchpoint on a variable in the @code{main} function:
22129
22130@smallexample
594fe323 22131(gdb)
922fbb7b
AC
22132-break-watch x
22133^done,wpt=@{number="2",exp="x"@}
594fe323 22134(gdb)
922fbb7b
AC
22135-exec-continue
22136^running
0869d01b
NR
22137(gdb)
22138*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
922fbb7b 22139value=@{old="-268439212",new="55"@},
76ff342d 22140frame=@{func="main",args=[],file="recursive2.c",
948d5102 22141fullname="/home/foo/bar/recursive2.c",line="5"@}
594fe323 22142(gdb)
922fbb7b
AC
22143@end smallexample
22144
22145Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
22146the program execution twice: first for the variable changing value, then
22147for the watchpoint going out of scope.
22148
22149@smallexample
594fe323 22150(gdb)
922fbb7b
AC
22151-break-watch C
22152^done,wpt=@{number="5",exp="C"@}
594fe323 22153(gdb)
922fbb7b
AC
22154-exec-continue
22155^running
0869d01b
NR
22156(gdb)
22157*stopped,reason="watchpoint-trigger",
922fbb7b
AC
22158wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
22159frame=@{func="callee4",args=[],
76ff342d
DJ
22160file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22161fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 22162(gdb)
922fbb7b
AC
22163-exec-continue
22164^running
0869d01b
NR
22165(gdb)
22166*stopped,reason="watchpoint-scope",wpnum="5",
922fbb7b
AC
22167frame=@{func="callee3",args=[@{name="strarg",
22168value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
22169file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22170fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 22171(gdb)
922fbb7b
AC
22172@end smallexample
22173
22174Listing breakpoints and watchpoints, at different points in the program
22175execution. Note that once the watchpoint goes out of scope, it is
22176deleted.
22177
22178@smallexample
594fe323 22179(gdb)
922fbb7b
AC
22180-break-watch C
22181^done,wpt=@{number="2",exp="C"@}
594fe323 22182(gdb)
922fbb7b
AC
22183-break-list
22184^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
22185hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
22186@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
22187@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
22188@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
22189@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
22190@{width="40",alignment="2",col_name="what",colhdr="What"@}],
22191body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
22192addr="0x00010734",func="callee4",
948d5102
NR
22193file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22194fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
922fbb7b
AC
22195bkpt=@{number="2",type="watchpoint",disp="keep",
22196enabled="y",addr="",what="C",times="0"@}]@}
594fe323 22197(gdb)
922fbb7b
AC
22198-exec-continue
22199^running
0869d01b
NR
22200(gdb)
22201*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
922fbb7b
AC
22202value=@{old="-276895068",new="3"@},
22203frame=@{func="callee4",args=[],
76ff342d
DJ
22204file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22205fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 22206(gdb)
922fbb7b
AC
22207-break-list
22208^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
22209hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
22210@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
22211@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
22212@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
22213@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
22214@{width="40",alignment="2",col_name="what",colhdr="What"@}],
22215body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
22216addr="0x00010734",func="callee4",
948d5102
NR
22217file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22218fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
922fbb7b
AC
22219bkpt=@{number="2",type="watchpoint",disp="keep",
22220enabled="y",addr="",what="C",times="-5"@}]@}
594fe323 22221(gdb)
922fbb7b
AC
22222-exec-continue
22223^running
22224^done,reason="watchpoint-scope",wpnum="2",
22225frame=@{func="callee3",args=[@{name="strarg",
22226value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
22227file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22228fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 22229(gdb)
922fbb7b
AC
22230-break-list
22231^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
22232hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
22233@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
22234@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
22235@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
22236@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
22237@{width="40",alignment="2",col_name="what",colhdr="What"@}],
22238body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
22239addr="0x00010734",func="callee4",
948d5102
NR
22240file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22241fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
22242times="1"@}]@}
594fe323 22243(gdb)
922fbb7b
AC
22244@end smallexample
22245
22246@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
22247@node GDB/MI Program Context
22248@section @sc{gdb/mi} Program Context
922fbb7b 22249
a2c02241
NR
22250@subheading The @code{-exec-arguments} Command
22251@findex -exec-arguments
922fbb7b 22252
922fbb7b
AC
22253
22254@subsubheading Synopsis
22255
22256@smallexample
a2c02241 22257 -exec-arguments @var{args}
922fbb7b
AC
22258@end smallexample
22259
a2c02241
NR
22260Set the inferior program arguments, to be used in the next
22261@samp{-exec-run}.
922fbb7b 22262
a2c02241 22263@subsubheading @value{GDBN} Command
922fbb7b 22264
a2c02241 22265The corresponding @value{GDBN} command is @samp{set args}.
922fbb7b 22266
a2c02241 22267@subsubheading Example
922fbb7b 22268
fbc5282e
MK
22269@smallexample
22270(gdb)
22271-exec-arguments -v word
22272^done
22273(gdb)
22274@end smallexample
922fbb7b 22275
a2c02241 22276
9901a55b 22277@ignore
a2c02241
NR
22278@subheading The @code{-exec-show-arguments} Command
22279@findex -exec-show-arguments
22280
22281@subsubheading Synopsis
22282
22283@smallexample
22284 -exec-show-arguments
22285@end smallexample
22286
22287Print the arguments of the program.
922fbb7b
AC
22288
22289@subsubheading @value{GDBN} Command
22290
a2c02241 22291The corresponding @value{GDBN} command is @samp{show args}.
922fbb7b
AC
22292
22293@subsubheading Example
a2c02241 22294N.A.
9901a55b 22295@end ignore
922fbb7b 22296
922fbb7b 22297
a2c02241
NR
22298@subheading The @code{-environment-cd} Command
22299@findex -environment-cd
922fbb7b 22300
a2c02241 22301@subsubheading Synopsis
922fbb7b
AC
22302
22303@smallexample
a2c02241 22304 -environment-cd @var{pathdir}
922fbb7b
AC
22305@end smallexample
22306
a2c02241 22307Set @value{GDBN}'s working directory.
922fbb7b 22308
a2c02241 22309@subsubheading @value{GDBN} Command
922fbb7b 22310
a2c02241
NR
22311The corresponding @value{GDBN} command is @samp{cd}.
22312
22313@subsubheading Example
922fbb7b
AC
22314
22315@smallexample
594fe323 22316(gdb)
a2c02241
NR
22317-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
22318^done
594fe323 22319(gdb)
922fbb7b
AC
22320@end smallexample
22321
22322
a2c02241
NR
22323@subheading The @code{-environment-directory} Command
22324@findex -environment-directory
922fbb7b
AC
22325
22326@subsubheading Synopsis
22327
22328@smallexample
a2c02241 22329 -environment-directory [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
22330@end smallexample
22331
a2c02241
NR
22332Add directories @var{pathdir} to beginning of search path for source files.
22333If the @samp{-r} option is used, the search path is reset to the default
22334search path. If directories @var{pathdir} are supplied in addition to the
22335@samp{-r} option, the search path is first reset and then addition
22336occurs as normal.
22337Multiple directories may be specified, separated by blanks. Specifying
22338multiple directories in a single command
22339results in the directories added to the beginning of the
22340search path in the same order they were presented in the command.
22341If blanks are needed as
22342part of a directory name, double-quotes should be used around
22343the name. In the command output, the path will show up separated
d3e8051b 22344by the system directory-separator character. The directory-separator
a2c02241
NR
22345character must not be used
22346in any directory name.
22347If no directories are specified, the current search path is displayed.
922fbb7b
AC
22348
22349@subsubheading @value{GDBN} Command
22350
a2c02241 22351The corresponding @value{GDBN} command is @samp{dir}.
922fbb7b
AC
22352
22353@subsubheading Example
22354
922fbb7b 22355@smallexample
594fe323 22356(gdb)
a2c02241
NR
22357-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
22358^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 22359(gdb)
a2c02241
NR
22360-environment-directory ""
22361^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 22362(gdb)
a2c02241
NR
22363-environment-directory -r /home/jjohnstn/src/gdb /usr/src
22364^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
594fe323 22365(gdb)
a2c02241
NR
22366-environment-directory -r
22367^done,source-path="$cdir:$cwd"
594fe323 22368(gdb)
922fbb7b
AC
22369@end smallexample
22370
22371
a2c02241
NR
22372@subheading The @code{-environment-path} Command
22373@findex -environment-path
922fbb7b
AC
22374
22375@subsubheading Synopsis
22376
22377@smallexample
a2c02241 22378 -environment-path [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
22379@end smallexample
22380
a2c02241
NR
22381Add directories @var{pathdir} to beginning of search path for object files.
22382If the @samp{-r} option is used, the search path is reset to the original
22383search path that existed at gdb start-up. If directories @var{pathdir} are
22384supplied in addition to the
22385@samp{-r} option, the search path is first reset and then addition
22386occurs as normal.
22387Multiple directories may be specified, separated by blanks. Specifying
22388multiple directories in a single command
22389results in the directories added to the beginning of the
22390search path in the same order they were presented in the command.
22391If blanks are needed as
22392part of a directory name, double-quotes should be used around
22393the name. In the command output, the path will show up separated
d3e8051b 22394by the system directory-separator character. The directory-separator
a2c02241
NR
22395character must not be used
22396in any directory name.
22397If no directories are specified, the current path is displayed.
22398
922fbb7b
AC
22399
22400@subsubheading @value{GDBN} Command
22401
a2c02241 22402The corresponding @value{GDBN} command is @samp{path}.
922fbb7b
AC
22403
22404@subsubheading Example
22405
922fbb7b 22406@smallexample
594fe323 22407(gdb)
a2c02241
NR
22408-environment-path
22409^done,path="/usr/bin"
594fe323 22410(gdb)
a2c02241
NR
22411-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
22412^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
594fe323 22413(gdb)
a2c02241
NR
22414-environment-path -r /usr/local/bin
22415^done,path="/usr/local/bin:/usr/bin"
594fe323 22416(gdb)
922fbb7b
AC
22417@end smallexample
22418
22419
a2c02241
NR
22420@subheading The @code{-environment-pwd} Command
22421@findex -environment-pwd
922fbb7b
AC
22422
22423@subsubheading Synopsis
22424
22425@smallexample
a2c02241 22426 -environment-pwd
922fbb7b
AC
22427@end smallexample
22428
a2c02241 22429Show the current working directory.
922fbb7b 22430
79a6e687 22431@subsubheading @value{GDBN} Command
922fbb7b 22432
a2c02241 22433The corresponding @value{GDBN} command is @samp{pwd}.
922fbb7b
AC
22434
22435@subsubheading Example
22436
922fbb7b 22437@smallexample
594fe323 22438(gdb)
a2c02241
NR
22439-environment-pwd
22440^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
594fe323 22441(gdb)
922fbb7b
AC
22442@end smallexample
22443
a2c02241
NR
22444@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22445@node GDB/MI Thread Commands
22446@section @sc{gdb/mi} Thread Commands
22447
22448
22449@subheading The @code{-thread-info} Command
22450@findex -thread-info
922fbb7b
AC
22451
22452@subsubheading Synopsis
22453
22454@smallexample
8e8901c5 22455 -thread-info [ @var{thread-id} ]
922fbb7b
AC
22456@end smallexample
22457
8e8901c5
VP
22458Reports information about either a specific thread, if
22459the @var{thread-id} parameter is present, or about all
22460threads. When printing information about all threads,
22461also reports the current thread.
22462
79a6e687 22463@subsubheading @value{GDBN} Command
922fbb7b 22464
8e8901c5
VP
22465The @samp{info thread} command prints the same information
22466about all threads.
922fbb7b
AC
22467
22468@subsubheading Example
922fbb7b
AC
22469
22470@smallexample
8e8901c5
VP
22471-thread-info
22472^done,threads=[
22473@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
c3b108f7 22474 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
8e8901c5
VP
22475@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
22476 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
c3b108f7 22477 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}],
8e8901c5
VP
22478current-thread-id="1"
22479(gdb)
922fbb7b
AC
22480@end smallexample
22481
c3b108f7
VP
22482The @samp{state} field may have the following values:
22483
22484@table @code
22485@item stopped
22486The thread is stopped. Frame information is available for stopped
22487threads.
22488
22489@item running
22490The thread is running. There's no frame information for running
22491threads.
22492
22493@end table
22494
a2c02241
NR
22495@subheading The @code{-thread-list-ids} Command
22496@findex -thread-list-ids
922fbb7b 22497
a2c02241 22498@subsubheading Synopsis
922fbb7b 22499
a2c02241
NR
22500@smallexample
22501 -thread-list-ids
22502@end smallexample
922fbb7b 22503
a2c02241
NR
22504Produces a list of the currently known @value{GDBN} thread ids. At the
22505end of the list it also prints the total number of such threads.
922fbb7b 22506
c3b108f7
VP
22507This command is retained for historical reasons, the
22508@code{-thread-info} command should be used instead.
22509
922fbb7b
AC
22510@subsubheading @value{GDBN} Command
22511
a2c02241 22512Part of @samp{info threads} supplies the same information.
922fbb7b
AC
22513
22514@subsubheading Example
22515
922fbb7b 22516@smallexample
594fe323 22517(gdb)
a2c02241
NR
22518-thread-list-ids
22519^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
592375cd 22520current-thread-id="1",number-of-threads="3"
594fe323 22521(gdb)
922fbb7b
AC
22522@end smallexample
22523
a2c02241
NR
22524
22525@subheading The @code{-thread-select} Command
22526@findex -thread-select
922fbb7b
AC
22527
22528@subsubheading Synopsis
22529
22530@smallexample
a2c02241 22531 -thread-select @var{threadnum}
922fbb7b
AC
22532@end smallexample
22533
a2c02241
NR
22534Make @var{threadnum} the current thread. It prints the number of the new
22535current thread, and the topmost frame for that thread.
922fbb7b 22536
c3b108f7
VP
22537This command is deprecated in favor of explicitly using the
22538@samp{--thread} option to each command.
22539
922fbb7b
AC
22540@subsubheading @value{GDBN} Command
22541
a2c02241 22542The corresponding @value{GDBN} command is @samp{thread}.
922fbb7b
AC
22543
22544@subsubheading Example
922fbb7b
AC
22545
22546@smallexample
594fe323 22547(gdb)
a2c02241
NR
22548-exec-next
22549^running
594fe323 22550(gdb)
a2c02241
NR
22551*stopped,reason="end-stepping-range",thread-id="2",line="187",
22552file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
594fe323 22553(gdb)
a2c02241
NR
22554-thread-list-ids
22555^done,
22556thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
22557number-of-threads="3"
594fe323 22558(gdb)
a2c02241
NR
22559-thread-select 3
22560^done,new-thread-id="3",
22561frame=@{level="0",func="vprintf",
22562args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
22563@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
594fe323 22564(gdb)
922fbb7b
AC
22565@end smallexample
22566
a2c02241
NR
22567@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22568@node GDB/MI Program Execution
22569@section @sc{gdb/mi} Program Execution
922fbb7b 22570
ef21caaf 22571These are the asynchronous commands which generate the out-of-band
3f94c067 22572record @samp{*stopped}. Currently @value{GDBN} only really executes
ef21caaf
NR
22573asynchronously with remote targets and this interaction is mimicked in
22574other cases.
922fbb7b 22575
922fbb7b
AC
22576@subheading The @code{-exec-continue} Command
22577@findex -exec-continue
22578
22579@subsubheading Synopsis
22580
22581@smallexample
c3b108f7 22582 -exec-continue [--all|--thread-group N]
922fbb7b
AC
22583@end smallexample
22584
ef21caaf 22585Resumes the execution of the inferior program until a breakpoint is
c3b108f7
VP
22586encountered, or until the inferior exits. In all-stop mode
22587(@pxref{All-Stop Mode}), may resume only one thread, or all threads,
22588depending on the value of the @samp{scheduler-locking} variable. In
22589non-stop mode (@pxref{Non-Stop Mode}), if the @samp{--all} is not
22590specified, only the thread specified with the @samp{--thread} option
22591(or current thread, if no @samp{--thread} is provided) is resumed. If
22592@samp{--all} is specified, all threads will be resumed. The
22593@samp{--all} option is ignored in all-stop mode. If the
22594@samp{--thread-group} options is specified, then all threads in that
22595thread group are resumed.
922fbb7b
AC
22596
22597@subsubheading @value{GDBN} Command
22598
22599The corresponding @value{GDBN} corresponding is @samp{continue}.
22600
22601@subsubheading Example
22602
22603@smallexample
22604-exec-continue
22605^running
594fe323 22606(gdb)
922fbb7b 22607@@Hello world
a47ec5fe
AR
22608*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{
22609func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
22610line="13"@}
594fe323 22611(gdb)
922fbb7b
AC
22612@end smallexample
22613
22614
22615@subheading The @code{-exec-finish} Command
22616@findex -exec-finish
22617
22618@subsubheading Synopsis
22619
22620@smallexample
22621 -exec-finish
22622@end smallexample
22623
ef21caaf
NR
22624Resumes the execution of the inferior program until the current
22625function is exited. Displays the results returned by the function.
922fbb7b
AC
22626
22627@subsubheading @value{GDBN} Command
22628
22629The corresponding @value{GDBN} command is @samp{finish}.
22630
22631@subsubheading Example
22632
22633Function returning @code{void}.
22634
22635@smallexample
22636-exec-finish
22637^running
594fe323 22638(gdb)
922fbb7b
AC
22639@@hello from foo
22640*stopped,reason="function-finished",frame=@{func="main",args=[],
948d5102 22641file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@}
594fe323 22642(gdb)
922fbb7b
AC
22643@end smallexample
22644
22645Function returning other than @code{void}. The name of the internal
22646@value{GDBN} variable storing the result is printed, together with the
22647value itself.
22648
22649@smallexample
22650-exec-finish
22651^running
594fe323 22652(gdb)
922fbb7b
AC
22653*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
22654args=[@{name="a",value="1"],@{name="b",value="9"@}@},
948d5102 22655file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
922fbb7b 22656gdb-result-var="$1",return-value="0"
594fe323 22657(gdb)
922fbb7b
AC
22658@end smallexample
22659
22660
22661@subheading The @code{-exec-interrupt} Command
22662@findex -exec-interrupt
22663
22664@subsubheading Synopsis
22665
22666@smallexample
c3b108f7 22667 -exec-interrupt [--all|--thread-group N]
922fbb7b
AC
22668@end smallexample
22669
ef21caaf
NR
22670Interrupts the background execution of the target. Note how the token
22671associated with the stop message is the one for the execution command
22672that has been interrupted. The token for the interrupt itself only
22673appears in the @samp{^done} output. If the user is trying to
922fbb7b
AC
22674interrupt a non-running program, an error message will be printed.
22675
c3b108f7
VP
22676Note that when asynchronous execution is enabled, this command is
22677asynchronous just like other execution commands. That is, first the
22678@samp{^done} response will be printed, and the target stop will be
22679reported after that using the @samp{*stopped} notification.
22680
22681In non-stop mode, only the context thread is interrupted by default.
22682All threads will be interrupted if the @samp{--all} option is
22683specified. If the @samp{--thread-group} option is specified, all
22684threads in that group will be interrupted.
22685
922fbb7b
AC
22686@subsubheading @value{GDBN} Command
22687
22688The corresponding @value{GDBN} command is @samp{interrupt}.
22689
22690@subsubheading Example
22691
22692@smallexample
594fe323 22693(gdb)
922fbb7b
AC
22694111-exec-continue
22695111^running
22696
594fe323 22697(gdb)
922fbb7b
AC
22698222-exec-interrupt
22699222^done
594fe323 22700(gdb)
922fbb7b 22701111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
76ff342d 22702frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
948d5102 22703fullname="/home/foo/bar/try.c",line="13"@}
594fe323 22704(gdb)
922fbb7b 22705
594fe323 22706(gdb)
922fbb7b
AC
22707-exec-interrupt
22708^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
594fe323 22709(gdb)
922fbb7b
AC
22710@end smallexample
22711
83eba9b7
VP
22712@subheading The @code{-exec-jump} Command
22713@findex -exec-jump
22714
22715@subsubheading Synopsis
22716
22717@smallexample
22718 -exec-jump @var{location}
22719@end smallexample
22720
22721Resumes execution of the inferior program at the location specified by
22722parameter. @xref{Specify Location}, for a description of the
22723different forms of @var{location}.
22724
22725@subsubheading @value{GDBN} Command
22726
22727The corresponding @value{GDBN} command is @samp{jump}.
22728
22729@subsubheading Example
22730
22731@smallexample
22732-exec-jump foo.c:10
22733*running,thread-id="all"
22734^running
22735@end smallexample
22736
922fbb7b
AC
22737
22738@subheading The @code{-exec-next} Command
22739@findex -exec-next
22740
22741@subsubheading Synopsis
22742
22743@smallexample
22744 -exec-next
22745@end smallexample
22746
ef21caaf
NR
22747Resumes execution of the inferior program, stopping when the beginning
22748of the next source line is reached.
922fbb7b
AC
22749
22750@subsubheading @value{GDBN} Command
22751
22752The corresponding @value{GDBN} command is @samp{next}.
22753
22754@subsubheading Example
22755
22756@smallexample
22757-exec-next
22758^running
594fe323 22759(gdb)
922fbb7b 22760*stopped,reason="end-stepping-range",line="8",file="hello.c"
594fe323 22761(gdb)
922fbb7b
AC
22762@end smallexample
22763
22764
22765@subheading The @code{-exec-next-instruction} Command
22766@findex -exec-next-instruction
22767
22768@subsubheading Synopsis
22769
22770@smallexample
22771 -exec-next-instruction
22772@end smallexample
22773
ef21caaf
NR
22774Executes one machine instruction. If the instruction is a function
22775call, continues until the function returns. If the program stops at an
22776instruction in the middle of a source line, the address will be
22777printed as well.
922fbb7b
AC
22778
22779@subsubheading @value{GDBN} Command
22780
22781The corresponding @value{GDBN} command is @samp{nexti}.
22782
22783@subsubheading Example
22784
22785@smallexample
594fe323 22786(gdb)
922fbb7b
AC
22787-exec-next-instruction
22788^running
22789
594fe323 22790(gdb)
922fbb7b
AC
22791*stopped,reason="end-stepping-range",
22792addr="0x000100d4",line="5",file="hello.c"
594fe323 22793(gdb)
922fbb7b
AC
22794@end smallexample
22795
22796
22797@subheading The @code{-exec-return} Command
22798@findex -exec-return
22799
22800@subsubheading Synopsis
22801
22802@smallexample
22803 -exec-return
22804@end smallexample
22805
22806Makes current function return immediately. Doesn't execute the inferior.
22807Displays the new current frame.
22808
22809@subsubheading @value{GDBN} Command
22810
22811The corresponding @value{GDBN} command is @samp{return}.
22812
22813@subsubheading Example
22814
22815@smallexample
594fe323 22816(gdb)
922fbb7b
AC
22817200-break-insert callee4
22818200^done,bkpt=@{number="1",addr="0x00010734",
22819file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 22820(gdb)
922fbb7b
AC
22821000-exec-run
22822000^running
594fe323 22823(gdb)
a47ec5fe 22824000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
922fbb7b 22825frame=@{func="callee4",args=[],
76ff342d
DJ
22826file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22827fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 22828(gdb)
922fbb7b
AC
22829205-break-delete
22830205^done
594fe323 22831(gdb)
922fbb7b
AC
22832111-exec-return
22833111^done,frame=@{level="0",func="callee3",
22834args=[@{name="strarg",
22835value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
22836file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
22837fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 22838(gdb)
922fbb7b
AC
22839@end smallexample
22840
22841
22842@subheading The @code{-exec-run} Command
22843@findex -exec-run
22844
22845@subsubheading Synopsis
22846
22847@smallexample
22848 -exec-run
22849@end smallexample
22850
ef21caaf
NR
22851Starts execution of the inferior from the beginning. The inferior
22852executes until either a breakpoint is encountered or the program
22853exits. In the latter case the output will include an exit code, if
22854the program has exited exceptionally.
922fbb7b
AC
22855
22856@subsubheading @value{GDBN} Command
22857
22858The corresponding @value{GDBN} command is @samp{run}.
22859
ef21caaf 22860@subsubheading Examples
922fbb7b
AC
22861
22862@smallexample
594fe323 22863(gdb)
922fbb7b
AC
22864-break-insert main
22865^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
594fe323 22866(gdb)
922fbb7b
AC
22867-exec-run
22868^running
594fe323 22869(gdb)
a47ec5fe 22870*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
76ff342d 22871frame=@{func="main",args=[],file="recursive2.c",
948d5102 22872fullname="/home/foo/bar/recursive2.c",line="4"@}
594fe323 22873(gdb)
922fbb7b
AC
22874@end smallexample
22875
ef21caaf
NR
22876@noindent
22877Program exited normally:
22878
22879@smallexample
594fe323 22880(gdb)
ef21caaf
NR
22881-exec-run
22882^running
594fe323 22883(gdb)
ef21caaf
NR
22884x = 55
22885*stopped,reason="exited-normally"
594fe323 22886(gdb)
ef21caaf
NR
22887@end smallexample
22888
22889@noindent
22890Program exited exceptionally:
22891
22892@smallexample
594fe323 22893(gdb)
ef21caaf
NR
22894-exec-run
22895^running
594fe323 22896(gdb)
ef21caaf
NR
22897x = 55
22898*stopped,reason="exited",exit-code="01"
594fe323 22899(gdb)
ef21caaf
NR
22900@end smallexample
22901
22902Another way the program can terminate is if it receives a signal such as
22903@code{SIGINT}. In this case, @sc{gdb/mi} displays this:
22904
22905@smallexample
594fe323 22906(gdb)
ef21caaf
NR
22907*stopped,reason="exited-signalled",signal-name="SIGINT",
22908signal-meaning="Interrupt"
22909@end smallexample
22910
922fbb7b 22911
a2c02241
NR
22912@c @subheading -exec-signal
22913
22914
22915@subheading The @code{-exec-step} Command
22916@findex -exec-step
922fbb7b
AC
22917
22918@subsubheading Synopsis
22919
22920@smallexample
a2c02241 22921 -exec-step
922fbb7b
AC
22922@end smallexample
22923
a2c02241
NR
22924Resumes execution of the inferior program, stopping when the beginning
22925of the next source line is reached, if the next source line is not a
22926function call. If it is, stop at the first instruction of the called
22927function.
922fbb7b
AC
22928
22929@subsubheading @value{GDBN} Command
22930
a2c02241 22931The corresponding @value{GDBN} command is @samp{step}.
922fbb7b
AC
22932
22933@subsubheading Example
22934
22935Stepping into a function:
22936
22937@smallexample
22938-exec-step
22939^running
594fe323 22940(gdb)
922fbb7b
AC
22941*stopped,reason="end-stepping-range",
22942frame=@{func="foo",args=[@{name="a",value="10"@},
76ff342d 22943@{name="b",value="0"@}],file="recursive2.c",
948d5102 22944fullname="/home/foo/bar/recursive2.c",line="11"@}
594fe323 22945(gdb)
922fbb7b
AC
22946@end smallexample
22947
22948Regular stepping:
22949
22950@smallexample
22951-exec-step
22952^running
594fe323 22953(gdb)
922fbb7b 22954*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
594fe323 22955(gdb)
922fbb7b
AC
22956@end smallexample
22957
22958
22959@subheading The @code{-exec-step-instruction} Command
22960@findex -exec-step-instruction
22961
22962@subsubheading Synopsis
22963
22964@smallexample
22965 -exec-step-instruction
22966@end smallexample
22967
ef21caaf
NR
22968Resumes the inferior which executes one machine instruction. The
22969output, once @value{GDBN} has stopped, will vary depending on whether
22970we have stopped in the middle of a source line or not. In the former
22971case, the address at which the program stopped will be printed as
922fbb7b
AC
22972well.
22973
22974@subsubheading @value{GDBN} Command
22975
22976The corresponding @value{GDBN} command is @samp{stepi}.
22977
22978@subsubheading Example
22979
22980@smallexample
594fe323 22981(gdb)
922fbb7b
AC
22982-exec-step-instruction
22983^running
22984
594fe323 22985(gdb)
922fbb7b 22986*stopped,reason="end-stepping-range",
76ff342d 22987frame=@{func="foo",args=[],file="try.c",
948d5102 22988fullname="/home/foo/bar/try.c",line="10"@}
594fe323 22989(gdb)
922fbb7b
AC
22990-exec-step-instruction
22991^running
22992
594fe323 22993(gdb)
922fbb7b 22994*stopped,reason="end-stepping-range",
76ff342d 22995frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
948d5102 22996fullname="/home/foo/bar/try.c",line="10"@}
594fe323 22997(gdb)
922fbb7b
AC
22998@end smallexample
22999
23000
23001@subheading The @code{-exec-until} Command
23002@findex -exec-until
23003
23004@subsubheading Synopsis
23005
23006@smallexample
23007 -exec-until [ @var{location} ]
23008@end smallexample
23009
ef21caaf
NR
23010Executes the inferior until the @var{location} specified in the
23011argument is reached. If there is no argument, the inferior executes
23012until a source line greater than the current one is reached. The
23013reason for stopping in this case will be @samp{location-reached}.
922fbb7b
AC
23014
23015@subsubheading @value{GDBN} Command
23016
23017The corresponding @value{GDBN} command is @samp{until}.
23018
23019@subsubheading Example
23020
23021@smallexample
594fe323 23022(gdb)
922fbb7b
AC
23023-exec-until recursive2.c:6
23024^running
594fe323 23025(gdb)
922fbb7b
AC
23026x = 55
23027*stopped,reason="location-reached",frame=@{func="main",args=[],
948d5102 23028file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@}
594fe323 23029(gdb)
922fbb7b
AC
23030@end smallexample
23031
23032@ignore
23033@subheading -file-clear
23034Is this going away????
23035@end ignore
23036
351ff01a 23037@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
23038@node GDB/MI Stack Manipulation
23039@section @sc{gdb/mi} Stack Manipulation Commands
351ff01a 23040
922fbb7b 23041
a2c02241
NR
23042@subheading The @code{-stack-info-frame} Command
23043@findex -stack-info-frame
922fbb7b
AC
23044
23045@subsubheading Synopsis
23046
23047@smallexample
a2c02241 23048 -stack-info-frame
922fbb7b
AC
23049@end smallexample
23050
a2c02241 23051Get info on the selected frame.
922fbb7b
AC
23052
23053@subsubheading @value{GDBN} Command
23054
a2c02241
NR
23055The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
23056(without arguments).
922fbb7b
AC
23057
23058@subsubheading Example
23059
23060@smallexample
594fe323 23061(gdb)
a2c02241
NR
23062-stack-info-frame
23063^done,frame=@{level="1",addr="0x0001076c",func="callee3",
23064file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23065fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
594fe323 23066(gdb)
922fbb7b
AC
23067@end smallexample
23068
a2c02241
NR
23069@subheading The @code{-stack-info-depth} Command
23070@findex -stack-info-depth
922fbb7b
AC
23071
23072@subsubheading Synopsis
23073
23074@smallexample
a2c02241 23075 -stack-info-depth [ @var{max-depth} ]
922fbb7b
AC
23076@end smallexample
23077
a2c02241
NR
23078Return the depth of the stack. If the integer argument @var{max-depth}
23079is specified, do not count beyond @var{max-depth} frames.
922fbb7b
AC
23080
23081@subsubheading @value{GDBN} Command
23082
a2c02241 23083There's no equivalent @value{GDBN} command.
922fbb7b
AC
23084
23085@subsubheading Example
23086
a2c02241
NR
23087For a stack with frame levels 0 through 11:
23088
922fbb7b 23089@smallexample
594fe323 23090(gdb)
a2c02241
NR
23091-stack-info-depth
23092^done,depth="12"
594fe323 23093(gdb)
a2c02241
NR
23094-stack-info-depth 4
23095^done,depth="4"
594fe323 23096(gdb)
a2c02241
NR
23097-stack-info-depth 12
23098^done,depth="12"
594fe323 23099(gdb)
a2c02241
NR
23100-stack-info-depth 11
23101^done,depth="11"
594fe323 23102(gdb)
a2c02241
NR
23103-stack-info-depth 13
23104^done,depth="12"
594fe323 23105(gdb)
922fbb7b
AC
23106@end smallexample
23107
a2c02241
NR
23108@subheading The @code{-stack-list-arguments} Command
23109@findex -stack-list-arguments
922fbb7b
AC
23110
23111@subsubheading Synopsis
23112
23113@smallexample
a2c02241
NR
23114 -stack-list-arguments @var{show-values}
23115 [ @var{low-frame} @var{high-frame} ]
922fbb7b
AC
23116@end smallexample
23117
a2c02241
NR
23118Display a list of the arguments for the frames between @var{low-frame}
23119and @var{high-frame} (inclusive). If @var{low-frame} and
2f1acb09
VP
23120@var{high-frame} are not provided, list the arguments for the whole
23121call stack. If the two arguments are equal, show the single frame
23122at the corresponding level. It is an error if @var{low-frame} is
23123larger than the actual number of frames. On the other hand,
23124@var{high-frame} may be larger than the actual number of frames, in
23125which case only existing frames will be returned.
a2c02241
NR
23126
23127The @var{show-values} argument must have a value of 0 or 1. A value of
231280 means that only the names of the arguments are listed, a value of 1
23129means that both names and values of the arguments are printed.
922fbb7b
AC
23130
23131@subsubheading @value{GDBN} Command
23132
a2c02241
NR
23133@value{GDBN} does not have an equivalent command. @code{gdbtk} has a
23134@samp{gdb_get_args} command which partially overlaps with the
23135functionality of @samp{-stack-list-arguments}.
922fbb7b
AC
23136
23137@subsubheading Example
922fbb7b 23138
a2c02241 23139@smallexample
594fe323 23140(gdb)
a2c02241
NR
23141-stack-list-frames
23142^done,
23143stack=[
23144frame=@{level="0",addr="0x00010734",func="callee4",
23145file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23146fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
23147frame=@{level="1",addr="0x0001076c",func="callee3",
23148file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23149fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
23150frame=@{level="2",addr="0x0001078c",func="callee2",
23151file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23152fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
23153frame=@{level="3",addr="0x000107b4",func="callee1",
23154file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23155fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
23156frame=@{level="4",addr="0x000107e0",func="main",
23157file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
23158fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
594fe323 23159(gdb)
a2c02241
NR
23160-stack-list-arguments 0
23161^done,
23162stack-args=[
23163frame=@{level="0",args=[]@},
23164frame=@{level="1",args=[name="strarg"]@},
23165frame=@{level="2",args=[name="intarg",name="strarg"]@},
23166frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
23167frame=@{level="4",args=[]@}]
594fe323 23168(gdb)
a2c02241
NR
23169-stack-list-arguments 1
23170^done,
23171stack-args=[
23172frame=@{level="0",args=[]@},
23173frame=@{level="1",
23174 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
23175frame=@{level="2",args=[
23176@{name="intarg",value="2"@},
23177@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
23178@{frame=@{level="3",args=[
23179@{name="intarg",value="2"@},
23180@{name="strarg",value="0x11940 \"A string argument.\""@},
23181@{name="fltarg",value="3.5"@}]@},
23182frame=@{level="4",args=[]@}]
594fe323 23183(gdb)
a2c02241
NR
23184-stack-list-arguments 0 2 2
23185^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
594fe323 23186(gdb)
a2c02241
NR
23187-stack-list-arguments 1 2 2
23188^done,stack-args=[frame=@{level="2",
23189args=[@{name="intarg",value="2"@},
23190@{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
594fe323 23191(gdb)
a2c02241
NR
23192@end smallexample
23193
23194@c @subheading -stack-list-exception-handlers
922fbb7b 23195
a2c02241
NR
23196
23197@subheading The @code{-stack-list-frames} Command
23198@findex -stack-list-frames
1abaf70c
BR
23199
23200@subsubheading Synopsis
23201
23202@smallexample
a2c02241 23203 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
1abaf70c
BR
23204@end smallexample
23205
a2c02241
NR
23206List the frames currently on the stack. For each frame it displays the
23207following info:
23208
23209@table @samp
23210@item @var{level}
d3e8051b 23211The frame number, 0 being the topmost frame, i.e., the innermost function.
a2c02241
NR
23212@item @var{addr}
23213The @code{$pc} value for that frame.
23214@item @var{func}
23215Function name.
23216@item @var{file}
23217File name of the source file where the function lives.
23218@item @var{line}
23219Line number corresponding to the @code{$pc}.
23220@end table
23221
23222If invoked without arguments, this command prints a backtrace for the
23223whole stack. If given two integer arguments, it shows the frames whose
23224levels are between the two arguments (inclusive). If the two arguments
2ab1eb7a
VP
23225are equal, it shows the single frame at the corresponding level. It is
23226an error if @var{low-frame} is larger than the actual number of
a5451f4e 23227frames. On the other hand, @var{high-frame} may be larger than the
2ab1eb7a 23228actual number of frames, in which case only existing frames will be returned.
1abaf70c
BR
23229
23230@subsubheading @value{GDBN} Command
23231
a2c02241 23232The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
1abaf70c
BR
23233
23234@subsubheading Example
23235
a2c02241
NR
23236Full stack backtrace:
23237
1abaf70c 23238@smallexample
594fe323 23239(gdb)
a2c02241
NR
23240-stack-list-frames
23241^done,stack=
23242[frame=@{level="0",addr="0x0001076c",func="foo",
23243 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@},
23244frame=@{level="1",addr="0x000107a4",func="foo",
23245 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23246frame=@{level="2",addr="0x000107a4",func="foo",
23247 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23248frame=@{level="3",addr="0x000107a4",func="foo",
23249 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23250frame=@{level="4",addr="0x000107a4",func="foo",
23251 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23252frame=@{level="5",addr="0x000107a4",func="foo",
23253 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23254frame=@{level="6",addr="0x000107a4",func="foo",
23255 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23256frame=@{level="7",addr="0x000107a4",func="foo",
23257 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23258frame=@{level="8",addr="0x000107a4",func="foo",
23259 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23260frame=@{level="9",addr="0x000107a4",func="foo",
23261 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23262frame=@{level="10",addr="0x000107a4",func="foo",
23263 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23264frame=@{level="11",addr="0x00010738",func="main",
23265 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}]
594fe323 23266(gdb)
1abaf70c
BR
23267@end smallexample
23268
a2c02241 23269Show frames between @var{low_frame} and @var{high_frame}:
1abaf70c 23270
a2c02241 23271@smallexample
594fe323 23272(gdb)
a2c02241
NR
23273-stack-list-frames 3 5
23274^done,stack=
23275[frame=@{level="3",addr="0x000107a4",func="foo",
23276 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23277frame=@{level="4",addr="0x000107a4",func="foo",
23278 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
23279frame=@{level="5",addr="0x000107a4",func="foo",
23280 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 23281(gdb)
a2c02241 23282@end smallexample
922fbb7b 23283
a2c02241 23284Show a single frame:
922fbb7b
AC
23285
23286@smallexample
594fe323 23287(gdb)
a2c02241
NR
23288-stack-list-frames 3 3
23289^done,stack=
23290[frame=@{level="3",addr="0x000107a4",func="foo",
23291 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 23292(gdb)
922fbb7b
AC
23293@end smallexample
23294
922fbb7b 23295
a2c02241
NR
23296@subheading The @code{-stack-list-locals} Command
23297@findex -stack-list-locals
57c22c6c 23298
a2c02241 23299@subsubheading Synopsis
922fbb7b
AC
23300
23301@smallexample
a2c02241 23302 -stack-list-locals @var{print-values}
922fbb7b
AC
23303@end smallexample
23304
a2c02241
NR
23305Display the local variable names for the selected frame. If
23306@var{print-values} is 0 or @code{--no-values}, print only the names of
23307the variables; if it is 1 or @code{--all-values}, print also their
23308values; and if it is 2 or @code{--simple-values}, print the name,
23309type and value for simple data types and the name and type for arrays,
23310structures and unions. In this last case, a frontend can immediately
23311display the value of simple data types and create variable objects for
d3e8051b 23312other data types when the user wishes to explore their values in
a2c02241 23313more detail.
922fbb7b
AC
23314
23315@subsubheading @value{GDBN} Command
23316
a2c02241 23317@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
922fbb7b
AC
23318
23319@subsubheading Example
922fbb7b
AC
23320
23321@smallexample
594fe323 23322(gdb)
a2c02241
NR
23323-stack-list-locals 0
23324^done,locals=[name="A",name="B",name="C"]
594fe323 23325(gdb)
a2c02241
NR
23326-stack-list-locals --all-values
23327^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
23328 @{name="C",value="@{1, 2, 3@}"@}]
23329-stack-list-locals --simple-values
23330^done,locals=[@{name="A",type="int",value="1"@},
23331 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
594fe323 23332(gdb)
922fbb7b
AC
23333@end smallexample
23334
922fbb7b 23335
a2c02241
NR
23336@subheading The @code{-stack-select-frame} Command
23337@findex -stack-select-frame
922fbb7b
AC
23338
23339@subsubheading Synopsis
23340
23341@smallexample
a2c02241 23342 -stack-select-frame @var{framenum}
922fbb7b
AC
23343@end smallexample
23344
a2c02241
NR
23345Change the selected frame. Select a different frame @var{framenum} on
23346the stack.
922fbb7b 23347
c3b108f7
VP
23348This command in deprecated in favor of passing the @samp{--frame}
23349option to every command.
23350
922fbb7b
AC
23351@subsubheading @value{GDBN} Command
23352
a2c02241
NR
23353The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
23354@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
922fbb7b
AC
23355
23356@subsubheading Example
23357
23358@smallexample
594fe323 23359(gdb)
a2c02241 23360-stack-select-frame 2
922fbb7b 23361^done
594fe323 23362(gdb)
922fbb7b
AC
23363@end smallexample
23364
23365@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
23366@node GDB/MI Variable Objects
23367@section @sc{gdb/mi} Variable Objects
922fbb7b 23368
a1b5960f 23369@ignore
922fbb7b 23370
a2c02241 23371@subheading Motivation for Variable Objects in @sc{gdb/mi}
922fbb7b 23372
a2c02241
NR
23373For the implementation of a variable debugger window (locals, watched
23374expressions, etc.), we are proposing the adaptation of the existing code
23375used by @code{Insight}.
922fbb7b 23376
a2c02241 23377The two main reasons for that are:
922fbb7b 23378
a2c02241
NR
23379@enumerate 1
23380@item
23381It has been proven in practice (it is already on its second generation).
922fbb7b 23382
a2c02241
NR
23383@item
23384It will shorten development time (needless to say how important it is
23385now).
23386@end enumerate
922fbb7b 23387
a2c02241
NR
23388The original interface was designed to be used by Tcl code, so it was
23389slightly changed so it could be used through @sc{gdb/mi}. This section
23390describes the @sc{gdb/mi} operations that will be available and gives some
23391hints about their use.
922fbb7b 23392
a2c02241
NR
23393@emph{Note}: In addition to the set of operations described here, we
23394expect the @sc{gui} implementation of a variable window to require, at
23395least, the following operations:
922fbb7b 23396
a2c02241
NR
23397@itemize @bullet
23398@item @code{-gdb-show} @code{output-radix}
23399@item @code{-stack-list-arguments}
23400@item @code{-stack-list-locals}
23401@item @code{-stack-select-frame}
23402@end itemize
922fbb7b 23403
a1b5960f
VP
23404@end ignore
23405
c8b2f53c 23406@subheading Introduction to Variable Objects
922fbb7b 23407
a2c02241 23408@cindex variable objects in @sc{gdb/mi}
c8b2f53c
VP
23409
23410Variable objects are "object-oriented" MI interface for examining and
23411changing values of expressions. Unlike some other MI interfaces that
23412work with expressions, variable objects are specifically designed for
23413simple and efficient presentation in the frontend. A variable object
23414is identified by string name. When a variable object is created, the
23415frontend specifies the expression for that variable object. The
23416expression can be a simple variable, or it can be an arbitrary complex
23417expression, and can even involve CPU registers. After creating a
23418variable object, the frontend can invoke other variable object
23419operations---for example to obtain or change the value of a variable
23420object, or to change display format.
23421
23422Variable objects have hierarchical tree structure. Any variable object
23423that corresponds to a composite type, such as structure in C, has
23424a number of child variable objects, for example corresponding to each
23425element of a structure. A child variable object can itself have
23426children, recursively. Recursion ends when we reach
25d5ea92
VP
23427leaf variable objects, which always have built-in types. Child variable
23428objects are created only by explicit request, so if a frontend
23429is not interested in the children of a particular variable object, no
23430child will be created.
c8b2f53c
VP
23431
23432For a leaf variable object it is possible to obtain its value as a
23433string, or set the value from a string. String value can be also
23434obtained for a non-leaf variable object, but it's generally a string
23435that only indicates the type of the object, and does not list its
23436contents. Assignment to a non-leaf variable object is not allowed.
23437
23438A frontend does not need to read the values of all variable objects each time
23439the program stops. Instead, MI provides an update command that lists all
23440variable objects whose values has changed since the last update
23441operation. This considerably reduces the amount of data that must
25d5ea92
VP
23442be transferred to the frontend. As noted above, children variable
23443objects are created on demand, and only leaf variable objects have a
23444real value. As result, gdb will read target memory only for leaf
23445variables that frontend has created.
23446
23447The automatic update is not always desirable. For example, a frontend
23448might want to keep a value of some expression for future reference,
23449and never update it. For another example, fetching memory is
23450relatively slow for embedded targets, so a frontend might want
23451to disable automatic update for the variables that are either not
23452visible on the screen, or ``closed''. This is possible using so
23453called ``frozen variable objects''. Such variable objects are never
23454implicitly updated.
922fbb7b 23455
c3b108f7
VP
23456Variable objects can be either @dfn{fixed} or @dfn{floating}. For the
23457fixed variable object, the expression is parsed when the variable
23458object is created, including associating identifiers to specific
23459variables. The meaning of expression never changes. For a floating
23460variable object the values of variables whose names appear in the
23461expressions are re-evaluated every time in the context of the current
23462frame. Consider this example:
23463
23464@smallexample
23465void do_work(...)
23466@{
23467 struct work_state state;
23468
23469 if (...)
23470 do_work(...);
23471@}
23472@end smallexample
23473
23474If a fixed variable object for the @code{state} variable is created in
23475this function, and we enter the recursive call, the the variable
23476object will report the value of @code{state} in the top-level
23477@code{do_work} invocation. On the other hand, a floating variable
23478object will report the value of @code{state} in the current frame.
23479
23480If an expression specified when creating a fixed variable object
23481refers to a local variable, the variable object becomes bound to the
23482thread and frame in which the variable object is created. When such
23483variable object is updated, @value{GDBN} makes sure that the
23484thread/frame combination the variable object is bound to still exists,
23485and re-evaluates the variable object in context of that thread/frame.
23486
a2c02241
NR
23487The following is the complete set of @sc{gdb/mi} operations defined to
23488access this functionality:
922fbb7b 23489
a2c02241
NR
23490@multitable @columnfractions .4 .6
23491@item @strong{Operation}
23492@tab @strong{Description}
922fbb7b 23493
0cc7d26f
TT
23494@item @code{-enable-pretty-printing}
23495@tab enable Python-based pretty-printing
a2c02241
NR
23496@item @code{-var-create}
23497@tab create a variable object
23498@item @code{-var-delete}
22d8a470 23499@tab delete the variable object and/or its children
a2c02241
NR
23500@item @code{-var-set-format}
23501@tab set the display format of this variable
23502@item @code{-var-show-format}
23503@tab show the display format of this variable
23504@item @code{-var-info-num-children}
23505@tab tells how many children this object has
23506@item @code{-var-list-children}
23507@tab return a list of the object's children
23508@item @code{-var-info-type}
23509@tab show the type of this variable object
23510@item @code{-var-info-expression}
02142340
VP
23511@tab print parent-relative expression that this variable object represents
23512@item @code{-var-info-path-expression}
23513@tab print full expression that this variable object represents
a2c02241
NR
23514@item @code{-var-show-attributes}
23515@tab is this variable editable? does it exist here?
23516@item @code{-var-evaluate-expression}
23517@tab get the value of this variable
23518@item @code{-var-assign}
23519@tab set the value of this variable
23520@item @code{-var-update}
23521@tab update the variable and its children
25d5ea92
VP
23522@item @code{-var-set-frozen}
23523@tab set frozeness attribute
0cc7d26f
TT
23524@item @code{-var-set-update-range}
23525@tab set range of children to display on update
a2c02241 23526@end multitable
922fbb7b 23527
a2c02241
NR
23528In the next subsection we describe each operation in detail and suggest
23529how it can be used.
922fbb7b 23530
a2c02241 23531@subheading Description And Use of Operations on Variable Objects
922fbb7b 23532
0cc7d26f
TT
23533@subheading The @code{-enable-pretty-printing} Command
23534@findex -enable-pretty-printing
23535
23536@smallexample
23537-enable-pretty-printing
23538@end smallexample
23539
23540@value{GDBN} allows Python-based visualizers to affect the output of the
23541MI variable object commands. However, because there was no way to
23542implement this in a fully backward-compatible way, a front end must
23543request that this functionality be enabled.
23544
23545Once enabled, this feature cannot be disabled.
23546
23547Note that if Python support has not been compiled into @value{GDBN},
23548this command will still succeed (and do nothing).
23549
a2c02241
NR
23550@subheading The @code{-var-create} Command
23551@findex -var-create
ef21caaf 23552
a2c02241 23553@subsubheading Synopsis
ef21caaf 23554
a2c02241
NR
23555@smallexample
23556 -var-create @{@var{name} | "-"@}
c3b108f7 23557 @{@var{frame-addr} | "*" | "@@"@} @var{expression}
a2c02241
NR
23558@end smallexample
23559
23560This operation creates a variable object, which allows the monitoring of
23561a variable, the result of an expression, a memory cell or a CPU
23562register.
ef21caaf 23563
a2c02241
NR
23564The @var{name} parameter is the string by which the object can be
23565referenced. It must be unique. If @samp{-} is specified, the varobj
23566system will generate a string ``varNNNNNN'' automatically. It will be
c3b108f7 23567unique provided that one does not specify @var{name} of that format.
a2c02241 23568The command fails if a duplicate name is found.
ef21caaf 23569
a2c02241
NR
23570The frame under which the expression should be evaluated can be
23571specified by @var{frame-addr}. A @samp{*} indicates that the current
c3b108f7
VP
23572frame should be used. A @samp{@@} indicates that a floating variable
23573object must be created.
922fbb7b 23574
a2c02241
NR
23575@var{expression} is any expression valid on the current language set (must not
23576begin with a @samp{*}), or one of the following:
922fbb7b 23577
a2c02241
NR
23578@itemize @bullet
23579@item
23580@samp{*@var{addr}}, where @var{addr} is the address of a memory cell
922fbb7b 23581
a2c02241
NR
23582@item
23583@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
922fbb7b 23584
a2c02241
NR
23585@item
23586@samp{$@var{regname}} --- a CPU register name
23587@end itemize
922fbb7b 23588
0cc7d26f
TT
23589@cindex dynamic varobj
23590A varobj's contents may be provided by a Python-based pretty-printer. In this
23591case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs
23592have slightly different semantics in some cases. If the
23593@code{-enable-pretty-printing} command is not sent, then @value{GDBN}
23594will never create a dynamic varobj. This ensures backward
23595compatibility for existing clients.
23596
a2c02241 23597@subsubheading Result
922fbb7b 23598
0cc7d26f
TT
23599This operation returns attributes of the newly-created varobj. These
23600are:
23601
23602@table @samp
23603@item name
23604The name of the varobj.
23605
23606@item numchild
23607The number of children of the varobj. This number is not necessarily
23608reliable for a dynamic varobj. Instead, you must examine the
23609@samp{has_more} attribute.
23610
23611@item value
23612The varobj's scalar value. For a varobj whose type is some sort of
23613aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value
23614will not be interesting.
23615
23616@item type
23617The varobj's type. This is a string representation of the type, as
23618would be printed by the @value{GDBN} CLI.
23619
23620@item thread-id
23621If a variable object is bound to a specific thread, then this is the
23622thread's identifier.
23623
23624@item has_more
23625For a dynamic varobj, this indicates whether there appear to be any
23626children available. For a non-dynamic varobj, this will be 0.
23627
23628@item dynamic
23629This attribute will be present and have the value @samp{1} if the
23630varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
23631then this attribute will not be present.
23632
23633@item displayhint
23634A dynamic varobj can supply a display hint to the front end. The
23635value comes directly from the Python pretty-printer object's
23636@code{display_hint} method. @xref{Pretty Printing}.
23637@end table
23638
23639Typical output will look like this:
922fbb7b
AC
23640
23641@smallexample
0cc7d26f
TT
23642 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}",
23643 has_more="@var{has_more}"
dcaaae04
NR
23644@end smallexample
23645
a2c02241
NR
23646
23647@subheading The @code{-var-delete} Command
23648@findex -var-delete
922fbb7b
AC
23649
23650@subsubheading Synopsis
23651
23652@smallexample
22d8a470 23653 -var-delete [ -c ] @var{name}
922fbb7b
AC
23654@end smallexample
23655
a2c02241 23656Deletes a previously created variable object and all of its children.
22d8a470 23657With the @samp{-c} option, just deletes the children.
922fbb7b 23658
a2c02241 23659Returns an error if the object @var{name} is not found.
922fbb7b 23660
922fbb7b 23661
a2c02241
NR
23662@subheading The @code{-var-set-format} Command
23663@findex -var-set-format
922fbb7b 23664
a2c02241 23665@subsubheading Synopsis
922fbb7b
AC
23666
23667@smallexample
a2c02241 23668 -var-set-format @var{name} @var{format-spec}
922fbb7b
AC
23669@end smallexample
23670
a2c02241
NR
23671Sets the output format for the value of the object @var{name} to be
23672@var{format-spec}.
23673
de051565 23674@anchor{-var-set-format}
a2c02241
NR
23675The syntax for the @var{format-spec} is as follows:
23676
23677@smallexample
23678 @var{format-spec} @expansion{}
23679 @{binary | decimal | hexadecimal | octal | natural@}
23680@end smallexample
23681
c8b2f53c
VP
23682The natural format is the default format choosen automatically
23683based on the variable type (like decimal for an @code{int}, hex
23684for pointers, etc.).
23685
23686For a variable with children, the format is set only on the
23687variable itself, and the children are not affected.
a2c02241
NR
23688
23689@subheading The @code{-var-show-format} Command
23690@findex -var-show-format
922fbb7b
AC
23691
23692@subsubheading Synopsis
23693
23694@smallexample
a2c02241 23695 -var-show-format @var{name}
922fbb7b
AC
23696@end smallexample
23697
a2c02241 23698Returns the format used to display the value of the object @var{name}.
922fbb7b 23699
a2c02241
NR
23700@smallexample
23701 @var{format} @expansion{}
23702 @var{format-spec}
23703@end smallexample
922fbb7b 23704
922fbb7b 23705
a2c02241
NR
23706@subheading The @code{-var-info-num-children} Command
23707@findex -var-info-num-children
23708
23709@subsubheading Synopsis
23710
23711@smallexample
23712 -var-info-num-children @var{name}
23713@end smallexample
23714
23715Returns the number of children of a variable object @var{name}:
23716
23717@smallexample
23718 numchild=@var{n}
23719@end smallexample
23720
0cc7d26f
TT
23721Note that this number is not completely reliable for a dynamic varobj.
23722It will return the current number of children, but more children may
23723be available.
23724
a2c02241
NR
23725
23726@subheading The @code{-var-list-children} Command
23727@findex -var-list-children
23728
23729@subsubheading Synopsis
23730
23731@smallexample
0cc7d26f 23732 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}]
a2c02241 23733@end smallexample
b569d230 23734@anchor{-var-list-children}
a2c02241
NR
23735
23736Return a list of the children of the specified variable object and
23737create variable objects for them, if they do not already exist. With
23738a single argument or if @var{print-values} has a value for of 0 or
23739@code{--no-values}, print only the names of the variables; if
23740@var{print-values} is 1 or @code{--all-values}, also print their
23741values; and if it is 2 or @code{--simple-values} print the name and
23742value for simple data types and just the name for arrays, structures
23743and unions.
922fbb7b 23744
0cc7d26f
TT
23745@var{from} and @var{to}, if specified, indicate the range of children
23746to report. If @var{from} or @var{to} is less than zero, the range is
23747reset and all children will be reported. Otherwise, children starting
23748at @var{from} (zero-based) and up to and excluding @var{to} will be
23749reported.
23750
23751If a child range is requested, it will only affect the current call to
23752@code{-var-list-children}, but not future calls to @code{-var-update}.
23753For this, you must instead use @code{-var-set-update-range}. The
23754intent of this approach is to enable a front end to implement any
23755update approach it likes; for example, scrolling a view may cause the
23756front end to request more children with @code{-var-list-children}, and
23757then the front end could call @code{-var-set-update-range} with a
23758different range to ensure that future updates are restricted to just
23759the visible items.
23760
b569d230
EZ
23761For each child the following results are returned:
23762
23763@table @var
23764
23765@item name
23766Name of the variable object created for this child.
23767
23768@item exp
23769The expression to be shown to the user by the front end to designate this child.
23770For example this may be the name of a structure member.
23771
0cc7d26f
TT
23772For a dynamic varobj, this value cannot be used to form an
23773expression. There is no way to do this at all with a dynamic varobj.
23774
b569d230
EZ
23775For C/C@t{++} structures there are several pseudo children returned to
23776designate access qualifiers. For these pseudo children @var{exp} is
23777@samp{public}, @samp{private}, or @samp{protected}. In this case the
23778type and value are not present.
23779
0cc7d26f
TT
23780A dynamic varobj will not report the access qualifying
23781pseudo-children, regardless of the language. This information is not
23782available at all with a dynamic varobj.
23783
b569d230 23784@item numchild
0cc7d26f
TT
23785Number of children this child has. For a dynamic varobj, this will be
237860.
b569d230
EZ
23787
23788@item type
23789The type of the child.
23790
23791@item value
23792If values were requested, this is the value.
23793
23794@item thread-id
23795If this variable object is associated with a thread, this is the thread id.
23796Otherwise this result is not present.
23797
23798@item frozen
23799If the variable object is frozen, this variable will be present with a value of 1.
23800@end table
23801
0cc7d26f
TT
23802The result may have its own attributes:
23803
23804@table @samp
23805@item displayhint
23806A dynamic varobj can supply a display hint to the front end. The
23807value comes directly from the Python pretty-printer object's
23808@code{display_hint} method. @xref{Pretty Printing}.
23809
23810@item has_more
23811This is an integer attribute which is nonzero if there are children
23812remaining after the end of the selected range.
23813@end table
23814
922fbb7b
AC
23815@subsubheading Example
23816
23817@smallexample
594fe323 23818(gdb)
a2c02241 23819 -var-list-children n
b569d230 23820 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 23821 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
594fe323 23822(gdb)
a2c02241 23823 -var-list-children --all-values n
b569d230 23824 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 23825 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
922fbb7b
AC
23826@end smallexample
23827
922fbb7b 23828
a2c02241
NR
23829@subheading The @code{-var-info-type} Command
23830@findex -var-info-type
922fbb7b 23831
a2c02241
NR
23832@subsubheading Synopsis
23833
23834@smallexample
23835 -var-info-type @var{name}
23836@end smallexample
23837
23838Returns the type of the specified variable @var{name}. The type is
23839returned as a string in the same format as it is output by the
23840@value{GDBN} CLI:
23841
23842@smallexample
23843 type=@var{typename}
23844@end smallexample
23845
23846
23847@subheading The @code{-var-info-expression} Command
23848@findex -var-info-expression
922fbb7b
AC
23849
23850@subsubheading Synopsis
23851
23852@smallexample
a2c02241 23853 -var-info-expression @var{name}
922fbb7b
AC
23854@end smallexample
23855
02142340
VP
23856Returns a string that is suitable for presenting this
23857variable object in user interface. The string is generally
23858not valid expression in the current language, and cannot be evaluated.
23859
23860For example, if @code{a} is an array, and variable object
23861@code{A} was created for @code{a}, then we'll get this output:
922fbb7b 23862
a2c02241 23863@smallexample
02142340
VP
23864(gdb) -var-info-expression A.1
23865^done,lang="C",exp="1"
a2c02241 23866@end smallexample
922fbb7b 23867
a2c02241 23868@noindent
02142340
VP
23869Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}.
23870
23871Note that the output of the @code{-var-list-children} command also
23872includes those expressions, so the @code{-var-info-expression} command
23873is of limited use.
23874
23875@subheading The @code{-var-info-path-expression} Command
23876@findex -var-info-path-expression
23877
23878@subsubheading Synopsis
23879
23880@smallexample
23881 -var-info-path-expression @var{name}
23882@end smallexample
23883
23884Returns an expression that can be evaluated in the current
23885context and will yield the same value that a variable object has.
23886Compare this with the @code{-var-info-expression} command, which
23887result can be used only for UI presentation. Typical use of
23888the @code{-var-info-path-expression} command is creating a
23889watchpoint from a variable object.
23890
0cc7d26f
TT
23891This command is currently not valid for children of a dynamic varobj,
23892and will give an error when invoked on one.
23893
02142340
VP
23894For example, suppose @code{C} is a C@t{++} class, derived from class
23895@code{Base}, and that the @code{Base} class has a member called
23896@code{m_size}. Assume a variable @code{c} is has the type of
23897@code{C} and a variable object @code{C} was created for variable
23898@code{c}. Then, we'll get this output:
23899@smallexample
23900(gdb) -var-info-path-expression C.Base.public.m_size
23901^done,path_expr=((Base)c).m_size)
23902@end smallexample
922fbb7b 23903
a2c02241
NR
23904@subheading The @code{-var-show-attributes} Command
23905@findex -var-show-attributes
922fbb7b 23906
a2c02241 23907@subsubheading Synopsis
922fbb7b 23908
a2c02241
NR
23909@smallexample
23910 -var-show-attributes @var{name}
23911@end smallexample
922fbb7b 23912
a2c02241 23913List attributes of the specified variable object @var{name}:
922fbb7b
AC
23914
23915@smallexample
a2c02241 23916 status=@var{attr} [ ( ,@var{attr} )* ]
922fbb7b
AC
23917@end smallexample
23918
a2c02241
NR
23919@noindent
23920where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
23921
23922@subheading The @code{-var-evaluate-expression} Command
23923@findex -var-evaluate-expression
23924
23925@subsubheading Synopsis
23926
23927@smallexample
de051565 23928 -var-evaluate-expression [-f @var{format-spec}] @var{name}
a2c02241
NR
23929@end smallexample
23930
23931Evaluates the expression that is represented by the specified variable
de051565
MK
23932object and returns its value as a string. The format of the string
23933can be specified with the @samp{-f} option. The possible values of
23934this option are the same as for @code{-var-set-format}
23935(@pxref{-var-set-format}). If the @samp{-f} option is not specified,
23936the current display format will be used. The current display format
23937can be changed using the @code{-var-set-format} command.
a2c02241
NR
23938
23939@smallexample
23940 value=@var{value}
23941@end smallexample
23942
23943Note that one must invoke @code{-var-list-children} for a variable
23944before the value of a child variable can be evaluated.
23945
23946@subheading The @code{-var-assign} Command
23947@findex -var-assign
23948
23949@subsubheading Synopsis
23950
23951@smallexample
23952 -var-assign @var{name} @var{expression}
23953@end smallexample
23954
23955Assigns the value of @var{expression} to the variable object specified
23956by @var{name}. The object must be @samp{editable}. If the variable's
23957value is altered by the assign, the variable will show up in any
23958subsequent @code{-var-update} list.
23959
23960@subsubheading Example
922fbb7b
AC
23961
23962@smallexample
594fe323 23963(gdb)
a2c02241
NR
23964-var-assign var1 3
23965^done,value="3"
594fe323 23966(gdb)
a2c02241
NR
23967-var-update *
23968^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
594fe323 23969(gdb)
922fbb7b
AC
23970@end smallexample
23971
a2c02241
NR
23972@subheading The @code{-var-update} Command
23973@findex -var-update
23974
23975@subsubheading Synopsis
23976
23977@smallexample
23978 -var-update [@var{print-values}] @{@var{name} | "*"@}
23979@end smallexample
23980
c8b2f53c
VP
23981Reevaluate the expressions corresponding to the variable object
23982@var{name} and all its direct and indirect children, and return the
36ece8b3
NR
23983list of variable objects whose values have changed; @var{name} must
23984be a root variable object. Here, ``changed'' means that the result of
23985@code{-var-evaluate-expression} before and after the
23986@code{-var-update} is different. If @samp{*} is used as the variable
9f708cb2
VP
23987object names, all existing variable objects are updated, except
23988for frozen ones (@pxref{-var-set-frozen}). The option
36ece8b3 23989@var{print-values} determines whether both names and values, or just
de051565 23990names are printed. The possible values of this option are the same
36ece8b3
NR
23991as for @code{-var-list-children} (@pxref{-var-list-children}). It is
23992recommended to use the @samp{--all-values} option, to reduce the
23993number of MI commands needed on each program stop.
c8b2f53c 23994
c3b108f7
VP
23995With the @samp{*} parameter, if a variable object is bound to a
23996currently running thread, it will not be updated, without any
23997diagnostic.
a2c02241 23998
0cc7d26f
TT
23999If @code{-var-set-update-range} was previously used on a varobj, then
24000only the selected range of children will be reported.
922fbb7b 24001
0cc7d26f
TT
24002@code{-var-update} reports all the changed varobjs in a tuple named
24003@samp{changelist}.
24004
24005Each item in the change list is itself a tuple holding:
24006
24007@table @samp
24008@item name
24009The name of the varobj.
24010
24011@item value
24012If values were requested for this update, then this field will be
24013present and will hold the value of the varobj.
922fbb7b 24014
0cc7d26f 24015@item in_scope
9f708cb2 24016@anchor{-var-update}
0cc7d26f 24017This field is a string which may take one of three values:
36ece8b3
NR
24018
24019@table @code
24020@item "true"
24021The variable object's current value is valid.
24022
24023@item "false"
24024The variable object does not currently hold a valid value but it may
24025hold one in the future if its associated expression comes back into
24026scope.
24027
24028@item "invalid"
24029The variable object no longer holds a valid value.
24030This can occur when the executable file being debugged has changed,
24031either through recompilation or by using the @value{GDBN} @code{file}
24032command. The front end should normally choose to delete these variable
24033objects.
24034@end table
24035
24036In the future new values may be added to this list so the front should
24037be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}.
24038
0cc7d26f
TT
24039@item type_changed
24040This is only present if the varobj is still valid. If the type
24041changed, then this will be the string @samp{true}; otherwise it will
24042be @samp{false}.
24043
24044@item new_type
24045If the varobj's type changed, then this field will be present and will
24046hold the new type.
24047
24048@item new_num_children
24049For a dynamic varobj, if the number of children changed, or if the
24050type changed, this will be the new number of children.
24051
24052The @samp{numchild} field in other varobj responses is generally not
24053valid for a dynamic varobj -- it will show the number of children that
24054@value{GDBN} knows about, but because dynamic varobjs lazily
24055instantiate their children, this will not reflect the number of
24056children which may be available.
24057
24058The @samp{new_num_children} attribute only reports changes to the
24059number of children known by @value{GDBN}. This is the only way to
24060detect whether an update has removed children (which necessarily can
24061only happen at the end of the update range).
24062
24063@item displayhint
24064The display hint, if any.
24065
24066@item has_more
24067This is an integer value, which will be 1 if there are more children
24068available outside the varobj's update range.
24069
24070@item dynamic
24071This attribute will be present and have the value @samp{1} if the
24072varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
24073then this attribute will not be present.
24074
24075@item new_children
24076If new children were added to a dynamic varobj within the selected
24077update range (as set by @code{-var-set-update-range}), then they will
24078be listed in this attribute.
24079@end table
24080
24081@subsubheading Example
24082
24083@smallexample
24084(gdb)
24085-var-assign var1 3
24086^done,value="3"
24087(gdb)
24088-var-update --all-values var1
24089^done,changelist=[@{name="var1",value="3",in_scope="true",
24090type_changed="false"@}]
24091(gdb)
24092@end smallexample
24093
25d5ea92
VP
24094@subheading The @code{-var-set-frozen} Command
24095@findex -var-set-frozen
9f708cb2 24096@anchor{-var-set-frozen}
25d5ea92
VP
24097
24098@subsubheading Synopsis
24099
24100@smallexample
9f708cb2 24101 -var-set-frozen @var{name} @var{flag}
25d5ea92
VP
24102@end smallexample
24103
9f708cb2 24104Set the frozenness flag on the variable object @var{name}. The
25d5ea92 24105@var{flag} parameter should be either @samp{1} to make the variable
9f708cb2 24106frozen or @samp{0} to make it unfrozen. If a variable object is
25d5ea92 24107frozen, then neither itself, nor any of its children, are
9f708cb2 24108implicitly updated by @code{-var-update} of
25d5ea92
VP
24109a parent variable or by @code{-var-update *}. Only
24110@code{-var-update} of the variable itself will update its value and
24111values of its children. After a variable object is unfrozen, it is
24112implicitly updated by all subsequent @code{-var-update} operations.
24113Unfreezing a variable does not update it, only subsequent
24114@code{-var-update} does.
24115
24116@subsubheading Example
24117
24118@smallexample
24119(gdb)
24120-var-set-frozen V 1
24121^done
24122(gdb)
24123@end smallexample
24124
0cc7d26f
TT
24125@subheading The @code{-var-set-update-range} command
24126@findex -var-set-update-range
24127@anchor{-var-set-update-range}
24128
24129@subsubheading Synopsis
24130
24131@smallexample
24132 -var-set-update-range @var{name} @var{from} @var{to}
24133@end smallexample
24134
24135Set the range of children to be returned by future invocations of
24136@code{-var-update}.
24137
24138@var{from} and @var{to} indicate the range of children to report. If
24139@var{from} or @var{to} is less than zero, the range is reset and all
24140children will be reported. Otherwise, children starting at @var{from}
24141(zero-based) and up to and excluding @var{to} will be reported.
24142
24143@subsubheading Example
24144
24145@smallexample
24146(gdb)
24147-var-set-update-range V 1 2
24148^done
24149@end smallexample
24150
b6313243
TT
24151@subheading The @code{-var-set-visualizer} command
24152@findex -var-set-visualizer
24153@anchor{-var-set-visualizer}
24154
24155@subsubheading Synopsis
24156
24157@smallexample
24158 -var-set-visualizer @var{name} @var{visualizer}
24159@end smallexample
24160
24161Set a visualizer for the variable object @var{name}.
24162
24163@var{visualizer} is the visualizer to use. The special value
24164@samp{None} means to disable any visualizer in use.
24165
24166If not @samp{None}, @var{visualizer} must be a Python expression.
24167This expression must evaluate to a callable object which accepts a
24168single argument. @value{GDBN} will call this object with the value of
24169the varobj @var{name} as an argument (this is done so that the same
24170Python pretty-printing code can be used for both the CLI and MI).
24171When called, this object must return an object which conforms to the
24172pretty-printing interface (@pxref{Pretty Printing}).
24173
24174The pre-defined function @code{gdb.default_visualizer} may be used to
24175select a visualizer by following the built-in process
24176(@pxref{Selecting Pretty-Printers}). This is done automatically when
24177a varobj is created, and so ordinarily is not needed.
24178
24179This feature is only available if Python support is enabled. The MI
24180command @code{-list-features} (@pxref{GDB/MI Miscellaneous Commands})
24181can be used to check this.
24182
24183@subsubheading Example
24184
24185Resetting the visualizer:
24186
24187@smallexample
24188(gdb)
24189-var-set-visualizer V None
24190^done
24191@end smallexample
24192
24193Reselecting the default (type-based) visualizer:
24194
24195@smallexample
24196(gdb)
24197-var-set-visualizer V gdb.default_visualizer
24198^done
24199@end smallexample
24200
24201Suppose @code{SomeClass} is a visualizer class. A lambda expression
24202can be used to instantiate this class for a varobj:
24203
24204@smallexample
24205(gdb)
24206-var-set-visualizer V "lambda val: SomeClass()"
24207^done
24208@end smallexample
25d5ea92 24209
a2c02241
NR
24210@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
24211@node GDB/MI Data Manipulation
24212@section @sc{gdb/mi} Data Manipulation
922fbb7b 24213
a2c02241
NR
24214@cindex data manipulation, in @sc{gdb/mi}
24215@cindex @sc{gdb/mi}, data manipulation
24216This section describes the @sc{gdb/mi} commands that manipulate data:
24217examine memory and registers, evaluate expressions, etc.
24218
24219@c REMOVED FROM THE INTERFACE.
24220@c @subheading -data-assign
24221@c Change the value of a program variable. Plenty of side effects.
79a6e687 24222@c @subsubheading GDB Command
a2c02241
NR
24223@c set variable
24224@c @subsubheading Example
24225@c N.A.
24226
24227@subheading The @code{-data-disassemble} Command
24228@findex -data-disassemble
922fbb7b
AC
24229
24230@subsubheading Synopsis
24231
24232@smallexample
a2c02241
NR
24233 -data-disassemble
24234 [ -s @var{start-addr} -e @var{end-addr} ]
24235 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
24236 -- @var{mode}
922fbb7b
AC
24237@end smallexample
24238
a2c02241
NR
24239@noindent
24240Where:
24241
24242@table @samp
24243@item @var{start-addr}
24244is the beginning address (or @code{$pc})
24245@item @var{end-addr}
24246is the end address
24247@item @var{filename}
24248is the name of the file to disassemble
24249@item @var{linenum}
24250is the line number to disassemble around
24251@item @var{lines}
d3e8051b 24252is the number of disassembly lines to be produced. If it is -1,
a2c02241
NR
24253the whole function will be disassembled, in case no @var{end-addr} is
24254specified. If @var{end-addr} is specified as a non-zero value, and
24255@var{lines} is lower than the number of disassembly lines between
24256@var{start-addr} and @var{end-addr}, only @var{lines} lines are
24257displayed; if @var{lines} is higher than the number of lines between
24258@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
24259are displayed.
24260@item @var{mode}
24261is either 0 (meaning only disassembly) or 1 (meaning mixed source and
24262disassembly).
24263@end table
24264
24265@subsubheading Result
24266
24267The output for each instruction is composed of four fields:
24268
24269@itemize @bullet
24270@item Address
24271@item Func-name
24272@item Offset
24273@item Instruction
24274@end itemize
24275
24276Note that whatever included in the instruction field, is not manipulated
d3e8051b 24277directly by @sc{gdb/mi}, i.e., it is not possible to adjust its format.
922fbb7b
AC
24278
24279@subsubheading @value{GDBN} Command
24280
a2c02241 24281There's no direct mapping from this command to the CLI.
922fbb7b
AC
24282
24283@subsubheading Example
24284
a2c02241
NR
24285Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
24286
922fbb7b 24287@smallexample
594fe323 24288(gdb)
a2c02241
NR
24289-data-disassemble -s $pc -e "$pc + 20" -- 0
24290^done,
24291asm_insns=[
24292@{address="0x000107c0",func-name="main",offset="4",
24293inst="mov 2, %o0"@},
24294@{address="0x000107c4",func-name="main",offset="8",
24295inst="sethi %hi(0x11800), %o2"@},
24296@{address="0x000107c8",func-name="main",offset="12",
24297inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
24298@{address="0x000107cc",func-name="main",offset="16",
24299inst="sethi %hi(0x11800), %o2"@},
24300@{address="0x000107d0",func-name="main",offset="20",
24301inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
594fe323 24302(gdb)
a2c02241
NR
24303@end smallexample
24304
24305Disassemble the whole @code{main} function. Line 32 is part of
24306@code{main}.
24307
24308@smallexample
24309-data-disassemble -f basics.c -l 32 -- 0
24310^done,asm_insns=[
24311@{address="0x000107bc",func-name="main",offset="0",
24312inst="save %sp, -112, %sp"@},
24313@{address="0x000107c0",func-name="main",offset="4",
24314inst="mov 2, %o0"@},
24315@{address="0x000107c4",func-name="main",offset="8",
24316inst="sethi %hi(0x11800), %o2"@},
24317[@dots{}]
24318@{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
24319@{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
594fe323 24320(gdb)
922fbb7b
AC
24321@end smallexample
24322
a2c02241 24323Disassemble 3 instructions from the start of @code{main}:
922fbb7b 24324
a2c02241 24325@smallexample
594fe323 24326(gdb)
a2c02241
NR
24327-data-disassemble -f basics.c -l 32 -n 3 -- 0
24328^done,asm_insns=[
24329@{address="0x000107bc",func-name="main",offset="0",
24330inst="save %sp, -112, %sp"@},
24331@{address="0x000107c0",func-name="main",offset="4",
24332inst="mov 2, %o0"@},
24333@{address="0x000107c4",func-name="main",offset="8",
24334inst="sethi %hi(0x11800), %o2"@}]
594fe323 24335(gdb)
a2c02241
NR
24336@end smallexample
24337
24338Disassemble 3 instructions from the start of @code{main} in mixed mode:
24339
24340@smallexample
594fe323 24341(gdb)
a2c02241
NR
24342-data-disassemble -f basics.c -l 32 -n 3 -- 1
24343^done,asm_insns=[
24344src_and_asm_line=@{line="31",
24345file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
24346 testsuite/gdb.mi/basics.c",line_asm_insn=[
24347@{address="0x000107bc",func-name="main",offset="0",
24348inst="save %sp, -112, %sp"@}]@},
24349src_and_asm_line=@{line="32",
24350file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
24351 testsuite/gdb.mi/basics.c",line_asm_insn=[
24352@{address="0x000107c0",func-name="main",offset="4",
24353inst="mov 2, %o0"@},
24354@{address="0x000107c4",func-name="main",offset="8",
24355inst="sethi %hi(0x11800), %o2"@}]@}]
594fe323 24356(gdb)
a2c02241
NR
24357@end smallexample
24358
24359
24360@subheading The @code{-data-evaluate-expression} Command
24361@findex -data-evaluate-expression
922fbb7b
AC
24362
24363@subsubheading Synopsis
24364
24365@smallexample
a2c02241 24366 -data-evaluate-expression @var{expr}
922fbb7b
AC
24367@end smallexample
24368
a2c02241
NR
24369Evaluate @var{expr} as an expression. The expression could contain an
24370inferior function call. The function call will execute synchronously.
24371If the expression contains spaces, it must be enclosed in double quotes.
922fbb7b
AC
24372
24373@subsubheading @value{GDBN} Command
24374
a2c02241
NR
24375The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
24376@samp{call}. In @code{gdbtk} only, there's a corresponding
24377@samp{gdb_eval} command.
922fbb7b
AC
24378
24379@subsubheading Example
24380
a2c02241
NR
24381In the following example, the numbers that precede the commands are the
24382@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
24383Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
24384output.
24385
922fbb7b 24386@smallexample
a2c02241
NR
24387211-data-evaluate-expression A
24388211^done,value="1"
594fe323 24389(gdb)
a2c02241
NR
24390311-data-evaluate-expression &A
24391311^done,value="0xefffeb7c"
594fe323 24392(gdb)
a2c02241
NR
24393411-data-evaluate-expression A+3
24394411^done,value="4"
594fe323 24395(gdb)
a2c02241
NR
24396511-data-evaluate-expression "A + 3"
24397511^done,value="4"
594fe323 24398(gdb)
a2c02241 24399@end smallexample
922fbb7b
AC
24400
24401
a2c02241
NR
24402@subheading The @code{-data-list-changed-registers} Command
24403@findex -data-list-changed-registers
922fbb7b
AC
24404
24405@subsubheading Synopsis
24406
24407@smallexample
a2c02241 24408 -data-list-changed-registers
922fbb7b
AC
24409@end smallexample
24410
a2c02241 24411Display a list of the registers that have changed.
922fbb7b
AC
24412
24413@subsubheading @value{GDBN} Command
24414
a2c02241
NR
24415@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
24416has the corresponding command @samp{gdb_changed_register_list}.
922fbb7b
AC
24417
24418@subsubheading Example
922fbb7b 24419
a2c02241 24420On a PPC MBX board:
922fbb7b
AC
24421
24422@smallexample
594fe323 24423(gdb)
a2c02241
NR
24424-exec-continue
24425^running
922fbb7b 24426
594fe323 24427(gdb)
a47ec5fe
AR
24428*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{
24429func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
24430line="5"@}
594fe323 24431(gdb)
a2c02241
NR
24432-data-list-changed-registers
24433^done,changed-registers=["0","1","2","4","5","6","7","8","9",
24434"10","11","13","14","15","16","17","18","19","20","21","22","23",
24435"24","25","26","27","28","30","31","64","65","66","67","69"]
594fe323 24436(gdb)
a2c02241 24437@end smallexample
922fbb7b
AC
24438
24439
a2c02241
NR
24440@subheading The @code{-data-list-register-names} Command
24441@findex -data-list-register-names
922fbb7b
AC
24442
24443@subsubheading Synopsis
24444
24445@smallexample
a2c02241 24446 -data-list-register-names [ ( @var{regno} )+ ]
922fbb7b
AC
24447@end smallexample
24448
a2c02241
NR
24449Show a list of register names for the current target. If no arguments
24450are given, it shows a list of the names of all the registers. If
24451integer numbers are given as arguments, it will print a list of the
24452names of the registers corresponding to the arguments. To ensure
24453consistency between a register name and its number, the output list may
24454include empty register names.
922fbb7b
AC
24455
24456@subsubheading @value{GDBN} Command
24457
a2c02241
NR
24458@value{GDBN} does not have a command which corresponds to
24459@samp{-data-list-register-names}. In @code{gdbtk} there is a
24460corresponding command @samp{gdb_regnames}.
922fbb7b
AC
24461
24462@subsubheading Example
922fbb7b 24463
a2c02241
NR
24464For the PPC MBX board:
24465@smallexample
594fe323 24466(gdb)
a2c02241
NR
24467-data-list-register-names
24468^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
24469"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
24470"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
24471"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
24472"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
24473"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
24474"", "pc","ps","cr","lr","ctr","xer"]
594fe323 24475(gdb)
a2c02241
NR
24476-data-list-register-names 1 2 3
24477^done,register-names=["r1","r2","r3"]
594fe323 24478(gdb)
a2c02241 24479@end smallexample
922fbb7b 24480
a2c02241
NR
24481@subheading The @code{-data-list-register-values} Command
24482@findex -data-list-register-values
922fbb7b
AC
24483
24484@subsubheading Synopsis
24485
24486@smallexample
a2c02241 24487 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
922fbb7b
AC
24488@end smallexample
24489
a2c02241
NR
24490Display the registers' contents. @var{fmt} is the format according to
24491which the registers' contents are to be returned, followed by an optional
24492list of numbers specifying the registers to display. A missing list of
24493numbers indicates that the contents of all the registers must be returned.
24494
24495Allowed formats for @var{fmt} are:
24496
24497@table @code
24498@item x
24499Hexadecimal
24500@item o
24501Octal
24502@item t
24503Binary
24504@item d
24505Decimal
24506@item r
24507Raw
24508@item N
24509Natural
24510@end table
922fbb7b
AC
24511
24512@subsubheading @value{GDBN} Command
24513
a2c02241
NR
24514The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
24515all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
922fbb7b
AC
24516
24517@subsubheading Example
922fbb7b 24518
a2c02241
NR
24519For a PPC MBX board (note: line breaks are for readability only, they
24520don't appear in the actual output):
24521
24522@smallexample
594fe323 24523(gdb)
a2c02241
NR
24524-data-list-register-values r 64 65
24525^done,register-values=[@{number="64",value="0xfe00a300"@},
24526@{number="65",value="0x00029002"@}]
594fe323 24527(gdb)
a2c02241
NR
24528-data-list-register-values x
24529^done,register-values=[@{number="0",value="0xfe0043c8"@},
24530@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
24531@{number="3",value="0x0"@},@{number="4",value="0xa"@},
24532@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
24533@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
24534@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
24535@{number="11",value="0x1"@},@{number="12",value="0x0"@},
24536@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
24537@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
24538@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
24539@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
24540@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
24541@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
24542@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
24543@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
24544@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
24545@{number="31",value="0x0"@},@{number="32",value="0x0"@},
24546@{number="33",value="0x0"@},@{number="34",value="0x0"@},
24547@{number="35",value="0x0"@},@{number="36",value="0x0"@},
24548@{number="37",value="0x0"@},@{number="38",value="0x0"@},
24549@{number="39",value="0x0"@},@{number="40",value="0x0"@},
24550@{number="41",value="0x0"@},@{number="42",value="0x0"@},
24551@{number="43",value="0x0"@},@{number="44",value="0x0"@},
24552@{number="45",value="0x0"@},@{number="46",value="0x0"@},
24553@{number="47",value="0x0"@},@{number="48",value="0x0"@},
24554@{number="49",value="0x0"@},@{number="50",value="0x0"@},
24555@{number="51",value="0x0"@},@{number="52",value="0x0"@},
24556@{number="53",value="0x0"@},@{number="54",value="0x0"@},
24557@{number="55",value="0x0"@},@{number="56",value="0x0"@},
24558@{number="57",value="0x0"@},@{number="58",value="0x0"@},
24559@{number="59",value="0x0"@},@{number="60",value="0x0"@},
24560@{number="61",value="0x0"@},@{number="62",value="0x0"@},
24561@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
24562@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
24563@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
24564@{number="69",value="0x20002b03"@}]
594fe323 24565(gdb)
a2c02241 24566@end smallexample
922fbb7b 24567
a2c02241
NR
24568
24569@subheading The @code{-data-read-memory} Command
24570@findex -data-read-memory
922fbb7b
AC
24571
24572@subsubheading Synopsis
24573
24574@smallexample
a2c02241
NR
24575 -data-read-memory [ -o @var{byte-offset} ]
24576 @var{address} @var{word-format} @var{word-size}
24577 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
922fbb7b
AC
24578@end smallexample
24579
a2c02241
NR
24580@noindent
24581where:
922fbb7b 24582
a2c02241
NR
24583@table @samp
24584@item @var{address}
24585An expression specifying the address of the first memory word to be
24586read. Complex expressions containing embedded white space should be
24587quoted using the C convention.
922fbb7b 24588
a2c02241
NR
24589@item @var{word-format}
24590The format to be used to print the memory words. The notation is the
24591same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
79a6e687 24592,Output Formats}).
922fbb7b 24593
a2c02241
NR
24594@item @var{word-size}
24595The size of each memory word in bytes.
922fbb7b 24596
a2c02241
NR
24597@item @var{nr-rows}
24598The number of rows in the output table.
922fbb7b 24599
a2c02241
NR
24600@item @var{nr-cols}
24601The number of columns in the output table.
922fbb7b 24602
a2c02241
NR
24603@item @var{aschar}
24604If present, indicates that each row should include an @sc{ascii} dump. The
24605value of @var{aschar} is used as a padding character when a byte is not a
24606member of the printable @sc{ascii} character set (printable @sc{ascii}
24607characters are those whose code is between 32 and 126, inclusively).
922fbb7b 24608
a2c02241
NR
24609@item @var{byte-offset}
24610An offset to add to the @var{address} before fetching memory.
24611@end table
922fbb7b 24612
a2c02241
NR
24613This command displays memory contents as a table of @var{nr-rows} by
24614@var{nr-cols} words, each word being @var{word-size} bytes. In total,
24615@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
24616(returned as @samp{total-bytes}). Should less than the requested number
24617of bytes be returned by the target, the missing words are identified
24618using @samp{N/A}. The number of bytes read from the target is returned
24619in @samp{nr-bytes} and the starting address used to read memory in
24620@samp{addr}.
24621
24622The address of the next/previous row or page is available in
24623@samp{next-row} and @samp{prev-row}, @samp{next-page} and
24624@samp{prev-page}.
922fbb7b
AC
24625
24626@subsubheading @value{GDBN} Command
24627
a2c02241
NR
24628The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
24629@samp{gdb_get_mem} memory read command.
922fbb7b
AC
24630
24631@subsubheading Example
32e7087d 24632
a2c02241
NR
24633Read six bytes of memory starting at @code{bytes+6} but then offset by
24634@code{-6} bytes. Format as three rows of two columns. One byte per
24635word. Display each word in hex.
32e7087d
JB
24636
24637@smallexample
594fe323 24638(gdb)
a2c02241
NR
246399-data-read-memory -o -6 -- bytes+6 x 1 3 2
246409^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
24641next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
24642prev-page="0x0000138a",memory=[
24643@{addr="0x00001390",data=["0x00","0x01"]@},
24644@{addr="0x00001392",data=["0x02","0x03"]@},
24645@{addr="0x00001394",data=["0x04","0x05"]@}]
594fe323 24646(gdb)
32e7087d
JB
24647@end smallexample
24648
a2c02241
NR
24649Read two bytes of memory starting at address @code{shorts + 64} and
24650display as a single word formatted in decimal.
32e7087d 24651
32e7087d 24652@smallexample
594fe323 24653(gdb)
a2c02241
NR
246545-data-read-memory shorts+64 d 2 1 1
246555^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
24656next-row="0x00001512",prev-row="0x0000150e",
24657next-page="0x00001512",prev-page="0x0000150e",memory=[
24658@{addr="0x00001510",data=["128"]@}]
594fe323 24659(gdb)
32e7087d
JB
24660@end smallexample
24661
a2c02241
NR
24662Read thirty two bytes of memory starting at @code{bytes+16} and format
24663as eight rows of four columns. Include a string encoding with @samp{x}
24664used as the non-printable character.
922fbb7b
AC
24665
24666@smallexample
594fe323 24667(gdb)
a2c02241
NR
246684-data-read-memory bytes+16 x 1 8 4 x
246694^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
24670next-row="0x000013c0",prev-row="0x0000139c",
24671next-page="0x000013c0",prev-page="0x00001380",memory=[
24672@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
24673@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
24674@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
24675@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
24676@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
24677@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
24678@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
24679@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
594fe323 24680(gdb)
922fbb7b
AC
24681@end smallexample
24682
a2c02241
NR
24683@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
24684@node GDB/MI Tracepoint Commands
24685@section @sc{gdb/mi} Tracepoint Commands
922fbb7b 24686
a2c02241 24687The tracepoint commands are not yet implemented.
922fbb7b 24688
a2c02241 24689@c @subheading -trace-actions
922fbb7b 24690
a2c02241 24691@c @subheading -trace-delete
922fbb7b 24692
a2c02241 24693@c @subheading -trace-disable
922fbb7b 24694
a2c02241 24695@c @subheading -trace-dump
922fbb7b 24696
a2c02241 24697@c @subheading -trace-enable
922fbb7b 24698
a2c02241 24699@c @subheading -trace-exists
922fbb7b 24700
a2c02241 24701@c @subheading -trace-find
922fbb7b 24702
a2c02241 24703@c @subheading -trace-frame-number
922fbb7b 24704
a2c02241 24705@c @subheading -trace-info
922fbb7b 24706
a2c02241 24707@c @subheading -trace-insert
922fbb7b 24708
a2c02241 24709@c @subheading -trace-list
922fbb7b 24710
a2c02241 24711@c @subheading -trace-pass-count
922fbb7b 24712
a2c02241 24713@c @subheading -trace-save
922fbb7b 24714
a2c02241 24715@c @subheading -trace-start
922fbb7b 24716
a2c02241 24717@c @subheading -trace-stop
922fbb7b 24718
922fbb7b 24719
a2c02241
NR
24720@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
24721@node GDB/MI Symbol Query
24722@section @sc{gdb/mi} Symbol Query Commands
922fbb7b
AC
24723
24724
9901a55b 24725@ignore
a2c02241
NR
24726@subheading The @code{-symbol-info-address} Command
24727@findex -symbol-info-address
922fbb7b
AC
24728
24729@subsubheading Synopsis
24730
24731@smallexample
a2c02241 24732 -symbol-info-address @var{symbol}
922fbb7b
AC
24733@end smallexample
24734
a2c02241 24735Describe where @var{symbol} is stored.
922fbb7b
AC
24736
24737@subsubheading @value{GDBN} Command
24738
a2c02241 24739The corresponding @value{GDBN} command is @samp{info address}.
922fbb7b
AC
24740
24741@subsubheading Example
24742N.A.
24743
24744
a2c02241
NR
24745@subheading The @code{-symbol-info-file} Command
24746@findex -symbol-info-file
922fbb7b
AC
24747
24748@subsubheading Synopsis
24749
24750@smallexample
a2c02241 24751 -symbol-info-file
922fbb7b
AC
24752@end smallexample
24753
a2c02241 24754Show the file for the symbol.
922fbb7b 24755
a2c02241 24756@subsubheading @value{GDBN} Command
922fbb7b 24757
a2c02241
NR
24758There's no equivalent @value{GDBN} command. @code{gdbtk} has
24759@samp{gdb_find_file}.
922fbb7b
AC
24760
24761@subsubheading Example
24762N.A.
24763
24764
a2c02241
NR
24765@subheading The @code{-symbol-info-function} Command
24766@findex -symbol-info-function
922fbb7b
AC
24767
24768@subsubheading Synopsis
24769
24770@smallexample
a2c02241 24771 -symbol-info-function
922fbb7b
AC
24772@end smallexample
24773
a2c02241 24774Show which function the symbol lives in.
922fbb7b
AC
24775
24776@subsubheading @value{GDBN} Command
24777
a2c02241 24778@samp{gdb_get_function} in @code{gdbtk}.
922fbb7b
AC
24779
24780@subsubheading Example
24781N.A.
24782
24783
a2c02241
NR
24784@subheading The @code{-symbol-info-line} Command
24785@findex -symbol-info-line
922fbb7b
AC
24786
24787@subsubheading Synopsis
24788
24789@smallexample
a2c02241 24790 -symbol-info-line
922fbb7b
AC
24791@end smallexample
24792
a2c02241 24793Show the core addresses of the code for a source line.
922fbb7b 24794
a2c02241 24795@subsubheading @value{GDBN} Command
922fbb7b 24796
a2c02241
NR
24797The corresponding @value{GDBN} command is @samp{info line}.
24798@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
922fbb7b
AC
24799
24800@subsubheading Example
a2c02241 24801N.A.
922fbb7b
AC
24802
24803
a2c02241
NR
24804@subheading The @code{-symbol-info-symbol} Command
24805@findex -symbol-info-symbol
07f31aa6
DJ
24806
24807@subsubheading Synopsis
24808
a2c02241
NR
24809@smallexample
24810 -symbol-info-symbol @var{addr}
24811@end smallexample
07f31aa6 24812
a2c02241 24813Describe what symbol is at location @var{addr}.
07f31aa6 24814
a2c02241 24815@subsubheading @value{GDBN} Command
07f31aa6 24816
a2c02241 24817The corresponding @value{GDBN} command is @samp{info symbol}.
07f31aa6
DJ
24818
24819@subsubheading Example
a2c02241 24820N.A.
07f31aa6
DJ
24821
24822
a2c02241
NR
24823@subheading The @code{-symbol-list-functions} Command
24824@findex -symbol-list-functions
922fbb7b
AC
24825
24826@subsubheading Synopsis
24827
24828@smallexample
a2c02241 24829 -symbol-list-functions
922fbb7b
AC
24830@end smallexample
24831
a2c02241 24832List the functions in the executable.
922fbb7b
AC
24833
24834@subsubheading @value{GDBN} Command
24835
a2c02241
NR
24836@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
24837@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
24838
24839@subsubheading Example
a2c02241 24840N.A.
9901a55b 24841@end ignore
922fbb7b
AC
24842
24843
a2c02241
NR
24844@subheading The @code{-symbol-list-lines} Command
24845@findex -symbol-list-lines
922fbb7b
AC
24846
24847@subsubheading Synopsis
24848
24849@smallexample
a2c02241 24850 -symbol-list-lines @var{filename}
922fbb7b
AC
24851@end smallexample
24852
a2c02241
NR
24853Print the list of lines that contain code and their associated program
24854addresses for the given source filename. The entries are sorted in
24855ascending PC order.
922fbb7b
AC
24856
24857@subsubheading @value{GDBN} Command
24858
a2c02241 24859There is no corresponding @value{GDBN} command.
922fbb7b
AC
24860
24861@subsubheading Example
a2c02241 24862@smallexample
594fe323 24863(gdb)
a2c02241
NR
24864-symbol-list-lines basics.c
24865^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
594fe323 24866(gdb)
a2c02241 24867@end smallexample
922fbb7b
AC
24868
24869
9901a55b 24870@ignore
a2c02241
NR
24871@subheading The @code{-symbol-list-types} Command
24872@findex -symbol-list-types
922fbb7b
AC
24873
24874@subsubheading Synopsis
24875
24876@smallexample
a2c02241 24877 -symbol-list-types
922fbb7b
AC
24878@end smallexample
24879
a2c02241 24880List all the type names.
922fbb7b
AC
24881
24882@subsubheading @value{GDBN} Command
24883
a2c02241
NR
24884The corresponding commands are @samp{info types} in @value{GDBN},
24885@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
24886
24887@subsubheading Example
24888N.A.
24889
24890
a2c02241
NR
24891@subheading The @code{-symbol-list-variables} Command
24892@findex -symbol-list-variables
922fbb7b
AC
24893
24894@subsubheading Synopsis
24895
24896@smallexample
a2c02241 24897 -symbol-list-variables
922fbb7b
AC
24898@end smallexample
24899
a2c02241 24900List all the global and static variable names.
922fbb7b
AC
24901
24902@subsubheading @value{GDBN} Command
24903
a2c02241 24904@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
24905
24906@subsubheading Example
24907N.A.
24908
24909
a2c02241
NR
24910@subheading The @code{-symbol-locate} Command
24911@findex -symbol-locate
922fbb7b
AC
24912
24913@subsubheading Synopsis
24914
24915@smallexample
a2c02241 24916 -symbol-locate
922fbb7b
AC
24917@end smallexample
24918
922fbb7b
AC
24919@subsubheading @value{GDBN} Command
24920
a2c02241 24921@samp{gdb_loc} in @code{gdbtk}.
922fbb7b
AC
24922
24923@subsubheading Example
24924N.A.
24925
24926
a2c02241
NR
24927@subheading The @code{-symbol-type} Command
24928@findex -symbol-type
922fbb7b
AC
24929
24930@subsubheading Synopsis
24931
24932@smallexample
a2c02241 24933 -symbol-type @var{variable}
922fbb7b
AC
24934@end smallexample
24935
a2c02241 24936Show type of @var{variable}.
922fbb7b 24937
a2c02241 24938@subsubheading @value{GDBN} Command
922fbb7b 24939
a2c02241
NR
24940The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
24941@samp{gdb_obj_variable}.
24942
24943@subsubheading Example
24944N.A.
9901a55b 24945@end ignore
a2c02241
NR
24946
24947
24948@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
24949@node GDB/MI File Commands
24950@section @sc{gdb/mi} File Commands
24951
24952This section describes the GDB/MI commands to specify executable file names
24953and to read in and obtain symbol table information.
24954
24955@subheading The @code{-file-exec-and-symbols} Command
24956@findex -file-exec-and-symbols
24957
24958@subsubheading Synopsis
922fbb7b
AC
24959
24960@smallexample
a2c02241 24961 -file-exec-and-symbols @var{file}
922fbb7b
AC
24962@end smallexample
24963
a2c02241
NR
24964Specify the executable file to be debugged. This file is the one from
24965which the symbol table is also read. If no file is specified, the
24966command clears the executable and symbol information. If breakpoints
24967are set when using this command with no arguments, @value{GDBN} will produce
24968error messages. Otherwise, no output is produced, except a completion
24969notification.
24970
922fbb7b
AC
24971@subsubheading @value{GDBN} Command
24972
a2c02241 24973The corresponding @value{GDBN} command is @samp{file}.
922fbb7b
AC
24974
24975@subsubheading Example
24976
24977@smallexample
594fe323 24978(gdb)
a2c02241
NR
24979-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
24980^done
594fe323 24981(gdb)
922fbb7b
AC
24982@end smallexample
24983
922fbb7b 24984
a2c02241
NR
24985@subheading The @code{-file-exec-file} Command
24986@findex -file-exec-file
922fbb7b
AC
24987
24988@subsubheading Synopsis
24989
24990@smallexample
a2c02241 24991 -file-exec-file @var{file}
922fbb7b
AC
24992@end smallexample
24993
a2c02241
NR
24994Specify the executable file to be debugged. Unlike
24995@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
24996from this file. If used without argument, @value{GDBN} clears the information
24997about the executable file. No output is produced, except a completion
24998notification.
922fbb7b 24999
a2c02241
NR
25000@subsubheading @value{GDBN} Command
25001
25002The corresponding @value{GDBN} command is @samp{exec-file}.
922fbb7b
AC
25003
25004@subsubheading Example
a2c02241
NR
25005
25006@smallexample
594fe323 25007(gdb)
a2c02241
NR
25008-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
25009^done
594fe323 25010(gdb)
a2c02241 25011@end smallexample
922fbb7b
AC
25012
25013
9901a55b 25014@ignore
a2c02241
NR
25015@subheading The @code{-file-list-exec-sections} Command
25016@findex -file-list-exec-sections
922fbb7b
AC
25017
25018@subsubheading Synopsis
25019
25020@smallexample
a2c02241 25021 -file-list-exec-sections
922fbb7b
AC
25022@end smallexample
25023
a2c02241
NR
25024List the sections of the current executable file.
25025
922fbb7b
AC
25026@subsubheading @value{GDBN} Command
25027
a2c02241
NR
25028The @value{GDBN} command @samp{info file} shows, among the rest, the same
25029information as this command. @code{gdbtk} has a corresponding command
25030@samp{gdb_load_info}.
922fbb7b
AC
25031
25032@subsubheading Example
25033N.A.
9901a55b 25034@end ignore
922fbb7b
AC
25035
25036
a2c02241
NR
25037@subheading The @code{-file-list-exec-source-file} Command
25038@findex -file-list-exec-source-file
922fbb7b
AC
25039
25040@subsubheading Synopsis
25041
25042@smallexample
a2c02241 25043 -file-list-exec-source-file
922fbb7b
AC
25044@end smallexample
25045
a2c02241 25046List the line number, the current source file, and the absolute path
44288b44
NR
25047to the current source file for the current executable. The macro
25048information field has a value of @samp{1} or @samp{0} depending on
25049whether or not the file includes preprocessor macro information.
922fbb7b
AC
25050
25051@subsubheading @value{GDBN} Command
25052
a2c02241 25053The @value{GDBN} equivalent is @samp{info source}
922fbb7b
AC
25054
25055@subsubheading Example
25056
922fbb7b 25057@smallexample
594fe323 25058(gdb)
a2c02241 25059123-file-list-exec-source-file
44288b44 25060123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
594fe323 25061(gdb)
922fbb7b
AC
25062@end smallexample
25063
25064
a2c02241
NR
25065@subheading The @code{-file-list-exec-source-files} Command
25066@findex -file-list-exec-source-files
922fbb7b
AC
25067
25068@subsubheading Synopsis
25069
25070@smallexample
a2c02241 25071 -file-list-exec-source-files
922fbb7b
AC
25072@end smallexample
25073
a2c02241
NR
25074List the source files for the current executable.
25075
3f94c067
BW
25076It will always output the filename, but only when @value{GDBN} can find
25077the absolute file name of a source file, will it output the fullname.
922fbb7b
AC
25078
25079@subsubheading @value{GDBN} Command
25080
a2c02241
NR
25081The @value{GDBN} equivalent is @samp{info sources}.
25082@code{gdbtk} has an analogous command @samp{gdb_listfiles}.
922fbb7b
AC
25083
25084@subsubheading Example
922fbb7b 25085@smallexample
594fe323 25086(gdb)
a2c02241
NR
25087-file-list-exec-source-files
25088^done,files=[
25089@{file=foo.c,fullname=/home/foo.c@},
25090@{file=/home/bar.c,fullname=/home/bar.c@},
25091@{file=gdb_could_not_find_fullpath.c@}]
594fe323 25092(gdb)
922fbb7b
AC
25093@end smallexample
25094
9901a55b 25095@ignore
a2c02241
NR
25096@subheading The @code{-file-list-shared-libraries} Command
25097@findex -file-list-shared-libraries
922fbb7b 25098
a2c02241 25099@subsubheading Synopsis
922fbb7b 25100
a2c02241
NR
25101@smallexample
25102 -file-list-shared-libraries
25103@end smallexample
922fbb7b 25104
a2c02241 25105List the shared libraries in the program.
922fbb7b 25106
a2c02241 25107@subsubheading @value{GDBN} Command
922fbb7b 25108
a2c02241 25109The corresponding @value{GDBN} command is @samp{info shared}.
922fbb7b 25110
a2c02241
NR
25111@subsubheading Example
25112N.A.
922fbb7b
AC
25113
25114
a2c02241
NR
25115@subheading The @code{-file-list-symbol-files} Command
25116@findex -file-list-symbol-files
922fbb7b 25117
a2c02241 25118@subsubheading Synopsis
922fbb7b 25119
a2c02241
NR
25120@smallexample
25121 -file-list-symbol-files
25122@end smallexample
922fbb7b 25123
a2c02241 25124List symbol files.
922fbb7b 25125
a2c02241 25126@subsubheading @value{GDBN} Command
922fbb7b 25127
a2c02241 25128The corresponding @value{GDBN} command is @samp{info file} (part of it).
922fbb7b 25129
a2c02241
NR
25130@subsubheading Example
25131N.A.
9901a55b 25132@end ignore
922fbb7b 25133
922fbb7b 25134
a2c02241
NR
25135@subheading The @code{-file-symbol-file} Command
25136@findex -file-symbol-file
922fbb7b 25137
a2c02241 25138@subsubheading Synopsis
922fbb7b 25139
a2c02241
NR
25140@smallexample
25141 -file-symbol-file @var{file}
25142@end smallexample
922fbb7b 25143
a2c02241
NR
25144Read symbol table info from the specified @var{file} argument. When
25145used without arguments, clears @value{GDBN}'s symbol table info. No output is
25146produced, except for a completion notification.
922fbb7b 25147
a2c02241 25148@subsubheading @value{GDBN} Command
922fbb7b 25149
a2c02241 25150The corresponding @value{GDBN} command is @samp{symbol-file}.
922fbb7b 25151
a2c02241 25152@subsubheading Example
922fbb7b 25153
a2c02241 25154@smallexample
594fe323 25155(gdb)
a2c02241
NR
25156-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
25157^done
594fe323 25158(gdb)
a2c02241 25159@end smallexample
922fbb7b 25160
a2c02241 25161@ignore
a2c02241
NR
25162@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25163@node GDB/MI Memory Overlay Commands
25164@section @sc{gdb/mi} Memory Overlay Commands
922fbb7b 25165
a2c02241 25166The memory overlay commands are not implemented.
922fbb7b 25167
a2c02241 25168@c @subheading -overlay-auto
922fbb7b 25169
a2c02241 25170@c @subheading -overlay-list-mapping-state
922fbb7b 25171
a2c02241 25172@c @subheading -overlay-list-overlays
922fbb7b 25173
a2c02241 25174@c @subheading -overlay-map
922fbb7b 25175
a2c02241 25176@c @subheading -overlay-off
922fbb7b 25177
a2c02241 25178@c @subheading -overlay-on
922fbb7b 25179
a2c02241 25180@c @subheading -overlay-unmap
922fbb7b 25181
a2c02241
NR
25182@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25183@node GDB/MI Signal Handling Commands
25184@section @sc{gdb/mi} Signal Handling Commands
922fbb7b 25185
a2c02241 25186Signal handling commands are not implemented.
922fbb7b 25187
a2c02241 25188@c @subheading -signal-handle
922fbb7b 25189
a2c02241 25190@c @subheading -signal-list-handle-actions
922fbb7b 25191
a2c02241
NR
25192@c @subheading -signal-list-signal-types
25193@end ignore
922fbb7b 25194
922fbb7b 25195
a2c02241
NR
25196@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25197@node GDB/MI Target Manipulation
25198@section @sc{gdb/mi} Target Manipulation Commands
922fbb7b
AC
25199
25200
a2c02241
NR
25201@subheading The @code{-target-attach} Command
25202@findex -target-attach
922fbb7b
AC
25203
25204@subsubheading Synopsis
25205
25206@smallexample
c3b108f7 25207 -target-attach @var{pid} | @var{gid} | @var{file}
922fbb7b
AC
25208@end smallexample
25209
c3b108f7
VP
25210Attach to a process @var{pid} or a file @var{file} outside of
25211@value{GDBN}, or a thread group @var{gid}. If attaching to a thread
25212group, the id previously returned by
25213@samp{-list-thread-groups --available} must be used.
922fbb7b 25214
79a6e687 25215@subsubheading @value{GDBN} Command
922fbb7b 25216
a2c02241 25217The corresponding @value{GDBN} command is @samp{attach}.
922fbb7b 25218
a2c02241 25219@subsubheading Example
b56e7235
VP
25220@smallexample
25221(gdb)
25222-target-attach 34
25223=thread-created,id="1"
5ae4183a 25224*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@}
b56e7235
VP
25225^done
25226(gdb)
25227@end smallexample
a2c02241 25228
9901a55b 25229@ignore
a2c02241
NR
25230@subheading The @code{-target-compare-sections} Command
25231@findex -target-compare-sections
922fbb7b
AC
25232
25233@subsubheading Synopsis
25234
25235@smallexample
a2c02241 25236 -target-compare-sections [ @var{section} ]
922fbb7b
AC
25237@end smallexample
25238
a2c02241
NR
25239Compare data of section @var{section} on target to the exec file.
25240Without the argument, all sections are compared.
922fbb7b 25241
a2c02241 25242@subsubheading @value{GDBN} Command
922fbb7b 25243
a2c02241 25244The @value{GDBN} equivalent is @samp{compare-sections}.
922fbb7b 25245
a2c02241
NR
25246@subsubheading Example
25247N.A.
9901a55b 25248@end ignore
a2c02241
NR
25249
25250
25251@subheading The @code{-target-detach} Command
25252@findex -target-detach
922fbb7b
AC
25253
25254@subsubheading Synopsis
25255
25256@smallexample
c3b108f7 25257 -target-detach [ @var{pid} | @var{gid} ]
922fbb7b
AC
25258@end smallexample
25259
a2c02241 25260Detach from the remote target which normally resumes its execution.
c3b108f7
VP
25261If either @var{pid} or @var{gid} is specified, detaches from either
25262the specified process, or specified thread group. There's no output.
a2c02241 25263
79a6e687 25264@subsubheading @value{GDBN} Command
a2c02241
NR
25265
25266The corresponding @value{GDBN} command is @samp{detach}.
25267
25268@subsubheading Example
922fbb7b
AC
25269
25270@smallexample
594fe323 25271(gdb)
a2c02241
NR
25272-target-detach
25273^done
594fe323 25274(gdb)
922fbb7b
AC
25275@end smallexample
25276
25277
a2c02241
NR
25278@subheading The @code{-target-disconnect} Command
25279@findex -target-disconnect
922fbb7b
AC
25280
25281@subsubheading Synopsis
25282
123dc839 25283@smallexample
a2c02241 25284 -target-disconnect
123dc839 25285@end smallexample
922fbb7b 25286
a2c02241
NR
25287Disconnect from the remote target. There's no output and the target is
25288generally not resumed.
25289
79a6e687 25290@subsubheading @value{GDBN} Command
a2c02241
NR
25291
25292The corresponding @value{GDBN} command is @samp{disconnect}.
bc8ced35
NR
25293
25294@subsubheading Example
922fbb7b
AC
25295
25296@smallexample
594fe323 25297(gdb)
a2c02241
NR
25298-target-disconnect
25299^done
594fe323 25300(gdb)
922fbb7b
AC
25301@end smallexample
25302
25303
a2c02241
NR
25304@subheading The @code{-target-download} Command
25305@findex -target-download
922fbb7b
AC
25306
25307@subsubheading Synopsis
25308
25309@smallexample
a2c02241 25310 -target-download
922fbb7b
AC
25311@end smallexample
25312
a2c02241
NR
25313Loads the executable onto the remote target.
25314It prints out an update message every half second, which includes the fields:
25315
25316@table @samp
25317@item section
25318The name of the section.
25319@item section-sent
25320The size of what has been sent so far for that section.
25321@item section-size
25322The size of the section.
25323@item total-sent
25324The total size of what was sent so far (the current and the previous sections).
25325@item total-size
25326The size of the overall executable to download.
25327@end table
25328
25329@noindent
25330Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
25331@sc{gdb/mi} Output Syntax}).
25332
25333In addition, it prints the name and size of the sections, as they are
25334downloaded. These messages include the following fields:
25335
25336@table @samp
25337@item section
25338The name of the section.
25339@item section-size
25340The size of the section.
25341@item total-size
25342The size of the overall executable to download.
25343@end table
25344
25345@noindent
25346At the end, a summary is printed.
25347
25348@subsubheading @value{GDBN} Command
25349
25350The corresponding @value{GDBN} command is @samp{load}.
25351
25352@subsubheading Example
25353
25354Note: each status message appears on a single line. Here the messages
25355have been broken down so that they can fit onto a page.
922fbb7b
AC
25356
25357@smallexample
594fe323 25358(gdb)
a2c02241
NR
25359-target-download
25360+download,@{section=".text",section-size="6668",total-size="9880"@}
25361+download,@{section=".text",section-sent="512",section-size="6668",
25362total-sent="512",total-size="9880"@}
25363+download,@{section=".text",section-sent="1024",section-size="6668",
25364total-sent="1024",total-size="9880"@}
25365+download,@{section=".text",section-sent="1536",section-size="6668",
25366total-sent="1536",total-size="9880"@}
25367+download,@{section=".text",section-sent="2048",section-size="6668",
25368total-sent="2048",total-size="9880"@}
25369+download,@{section=".text",section-sent="2560",section-size="6668",
25370total-sent="2560",total-size="9880"@}
25371+download,@{section=".text",section-sent="3072",section-size="6668",
25372total-sent="3072",total-size="9880"@}
25373+download,@{section=".text",section-sent="3584",section-size="6668",
25374total-sent="3584",total-size="9880"@}
25375+download,@{section=".text",section-sent="4096",section-size="6668",
25376total-sent="4096",total-size="9880"@}
25377+download,@{section=".text",section-sent="4608",section-size="6668",
25378total-sent="4608",total-size="9880"@}
25379+download,@{section=".text",section-sent="5120",section-size="6668",
25380total-sent="5120",total-size="9880"@}
25381+download,@{section=".text",section-sent="5632",section-size="6668",
25382total-sent="5632",total-size="9880"@}
25383+download,@{section=".text",section-sent="6144",section-size="6668",
25384total-sent="6144",total-size="9880"@}
25385+download,@{section=".text",section-sent="6656",section-size="6668",
25386total-sent="6656",total-size="9880"@}
25387+download,@{section=".init",section-size="28",total-size="9880"@}
25388+download,@{section=".fini",section-size="28",total-size="9880"@}
25389+download,@{section=".data",section-size="3156",total-size="9880"@}
25390+download,@{section=".data",section-sent="512",section-size="3156",
25391total-sent="7236",total-size="9880"@}
25392+download,@{section=".data",section-sent="1024",section-size="3156",
25393total-sent="7748",total-size="9880"@}
25394+download,@{section=".data",section-sent="1536",section-size="3156",
25395total-sent="8260",total-size="9880"@}
25396+download,@{section=".data",section-sent="2048",section-size="3156",
25397total-sent="8772",total-size="9880"@}
25398+download,@{section=".data",section-sent="2560",section-size="3156",
25399total-sent="9284",total-size="9880"@}
25400+download,@{section=".data",section-sent="3072",section-size="3156",
25401total-sent="9796",total-size="9880"@}
25402^done,address="0x10004",load-size="9880",transfer-rate="6586",
25403write-rate="429"
594fe323 25404(gdb)
922fbb7b
AC
25405@end smallexample
25406
25407
9901a55b 25408@ignore
a2c02241
NR
25409@subheading The @code{-target-exec-status} Command
25410@findex -target-exec-status
922fbb7b
AC
25411
25412@subsubheading Synopsis
25413
25414@smallexample
a2c02241 25415 -target-exec-status
922fbb7b
AC
25416@end smallexample
25417
a2c02241
NR
25418Provide information on the state of the target (whether it is running or
25419not, for instance).
922fbb7b 25420
a2c02241 25421@subsubheading @value{GDBN} Command
922fbb7b 25422
a2c02241
NR
25423There's no equivalent @value{GDBN} command.
25424
25425@subsubheading Example
25426N.A.
922fbb7b 25427
a2c02241
NR
25428
25429@subheading The @code{-target-list-available-targets} Command
25430@findex -target-list-available-targets
922fbb7b
AC
25431
25432@subsubheading Synopsis
25433
25434@smallexample
a2c02241 25435 -target-list-available-targets
922fbb7b
AC
25436@end smallexample
25437
a2c02241 25438List the possible targets to connect to.
922fbb7b 25439
a2c02241 25440@subsubheading @value{GDBN} Command
922fbb7b 25441
a2c02241 25442The corresponding @value{GDBN} command is @samp{help target}.
922fbb7b 25443
a2c02241
NR
25444@subsubheading Example
25445N.A.
25446
25447
25448@subheading The @code{-target-list-current-targets} Command
25449@findex -target-list-current-targets
922fbb7b
AC
25450
25451@subsubheading Synopsis
25452
25453@smallexample
a2c02241 25454 -target-list-current-targets
922fbb7b
AC
25455@end smallexample
25456
a2c02241 25457Describe the current target.
922fbb7b 25458
a2c02241 25459@subsubheading @value{GDBN} Command
922fbb7b 25460
a2c02241
NR
25461The corresponding information is printed by @samp{info file} (among
25462other things).
922fbb7b 25463
a2c02241
NR
25464@subsubheading Example
25465N.A.
25466
25467
25468@subheading The @code{-target-list-parameters} Command
25469@findex -target-list-parameters
922fbb7b
AC
25470
25471@subsubheading Synopsis
25472
25473@smallexample
a2c02241 25474 -target-list-parameters
922fbb7b
AC
25475@end smallexample
25476
a2c02241 25477@c ????
9901a55b 25478@end ignore
a2c02241
NR
25479
25480@subsubheading @value{GDBN} Command
25481
25482No equivalent.
922fbb7b
AC
25483
25484@subsubheading Example
a2c02241
NR
25485N.A.
25486
25487
25488@subheading The @code{-target-select} Command
25489@findex -target-select
25490
25491@subsubheading Synopsis
922fbb7b
AC
25492
25493@smallexample
a2c02241 25494 -target-select @var{type} @var{parameters @dots{}}
922fbb7b
AC
25495@end smallexample
25496
a2c02241 25497Connect @value{GDBN} to the remote target. This command takes two args:
922fbb7b 25498
a2c02241
NR
25499@table @samp
25500@item @var{type}
75c99385 25501The type of target, for instance @samp{remote}, etc.
a2c02241
NR
25502@item @var{parameters}
25503Device names, host names and the like. @xref{Target Commands, ,
79a6e687 25504Commands for Managing Targets}, for more details.
a2c02241
NR
25505@end table
25506
25507The output is a connection notification, followed by the address at
25508which the target program is, in the following form:
922fbb7b
AC
25509
25510@smallexample
a2c02241
NR
25511^connected,addr="@var{address}",func="@var{function name}",
25512 args=[@var{arg list}]
922fbb7b
AC
25513@end smallexample
25514
a2c02241
NR
25515@subsubheading @value{GDBN} Command
25516
25517The corresponding @value{GDBN} command is @samp{target}.
265eeb58
NR
25518
25519@subsubheading Example
922fbb7b 25520
265eeb58 25521@smallexample
594fe323 25522(gdb)
75c99385 25523-target-select remote /dev/ttya
a2c02241 25524^connected,addr="0xfe00a300",func="??",args=[]
594fe323 25525(gdb)
265eeb58 25526@end smallexample
ef21caaf 25527
a6b151f1
DJ
25528@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25529@node GDB/MI File Transfer Commands
25530@section @sc{gdb/mi} File Transfer Commands
25531
25532
25533@subheading The @code{-target-file-put} Command
25534@findex -target-file-put
25535
25536@subsubheading Synopsis
25537
25538@smallexample
25539 -target-file-put @var{hostfile} @var{targetfile}
25540@end smallexample
25541
25542Copy file @var{hostfile} from the host system (the machine running
25543@value{GDBN}) to @var{targetfile} on the target system.
25544
25545@subsubheading @value{GDBN} Command
25546
25547The corresponding @value{GDBN} command is @samp{remote put}.
25548
25549@subsubheading Example
25550
25551@smallexample
25552(gdb)
25553-target-file-put localfile remotefile
25554^done
25555(gdb)
25556@end smallexample
25557
25558
1763a388 25559@subheading The @code{-target-file-get} Command
a6b151f1
DJ
25560@findex -target-file-get
25561
25562@subsubheading Synopsis
25563
25564@smallexample
25565 -target-file-get @var{targetfile} @var{hostfile}
25566@end smallexample
25567
25568Copy file @var{targetfile} from the target system to @var{hostfile}
25569on the host system.
25570
25571@subsubheading @value{GDBN} Command
25572
25573The corresponding @value{GDBN} command is @samp{remote get}.
25574
25575@subsubheading Example
25576
25577@smallexample
25578(gdb)
25579-target-file-get remotefile localfile
25580^done
25581(gdb)
25582@end smallexample
25583
25584
25585@subheading The @code{-target-file-delete} Command
25586@findex -target-file-delete
25587
25588@subsubheading Synopsis
25589
25590@smallexample
25591 -target-file-delete @var{targetfile}
25592@end smallexample
25593
25594Delete @var{targetfile} from the target system.
25595
25596@subsubheading @value{GDBN} Command
25597
25598The corresponding @value{GDBN} command is @samp{remote delete}.
25599
25600@subsubheading Example
25601
25602@smallexample
25603(gdb)
25604-target-file-delete remotefile
25605^done
25606(gdb)
25607@end smallexample
25608
25609
ef21caaf
NR
25610@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25611@node GDB/MI Miscellaneous Commands
25612@section Miscellaneous @sc{gdb/mi} Commands
25613
25614@c @subheading -gdb-complete
25615
25616@subheading The @code{-gdb-exit} Command
25617@findex -gdb-exit
25618
25619@subsubheading Synopsis
25620
25621@smallexample
25622 -gdb-exit
25623@end smallexample
25624
25625Exit @value{GDBN} immediately.
25626
25627@subsubheading @value{GDBN} Command
25628
25629Approximately corresponds to @samp{quit}.
25630
25631@subsubheading Example
25632
25633@smallexample
594fe323 25634(gdb)
ef21caaf
NR
25635-gdb-exit
25636^exit
25637@end smallexample
25638
a2c02241 25639
9901a55b 25640@ignore
a2c02241
NR
25641@subheading The @code{-exec-abort} Command
25642@findex -exec-abort
25643
25644@subsubheading Synopsis
25645
25646@smallexample
25647 -exec-abort
25648@end smallexample
25649
25650Kill the inferior running program.
25651
25652@subsubheading @value{GDBN} Command
25653
25654The corresponding @value{GDBN} command is @samp{kill}.
25655
25656@subsubheading Example
25657N.A.
9901a55b 25658@end ignore
a2c02241
NR
25659
25660
ef21caaf
NR
25661@subheading The @code{-gdb-set} Command
25662@findex -gdb-set
25663
25664@subsubheading Synopsis
25665
25666@smallexample
25667 -gdb-set
25668@end smallexample
25669
25670Set an internal @value{GDBN} variable.
25671@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
25672
25673@subsubheading @value{GDBN} Command
25674
25675The corresponding @value{GDBN} command is @samp{set}.
25676
25677@subsubheading Example
25678
25679@smallexample
594fe323 25680(gdb)
ef21caaf
NR
25681-gdb-set $foo=3
25682^done
594fe323 25683(gdb)
ef21caaf
NR
25684@end smallexample
25685
25686
25687@subheading The @code{-gdb-show} Command
25688@findex -gdb-show
25689
25690@subsubheading Synopsis
25691
25692@smallexample
25693 -gdb-show
25694@end smallexample
25695
25696Show the current value of a @value{GDBN} variable.
25697
79a6e687 25698@subsubheading @value{GDBN} Command
ef21caaf
NR
25699
25700The corresponding @value{GDBN} command is @samp{show}.
25701
25702@subsubheading Example
25703
25704@smallexample
594fe323 25705(gdb)
ef21caaf
NR
25706-gdb-show annotate
25707^done,value="0"
594fe323 25708(gdb)
ef21caaf
NR
25709@end smallexample
25710
25711@c @subheading -gdb-source
25712
25713
25714@subheading The @code{-gdb-version} Command
25715@findex -gdb-version
25716
25717@subsubheading Synopsis
25718
25719@smallexample
25720 -gdb-version
25721@end smallexample
25722
25723Show version information for @value{GDBN}. Used mostly in testing.
25724
25725@subsubheading @value{GDBN} Command
25726
25727The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by
25728default shows this information when you start an interactive session.
25729
25730@subsubheading Example
25731
25732@c This example modifies the actual output from GDB to avoid overfull
25733@c box in TeX.
25734@smallexample
594fe323 25735(gdb)
ef21caaf
NR
25736-gdb-version
25737~GNU gdb 5.2.1
25738~Copyright 2000 Free Software Foundation, Inc.
25739~GDB is free software, covered by the GNU General Public License, and
25740~you are welcome to change it and/or distribute copies of it under
25741~ certain conditions.
25742~Type "show copying" to see the conditions.
25743~There is absolutely no warranty for GDB. Type "show warranty" for
25744~ details.
25745~This GDB was configured as
25746 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
25747^done
594fe323 25748(gdb)
ef21caaf
NR
25749@end smallexample
25750
084344da
VP
25751@subheading The @code{-list-features} Command
25752@findex -list-features
25753
25754Returns a list of particular features of the MI protocol that
25755this version of gdb implements. A feature can be a command,
25756or a new field in an output of some command, or even an
25757important bugfix. While a frontend can sometimes detect presence
25758of a feature at runtime, it is easier to perform detection at debugger
25759startup.
25760
25761The command returns a list of strings, with each string naming an
25762available feature. Each returned string is just a name, it does not
25763have any internal structure. The list of possible feature names
25764is given below.
25765
25766Example output:
25767
25768@smallexample
25769(gdb) -list-features
25770^done,result=["feature1","feature2"]
25771@end smallexample
25772
25773The current list of features is:
25774
30e026bb
VP
25775@table @samp
25776@item frozen-varobjs
25777Indicates presence of the @code{-var-set-frozen} command, as well
25778as possible presense of the @code{frozen} field in the output
25779of @code{-varobj-create}.
25780@item pending-breakpoints
25781Indicates presence of the @option{-f} option to the @code{-break-insert} command.
b6313243
TT
25782@item python
25783Indicates presence of Python scripting support, Python-based
25784pretty-printing commands, and possible presence of the
25785@samp{display_hint} field in the output of @code{-var-list-children}
30e026bb
VP
25786@item thread-info
25787Indicates presence of the @code{-thread-info} command.
8b4ed427 25788
30e026bb 25789@end table
084344da 25790
c6ebd6cf
VP
25791@subheading The @code{-list-target-features} Command
25792@findex -list-target-features
25793
25794Returns a list of particular features that are supported by the
25795target. Those features affect the permitted MI commands, but
25796unlike the features reported by the @code{-list-features} command, the
25797features depend on which target GDB is using at the moment. Whenever
25798a target can change, due to commands such as @code{-target-select},
25799@code{-target-attach} or @code{-exec-run}, the list of target features
25800may change, and the frontend should obtain it again.
25801Example output:
25802
25803@smallexample
25804(gdb) -list-features
25805^done,result=["async"]
25806@end smallexample
25807
25808The current list of features is:
25809
25810@table @samp
25811@item async
25812Indicates that the target is capable of asynchronous command
25813execution, which means that @value{GDBN} will accept further commands
25814while the target is running.
25815
25816@end table
25817
c3b108f7
VP
25818@subheading The @code{-list-thread-groups} Command
25819@findex -list-thread-groups
25820
25821@subheading Synopsis
25822
25823@smallexample
25824-list-thread-groups [ --available ] [ @var{group} ]
25825@end smallexample
25826
25827When used without the @var{group} parameter, lists top-level thread
25828groups that are being debugged. When used with the @var{group}
25829parameter, the children of the specified group are listed. The
25830children can be either threads, or other groups. At present,
25831@value{GDBN} will not report both threads and groups as children at
25832the same time, but it may change in future.
25833
25834With the @samp{--available} option, instead of reporting groups that
25835are been debugged, GDB will report all thread groups available on the
25836target. Using the @samp{--available} option together with @var{group}
25837is not allowed.
25838
25839@subheading Example
25840
25841@smallexample
25842@value{GDBP}
25843-list-thread-groups
25844^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}]
25845-list-thread-groups 17
25846^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
25847 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
25848@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
25849 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
25850 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]]
25851@end smallexample
c6ebd6cf 25852
ef21caaf
NR
25853@subheading The @code{-interpreter-exec} Command
25854@findex -interpreter-exec
25855
25856@subheading Synopsis
25857
25858@smallexample
25859-interpreter-exec @var{interpreter} @var{command}
25860@end smallexample
a2c02241 25861@anchor{-interpreter-exec}
ef21caaf
NR
25862
25863Execute the specified @var{command} in the given @var{interpreter}.
25864
25865@subheading @value{GDBN} Command
25866
25867The corresponding @value{GDBN} command is @samp{interpreter-exec}.
25868
25869@subheading Example
25870
25871@smallexample
594fe323 25872(gdb)
ef21caaf
NR
25873-interpreter-exec console "break main"
25874&"During symbol reading, couldn't parse type; debugger out of date?.\n"
25875&"During symbol reading, bad structure-type format.\n"
25876~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
25877^done
594fe323 25878(gdb)
ef21caaf
NR
25879@end smallexample
25880
25881@subheading The @code{-inferior-tty-set} Command
25882@findex -inferior-tty-set
25883
25884@subheading Synopsis
25885
25886@smallexample
25887-inferior-tty-set /dev/pts/1
25888@end smallexample
25889
25890Set terminal for future runs of the program being debugged.
25891
25892@subheading @value{GDBN} Command
25893
25894The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1.
25895
25896@subheading Example
25897
25898@smallexample
594fe323 25899(gdb)
ef21caaf
NR
25900-inferior-tty-set /dev/pts/1
25901^done
594fe323 25902(gdb)
ef21caaf
NR
25903@end smallexample
25904
25905@subheading The @code{-inferior-tty-show} Command
25906@findex -inferior-tty-show
25907
25908@subheading Synopsis
25909
25910@smallexample
25911-inferior-tty-show
25912@end smallexample
25913
25914Show terminal for future runs of program being debugged.
25915
25916@subheading @value{GDBN} Command
25917
25918The corresponding @value{GDBN} command is @samp{show inferior-tty}.
25919
25920@subheading Example
25921
25922@smallexample
594fe323 25923(gdb)
ef21caaf
NR
25924-inferior-tty-set /dev/pts/1
25925^done
594fe323 25926(gdb)
ef21caaf
NR
25927-inferior-tty-show
25928^done,inferior_tty_terminal="/dev/pts/1"
594fe323 25929(gdb)
ef21caaf 25930@end smallexample
922fbb7b 25931
a4eefcd8
NR
25932@subheading The @code{-enable-timings} Command
25933@findex -enable-timings
25934
25935@subheading Synopsis
25936
25937@smallexample
25938-enable-timings [yes | no]
25939@end smallexample
25940
25941Toggle the printing of the wallclock, user and system times for an MI
25942command as a field in its output. This command is to help frontend
25943developers optimize the performance of their code. No argument is
25944equivalent to @samp{yes}.
25945
25946@subheading @value{GDBN} Command
25947
25948No equivalent.
25949
25950@subheading Example
25951
25952@smallexample
25953(gdb)
25954-enable-timings
25955^done
25956(gdb)
25957-break-insert main
25958^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
25959addr="0x080484ed",func="main",file="myprog.c",
25960fullname="/home/nickrob/myprog.c",line="73",times="0"@},
25961time=@{wallclock="0.05185",user="0.00800",system="0.00000"@}
25962(gdb)
25963-enable-timings no
25964^done
25965(gdb)
25966-exec-run
25967^running
25968(gdb)
a47ec5fe 25969*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
a4eefcd8
NR
25970frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@},
25971@{name="argv",value="0xbfb60364"@}],file="myprog.c",
25972fullname="/home/nickrob/myprog.c",line="73"@}
25973(gdb)
25974@end smallexample
25975
922fbb7b
AC
25976@node Annotations
25977@chapter @value{GDBN} Annotations
25978
086432e2
AC
25979This chapter describes annotations in @value{GDBN}. Annotations were
25980designed to interface @value{GDBN} to graphical user interfaces or other
25981similar programs which want to interact with @value{GDBN} at a
922fbb7b
AC
25982relatively high level.
25983
d3e8051b 25984The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2
AC
25985(@pxref{GDB/MI}).
25986
922fbb7b
AC
25987@ignore
25988This is Edition @value{EDITION}, @value{DATE}.
25989@end ignore
25990
25991@menu
25992* Annotations Overview:: What annotations are; the general syntax.
9e6c4bd5 25993* Server Prefix:: Issuing a command without affecting user state.
922fbb7b
AC
25994* Prompting:: Annotations marking @value{GDBN}'s need for input.
25995* Errors:: Annotations for error messages.
922fbb7b
AC
25996* Invalidation:: Some annotations describe things now invalid.
25997* Annotations for Running::
25998 Whether the program is running, how it stopped, etc.
25999* Source Annotations:: Annotations describing source code.
922fbb7b
AC
26000@end menu
26001
26002@node Annotations Overview
26003@section What is an Annotation?
26004@cindex annotations
26005
922fbb7b
AC
26006Annotations start with a newline character, two @samp{control-z}
26007characters, and the name of the annotation. If there is no additional
26008information associated with this annotation, the name of the annotation
26009is followed immediately by a newline. If there is additional
26010information, the name of the annotation is followed by a space, the
26011additional information, and a newline. The additional information
26012cannot contain newline characters.
26013
26014Any output not beginning with a newline and two @samp{control-z}
26015characters denotes literal output from @value{GDBN}. Currently there is
26016no need for @value{GDBN} to output a newline followed by two
26017@samp{control-z} characters, but if there was such a need, the
26018annotations could be extended with an @samp{escape} annotation which
26019means those three characters as output.
26020
086432e2
AC
26021The annotation @var{level}, which is specified using the
26022@option{--annotate} command line option (@pxref{Mode Options}), controls
26023how much information @value{GDBN} prints together with its prompt,
26024values of expressions, source lines, and other types of output. Level 0
d3e8051b 26025is for no annotations, level 1 is for use when @value{GDBN} is run as a
086432e2
AC
26026subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
26027for programs that control @value{GDBN}, and level 2 annotations have
26028been made obsolete (@pxref{Limitations, , Limitations of the Annotation
09d4efe1
EZ
26029Interface, annotate, GDB's Obsolete Annotations}).
26030
26031@table @code
26032@kindex set annotate
26033@item set annotate @var{level}
e09f16f9 26034The @value{GDBN} command @code{set annotate} sets the level of
09d4efe1 26035annotations to the specified @var{level}.
9c16f35a
EZ
26036
26037@item show annotate
26038@kindex show annotate
26039Show the current annotation level.
09d4efe1
EZ
26040@end table
26041
26042This chapter describes level 3 annotations.
086432e2 26043
922fbb7b
AC
26044A simple example of starting up @value{GDBN} with annotations is:
26045
26046@smallexample
086432e2
AC
26047$ @kbd{gdb --annotate=3}
26048GNU gdb 6.0
26049Copyright 2003 Free Software Foundation, Inc.
922fbb7b
AC
26050GDB is free software, covered by the GNU General Public License,
26051and you are welcome to change it and/or distribute copies of it
26052under certain conditions.
26053Type "show copying" to see the conditions.
26054There is absolutely no warranty for GDB. Type "show warranty"
26055for details.
086432e2 26056This GDB was configured as "i386-pc-linux-gnu"
922fbb7b
AC
26057
26058^Z^Zpre-prompt
f7dc1244 26059(@value{GDBP})
922fbb7b 26060^Z^Zprompt
086432e2 26061@kbd{quit}
922fbb7b
AC
26062
26063^Z^Zpost-prompt
b383017d 26064$
922fbb7b
AC
26065@end smallexample
26066
26067Here @samp{quit} is input to @value{GDBN}; the rest is output from
26068@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
26069denotes a @samp{control-z} character) are annotations; the rest is
26070output from @value{GDBN}.
26071
9e6c4bd5
NR
26072@node Server Prefix
26073@section The Server Prefix
26074@cindex server prefix
26075
26076If you prefix a command with @samp{server } then it will not affect
26077the command history, nor will it affect @value{GDBN}'s notion of which
26078command to repeat if @key{RET} is pressed on a line by itself. This
26079means that commands can be run behind a user's back by a front-end in
26080a transparent manner.
26081
d837706a
NR
26082The @code{server } prefix does not affect the recording of values into
26083the value history; to print a value without recording it into the
26084value history, use the @code{output} command instead of the
26085@code{print} command.
26086
26087Using this prefix also disables confirmation requests
26088(@pxref{confirmation requests}).
9e6c4bd5 26089
922fbb7b
AC
26090@node Prompting
26091@section Annotation for @value{GDBN} Input
26092
26093@cindex annotations for prompts
26094When @value{GDBN} prompts for input, it annotates this fact so it is possible
26095to know when to send output, when the output from a given command is
26096over, etc.
26097
26098Different kinds of input each have a different @dfn{input type}. Each
26099input type has three annotations: a @code{pre-} annotation, which
26100denotes the beginning of any prompt which is being output, a plain
26101annotation, which denotes the end of the prompt, and then a @code{post-}
26102annotation which denotes the end of any echo which may (or may not) be
26103associated with the input. For example, the @code{prompt} input type
26104features the following annotations:
26105
26106@smallexample
26107^Z^Zpre-prompt
26108^Z^Zprompt
26109^Z^Zpost-prompt
26110@end smallexample
26111
26112The input types are
26113
26114@table @code
e5ac9b53
EZ
26115@findex pre-prompt annotation
26116@findex prompt annotation
26117@findex post-prompt annotation
922fbb7b
AC
26118@item prompt
26119When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
26120
e5ac9b53
EZ
26121@findex pre-commands annotation
26122@findex commands annotation
26123@findex post-commands annotation
922fbb7b
AC
26124@item commands
26125When @value{GDBN} prompts for a set of commands, like in the @code{commands}
26126command. The annotations are repeated for each command which is input.
26127
e5ac9b53
EZ
26128@findex pre-overload-choice annotation
26129@findex overload-choice annotation
26130@findex post-overload-choice annotation
922fbb7b
AC
26131@item overload-choice
26132When @value{GDBN} wants the user to select between various overloaded functions.
26133
e5ac9b53
EZ
26134@findex pre-query annotation
26135@findex query annotation
26136@findex post-query annotation
922fbb7b
AC
26137@item query
26138When @value{GDBN} wants the user to confirm a potentially dangerous operation.
26139
e5ac9b53
EZ
26140@findex pre-prompt-for-continue annotation
26141@findex prompt-for-continue annotation
26142@findex post-prompt-for-continue annotation
922fbb7b
AC
26143@item prompt-for-continue
26144When @value{GDBN} is asking the user to press return to continue. Note: Don't
26145expect this to work well; instead use @code{set height 0} to disable
26146prompting. This is because the counting of lines is buggy in the
26147presence of annotations.
26148@end table
26149
26150@node Errors
26151@section Errors
26152@cindex annotations for errors, warnings and interrupts
26153
e5ac9b53 26154@findex quit annotation
922fbb7b
AC
26155@smallexample
26156^Z^Zquit
26157@end smallexample
26158
26159This annotation occurs right before @value{GDBN} responds to an interrupt.
26160
e5ac9b53 26161@findex error annotation
922fbb7b
AC
26162@smallexample
26163^Z^Zerror
26164@end smallexample
26165
26166This annotation occurs right before @value{GDBN} responds to an error.
26167
26168Quit and error annotations indicate that any annotations which @value{GDBN} was
26169in the middle of may end abruptly. For example, if a
26170@code{value-history-begin} annotation is followed by a @code{error}, one
26171cannot expect to receive the matching @code{value-history-end}. One
26172cannot expect not to receive it either, however; an error annotation
26173does not necessarily mean that @value{GDBN} is immediately returning all the way
26174to the top level.
26175
e5ac9b53 26176@findex error-begin annotation
922fbb7b
AC
26177A quit or error annotation may be preceded by
26178
26179@smallexample
26180^Z^Zerror-begin
26181@end smallexample
26182
26183Any output between that and the quit or error annotation is the error
26184message.
26185
26186Warning messages are not yet annotated.
26187@c If we want to change that, need to fix warning(), type_error(),
26188@c range_error(), and possibly other places.
26189
922fbb7b
AC
26190@node Invalidation
26191@section Invalidation Notices
26192
26193@cindex annotations for invalidation messages
26194The following annotations say that certain pieces of state may have
26195changed.
26196
26197@table @code
e5ac9b53 26198@findex frames-invalid annotation
922fbb7b
AC
26199@item ^Z^Zframes-invalid
26200
26201The frames (for example, output from the @code{backtrace} command) may
26202have changed.
26203
e5ac9b53 26204@findex breakpoints-invalid annotation
922fbb7b
AC
26205@item ^Z^Zbreakpoints-invalid
26206
26207The breakpoints may have changed. For example, the user just added or
26208deleted a breakpoint.
26209@end table
26210
26211@node Annotations for Running
26212@section Running the Program
26213@cindex annotations for running programs
26214
e5ac9b53
EZ
26215@findex starting annotation
26216@findex stopping annotation
922fbb7b 26217When the program starts executing due to a @value{GDBN} command such as
b383017d 26218@code{step} or @code{continue},
922fbb7b
AC
26219
26220@smallexample
26221^Z^Zstarting
26222@end smallexample
26223
b383017d 26224is output. When the program stops,
922fbb7b
AC
26225
26226@smallexample
26227^Z^Zstopped
26228@end smallexample
26229
26230is output. Before the @code{stopped} annotation, a variety of
26231annotations describe how the program stopped.
26232
26233@table @code
e5ac9b53 26234@findex exited annotation
922fbb7b
AC
26235@item ^Z^Zexited @var{exit-status}
26236The program exited, and @var{exit-status} is the exit status (zero for
26237successful exit, otherwise nonzero).
26238
e5ac9b53
EZ
26239@findex signalled annotation
26240@findex signal-name annotation
26241@findex signal-name-end annotation
26242@findex signal-string annotation
26243@findex signal-string-end annotation
922fbb7b
AC
26244@item ^Z^Zsignalled
26245The program exited with a signal. After the @code{^Z^Zsignalled}, the
26246annotation continues:
26247
26248@smallexample
26249@var{intro-text}
26250^Z^Zsignal-name
26251@var{name}
26252^Z^Zsignal-name-end
26253@var{middle-text}
26254^Z^Zsignal-string
26255@var{string}
26256^Z^Zsignal-string-end
26257@var{end-text}
26258@end smallexample
26259
26260@noindent
26261where @var{name} is the name of the signal, such as @code{SIGILL} or
26262@code{SIGSEGV}, and @var{string} is the explanation of the signal, such
26263as @code{Illegal Instruction} or @code{Segmentation fault}.
26264@var{intro-text}, @var{middle-text}, and @var{end-text} are for the
26265user's benefit and have no particular format.
26266
e5ac9b53 26267@findex signal annotation
922fbb7b
AC
26268@item ^Z^Zsignal
26269The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
26270just saying that the program received the signal, not that it was
26271terminated with it.
26272
e5ac9b53 26273@findex breakpoint annotation
922fbb7b
AC
26274@item ^Z^Zbreakpoint @var{number}
26275The program hit breakpoint number @var{number}.
26276
e5ac9b53 26277@findex watchpoint annotation
922fbb7b
AC
26278@item ^Z^Zwatchpoint @var{number}
26279The program hit watchpoint number @var{number}.
26280@end table
26281
26282@node Source Annotations
26283@section Displaying Source
26284@cindex annotations for source display
26285
e5ac9b53 26286@findex source annotation
922fbb7b
AC
26287The following annotation is used instead of displaying source code:
26288
26289@smallexample
26290^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
26291@end smallexample
26292
26293where @var{filename} is an absolute file name indicating which source
26294file, @var{line} is the line number within that file (where 1 is the
26295first line in the file), @var{character} is the character position
26296within the file (where 0 is the first character in the file) (for most
26297debug formats this will necessarily point to the beginning of a line),
26298@var{middle} is @samp{middle} if @var{addr} is in the middle of the
26299line, or @samp{beg} if @var{addr} is at the beginning of the line, and
26300@var{addr} is the address in the target program associated with the
26301source which is being displayed. @var{addr} is in the form @samp{0x}
26302followed by one or more lowercase hex digits (note that this does not
26303depend on the language).
26304
4efc6507
DE
26305@node JIT Interface
26306@chapter JIT Compilation Interface
26307@cindex just-in-time compilation
26308@cindex JIT compilation interface
26309
26310This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation
26311interface. A JIT compiler is a program or library that generates native
26312executable code at runtime and executes it, usually in order to achieve good
26313performance while maintaining platform independence.
26314
26315Programs that use JIT compilation are normally difficult to debug because
26316portions of their code are generated at runtime, instead of being loaded from
26317object files, which is where @value{GDBN} normally finds the program's symbols
26318and debug information. In order to debug programs that use JIT compilation,
26319@value{GDBN} has an interface that allows the program to register in-memory
26320symbol files with @value{GDBN} at runtime.
26321
26322If you are using @value{GDBN} to debug a program that uses this interface, then
26323it should work transparently so long as you have not stripped the binary. If
26324you are developing a JIT compiler, then the interface is documented in the rest
26325of this chapter. At this time, the only known client of this interface is the
26326LLVM JIT.
26327
26328Broadly speaking, the JIT interface mirrors the dynamic loader interface. The
26329JIT compiler communicates with @value{GDBN} by writing data into a global
26330variable and calling a fuction at a well-known symbol. When @value{GDBN}
26331attaches, it reads a linked list of symbol files from the global variable to
26332find existing code, and puts a breakpoint in the function so that it can find
26333out about additional code.
26334
26335@menu
26336* Declarations:: Relevant C struct declarations
26337* Registering Code:: Steps to register code
26338* Unregistering Code:: Steps to unregister code
26339@end menu
26340
26341@node Declarations
26342@section JIT Declarations
26343
26344These are the relevant struct declarations that a C program should include to
26345implement the interface:
26346
26347@smallexample
26348typedef enum
26349@{
26350 JIT_NOACTION = 0,
26351 JIT_REGISTER_FN,
26352 JIT_UNREGISTER_FN
26353@} jit_actions_t;
26354
26355struct jit_code_entry
26356@{
26357 struct jit_code_entry *next_entry;
26358 struct jit_code_entry *prev_entry;
26359 const char *symfile_addr;
26360 uint64_t symfile_size;
26361@};
26362
26363struct jit_descriptor
26364@{
26365 uint32_t version;
26366 /* This type should be jit_actions_t, but we use uint32_t
26367 to be explicit about the bitwidth. */
26368 uint32_t action_flag;
26369 struct jit_code_entry *relevant_entry;
26370 struct jit_code_entry *first_entry;
26371@};
26372
26373/* GDB puts a breakpoint in this function. */
26374void __attribute__((noinline)) __jit_debug_register_code() @{ @};
26375
26376/* Make sure to specify the version statically, because the
26377 debugger may check the version before we can set it. */
26378struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @};
26379@end smallexample
26380
26381If the JIT is multi-threaded, then it is important that the JIT synchronize any
26382modifications to this global data properly, which can easily be done by putting
26383a global mutex around modifications to these structures.
26384
26385@node Registering Code
26386@section Registering Code
26387
26388To register code with @value{GDBN}, the JIT should follow this protocol:
26389
26390@itemize @bullet
26391@item
26392Generate an object file in memory with symbols and other desired debug
26393information. The file must include the virtual addresses of the sections.
26394
26395@item
26396Create a code entry for the file, which gives the start and size of the symbol
26397file.
26398
26399@item
26400Add it to the linked list in the JIT descriptor.
26401
26402@item
26403Point the relevant_entry field of the descriptor at the entry.
26404
26405@item
26406Set @code{action_flag} to @code{JIT_REGISTER} and call
26407@code{__jit_debug_register_code}.
26408@end itemize
26409
26410When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the
26411@code{relevant_entry} pointer so it doesn't have to walk the list looking for
26412new code. However, the linked list must still be maintained in order to allow
26413@value{GDBN} to attach to a running process and still find the symbol files.
26414
26415@node Unregistering Code
26416@section Unregistering Code
26417
26418If code is freed, then the JIT should use the following protocol:
26419
26420@itemize @bullet
26421@item
26422Remove the code entry corresponding to the code from the linked list.
26423
26424@item
26425Point the @code{relevant_entry} field of the descriptor at the code entry.
26426
26427@item
26428Set @code{action_flag} to @code{JIT_UNREGISTER} and call
26429@code{__jit_debug_register_code}.
26430@end itemize
26431
26432If the JIT frees or recompiles code without unregistering it, then @value{GDBN}
26433and the JIT will leak the memory used for the associated symbol files.
26434
8e04817f
AC
26435@node GDB Bugs
26436@chapter Reporting Bugs in @value{GDBN}
26437@cindex bugs in @value{GDBN}
26438@cindex reporting bugs in @value{GDBN}
c906108c 26439
8e04817f 26440Your bug reports play an essential role in making @value{GDBN} reliable.
c906108c 26441
8e04817f
AC
26442Reporting a bug may help you by bringing a solution to your problem, or it
26443may not. But in any case the principal function of a bug report is to help
26444the entire community by making the next version of @value{GDBN} work better. Bug
26445reports are your contribution to the maintenance of @value{GDBN}.
c906108c 26446
8e04817f
AC
26447In order for a bug report to serve its purpose, you must include the
26448information that enables us to fix the bug.
c4555f82
SC
26449
26450@menu
8e04817f
AC
26451* Bug Criteria:: Have you found a bug?
26452* Bug Reporting:: How to report bugs
c4555f82
SC
26453@end menu
26454
8e04817f 26455@node Bug Criteria
79a6e687 26456@section Have You Found a Bug?
8e04817f 26457@cindex bug criteria
c4555f82 26458
8e04817f 26459If you are not sure whether you have found a bug, here are some guidelines:
c4555f82
SC
26460
26461@itemize @bullet
8e04817f
AC
26462@cindex fatal signal
26463@cindex debugger crash
26464@cindex crash of debugger
c4555f82 26465@item
8e04817f
AC
26466If the debugger gets a fatal signal, for any input whatever, that is a
26467@value{GDBN} bug. Reliable debuggers never crash.
26468
26469@cindex error on valid input
26470@item
26471If @value{GDBN} produces an error message for valid input, that is a
26472bug. (Note that if you're cross debugging, the problem may also be
26473somewhere in the connection to the target.)
c4555f82 26474
8e04817f 26475@cindex invalid input
c4555f82 26476@item
8e04817f
AC
26477If @value{GDBN} does not produce an error message for invalid input,
26478that is a bug. However, you should note that your idea of
26479``invalid input'' might be our idea of ``an extension'' or ``support
26480for traditional practice''.
26481
26482@item
26483If you are an experienced user of debugging tools, your suggestions
26484for improvement of @value{GDBN} are welcome in any case.
c4555f82
SC
26485@end itemize
26486
8e04817f 26487@node Bug Reporting
79a6e687 26488@section How to Report Bugs
8e04817f
AC
26489@cindex bug reports
26490@cindex @value{GDBN} bugs, reporting
26491
26492A number of companies and individuals offer support for @sc{gnu} products.
26493If you obtained @value{GDBN} from a support organization, we recommend you
26494contact that organization first.
26495
26496You can find contact information for many support companies and
26497individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
26498distribution.
26499@c should add a web page ref...
26500
c16158bc
JM
26501@ifset BUGURL
26502@ifset BUGURL_DEFAULT
129188f6 26503In any event, we also recommend that you submit bug reports for
d3e8051b 26504@value{GDBN}. The preferred method is to submit them directly using
129188f6
AC
26505@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
26506page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
26507be used.
8e04817f
AC
26508
26509@strong{Do not send bug reports to @samp{info-gdb}, or to
26510@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
26511not want to receive bug reports. Those that do have arranged to receive
26512@samp{bug-gdb}.
26513
26514The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
26515serves as a repeater. The mailing list and the newsgroup carry exactly
26516the same messages. Often people think of posting bug reports to the
26517newsgroup instead of mailing them. This appears to work, but it has one
26518problem which can be crucial: a newsgroup posting often lacks a mail
26519path back to the sender. Thus, if we need to ask for more information,
26520we may be unable to reach you. For this reason, it is better to send
26521bug reports to the mailing list.
c16158bc
JM
26522@end ifset
26523@ifclear BUGURL_DEFAULT
26524In any event, we also recommend that you submit bug reports for
26525@value{GDBN} to @value{BUGURL}.
26526@end ifclear
26527@end ifset
c4555f82 26528
8e04817f
AC
26529The fundamental principle of reporting bugs usefully is this:
26530@strong{report all the facts}. If you are not sure whether to state a
26531fact or leave it out, state it!
c4555f82 26532
8e04817f
AC
26533Often people omit facts because they think they know what causes the
26534problem and assume that some details do not matter. Thus, you might
26535assume that the name of the variable you use in an example does not matter.
26536Well, probably it does not, but one cannot be sure. Perhaps the bug is a
26537stray memory reference which happens to fetch from the location where that
26538name is stored in memory; perhaps, if the name were different, the contents
26539of that location would fool the debugger into doing the right thing despite
26540the bug. Play it safe and give a specific, complete example. That is the
26541easiest thing for you to do, and the most helpful.
c4555f82 26542
8e04817f
AC
26543Keep in mind that the purpose of a bug report is to enable us to fix the
26544bug. It may be that the bug has been reported previously, but neither
26545you nor we can know that unless your bug report is complete and
26546self-contained.
c4555f82 26547
8e04817f
AC
26548Sometimes people give a few sketchy facts and ask, ``Does this ring a
26549bell?'' Those bug reports are useless, and we urge everyone to
26550@emph{refuse to respond to them} except to chide the sender to report
26551bugs properly.
26552
26553To enable us to fix the bug, you should include all these things:
c4555f82
SC
26554
26555@itemize @bullet
26556@item
8e04817f
AC
26557The version of @value{GDBN}. @value{GDBN} announces it if you start
26558with no arguments; you can also print it at any time using @code{show
26559version}.
c4555f82 26560
8e04817f
AC
26561Without this, we will not know whether there is any point in looking for
26562the bug in the current version of @value{GDBN}.
c4555f82
SC
26563
26564@item
8e04817f
AC
26565The type of machine you are using, and the operating system name and
26566version number.
c4555f82
SC
26567
26568@item
c1468174 26569What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
8e04817f 26570``@value{GCC}--2.8.1''.
c4555f82
SC
26571
26572@item
8e04817f 26573What compiler (and its version) was used to compile the program you are
c1468174 26574debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
3f94c067
BW
26575C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version}
26576to get this information; for other compilers, see the documentation for
26577those compilers.
c4555f82 26578
8e04817f
AC
26579@item
26580The command arguments you gave the compiler to compile your example and
26581observe the bug. For example, did you use @samp{-O}? To guarantee
26582you will not omit something important, list them all. A copy of the
26583Makefile (or the output from make) is sufficient.
c4555f82 26584
8e04817f
AC
26585If we were to try to guess the arguments, we would probably guess wrong
26586and then we might not encounter the bug.
c4555f82 26587
8e04817f
AC
26588@item
26589A complete input script, and all necessary source files, that will
26590reproduce the bug.
c4555f82 26591
8e04817f
AC
26592@item
26593A description of what behavior you observe that you believe is
26594incorrect. For example, ``It gets a fatal signal.''
c4555f82 26595
8e04817f
AC
26596Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
26597will certainly notice it. But if the bug is incorrect output, we might
26598not notice unless it is glaringly wrong. You might as well not give us
26599a chance to make a mistake.
c4555f82 26600
8e04817f
AC
26601Even if the problem you experience is a fatal signal, you should still
26602say so explicitly. Suppose something strange is going on, such as, your
26603copy of @value{GDBN} is out of synch, or you have encountered a bug in
26604the C library on your system. (This has happened!) Your copy might
26605crash and ours would not. If you told us to expect a crash, then when
26606ours fails to crash, we would know that the bug was not happening for
26607us. If you had not told us to expect a crash, then we would not be able
26608to draw any conclusion from our observations.
c4555f82 26609
e0c07bf0
MC
26610@pindex script
26611@cindex recording a session script
26612To collect all this information, you can use a session recording program
26613such as @command{script}, which is available on many Unix systems.
26614Just run your @value{GDBN} session inside @command{script} and then
26615include the @file{typescript} file with your bug report.
26616
26617Another way to record a @value{GDBN} session is to run @value{GDBN}
26618inside Emacs and then save the entire buffer to a file.
26619
8e04817f
AC
26620@item
26621If you wish to suggest changes to the @value{GDBN} source, send us context
26622diffs. If you even discuss something in the @value{GDBN} source, refer to
26623it by context, not by line number.
c4555f82 26624
8e04817f
AC
26625The line numbers in our development sources will not match those in your
26626sources. Your line numbers would convey no useful information to us.
c4555f82 26627
8e04817f 26628@end itemize
c4555f82 26629
8e04817f 26630Here are some things that are not necessary:
c4555f82 26631
8e04817f
AC
26632@itemize @bullet
26633@item
26634A description of the envelope of the bug.
c4555f82 26635
8e04817f
AC
26636Often people who encounter a bug spend a lot of time investigating
26637which changes to the input file will make the bug go away and which
26638changes will not affect it.
c4555f82 26639
8e04817f
AC
26640This is often time consuming and not very useful, because the way we
26641will find the bug is by running a single example under the debugger
26642with breakpoints, not by pure deduction from a series of examples.
26643We recommend that you save your time for something else.
c4555f82 26644
8e04817f
AC
26645Of course, if you can find a simpler example to report @emph{instead}
26646of the original one, that is a convenience for us. Errors in the
26647output will be easier to spot, running under the debugger will take
26648less time, and so on.
c4555f82 26649
8e04817f
AC
26650However, simplification is not vital; if you do not want to do this,
26651report the bug anyway and send us the entire test case you used.
c4555f82 26652
8e04817f
AC
26653@item
26654A patch for the bug.
c4555f82 26655
8e04817f
AC
26656A patch for the bug does help us if it is a good one. But do not omit
26657the necessary information, such as the test case, on the assumption that
26658a patch is all we need. We might see problems with your patch and decide
26659to fix the problem another way, or we might not understand it at all.
c4555f82 26660
8e04817f
AC
26661Sometimes with a program as complicated as @value{GDBN} it is very hard to
26662construct an example that will make the program follow a certain path
26663through the code. If you do not send us the example, we will not be able
26664to construct one, so we will not be able to verify that the bug is fixed.
c4555f82 26665
8e04817f
AC
26666And if we cannot understand what bug you are trying to fix, or why your
26667patch should be an improvement, we will not install it. A test case will
26668help us to understand.
c4555f82 26669
8e04817f
AC
26670@item
26671A guess about what the bug is or what it depends on.
c4555f82 26672
8e04817f
AC
26673Such guesses are usually wrong. Even we cannot guess right about such
26674things without first using the debugger to find the facts.
26675@end itemize
c4555f82 26676
8e04817f
AC
26677@c The readline documentation is distributed with the readline code
26678@c and consists of the two following files:
26679@c rluser.texinfo
26680@c inc-hist.texinfo
26681@c Use -I with makeinfo to point to the appropriate directory,
26682@c environment var TEXINPUTS with TeX.
5bdf8622 26683@include rluser.texi
8e04817f 26684@include inc-hist.texinfo
c4555f82 26685
c4555f82 26686
8e04817f
AC
26687@node Formatting Documentation
26688@appendix Formatting Documentation
c4555f82 26689
8e04817f
AC
26690@cindex @value{GDBN} reference card
26691@cindex reference card
26692The @value{GDBN} 4 release includes an already-formatted reference card, ready
26693for printing with PostScript or Ghostscript, in the @file{gdb}
26694subdirectory of the main source directory@footnote{In
26695@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
26696release.}. If you can use PostScript or Ghostscript with your printer,
26697you can print the reference card immediately with @file{refcard.ps}.
c4555f82 26698
8e04817f
AC
26699The release also includes the source for the reference card. You
26700can format it, using @TeX{}, by typing:
c4555f82 26701
474c8240 26702@smallexample
8e04817f 26703make refcard.dvi
474c8240 26704@end smallexample
c4555f82 26705
8e04817f
AC
26706The @value{GDBN} reference card is designed to print in @dfn{landscape}
26707mode on US ``letter'' size paper;
26708that is, on a sheet 11 inches wide by 8.5 inches
26709high. You will need to specify this form of printing as an option to
26710your @sc{dvi} output program.
c4555f82 26711
8e04817f 26712@cindex documentation
c4555f82 26713
8e04817f
AC
26714All the documentation for @value{GDBN} comes as part of the machine-readable
26715distribution. The documentation is written in Texinfo format, which is
26716a documentation system that uses a single source file to produce both
26717on-line information and a printed manual. You can use one of the Info
26718formatting commands to create the on-line version of the documentation
26719and @TeX{} (or @code{texi2roff}) to typeset the printed version.
c4555f82 26720
8e04817f
AC
26721@value{GDBN} includes an already formatted copy of the on-line Info
26722version of this manual in the @file{gdb} subdirectory. The main Info
26723file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
26724subordinate files matching @samp{gdb.info*} in the same directory. If
26725necessary, you can print out these files, or read them with any editor;
26726but they are easier to read using the @code{info} subsystem in @sc{gnu}
26727Emacs or the standalone @code{info} program, available as part of the
26728@sc{gnu} Texinfo distribution.
c4555f82 26729
8e04817f
AC
26730If you want to format these Info files yourself, you need one of the
26731Info formatting programs, such as @code{texinfo-format-buffer} or
26732@code{makeinfo}.
c4555f82 26733
8e04817f
AC
26734If you have @code{makeinfo} installed, and are in the top level
26735@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
26736version @value{GDBVN}), you can make the Info file by typing:
c4555f82 26737
474c8240 26738@smallexample
8e04817f
AC
26739cd gdb
26740make gdb.info
474c8240 26741@end smallexample
c4555f82 26742
8e04817f
AC
26743If you want to typeset and print copies of this manual, you need @TeX{},
26744a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
26745Texinfo definitions file.
c4555f82 26746
8e04817f
AC
26747@TeX{} is a typesetting program; it does not print files directly, but
26748produces output files called @sc{dvi} files. To print a typeset
26749document, you need a program to print @sc{dvi} files. If your system
26750has @TeX{} installed, chances are it has such a program. The precise
26751command to use depends on your system; @kbd{lpr -d} is common; another
26752(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
26753require a file name without any extension or a @samp{.dvi} extension.
c4555f82 26754
8e04817f
AC
26755@TeX{} also requires a macro definitions file called
26756@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
26757written in Texinfo format. On its own, @TeX{} cannot either read or
26758typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
26759and is located in the @file{gdb-@var{version-number}/texinfo}
26760directory.
c4555f82 26761
8e04817f 26762If you have @TeX{} and a @sc{dvi} printer program installed, you can
d3e8051b 26763typeset and print this manual. First switch to the @file{gdb}
8e04817f
AC
26764subdirectory of the main source directory (for example, to
26765@file{gdb-@value{GDBVN}/gdb}) and type:
c4555f82 26766
474c8240 26767@smallexample
8e04817f 26768make gdb.dvi
474c8240 26769@end smallexample
c4555f82 26770
8e04817f 26771Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c4555f82 26772
8e04817f
AC
26773@node Installing GDB
26774@appendix Installing @value{GDBN}
8e04817f 26775@cindex installation
c4555f82 26776
7fa2210b
DJ
26777@menu
26778* Requirements:: Requirements for building @value{GDBN}
db2e3e2e 26779* Running Configure:: Invoking the @value{GDBN} @file{configure} script
7fa2210b
DJ
26780* Separate Objdir:: Compiling @value{GDBN} in another directory
26781* Config Names:: Specifying names for hosts and targets
26782* Configure Options:: Summary of options for configure
098b41a6 26783* System-wide configuration:: Having a system-wide init file
7fa2210b
DJ
26784@end menu
26785
26786@node Requirements
79a6e687 26787@section Requirements for Building @value{GDBN}
7fa2210b
DJ
26788@cindex building @value{GDBN}, requirements for
26789
26790Building @value{GDBN} requires various tools and packages to be available.
26791Other packages will be used only if they are found.
26792
79a6e687 26793@heading Tools/Packages Necessary for Building @value{GDBN}
7fa2210b
DJ
26794@table @asis
26795@item ISO C90 compiler
26796@value{GDBN} is written in ISO C90. It should be buildable with any
26797working C90 compiler, e.g.@: GCC.
26798
26799@end table
26800
79a6e687 26801@heading Tools/Packages Optional for Building @value{GDBN}
7fa2210b
DJ
26802@table @asis
26803@item Expat
123dc839 26804@anchor{Expat}
7fa2210b
DJ
26805@value{GDBN} can use the Expat XML parsing library. This library may be
26806included with your operating system distribution; if it is not, you
26807can get the latest version from @url{http://expat.sourceforge.net}.
db2e3e2e 26808The @file{configure} script will search for this library in several
7fa2210b
DJ
26809standard locations; if it is installed in an unusual path, you can
26810use the @option{--with-libexpat-prefix} option to specify its location.
26811
9cceb671
DJ
26812Expat is used for:
26813
26814@itemize @bullet
26815@item
26816Remote protocol memory maps (@pxref{Memory Map Format})
26817@item
26818Target descriptions (@pxref{Target Descriptions})
26819@item
26820Remote shared library lists (@pxref{Library List Format})
26821@item
26822MS-Windows shared libraries (@pxref{Shared Libraries})
26823@end itemize
7fa2210b 26824
31fffb02
CS
26825@item zlib
26826@cindex compressed debug sections
26827@value{GDBN} will use the @samp{zlib} library, if available, to read
26828compressed debug sections. Some linkers, such as GNU gold, are capable
26829of producing binaries with compressed debug sections. If @value{GDBN}
26830is compiled with @samp{zlib}, it will be able to read the debug
26831information in such binaries.
26832
26833The @samp{zlib} library is likely included with your operating system
26834distribution; if it is not, you can get the latest version from
26835@url{http://zlib.net}.
26836
6c7a06a3
TT
26837@item iconv
26838@value{GDBN}'s features related to character sets (@pxref{Character
26839Sets}) require a functioning @code{iconv} implementation. If you are
26840on a GNU system, then this is provided by the GNU C Library. Some
26841other systems also provide a working @code{iconv}.
26842
26843On systems with @code{iconv}, you can install GNU Libiconv. If you
26844have previously installed Libiconv, you can use the
26845@option{--with-libiconv-prefix} option to configure.
26846
26847@value{GDBN}'s top-level @file{configure} and @file{Makefile} will
26848arrange to build Libiconv if a directory named @file{libiconv} appears
26849in the top-most source directory. If Libiconv is built this way, and
26850if the operating system does not provide a suitable @code{iconv}
26851implementation, then the just-built library will automatically be used
26852by @value{GDBN}. One easy way to set this up is to download GNU
26853Libiconv, unpack it, and then rename the directory holding the
26854Libiconv source code to @samp{libiconv}.
7fa2210b
DJ
26855@end table
26856
26857@node Running Configure
db2e3e2e 26858@section Invoking the @value{GDBN} @file{configure} Script
7fa2210b 26859@cindex configuring @value{GDBN}
db2e3e2e 26860@value{GDBN} comes with a @file{configure} script that automates the process
8e04817f
AC
26861of preparing @value{GDBN} for installation; you can then use @code{make} to
26862build the @code{gdb} program.
26863@iftex
26864@c irrelevant in info file; it's as current as the code it lives with.
26865@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
26866look at the @file{README} file in the sources; we may have improved the
26867installation procedures since publishing this manual.}
26868@end iftex
c4555f82 26869
8e04817f
AC
26870The @value{GDBN} distribution includes all the source code you need for
26871@value{GDBN} in a single directory, whose name is usually composed by
26872appending the version number to @samp{gdb}.
c4555f82 26873
8e04817f
AC
26874For example, the @value{GDBN} version @value{GDBVN} distribution is in the
26875@file{gdb-@value{GDBVN}} directory. That directory contains:
c4555f82 26876
8e04817f
AC
26877@table @code
26878@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
26879script for configuring @value{GDBN} and all its supporting libraries
c4555f82 26880
8e04817f
AC
26881@item gdb-@value{GDBVN}/gdb
26882the source specific to @value{GDBN} itself
c4555f82 26883
8e04817f
AC
26884@item gdb-@value{GDBVN}/bfd
26885source for the Binary File Descriptor library
c906108c 26886
8e04817f
AC
26887@item gdb-@value{GDBVN}/include
26888@sc{gnu} include files
c906108c 26889
8e04817f
AC
26890@item gdb-@value{GDBVN}/libiberty
26891source for the @samp{-liberty} free software library
c906108c 26892
8e04817f
AC
26893@item gdb-@value{GDBVN}/opcodes
26894source for the library of opcode tables and disassemblers
c906108c 26895
8e04817f
AC
26896@item gdb-@value{GDBVN}/readline
26897source for the @sc{gnu} command-line interface
c906108c 26898
8e04817f
AC
26899@item gdb-@value{GDBVN}/glob
26900source for the @sc{gnu} filename pattern-matching subroutine
c906108c 26901
8e04817f
AC
26902@item gdb-@value{GDBVN}/mmalloc
26903source for the @sc{gnu} memory-mapped malloc package
26904@end table
c906108c 26905
db2e3e2e 26906The simplest way to configure and build @value{GDBN} is to run @file{configure}
8e04817f
AC
26907from the @file{gdb-@var{version-number}} source directory, which in
26908this example is the @file{gdb-@value{GDBVN}} directory.
c906108c 26909
8e04817f 26910First switch to the @file{gdb-@var{version-number}} source directory
db2e3e2e 26911if you are not already in it; then run @file{configure}. Pass the
8e04817f
AC
26912identifier for the platform on which @value{GDBN} will run as an
26913argument.
c906108c 26914
8e04817f 26915For example:
c906108c 26916
474c8240 26917@smallexample
8e04817f
AC
26918cd gdb-@value{GDBVN}
26919./configure @var{host}
26920make
474c8240 26921@end smallexample
c906108c 26922
8e04817f
AC
26923@noindent
26924where @var{host} is an identifier such as @samp{sun4} or
26925@samp{decstation}, that identifies the platform where @value{GDBN} will run.
db2e3e2e 26926(You can often leave off @var{host}; @file{configure} tries to guess the
8e04817f 26927correct value by examining your system.)
c906108c 26928
8e04817f
AC
26929Running @samp{configure @var{host}} and then running @code{make} builds the
26930@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
26931libraries, then @code{gdb} itself. The configured source files, and the
26932binaries, are left in the corresponding source directories.
c906108c 26933
8e04817f 26934@need 750
db2e3e2e 26935@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
8e04817f
AC
26936system does not recognize this automatically when you run a different
26937shell, you may need to run @code{sh} on it explicitly:
c906108c 26938
474c8240 26939@smallexample
8e04817f 26940sh configure @var{host}
474c8240 26941@end smallexample
c906108c 26942
db2e3e2e 26943If you run @file{configure} from a directory that contains source
8e04817f 26944directories for multiple libraries or programs, such as the
db2e3e2e
BW
26945@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN},
26946@file{configure}
8e04817f
AC
26947creates configuration files for every directory level underneath (unless
26948you tell it not to, with the @samp{--norecursion} option).
26949
db2e3e2e 26950You should run the @file{configure} script from the top directory in the
94e91d6d 26951source tree, the @file{gdb-@var{version-number}} directory. If you run
db2e3e2e 26952@file{configure} from one of the subdirectories, you will configure only
94e91d6d 26953that subdirectory. That is usually not what you want. In particular,
db2e3e2e 26954if you run the first @file{configure} from the @file{gdb} subdirectory
94e91d6d
MC
26955of the @file{gdb-@var{version-number}} directory, you will omit the
26956configuration of @file{bfd}, @file{readline}, and other sibling
26957directories of the @file{gdb} subdirectory. This leads to build errors
26958about missing include files such as @file{bfd/bfd.h}.
c906108c 26959
8e04817f
AC
26960You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
26961However, you should make sure that the shell on your path (named by
26962the @samp{SHELL} environment variable) is publicly readable. Remember
26963that @value{GDBN} uses the shell to start your program---some systems refuse to
26964let @value{GDBN} debug child processes whose programs are not readable.
c906108c 26965
8e04817f 26966@node Separate Objdir
79a6e687 26967@section Compiling @value{GDBN} in Another Directory
c906108c 26968
8e04817f
AC
26969If you want to run @value{GDBN} versions for several host or target machines,
26970you need a different @code{gdb} compiled for each combination of
db2e3e2e 26971host and target. @file{configure} is designed to make this easy by
8e04817f
AC
26972allowing you to generate each configuration in a separate subdirectory,
26973rather than in the source directory. If your @code{make} program
26974handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
26975@code{make} in each of these directories builds the @code{gdb}
26976program specified there.
c906108c 26977
db2e3e2e 26978To build @code{gdb} in a separate directory, run @file{configure}
8e04817f 26979with the @samp{--srcdir} option to specify where to find the source.
db2e3e2e
BW
26980(You also need to specify a path to find @file{configure}
26981itself from your working directory. If the path to @file{configure}
8e04817f
AC
26982would be the same as the argument to @samp{--srcdir}, you can leave out
26983the @samp{--srcdir} option; it is assumed.)
c906108c 26984
8e04817f
AC
26985For example, with version @value{GDBVN}, you can build @value{GDBN} in a
26986separate directory for a Sun 4 like this:
c906108c 26987
474c8240 26988@smallexample
8e04817f
AC
26989@group
26990cd gdb-@value{GDBVN}
26991mkdir ../gdb-sun4
26992cd ../gdb-sun4
26993../gdb-@value{GDBVN}/configure sun4
26994make
26995@end group
474c8240 26996@end smallexample
c906108c 26997
db2e3e2e 26998When @file{configure} builds a configuration using a remote source
8e04817f
AC
26999directory, it creates a tree for the binaries with the same structure
27000(and using the same names) as the tree under the source directory. In
27001the example, you'd find the Sun 4 library @file{libiberty.a} in the
27002directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
27003@file{gdb-sun4/gdb}.
c906108c 27004
94e91d6d
MC
27005Make sure that your path to the @file{configure} script has just one
27006instance of @file{gdb} in it. If your path to @file{configure} looks
27007like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
27008one subdirectory of @value{GDBN}, not the whole package. This leads to
27009build errors about missing include files such as @file{bfd/bfd.h}.
27010
8e04817f
AC
27011One popular reason to build several @value{GDBN} configurations in separate
27012directories is to configure @value{GDBN} for cross-compiling (where
27013@value{GDBN} runs on one machine---the @dfn{host}---while debugging
27014programs that run on another machine---the @dfn{target}).
27015You specify a cross-debugging target by
db2e3e2e 27016giving the @samp{--target=@var{target}} option to @file{configure}.
c906108c 27017
8e04817f
AC
27018When you run @code{make} to build a program or library, you must run
27019it in a configured directory---whatever directory you were in when you
db2e3e2e 27020called @file{configure} (or one of its subdirectories).
c906108c 27021
db2e3e2e 27022The @code{Makefile} that @file{configure} generates in each source
8e04817f
AC
27023directory also runs recursively. If you type @code{make} in a source
27024directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
27025directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
27026will build all the required libraries, and then build GDB.
c906108c 27027
8e04817f
AC
27028When you have multiple hosts or targets configured in separate
27029directories, you can run @code{make} on them in parallel (for example,
27030if they are NFS-mounted on each of the hosts); they will not interfere
27031with each other.
c906108c 27032
8e04817f 27033@node Config Names
79a6e687 27034@section Specifying Names for Hosts and Targets
c906108c 27035
db2e3e2e 27036The specifications used for hosts and targets in the @file{configure}
8e04817f
AC
27037script are based on a three-part naming scheme, but some short predefined
27038aliases are also supported. The full naming scheme encodes three pieces
27039of information in the following pattern:
c906108c 27040
474c8240 27041@smallexample
8e04817f 27042@var{architecture}-@var{vendor}-@var{os}
474c8240 27043@end smallexample
c906108c 27044
8e04817f
AC
27045For example, you can use the alias @code{sun4} as a @var{host} argument,
27046or as the value for @var{target} in a @code{--target=@var{target}}
27047option. The equivalent full name is @samp{sparc-sun-sunos4}.
c906108c 27048
db2e3e2e 27049The @file{configure} script accompanying @value{GDBN} does not provide
8e04817f 27050any query facility to list all supported host and target names or
db2e3e2e 27051aliases. @file{configure} calls the Bourne shell script
8e04817f
AC
27052@code{config.sub} to map abbreviations to full names; you can read the
27053script, if you wish, or you can use it to test your guesses on
27054abbreviations---for example:
c906108c 27055
8e04817f
AC
27056@smallexample
27057% sh config.sub i386-linux
27058i386-pc-linux-gnu
27059% sh config.sub alpha-linux
27060alpha-unknown-linux-gnu
27061% sh config.sub hp9k700
27062hppa1.1-hp-hpux
27063% sh config.sub sun4
27064sparc-sun-sunos4.1.1
27065% sh config.sub sun3
27066m68k-sun-sunos4.1.1
27067% sh config.sub i986v
27068Invalid configuration `i986v': machine `i986v' not recognized
27069@end smallexample
c906108c 27070
8e04817f
AC
27071@noindent
27072@code{config.sub} is also distributed in the @value{GDBN} source
27073directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
d700128c 27074
8e04817f 27075@node Configure Options
db2e3e2e 27076@section @file{configure} Options
c906108c 27077
db2e3e2e
BW
27078Here is a summary of the @file{configure} options and arguments that
27079are most often useful for building @value{GDBN}. @file{configure} also has
8e04817f 27080several other options not listed here. @inforef{What Configure
db2e3e2e 27081Does,,configure.info}, for a full explanation of @file{configure}.
c906108c 27082
474c8240 27083@smallexample
8e04817f
AC
27084configure @r{[}--help@r{]}
27085 @r{[}--prefix=@var{dir}@r{]}
27086 @r{[}--exec-prefix=@var{dir}@r{]}
27087 @r{[}--srcdir=@var{dirname}@r{]}
27088 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
27089 @r{[}--target=@var{target}@r{]}
27090 @var{host}
474c8240 27091@end smallexample
c906108c 27092
8e04817f
AC
27093@noindent
27094You may introduce options with a single @samp{-} rather than
27095@samp{--} if you prefer; but you may abbreviate option names if you use
27096@samp{--}.
c906108c 27097
8e04817f
AC
27098@table @code
27099@item --help
db2e3e2e 27100Display a quick summary of how to invoke @file{configure}.
c906108c 27101
8e04817f
AC
27102@item --prefix=@var{dir}
27103Configure the source to install programs and files under directory
27104@file{@var{dir}}.
c906108c 27105
8e04817f
AC
27106@item --exec-prefix=@var{dir}
27107Configure the source to install programs under directory
27108@file{@var{dir}}.
c906108c 27109
8e04817f
AC
27110@c avoid splitting the warning from the explanation:
27111@need 2000
27112@item --srcdir=@var{dirname}
27113@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
27114@code{make} that implements the @code{VPATH} feature.}@*
27115Use this option to make configurations in directories separate from the
27116@value{GDBN} source directories. Among other things, you can use this to
27117build (or maintain) several configurations simultaneously, in separate
db2e3e2e 27118directories. @file{configure} writes configuration-specific files in
8e04817f 27119the current directory, but arranges for them to use the source in the
db2e3e2e 27120directory @var{dirname}. @file{configure} creates directories under
8e04817f
AC
27121the working directory in parallel to the source directories below
27122@var{dirname}.
c906108c 27123
8e04817f 27124@item --norecursion
db2e3e2e 27125Configure only the directory level where @file{configure} is executed; do not
8e04817f 27126propagate configuration to subdirectories.
c906108c 27127
8e04817f
AC
27128@item --target=@var{target}
27129Configure @value{GDBN} for cross-debugging programs running on the specified
27130@var{target}. Without this option, @value{GDBN} is configured to debug
27131programs that run on the same machine (@var{host}) as @value{GDBN} itself.
c906108c 27132
8e04817f 27133There is no convenient way to generate a list of all available targets.
c906108c 27134
8e04817f
AC
27135@item @var{host} @dots{}
27136Configure @value{GDBN} to run on the specified @var{host}.
c906108c 27137
8e04817f
AC
27138There is no convenient way to generate a list of all available hosts.
27139@end table
c906108c 27140
8e04817f
AC
27141There are many other options available as well, but they are generally
27142needed for special purposes only.
c906108c 27143
098b41a6
JG
27144@node System-wide configuration
27145@section System-wide configuration and settings
27146@cindex system-wide init file
27147
27148@value{GDBN} can be configured to have a system-wide init file;
27149this file will be read and executed at startup (@pxref{Startup, , What
27150@value{GDBN} does during startup}).
27151
27152Here is the corresponding configure option:
27153
27154@table @code
27155@item --with-system-gdbinit=@var{file}
27156Specify that the default location of the system-wide init file is
27157@var{file}.
27158@end table
27159
27160If @value{GDBN} has been configured with the option @option{--prefix=$prefix},
27161it may be subject to relocation. Two possible cases:
27162
27163@itemize @bullet
27164@item
27165If the default location of this init file contains @file{$prefix},
27166it will be subject to relocation. Suppose that the configure options
27167are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit};
27168if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system
27169init file is looked for as @file{$install/etc/gdbinit} instead of
27170@file{$prefix/etc/gdbinit}.
27171
27172@item
27173By contrast, if the default location does not contain the prefix,
27174it will not be relocated. E.g.@: if @value{GDBN} has been configured with
27175@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit},
27176then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit},
27177wherever @value{GDBN} is installed.
27178@end itemize
27179
8e04817f
AC
27180@node Maintenance Commands
27181@appendix Maintenance Commands
27182@cindex maintenance commands
27183@cindex internal commands
c906108c 27184
8e04817f 27185In addition to commands intended for @value{GDBN} users, @value{GDBN}
09d4efe1
EZ
27186includes a number of commands intended for @value{GDBN} developers,
27187that are not documented elsewhere in this manual. These commands are
da316a69
EZ
27188provided here for reference. (For commands that turn on debugging
27189messages, see @ref{Debugging Output}.)
c906108c 27190
8e04817f 27191@table @code
09d4efe1 27192@kindex maint agent
782b2b07 27193@kindex maint agent-eval
09d4efe1 27194@item maint agent @var{expression}
782b2b07 27195@itemx maint agent-eval @var{expression}
09d4efe1
EZ
27196Translate the given @var{expression} into remote agent bytecodes.
27197This command is useful for debugging the Agent Expression mechanism
782b2b07
SS
27198(@pxref{Agent Expressions}). The @samp{agent} version produces an
27199expression useful for data collection, such as by tracepoints, while
27200@samp{maint agent-eval} produces an expression that evaluates directly
27201to a result. For instance, a collection expression for @code{globa +
27202globb} will include bytecodes to record four bytes of memory at each
27203of the addresses of @code{globa} and @code{globb}, while discarding
27204the result of the addition, while an evaluation expression will do the
27205addition and return the sum.
09d4efe1 27206
8e04817f
AC
27207@kindex maint info breakpoints
27208@item @anchor{maint info breakpoints}maint info breakpoints
27209Using the same format as @samp{info breakpoints}, display both the
27210breakpoints you've set explicitly, and those @value{GDBN} is using for
27211internal purposes. Internal breakpoints are shown with negative
27212breakpoint numbers. The type column identifies what kind of breakpoint
27213is shown:
c906108c 27214
8e04817f
AC
27215@table @code
27216@item breakpoint
27217Normal, explicitly set breakpoint.
c906108c 27218
8e04817f
AC
27219@item watchpoint
27220Normal, explicitly set watchpoint.
c906108c 27221
8e04817f
AC
27222@item longjmp
27223Internal breakpoint, used to handle correctly stepping through
27224@code{longjmp} calls.
c906108c 27225
8e04817f
AC
27226@item longjmp resume
27227Internal breakpoint at the target of a @code{longjmp}.
c906108c 27228
8e04817f
AC
27229@item until
27230Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
c906108c 27231
8e04817f
AC
27232@item finish
27233Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
c906108c 27234
8e04817f
AC
27235@item shlib events
27236Shared library events.
c906108c 27237
8e04817f 27238@end table
c906108c 27239
fff08868
HZ
27240@kindex set displaced-stepping
27241@kindex show displaced-stepping
237fc4c9
PA
27242@cindex displaced stepping support
27243@cindex out-of-line single-stepping
fff08868
HZ
27244@item set displaced-stepping
27245@itemx show displaced-stepping
237fc4c9 27246Control whether or not @value{GDBN} will do @dfn{displaced stepping}
fff08868
HZ
27247if the target supports it. Displaced stepping is a way to single-step
27248over breakpoints without removing them from the inferior, by executing
27249an out-of-line copy of the instruction that was originally at the
27250breakpoint location. It is also known as out-of-line single-stepping.
27251
27252@table @code
27253@item set displaced-stepping on
27254If the target architecture supports it, @value{GDBN} will use
27255displaced stepping to step over breakpoints.
27256
27257@item set displaced-stepping off
27258@value{GDBN} will not use displaced stepping to step over breakpoints,
27259even if such is supported by the target architecture.
27260
27261@cindex non-stop mode, and @samp{set displaced-stepping}
27262@item set displaced-stepping auto
27263This is the default mode. @value{GDBN} will use displaced stepping
27264only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target
27265architecture supports displaced stepping.
27266@end table
237fc4c9 27267
09d4efe1
EZ
27268@kindex maint check-symtabs
27269@item maint check-symtabs
27270Check the consistency of psymtabs and symtabs.
27271
27272@kindex maint cplus first_component
27273@item maint cplus first_component @var{name}
27274Print the first C@t{++} class/namespace component of @var{name}.
27275
27276@kindex maint cplus namespace
27277@item maint cplus namespace
27278Print the list of possible C@t{++} namespaces.
27279
27280@kindex maint demangle
27281@item maint demangle @var{name}
d3e8051b 27282Demangle a C@t{++} or Objective-C mangled @var{name}.
09d4efe1
EZ
27283
27284@kindex maint deprecate
27285@kindex maint undeprecate
27286@cindex deprecated commands
27287@item maint deprecate @var{command} @r{[}@var{replacement}@r{]}
27288@itemx maint undeprecate @var{command}
27289Deprecate or undeprecate the named @var{command}. Deprecated commands
27290cause @value{GDBN} to issue a warning when you use them. The optional
27291argument @var{replacement} says which newer command should be used in
27292favor of the deprecated one; if it is given, @value{GDBN} will mention
27293the replacement as part of the warning.
27294
27295@kindex maint dump-me
27296@item maint dump-me
721c2651 27297@cindex @code{SIGQUIT} signal, dump core of @value{GDBN}
09d4efe1 27298Cause a fatal signal in the debugger and force it to dump its core.
721c2651
EZ
27299This is supported only on systems which support aborting a program
27300with the @code{SIGQUIT} signal.
09d4efe1 27301
8d30a00d
AC
27302@kindex maint internal-error
27303@kindex maint internal-warning
09d4efe1
EZ
27304@item maint internal-error @r{[}@var{message-text}@r{]}
27305@itemx maint internal-warning @r{[}@var{message-text}@r{]}
8d30a00d
AC
27306Cause @value{GDBN} to call the internal function @code{internal_error}
27307or @code{internal_warning} and hence behave as though an internal error
27308or internal warning has been detected. In addition to reporting the
27309internal problem, these functions give the user the opportunity to
27310either quit @value{GDBN} or create a core file of the current
27311@value{GDBN} session.
27312
09d4efe1
EZ
27313These commands take an optional parameter @var{message-text} that is
27314used as the text of the error or warning message.
27315
d3e8051b 27316Here's an example of using @code{internal-error}:
09d4efe1 27317
8d30a00d 27318@smallexample
f7dc1244 27319(@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
8d30a00d
AC
27320@dots{}/maint.c:121: internal-error: testing, 1, 2
27321A problem internal to GDB has been detected. Further
27322debugging may prove unreliable.
27323Quit this debugging session? (y or n) @kbd{n}
27324Create a core file? (y or n) @kbd{n}
f7dc1244 27325(@value{GDBP})
8d30a00d
AC
27326@end smallexample
27327
3c16cced
PA
27328@cindex @value{GDBN} internal error
27329@cindex internal errors, control of @value{GDBN} behavior
27330
27331@kindex maint set internal-error
27332@kindex maint show internal-error
27333@kindex maint set internal-warning
27334@kindex maint show internal-warning
27335@item maint set internal-error @var{action} [ask|yes|no]
27336@itemx maint show internal-error @var{action}
27337@itemx maint set internal-warning @var{action} [ask|yes|no]
27338@itemx maint show internal-warning @var{action}
27339When @value{GDBN} reports an internal problem (error or warning) it
27340gives the user the opportunity to both quit @value{GDBN} and create a
27341core file of the current @value{GDBN} session. These commands let you
27342override the default behaviour for each particular @var{action},
27343described in the table below.
27344
27345@table @samp
27346@item quit
27347You can specify that @value{GDBN} should always (yes) or never (no)
27348quit. The default is to ask the user what to do.
27349
27350@item corefile
27351You can specify that @value{GDBN} should always (yes) or never (no)
27352create a core file. The default is to ask the user what to do.
27353@end table
27354
09d4efe1
EZ
27355@kindex maint packet
27356@item maint packet @var{text}
27357If @value{GDBN} is talking to an inferior via the serial protocol,
27358then this command sends the string @var{text} to the inferior, and
27359displays the response packet. @value{GDBN} supplies the initial
27360@samp{$} character, the terminating @samp{#} character, and the
27361checksum.
27362
27363@kindex maint print architecture
27364@item maint print architecture @r{[}@var{file}@r{]}
27365Print the entire architecture configuration. The optional argument
27366@var{file} names the file where the output goes.
8d30a00d 27367
81adfced
DJ
27368@kindex maint print c-tdesc
27369@item maint print c-tdesc
27370Print the current target description (@pxref{Target Descriptions}) as
27371a C source file. The created source file can be used in @value{GDBN}
27372when an XML parser is not available to parse the description.
27373
00905d52
AC
27374@kindex maint print dummy-frames
27375@item maint print dummy-frames
00905d52
AC
27376Prints the contents of @value{GDBN}'s internal dummy-frame stack.
27377
27378@smallexample
f7dc1244 27379(@value{GDBP}) @kbd{b add}
00905d52 27380@dots{}
f7dc1244 27381(@value{GDBP}) @kbd{print add(2,3)}
00905d52
AC
27382Breakpoint 2, add (a=2, b=3) at @dots{}
2738358 return (a + b);
27384The program being debugged stopped while in a function called from GDB.
27385@dots{}
f7dc1244 27386(@value{GDBP}) @kbd{maint print dummy-frames}
00905d52
AC
273870x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
27388 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@}
27389 call_lo=0x01014000 call_hi=0x01014001
f7dc1244 27390(@value{GDBP})
00905d52
AC
27391@end smallexample
27392
27393Takes an optional file parameter.
27394
0680b120
AC
27395@kindex maint print registers
27396@kindex maint print raw-registers
27397@kindex maint print cooked-registers
617073a9 27398@kindex maint print register-groups
09d4efe1
EZ
27399@item maint print registers @r{[}@var{file}@r{]}
27400@itemx maint print raw-registers @r{[}@var{file}@r{]}
27401@itemx maint print cooked-registers @r{[}@var{file}@r{]}
27402@itemx maint print register-groups @r{[}@var{file}@r{]}
0680b120
AC
27403Print @value{GDBN}'s internal register data structures.
27404
617073a9
AC
27405The command @code{maint print raw-registers} includes the contents of
27406the raw register cache; the command @code{maint print cooked-registers}
27407includes the (cooked) value of all registers; and the command
27408@code{maint print register-groups} includes the groups that each
27409register is a member of. @xref{Registers,, Registers, gdbint,
27410@value{GDBN} Internals}.
0680b120 27411
09d4efe1
EZ
27412These commands take an optional parameter, a file name to which to
27413write the information.
0680b120 27414
617073a9 27415@kindex maint print reggroups
09d4efe1
EZ
27416@item maint print reggroups @r{[}@var{file}@r{]}
27417Print @value{GDBN}'s internal register group data structures. The
27418optional argument @var{file} tells to what file to write the
27419information.
617073a9 27420
09d4efe1 27421The register groups info looks like this:
617073a9
AC
27422
27423@smallexample
f7dc1244 27424(@value{GDBP}) @kbd{maint print reggroups}
b383017d
RM
27425 Group Type
27426 general user
27427 float user
27428 all user
27429 vector user
27430 system user
27431 save internal
27432 restore internal
617073a9
AC
27433@end smallexample
27434
09d4efe1
EZ
27435@kindex flushregs
27436@item flushregs
27437This command forces @value{GDBN} to flush its internal register cache.
27438
27439@kindex maint print objfiles
27440@cindex info for known object files
27441@item maint print objfiles
27442Print a dump of all known object files. For each object file, this
27443command prints its name, address in memory, and all of its psymtabs
27444and symtabs.
27445
27446@kindex maint print statistics
27447@cindex bcache statistics
27448@item maint print statistics
27449This command prints, for each object file in the program, various data
27450about that object file followed by the byte cache (@dfn{bcache})
27451statistics for the object file. The objfile data includes the number
d3e8051b 27452of minimal, partial, full, and stabs symbols, the number of types
09d4efe1
EZ
27453defined by the objfile, the number of as yet unexpanded psym tables,
27454the number of line tables and string tables, and the amount of memory
27455used by the various tables. The bcache statistics include the counts,
27456sizes, and counts of duplicates of all and unique objects, max,
27457average, and median entry size, total memory used and its overhead and
27458savings, and various measures of the hash table size and chain
27459lengths.
27460
c7ba131e
JB
27461@kindex maint print target-stack
27462@cindex target stack description
27463@item maint print target-stack
27464A @dfn{target} is an interface between the debugger and a particular
27465kind of file or process. Targets can be stacked in @dfn{strata},
27466so that more than one target can potentially respond to a request.
27467In particular, memory accesses will walk down the stack of targets
27468until they find a target that is interested in handling that particular
27469address.
27470
27471This command prints a short description of each layer that was pushed on
27472the @dfn{target stack}, starting from the top layer down to the bottom one.
27473
09d4efe1
EZ
27474@kindex maint print type
27475@cindex type chain of a data type
27476@item maint print type @var{expr}
27477Print the type chain for a type specified by @var{expr}. The argument
27478can be either a type name or a symbol. If it is a symbol, the type of
27479that symbol is described. The type chain produced by this command is
27480a recursive definition of the data type as stored in @value{GDBN}'s
27481data structures, including its flags and contained types.
27482
27483@kindex maint set dwarf2 max-cache-age
27484@kindex maint show dwarf2 max-cache-age
27485@item maint set dwarf2 max-cache-age
27486@itemx maint show dwarf2 max-cache-age
27487Control the DWARF 2 compilation unit cache.
27488
27489@cindex DWARF 2 compilation units cache
27490In object files with inter-compilation-unit references, such as those
27491produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2
27492reader needs to frequently refer to previously read compilation units.
27493This setting controls how long a compilation unit will remain in the
27494cache if it is not referenced. A higher limit means that cached
27495compilation units will be stored in memory longer, and more total
27496memory will be used. Setting it to zero disables caching, which will
27497slow down @value{GDBN} startup, but reduce memory consumption.
27498
e7ba9c65
DJ
27499@kindex maint set profile
27500@kindex maint show profile
27501@cindex profiling GDB
27502@item maint set profile
27503@itemx maint show profile
27504Control profiling of @value{GDBN}.
27505
27506Profiling will be disabled until you use the @samp{maint set profile}
27507command to enable it. When you enable profiling, the system will begin
27508collecting timing and execution count data; when you disable profiling or
27509exit @value{GDBN}, the results will be written to a log file. Remember that
27510if you use profiling, @value{GDBN} will overwrite the profiling log file
27511(often called @file{gmon.out}). If you have a record of important profiling
27512data in a @file{gmon.out} file, be sure to move it to a safe location.
27513
27514Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
b383017d 27515compiled with the @samp{-pg} compiler option.
e7ba9c65 27516
cbe54154
PA
27517@kindex maint set show-debug-regs
27518@kindex maint show show-debug-regs
eac35c4e 27519@cindex hardware debug registers
cbe54154
PA
27520@item maint set show-debug-regs
27521@itemx maint show show-debug-regs
eac35c4e 27522Control whether to show variables that mirror the hardware debug
09d4efe1 27523registers. Use @code{ON} to enable, @code{OFF} to disable. If
3f94c067 27524enabled, the debug registers values are shown when @value{GDBN} inserts or
09d4efe1
EZ
27525removes a hardware breakpoint or watchpoint, and when the inferior
27526triggers a hardware-assisted breakpoint or watchpoint.
27527
27528@kindex maint space
27529@cindex memory used by commands
27530@item maint space
27531Control whether to display memory usage for each command. If set to a
27532nonzero value, @value{GDBN} will display how much memory each command
27533took, following the command's own output. This can also be requested
27534by invoking @value{GDBN} with the @option{--statistics} command-line
27535switch (@pxref{Mode Options}).
27536
27537@kindex maint time
27538@cindex time of command execution
27539@item maint time
27540Control whether to display the execution time for each command. If
27541set to a nonzero value, @value{GDBN} will display how much time it
27542took to execute each command, following the command's own output.
e2b7ddea
VP
27543The time is not printed for the commands that run the target, since
27544there's no mechanism currently to compute how much time was spend
27545by @value{GDBN} and how much time was spend by the program been debugged.
27546it's not possibly currently
09d4efe1
EZ
27547This can also be requested by invoking @value{GDBN} with the
27548@option{--statistics} command-line switch (@pxref{Mode Options}).
27549
27550@kindex maint translate-address
27551@item maint translate-address @r{[}@var{section}@r{]} @var{addr}
27552Find the symbol stored at the location specified by the address
27553@var{addr} and an optional section name @var{section}. If found,
27554@value{GDBN} prints the name of the closest symbol and an offset from
27555the symbol's location to the specified address. This is similar to
27556the @code{info address} command (@pxref{Symbols}), except that this
27557command also allows to find symbols in other sections.
ae038cb0 27558
c14c28ba
PP
27559If section was not specified, the section in which the symbol was found
27560is also printed. For dynamically linked executables, the name of
27561executable or shared library containing the symbol is printed as well.
27562
8e04817f 27563@end table
c906108c 27564
9c16f35a
EZ
27565The following command is useful for non-interactive invocations of
27566@value{GDBN}, such as in the test suite.
27567
27568@table @code
27569@item set watchdog @var{nsec}
27570@kindex set watchdog
27571@cindex watchdog timer
27572@cindex timeout for commands
27573Set the maximum number of seconds @value{GDBN} will wait for the
27574target operation to finish. If this time expires, @value{GDBN}
27575reports and error and the command is aborted.
27576
27577@item show watchdog
27578Show the current setting of the target wait timeout.
27579@end table
c906108c 27580
e0ce93ac 27581@node Remote Protocol
8e04817f 27582@appendix @value{GDBN} Remote Serial Protocol
c906108c 27583
ee2d5c50
AC
27584@menu
27585* Overview::
27586* Packets::
27587* Stop Reply Packets::
27588* General Query Packets::
27589* Register Packet Format::
9d29849a 27590* Tracepoint Packets::
a6b151f1 27591* Host I/O Packets::
9a6253be 27592* Interrupts::
8b23ecc4
SL
27593* Notification Packets::
27594* Remote Non-Stop::
a6f3e723 27595* Packet Acknowledgment::
ee2d5c50 27596* Examples::
79a6e687 27597* File-I/O Remote Protocol Extension::
cfa9d6d9 27598* Library List Format::
79a6e687 27599* Memory Map Format::
ee2d5c50
AC
27600@end menu
27601
27602@node Overview
27603@section Overview
27604
8e04817f
AC
27605There may be occasions when you need to know something about the
27606protocol---for example, if there is only one serial port to your target
27607machine, you might want your program to do something special if it
27608recognizes a packet meant for @value{GDBN}.
c906108c 27609
d2c6833e 27610In the examples below, @samp{->} and @samp{<-} are used to indicate
bf06d120 27611transmitted and received data, respectively.
c906108c 27612
8e04817f
AC
27613@cindex protocol, @value{GDBN} remote serial
27614@cindex serial protocol, @value{GDBN} remote
27615@cindex remote serial protocol
8b23ecc4
SL
27616All @value{GDBN} commands and responses (other than acknowledgments
27617and notifications, see @ref{Notification Packets}) are sent as a
27618@var{packet}. A @var{packet} is introduced with the character
8e04817f
AC
27619@samp{$}, the actual @var{packet-data}, and the terminating character
27620@samp{#} followed by a two-digit @var{checksum}:
c906108c 27621
474c8240 27622@smallexample
8e04817f 27623@code{$}@var{packet-data}@code{#}@var{checksum}
474c8240 27624@end smallexample
8e04817f 27625@noindent
c906108c 27626
8e04817f
AC
27627@cindex checksum, for @value{GDBN} remote
27628@noindent
27629The two-digit @var{checksum} is computed as the modulo 256 sum of all
27630characters between the leading @samp{$} and the trailing @samp{#} (an
27631eight bit unsigned checksum).
c906108c 27632
8e04817f
AC
27633Implementors should note that prior to @value{GDBN} 5.0 the protocol
27634specification also included an optional two-digit @var{sequence-id}:
c906108c 27635
474c8240 27636@smallexample
8e04817f 27637@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
474c8240 27638@end smallexample
c906108c 27639
8e04817f
AC
27640@cindex sequence-id, for @value{GDBN} remote
27641@noindent
27642That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
27643has never output @var{sequence-id}s. Stubs that handle packets added
27644since @value{GDBN} 5.0 must not accept @var{sequence-id}.
c906108c 27645
8e04817f
AC
27646When either the host or the target machine receives a packet, the first
27647response expected is an acknowledgment: either @samp{+} (to indicate
27648the package was received correctly) or @samp{-} (to request
27649retransmission):
c906108c 27650
474c8240 27651@smallexample
d2c6833e
AC
27652-> @code{$}@var{packet-data}@code{#}@var{checksum}
27653<- @code{+}
474c8240 27654@end smallexample
8e04817f 27655@noindent
53a5351d 27656
a6f3e723
SL
27657The @samp{+}/@samp{-} acknowledgments can be disabled
27658once a connection is established.
27659@xref{Packet Acknowledgment}, for details.
27660
8e04817f
AC
27661The host (@value{GDBN}) sends @var{command}s, and the target (the
27662debugging stub incorporated in your program) sends a @var{response}. In
27663the case of step and continue @var{command}s, the response is only sent
8b23ecc4
SL
27664when the operation has completed, and the target has again stopped all
27665threads in all attached processes. This is the default all-stop mode
27666behavior, but the remote protocol also supports @value{GDBN}'s non-stop
27667execution mode; see @ref{Remote Non-Stop}, for details.
c906108c 27668
8e04817f
AC
27669@var{packet-data} consists of a sequence of characters with the
27670exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
27671exceptions).
c906108c 27672
ee2d5c50 27673@cindex remote protocol, field separator
0876f84a 27674Fields within the packet should be separated using @samp{,} @samp{;} or
8e04817f 27675@samp{:}. Except where otherwise noted all numbers are represented in
ee2d5c50 27676@sc{hex} with leading zeros suppressed.
c906108c 27677
8e04817f
AC
27678Implementors should note that prior to @value{GDBN} 5.0, the character
27679@samp{:} could not appear as the third character in a packet (as it
27680would potentially conflict with the @var{sequence-id}).
c906108c 27681
0876f84a
DJ
27682@cindex remote protocol, binary data
27683@anchor{Binary Data}
27684Binary data in most packets is encoded either as two hexadecimal
27685digits per byte of binary data. This allowed the traditional remote
27686protocol to work over connections which were only seven-bit clean.
27687Some packets designed more recently assume an eight-bit clean
27688connection, and use a more efficient encoding to send and receive
27689binary data.
27690
27691The binary data representation uses @code{7d} (@sc{ascii} @samp{@}})
27692as an escape character. Any escaped byte is transmitted as the escape
27693character followed by the original character XORed with @code{0x20}.
27694For example, the byte @code{0x7d} would be transmitted as the two
27695bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}),
27696@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii}
27697@samp{@}}) must always be escaped. Responses sent by the stub
27698must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it
27699is not interpreted as the start of a run-length encoded sequence
27700(described next).
27701
1d3811f6
DJ
27702Response @var{data} can be run-length encoded to save space.
27703Run-length encoding replaces runs of identical characters with one
27704instance of the repeated character, followed by a @samp{*} and a
27705repeat count. The repeat count is itself sent encoded, to avoid
27706binary characters in @var{data}: a value of @var{n} is sent as
27707@code{@var{n}+29}. For a repeat count greater or equal to 3, this
27708produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii}
27709code 32) for a repeat count of 3. (This is because run-length
27710encoding starts to win for counts 3 or more.) Thus, for example,
27711@samp{0* } is a run-length encoding of ``0000'': the space character
27712after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 =
277133}} more times.
27714
27715The printable characters @samp{#} and @samp{$} or with a numeric value
27716greater than 126 must not be used. Runs of six repeats (@samp{#}) or
27717seven repeats (@samp{$}) can be expanded using a repeat count of only
27718five (@samp{"}). For example, @samp{00000000} can be encoded as
27719@samp{0*"00}.
c906108c 27720
8e04817f
AC
27721The error response returned for some packets includes a two character
27722error number. That number is not well defined.
c906108c 27723
f8da2bff 27724@cindex empty response, for unsupported packets
8e04817f
AC
27725For any @var{command} not supported by the stub, an empty response
27726(@samp{$#00}) should be returned. That way it is possible to extend the
27727protocol. A newer @value{GDBN} can tell if a packet is supported based
27728on that response.
c906108c 27729
b383017d
RM
27730A stub is required to support the @samp{g}, @samp{G}, @samp{m}, @samp{M},
27731@samp{c}, and @samp{s} @var{command}s. All other @var{command}s are
8e04817f 27732optional.
c906108c 27733
ee2d5c50
AC
27734@node Packets
27735@section Packets
27736
27737The following table provides a complete list of all currently defined
27738@var{command}s and their corresponding response @var{data}.
79a6e687 27739@xref{File-I/O Remote Protocol Extension}, for details about the File
9c16f35a 27740I/O extension of the remote protocol.
ee2d5c50 27741
b8ff78ce
JB
27742Each packet's description has a template showing the packet's overall
27743syntax, followed by an explanation of the packet's meaning. We
27744include spaces in some of the templates for clarity; these are not
27745part of the packet's syntax. No @value{GDBN} packet uses spaces to
27746separate its components. For example, a template like @samp{foo
27747@var{bar} @var{baz}} describes a packet beginning with the three ASCII
27748bytes @samp{foo}, followed by a @var{bar}, followed directly by a
3f94c067 27749@var{baz}. @value{GDBN} does not transmit a space character between the
b8ff78ce
JB
27750@samp{foo} and the @var{bar}, or between the @var{bar} and the
27751@var{baz}.
27752
b90a069a
SL
27753@cindex @var{thread-id}, in remote protocol
27754@anchor{thread-id syntax}
27755Several packets and replies include a @var{thread-id} field to identify
27756a thread. Normally these are positive numbers with a target-specific
27757interpretation, formatted as big-endian hex strings. A @var{thread-id}
27758can also be a literal @samp{-1} to indicate all threads, or @samp{0} to
27759pick any thread.
27760
27761In addition, the remote protocol supports a multiprocess feature in
27762which the @var{thread-id} syntax is extended to optionally include both
27763process and thread ID fields, as @samp{p@var{pid}.@var{tid}}.
27764The @var{pid} (process) and @var{tid} (thread) components each have the
27765format described above: a positive number with target-specific
27766interpretation formatted as a big-endian hex string, literal @samp{-1}
27767to indicate all processes or threads (respectively), or @samp{0} to
27768indicate an arbitrary process or thread. Specifying just a process, as
27769@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an
27770error to specify all processes but a specific thread, such as
27771@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used
27772for those packets and replies explicitly documented to include a process
27773ID, rather than a @var{thread-id}.
27774
27775The multiprocess @var{thread-id} syntax extensions are only used if both
27776@value{GDBN} and the stub report support for the @samp{multiprocess}
27777feature using @samp{qSupported}. @xref{multiprocess extensions}, for
27778more information.
27779
8ffe2530
JB
27780Note that all packet forms beginning with an upper- or lower-case
27781letter, other than those described here, are reserved for future use.
27782
b8ff78ce 27783Here are the packet descriptions.
ee2d5c50 27784
b8ff78ce 27785@table @samp
ee2d5c50 27786
b8ff78ce
JB
27787@item !
27788@cindex @samp{!} packet
2d717e4f 27789@anchor{extended mode}
8e04817f
AC
27790Enable extended mode. In extended mode, the remote server is made
27791persistent. The @samp{R} packet is used to restart the program being
27792debugged.
ee2d5c50
AC
27793
27794Reply:
27795@table @samp
27796@item OK
8e04817f 27797The remote target both supports and has enabled extended mode.
ee2d5c50 27798@end table
c906108c 27799
b8ff78ce
JB
27800@item ?
27801@cindex @samp{?} packet
ee2d5c50 27802Indicate the reason the target halted. The reply is the same as for
8b23ecc4
SL
27803step and continue. This packet has a special interpretation when the
27804target is in non-stop mode; see @ref{Remote Non-Stop}.
c906108c 27805
ee2d5c50
AC
27806Reply:
27807@xref{Stop Reply Packets}, for the reply specifications.
27808
b8ff78ce
JB
27809@item A @var{arglen},@var{argnum},@var{arg},@dots{}
27810@cindex @samp{A} packet
27811Initialized @code{argv[]} array passed into program. @var{arglen}
27812specifies the number of bytes in the hex encoded byte stream
27813@var{arg}. See @code{gdbserver} for more details.
ee2d5c50
AC
27814
27815Reply:
27816@table @samp
27817@item OK
b8ff78ce
JB
27818The arguments were set.
27819@item E @var{NN}
27820An error occurred.
ee2d5c50
AC
27821@end table
27822
b8ff78ce
JB
27823@item b @var{baud}
27824@cindex @samp{b} packet
27825(Don't use this packet; its behavior is not well-defined.)
ee2d5c50
AC
27826Change the serial line speed to @var{baud}.
27827
27828JTC: @emph{When does the transport layer state change? When it's
27829received, or after the ACK is transmitted. In either case, there are
27830problems if the command or the acknowledgment packet is dropped.}
27831
27832Stan: @emph{If people really wanted to add something like this, and get
27833it working for the first time, they ought to modify ser-unix.c to send
27834some kind of out-of-band message to a specially-setup stub and have the
27835switch happen "in between" packets, so that from remote protocol's point
27836of view, nothing actually happened.}
27837
b8ff78ce
JB
27838@item B @var{addr},@var{mode}
27839@cindex @samp{B} packet
8e04817f 27840Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
2f870471
AC
27841breakpoint at @var{addr}.
27842
b8ff78ce 27843Don't use this packet. Use the @samp{Z} and @samp{z} packets instead
2f870471 27844(@pxref{insert breakpoint or watchpoint packet}).
c906108c 27845
bacec72f 27846@cindex @samp{bc} packet
0d772ac9
MS
27847@anchor{bc}
27848@item bc
bacec72f
MS
27849Backward continue. Execute the target system in reverse. No parameter.
27850@xref{Reverse Execution}, for more information.
27851
27852Reply:
27853@xref{Stop Reply Packets}, for the reply specifications.
27854
bacec72f 27855@cindex @samp{bs} packet
0d772ac9
MS
27856@anchor{bs}
27857@item bs
bacec72f
MS
27858Backward single step. Execute one instruction in reverse. No parameter.
27859@xref{Reverse Execution}, for more information.
27860
27861Reply:
27862@xref{Stop Reply Packets}, for the reply specifications.
27863
4f553f88 27864@item c @r{[}@var{addr}@r{]}
b8ff78ce
JB
27865@cindex @samp{c} packet
27866Continue. @var{addr} is address to resume. If @var{addr} is omitted,
27867resume at current address.
c906108c 27868
ee2d5c50
AC
27869Reply:
27870@xref{Stop Reply Packets}, for the reply specifications.
27871
4f553f88 27872@item C @var{sig}@r{[};@var{addr}@r{]}
b8ff78ce 27873@cindex @samp{C} packet
8e04817f 27874Continue with signal @var{sig} (hex signal number). If
b8ff78ce 27875@samp{;@var{addr}} is omitted, resume at same address.
c906108c 27876
ee2d5c50
AC
27877Reply:
27878@xref{Stop Reply Packets}, for the reply specifications.
c906108c 27879
b8ff78ce
JB
27880@item d
27881@cindex @samp{d} packet
ee2d5c50
AC
27882Toggle debug flag.
27883
b8ff78ce
JB
27884Don't use this packet; instead, define a general set packet
27885(@pxref{General Query Packets}).
ee2d5c50 27886
b8ff78ce 27887@item D
b90a069a 27888@itemx D;@var{pid}
b8ff78ce 27889@cindex @samp{D} packet
b90a069a
SL
27890The first form of the packet is used to detach @value{GDBN} from the
27891remote system. It is sent to the remote target
07f31aa6 27892before @value{GDBN} disconnects via the @code{detach} command.
ee2d5c50 27893
b90a069a
SL
27894The second form, including a process ID, is used when multiprocess
27895protocol extensions are enabled (@pxref{multiprocess extensions}), to
27896detach only a specific process. The @var{pid} is specified as a
27897big-endian hex string.
27898
ee2d5c50
AC
27899Reply:
27900@table @samp
10fac096
NW
27901@item OK
27902for success
b8ff78ce 27903@item E @var{NN}
10fac096 27904for an error
ee2d5c50 27905@end table
c906108c 27906
b8ff78ce
JB
27907@item F @var{RC},@var{EE},@var{CF};@var{XX}
27908@cindex @samp{F} packet
27909A reply from @value{GDBN} to an @samp{F} packet sent by the target.
27910This is part of the File-I/O protocol extension. @xref{File-I/O
79a6e687 27911Remote Protocol Extension}, for the specification.
ee2d5c50 27912
b8ff78ce 27913@item g
ee2d5c50 27914@anchor{read registers packet}
b8ff78ce 27915@cindex @samp{g} packet
ee2d5c50
AC
27916Read general registers.
27917
27918Reply:
27919@table @samp
27920@item @var{XX@dots{}}
8e04817f
AC
27921Each byte of register data is described by two hex digits. The bytes
27922with the register are transmitted in target byte order. The size of
b8ff78ce 27923each register and their position within the @samp{g} packet are
4a9bb1df
UW
27924determined by the @value{GDBN} internal gdbarch functions
27925@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The
b8ff78ce
JB
27926specification of several standard @samp{g} packets is specified below.
27927@item E @var{NN}
ee2d5c50
AC
27928for an error.
27929@end table
c906108c 27930
b8ff78ce
JB
27931@item G @var{XX@dots{}}
27932@cindex @samp{G} packet
27933Write general registers. @xref{read registers packet}, for a
27934description of the @var{XX@dots{}} data.
ee2d5c50
AC
27935
27936Reply:
27937@table @samp
27938@item OK
27939for success
b8ff78ce 27940@item E @var{NN}
ee2d5c50
AC
27941for an error
27942@end table
27943
b90a069a 27944@item H @var{c} @var{thread-id}
b8ff78ce 27945@cindex @samp{H} packet
8e04817f 27946Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
ee2d5c50
AC
27947@samp{G}, et.al.). @var{c} depends on the operation to be performed: it
27948should be @samp{c} for step and continue operations, @samp{g} for other
b90a069a
SL
27949operations. The thread designator @var{thread-id} has the format and
27950interpretation described in @ref{thread-id syntax}.
ee2d5c50
AC
27951
27952Reply:
27953@table @samp
27954@item OK
27955for success
b8ff78ce 27956@item E @var{NN}
ee2d5c50
AC
27957for an error
27958@end table
c906108c 27959
8e04817f
AC
27960@c FIXME: JTC:
27961@c 'H': How restrictive (or permissive) is the thread model. If a
27962@c thread is selected and stopped, are other threads allowed
27963@c to continue to execute? As I mentioned above, I think the
27964@c semantics of each command when a thread is selected must be
27965@c described. For example:
27966@c
27967@c 'g': If the stub supports threads and a specific thread is
27968@c selected, returns the register block from that thread;
27969@c otherwise returns current registers.
27970@c
27971@c 'G' If the stub supports threads and a specific thread is
27972@c selected, sets the registers of the register block of
27973@c that thread; otherwise sets current registers.
c906108c 27974
b8ff78ce 27975@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
ee2d5c50 27976@anchor{cycle step packet}
b8ff78ce
JB
27977@cindex @samp{i} packet
27978Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is
8e04817f
AC
27979present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
27980step starting at that address.
c906108c 27981
b8ff78ce
JB
27982@item I
27983@cindex @samp{I} packet
27984Signal, then cycle step. @xref{step with signal packet}. @xref{cycle
27985step packet}.
ee2d5c50 27986
b8ff78ce
JB
27987@item k
27988@cindex @samp{k} packet
27989Kill request.
c906108c 27990
ac282366 27991FIXME: @emph{There is no description of how to operate when a specific
ee2d5c50
AC
27992thread context has been selected (i.e.@: does 'k' kill only that
27993thread?)}.
c906108c 27994
b8ff78ce
JB
27995@item m @var{addr},@var{length}
27996@cindex @samp{m} packet
8e04817f 27997Read @var{length} bytes of memory starting at address @var{addr}.
fb031cdf
JB
27998Note that @var{addr} may not be aligned to any particular boundary.
27999
28000The stub need not use any particular size or alignment when gathering
28001data from memory for the response; even if @var{addr} is word-aligned
28002and @var{length} is a multiple of the word size, the stub is free to
28003use byte accesses, or not. For this reason, this packet may not be
28004suitable for accessing memory-mapped I/O devices.
c43c5473
JB
28005@cindex alignment of remote memory accesses
28006@cindex size of remote memory accesses
28007@cindex memory, alignment and size of remote accesses
c906108c 28008
ee2d5c50
AC
28009Reply:
28010@table @samp
28011@item @var{XX@dots{}}
599b237a 28012Memory contents; each byte is transmitted as a two-digit hexadecimal
b8ff78ce
JB
28013number. The reply may contain fewer bytes than requested if the
28014server was able to read only part of the region of memory.
28015@item E @var{NN}
ee2d5c50
AC
28016@var{NN} is errno
28017@end table
28018
b8ff78ce
JB
28019@item M @var{addr},@var{length}:@var{XX@dots{}}
28020@cindex @samp{M} packet
8e04817f 28021Write @var{length} bytes of memory starting at address @var{addr}.
b8ff78ce 28022@var{XX@dots{}} is the data; each byte is transmitted as a two-digit
599b237a 28023hexadecimal number.
ee2d5c50
AC
28024
28025Reply:
28026@table @samp
28027@item OK
28028for success
b8ff78ce 28029@item E @var{NN}
8e04817f
AC
28030for an error (this includes the case where only part of the data was
28031written).
ee2d5c50 28032@end table
c906108c 28033
b8ff78ce
JB
28034@item p @var{n}
28035@cindex @samp{p} packet
28036Read the value of register @var{n}; @var{n} is in hex.
2e868123
AC
28037@xref{read registers packet}, for a description of how the returned
28038register value is encoded.
ee2d5c50
AC
28039
28040Reply:
28041@table @samp
2e868123
AC
28042@item @var{XX@dots{}}
28043the register's value
b8ff78ce 28044@item E @var{NN}
2e868123
AC
28045for an error
28046@item
28047Indicating an unrecognized @var{query}.
ee2d5c50
AC
28048@end table
28049
b8ff78ce 28050@item P @var{n@dots{}}=@var{r@dots{}}
ee2d5c50 28051@anchor{write register packet}
b8ff78ce
JB
28052@cindex @samp{P} packet
28053Write register @var{n@dots{}} with value @var{r@dots{}}. The register
599b237a 28054number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex
8e04817f 28055digits for each byte in the register (target byte order).
c906108c 28056
ee2d5c50
AC
28057Reply:
28058@table @samp
28059@item OK
28060for success
b8ff78ce 28061@item E @var{NN}
ee2d5c50
AC
28062for an error
28063@end table
28064
5f3bebba
JB
28065@item q @var{name} @var{params}@dots{}
28066@itemx Q @var{name} @var{params}@dots{}
b8ff78ce 28067@cindex @samp{q} packet
b8ff78ce 28068@cindex @samp{Q} packet
5f3bebba
JB
28069General query (@samp{q}) and set (@samp{Q}). These packets are
28070described fully in @ref{General Query Packets}.
c906108c 28071
b8ff78ce
JB
28072@item r
28073@cindex @samp{r} packet
8e04817f 28074Reset the entire system.
c906108c 28075
b8ff78ce 28076Don't use this packet; use the @samp{R} packet instead.
ee2d5c50 28077
b8ff78ce
JB
28078@item R @var{XX}
28079@cindex @samp{R} packet
8e04817f 28080Restart the program being debugged. @var{XX}, while needed, is ignored.
2d717e4f 28081This packet is only available in extended mode (@pxref{extended mode}).
ee2d5c50 28082
8e04817f 28083The @samp{R} packet has no reply.
ee2d5c50 28084
4f553f88 28085@item s @r{[}@var{addr}@r{]}
b8ff78ce
JB
28086@cindex @samp{s} packet
28087Single step. @var{addr} is the address at which to resume. If
28088@var{addr} is omitted, resume at same address.
c906108c 28089
ee2d5c50
AC
28090Reply:
28091@xref{Stop Reply Packets}, for the reply specifications.
28092
4f553f88 28093@item S @var{sig}@r{[};@var{addr}@r{]}
ee2d5c50 28094@anchor{step with signal packet}
b8ff78ce
JB
28095@cindex @samp{S} packet
28096Step with signal. This is analogous to the @samp{C} packet, but
28097requests a single-step, rather than a normal resumption of execution.
c906108c 28098
ee2d5c50
AC
28099Reply:
28100@xref{Stop Reply Packets}, for the reply specifications.
28101
b8ff78ce
JB
28102@item t @var{addr}:@var{PP},@var{MM}
28103@cindex @samp{t} packet
8e04817f 28104Search backwards starting at address @var{addr} for a match with pattern
ee2d5c50
AC
28105@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes.
28106@var{addr} must be at least 3 digits.
c906108c 28107
b90a069a 28108@item T @var{thread-id}
b8ff78ce 28109@cindex @samp{T} packet
b90a069a 28110Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}.
c906108c 28111
ee2d5c50
AC
28112Reply:
28113@table @samp
28114@item OK
28115thread is still alive
b8ff78ce 28116@item E @var{NN}
ee2d5c50
AC
28117thread is dead
28118@end table
28119
b8ff78ce
JB
28120@item v
28121Packets starting with @samp{v} are identified by a multi-letter name,
28122up to the first @samp{;} or @samp{?} (or the end of the packet).
86d30acc 28123
2d717e4f
DJ
28124@item vAttach;@var{pid}
28125@cindex @samp{vAttach} packet
8b23ecc4
SL
28126Attach to a new process with the specified process ID @var{pid}.
28127The process ID is a
28128hexadecimal integer identifying the process. In all-stop mode, all
28129threads in the attached process are stopped; in non-stop mode, it may be
28130attached without being stopped if that is supported by the target.
28131
28132@c In non-stop mode, on a successful vAttach, the stub should set the
28133@c current thread to a thread of the newly-attached process. After
28134@c attaching, GDB queries for the attached process's thread ID with qC.
28135@c Also note that, from a user perspective, whether or not the
28136@c target is stopped on attach in non-stop mode depends on whether you
28137@c use the foreground or background version of the attach command, not
28138@c on what vAttach does; GDB does the right thing with respect to either
28139@c stopping or restarting threads.
2d717e4f
DJ
28140
28141This packet is only available in extended mode (@pxref{extended mode}).
28142
28143Reply:
28144@table @samp
28145@item E @var{nn}
28146for an error
28147@item @r{Any stop packet}
8b23ecc4
SL
28148for success in all-stop mode (@pxref{Stop Reply Packets})
28149@item OK
28150for success in non-stop mode (@pxref{Remote Non-Stop})
2d717e4f
DJ
28151@end table
28152
b90a069a 28153@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{}
b8ff78ce
JB
28154@cindex @samp{vCont} packet
28155Resume the inferior, specifying different actions for each thread.
b90a069a 28156If an action is specified with no @var{thread-id}, then it is applied to any
86d30acc 28157threads that don't have a specific action specified; if no default action is
8b23ecc4
SL
28158specified then other threads should remain stopped in all-stop mode and
28159in their current state in non-stop mode.
28160Specifying multiple
86d30acc 28161default actions is an error; specifying no actions is also an error.
b90a069a
SL
28162Thread IDs are specified using the syntax described in @ref{thread-id syntax}.
28163
28164Currently supported actions are:
86d30acc 28165
b8ff78ce 28166@table @samp
86d30acc
DJ
28167@item c
28168Continue.
b8ff78ce 28169@item C @var{sig}
8b23ecc4 28170Continue with signal @var{sig}. The signal @var{sig} should be two hex digits.
86d30acc
DJ
28171@item s
28172Step.
b8ff78ce 28173@item S @var{sig}
8b23ecc4
SL
28174Step with signal @var{sig}. The signal @var{sig} should be two hex digits.
28175@item t
28176Stop.
28177@item T @var{sig}
28178Stop with signal @var{sig}. The signal @var{sig} should be two hex digits.
86d30acc
DJ
28179@end table
28180
8b23ecc4
SL
28181The optional argument @var{addr} normally associated with the
28182@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is
b8ff78ce 28183not supported in @samp{vCont}.
86d30acc 28184
8b23ecc4
SL
28185The @samp{t} and @samp{T} actions are only relevant in non-stop mode
28186(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise.
28187A stop reply should be generated for any affected thread not already stopped.
28188When a thread is stopped by means of a @samp{t} action,
28189the corresponding stop reply should indicate that the thread has stopped with
28190signal @samp{0}, regardless of whether the target uses some other signal
28191as an implementation detail.
28192
86d30acc
DJ
28193Reply:
28194@xref{Stop Reply Packets}, for the reply specifications.
28195
b8ff78ce
JB
28196@item vCont?
28197@cindex @samp{vCont?} packet
d3e8051b 28198Request a list of actions supported by the @samp{vCont} packet.
86d30acc
DJ
28199
28200Reply:
28201@table @samp
b8ff78ce
JB
28202@item vCont@r{[};@var{action}@dots{}@r{]}
28203The @samp{vCont} packet is supported. Each @var{action} is a supported
28204command in the @samp{vCont} packet.
86d30acc 28205@item
b8ff78ce 28206The @samp{vCont} packet is not supported.
86d30acc 28207@end table
ee2d5c50 28208
a6b151f1
DJ
28209@item vFile:@var{operation}:@var{parameter}@dots{}
28210@cindex @samp{vFile} packet
28211Perform a file operation on the target system. For details,
28212see @ref{Host I/O Packets}.
28213
68437a39
DJ
28214@item vFlashErase:@var{addr},@var{length}
28215@cindex @samp{vFlashErase} packet
28216Direct the stub to erase @var{length} bytes of flash starting at
28217@var{addr}. The region may enclose any number of flash blocks, but
28218its start and end must fall on block boundaries, as indicated by the
79a6e687
BW
28219flash block size appearing in the memory map (@pxref{Memory Map
28220Format}). @value{GDBN} groups flash memory programming operations
68437a39
DJ
28221together, and sends a @samp{vFlashDone} request after each group; the
28222stub is allowed to delay erase operation until the @samp{vFlashDone}
28223packet is received.
28224
b90a069a
SL
28225The stub must support @samp{vCont} if it reports support for
28226multiprocess extensions (@pxref{multiprocess extensions}). Note that in
28227this case @samp{vCont} actions can be specified to apply to all threads
28228in a process by using the @samp{p@var{pid}.-1} form of the
28229@var{thread-id}.
28230
68437a39
DJ
28231Reply:
28232@table @samp
28233@item OK
28234for success
28235@item E @var{NN}
28236for an error
28237@end table
28238
28239@item vFlashWrite:@var{addr}:@var{XX@dots{}}
28240@cindex @samp{vFlashWrite} packet
28241Direct the stub to write data to flash address @var{addr}. The data
28242is passed in binary form using the same encoding as for the @samp{X}
28243packet (@pxref{Binary Data}). The memory ranges specified by
28244@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
28245not overlap, and must appear in order of increasing addresses
28246(although @samp{vFlashErase} packets for higher addresses may already
28247have been received; the ordering is guaranteed only between
28248@samp{vFlashWrite} packets). If a packet writes to an address that was
28249neither erased by a preceding @samp{vFlashErase} packet nor by some other
28250target-specific method, the results are unpredictable.
28251
28252
28253Reply:
28254@table @samp
28255@item OK
28256for success
28257@item E.memtype
28258for vFlashWrite addressing non-flash memory
28259@item E @var{NN}
28260for an error
28261@end table
28262
28263@item vFlashDone
28264@cindex @samp{vFlashDone} packet
28265Indicate to the stub that flash programming operation is finished.
28266The stub is permitted to delay or batch the effects of a group of
28267@samp{vFlashErase} and @samp{vFlashWrite} packets until a
28268@samp{vFlashDone} packet is received. The contents of the affected
28269regions of flash memory are unpredictable until the @samp{vFlashDone}
28270request is completed.
28271
b90a069a
SL
28272@item vKill;@var{pid}
28273@cindex @samp{vKill} packet
28274Kill the process with the specified process ID. @var{pid} is a
28275hexadecimal integer identifying the process. This packet is used in
28276preference to @samp{k} when multiprocess protocol extensions are
28277supported; see @ref{multiprocess extensions}.
28278
28279Reply:
28280@table @samp
28281@item E @var{nn}
28282for an error
28283@item OK
28284for success
28285@end table
28286
2d717e4f
DJ
28287@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{}
28288@cindex @samp{vRun} packet
28289Run the program @var{filename}, passing it each @var{argument} on its
28290command line. The file and arguments are hex-encoded strings. If
28291@var{filename} is an empty string, the stub may use a default program
28292(e.g.@: the last program run). The program is created in the stopped
9b562ab8 28293state.
2d717e4f 28294
8b23ecc4
SL
28295@c FIXME: What about non-stop mode?
28296
2d717e4f
DJ
28297This packet is only available in extended mode (@pxref{extended mode}).
28298
28299Reply:
28300@table @samp
28301@item E @var{nn}
28302for an error
28303@item @r{Any stop packet}
28304for success (@pxref{Stop Reply Packets})
28305@end table
28306
8b23ecc4
SL
28307@item vStopped
28308@anchor{vStopped packet}
28309@cindex @samp{vStopped} packet
28310
28311In non-stop mode (@pxref{Remote Non-Stop}), acknowledge a previous stop
28312reply and prompt for the stub to report another one.
28313
28314Reply:
28315@table @samp
28316@item @r{Any stop packet}
28317if there is another unreported stop event (@pxref{Stop Reply Packets})
28318@item OK
28319if there are no unreported stop events
28320@end table
28321
b8ff78ce 28322@item X @var{addr},@var{length}:@var{XX@dots{}}
9a6253be 28323@anchor{X packet}
b8ff78ce
JB
28324@cindex @samp{X} packet
28325Write data to memory, where the data is transmitted in binary.
28326@var{addr} is address, @var{length} is number of bytes,
0876f84a 28327@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}).
c906108c 28328
ee2d5c50
AC
28329Reply:
28330@table @samp
28331@item OK
28332for success
b8ff78ce 28333@item E @var{NN}
ee2d5c50
AC
28334for an error
28335@end table
28336
b8ff78ce
JB
28337@item z @var{type},@var{addr},@var{length}
28338@itemx Z @var{type},@var{addr},@var{length}
2f870471 28339@anchor{insert breakpoint or watchpoint packet}
b8ff78ce
JB
28340@cindex @samp{z} packet
28341@cindex @samp{Z} packets
28342Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
2f870471
AC
28343watchpoint starting at address @var{address} and covering the next
28344@var{length} bytes.
ee2d5c50 28345
2f870471
AC
28346Each breakpoint and watchpoint packet @var{type} is documented
28347separately.
28348
512217c7
AC
28349@emph{Implementation notes: A remote target shall return an empty string
28350for an unrecognized breakpoint or watchpoint packet @var{type}. A
28351remote target shall support either both or neither of a given
b8ff78ce 28352@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To
2f870471
AC
28353avoid potential problems with duplicate packets, the operations should
28354be implemented in an idempotent way.}
28355
b8ff78ce
JB
28356@item z0,@var{addr},@var{length}
28357@itemx Z0,@var{addr},@var{length}
28358@cindex @samp{z0} packet
28359@cindex @samp{Z0} packet
28360Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address
28361@var{addr} of size @var{length}.
2f870471
AC
28362
28363A memory breakpoint is implemented by replacing the instruction at
28364@var{addr} with a software breakpoint or trap instruction. The
b8ff78ce 28365@var{length} is used by targets that indicates the size of the
2f870471
AC
28366breakpoint (in bytes) that should be inserted (e.g., the @sc{arm} and
28367@sc{mips} can insert either a 2 or 4 byte breakpoint).
c906108c 28368
2f870471
AC
28369@emph{Implementation note: It is possible for a target to copy or move
28370code that contains memory breakpoints (e.g., when implementing
28371overlays). The behavior of this packet, in the presence of such a
28372target, is not defined.}
c906108c 28373
ee2d5c50
AC
28374Reply:
28375@table @samp
2f870471
AC
28376@item OK
28377success
28378@item
28379not supported
b8ff78ce 28380@item E @var{NN}
ee2d5c50 28381for an error
2f870471
AC
28382@end table
28383
b8ff78ce
JB
28384@item z1,@var{addr},@var{length}
28385@itemx Z1,@var{addr},@var{length}
28386@cindex @samp{z1} packet
28387@cindex @samp{Z1} packet
28388Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
28389address @var{addr} of size @var{length}.
2f870471
AC
28390
28391A hardware breakpoint is implemented using a mechanism that is not
28392dependant on being able to modify the target's memory.
28393
28394@emph{Implementation note: A hardware breakpoint is not affected by code
28395movement.}
28396
28397Reply:
28398@table @samp
ee2d5c50 28399@item OK
2f870471
AC
28400success
28401@item
28402not supported
b8ff78ce 28403@item E @var{NN}
2f870471
AC
28404for an error
28405@end table
28406
b8ff78ce
JB
28407@item z2,@var{addr},@var{length}
28408@itemx Z2,@var{addr},@var{length}
28409@cindex @samp{z2} packet
28410@cindex @samp{Z2} packet
28411Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint.
2f870471
AC
28412
28413Reply:
28414@table @samp
28415@item OK
28416success
28417@item
28418not supported
b8ff78ce 28419@item E @var{NN}
2f870471
AC
28420for an error
28421@end table
28422
b8ff78ce
JB
28423@item z3,@var{addr},@var{length}
28424@itemx Z3,@var{addr},@var{length}
28425@cindex @samp{z3} packet
28426@cindex @samp{Z3} packet
28427Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint.
2f870471
AC
28428
28429Reply:
28430@table @samp
28431@item OK
28432success
28433@item
28434not supported
b8ff78ce 28435@item E @var{NN}
2f870471
AC
28436for an error
28437@end table
28438
b8ff78ce
JB
28439@item z4,@var{addr},@var{length}
28440@itemx Z4,@var{addr},@var{length}
28441@cindex @samp{z4} packet
28442@cindex @samp{Z4} packet
28443Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint.
2f870471
AC
28444
28445Reply:
28446@table @samp
28447@item OK
28448success
28449@item
28450not supported
b8ff78ce 28451@item E @var{NN}
2f870471 28452for an error
ee2d5c50
AC
28453@end table
28454
28455@end table
c906108c 28456
ee2d5c50
AC
28457@node Stop Reply Packets
28458@section Stop Reply Packets
28459@cindex stop reply packets
c906108c 28460
8b23ecc4
SL
28461The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont},
28462@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can
28463receive any of the below as a reply. Except for @samp{?}
28464and @samp{vStopped}, that reply is only returned
b8ff78ce 28465when the target halts. In the below the exact meaning of @dfn{signal
89be2091
DJ
28466number} is defined by the header @file{include/gdb/signals.h} in the
28467@value{GDBN} source code.
c906108c 28468
b8ff78ce
JB
28469As in the description of request packets, we include spaces in the
28470reply templates for clarity; these are not part of the reply packet's
28471syntax. No @value{GDBN} stop reply packet uses spaces to separate its
28472components.
c906108c 28473
b8ff78ce 28474@table @samp
ee2d5c50 28475
b8ff78ce 28476@item S @var{AA}
599b237a 28477The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
28478number). This is equivalent to a @samp{T} response with no
28479@var{n}:@var{r} pairs.
c906108c 28480
b8ff78ce
JB
28481@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
28482@cindex @samp{T} packet reply
599b237a 28483The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
28484number). This is equivalent to an @samp{S} response, except that the
28485@samp{@var{n}:@var{r}} pairs can carry values of important registers
28486and other information directly in the stop reply packet, reducing
28487round-trip latency. Single-step and breakpoint traps are reported
28488this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows:
cfa9d6d9
DJ
28489
28490@itemize @bullet
b8ff78ce 28491@item
599b237a 28492If @var{n} is a hexadecimal number, it is a register number, and the
b8ff78ce
JB
28493corresponding @var{r} gives that register's value. @var{r} is a
28494series of bytes in target byte order, with each byte given by a
28495two-digit hex number.
cfa9d6d9 28496
b8ff78ce 28497@item
b90a069a
SL
28498If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of
28499the stopped thread, as specified in @ref{thread-id syntax}.
cfa9d6d9 28500
b8ff78ce 28501@item
cfa9d6d9
DJ
28502If @var{n} is a recognized @dfn{stop reason}, it describes a more
28503specific event that stopped the target. The currently defined stop
28504reasons are listed below. @var{aa} should be @samp{05}, the trap
28505signal. At most one stop reason should be present.
28506
b8ff78ce
JB
28507@item
28508Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
28509and go on to the next; this allows us to extend the protocol in the
28510future.
cfa9d6d9
DJ
28511@end itemize
28512
28513The currently defined stop reasons are:
28514
28515@table @samp
28516@item watch
28517@itemx rwatch
28518@itemx awatch
28519The packet indicates a watchpoint hit, and @var{r} is the data address, in
28520hex.
28521
28522@cindex shared library events, remote reply
28523@item library
28524The packet indicates that the loaded libraries have changed.
28525@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new
28526list of loaded libraries. @var{r} is ignored.
bacec72f
MS
28527
28528@cindex replay log events, remote reply
28529@item replaylog
28530The packet indicates that the target cannot continue replaying
28531logged execution events, because it has reached the end (or the
28532beginning when executing backward) of the log. The value of @var{r}
28533will be either @samp{begin} or @samp{end}. @xref{Reverse Execution},
28534for more information.
28535
28536
cfa9d6d9 28537@end table
ee2d5c50 28538
b8ff78ce 28539@item W @var{AA}
b90a069a 28540@itemx W @var{AA} ; process:@var{pid}
8e04817f 28541The process exited, and @var{AA} is the exit status. This is only
ee2d5c50
AC
28542applicable to certain targets.
28543
b90a069a
SL
28544The second form of the response, including the process ID of the exited
28545process, can be used only when @value{GDBN} has reported support for
28546multiprocess protocol extensions; see @ref{multiprocess extensions}.
28547The @var{pid} is formatted as a big-endian hex string.
28548
b8ff78ce 28549@item X @var{AA}
b90a069a 28550@itemx X @var{AA} ; process:@var{pid}
8e04817f 28551The process terminated with signal @var{AA}.
c906108c 28552
b90a069a
SL
28553The second form of the response, including the process ID of the
28554terminated process, can be used only when @value{GDBN} has reported
28555support for multiprocess protocol extensions; see @ref{multiprocess
28556extensions}. The @var{pid} is formatted as a big-endian hex string.
28557
b8ff78ce
JB
28558@item O @var{XX}@dots{}
28559@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
28560written as the program's console output. This can happen at any time
28561while the program is running and the debugger should continue to wait
8b23ecc4 28562for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode.
0ce1b118 28563
b8ff78ce 28564@item F @var{call-id},@var{parameter}@dots{}
0ce1b118
CV
28565@var{call-id} is the identifier which says which host system call should
28566be called. This is just the name of the function. Translation into the
28567correct system call is only applicable as it's defined in @value{GDBN}.
79a6e687 28568@xref{File-I/O Remote Protocol Extension}, for a list of implemented
0ce1b118
CV
28569system calls.
28570
b8ff78ce
JB
28571@samp{@var{parameter}@dots{}} is a list of parameters as defined for
28572this very system call.
0ce1b118 28573
b8ff78ce
JB
28574The target replies with this packet when it expects @value{GDBN} to
28575call a host system call on behalf of the target. @value{GDBN} replies
28576with an appropriate @samp{F} packet and keeps up waiting for the next
28577reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S}
79a6e687
BW
28578or @samp{s} action is expected to be continued. @xref{File-I/O Remote
28579Protocol Extension}, for more details.
0ce1b118 28580
ee2d5c50
AC
28581@end table
28582
28583@node General Query Packets
28584@section General Query Packets
9c16f35a 28585@cindex remote query requests
c906108c 28586
5f3bebba
JB
28587Packets starting with @samp{q} are @dfn{general query packets};
28588packets starting with @samp{Q} are @dfn{general set packets}. General
28589query and set packets are a semi-unified form for retrieving and
28590sending information to and from the stub.
28591
28592The initial letter of a query or set packet is followed by a name
28593indicating what sort of thing the packet applies to. For example,
28594@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol
28595definitions with the stub. These packet names follow some
28596conventions:
28597
28598@itemize @bullet
28599@item
28600The name must not contain commas, colons or semicolons.
28601@item
28602Most @value{GDBN} query and set packets have a leading upper case
28603letter.
28604@item
28605The names of custom vendor packets should use a company prefix, in
28606lower case, followed by a period. For example, packets designed at
28607the Acme Corporation might begin with @samp{qacme.foo} (for querying
28608foos) or @samp{Qacme.bar} (for setting bars).
28609@end itemize
28610
aa56d27a
JB
28611The name of a query or set packet should be separated from any
28612parameters by a @samp{:}; the parameters themselves should be
28613separated by @samp{,} or @samp{;}. Stubs must be careful to match the
369af7bd
DJ
28614full packet name, and check for a separator or the end of the packet,
28615in case two packet names share a common prefix. New packets should not begin
28616with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL}
28617packets predate these conventions, and have arguments without any terminator
28618for the packet name; we suspect they are in widespread use in places that
28619are difficult to upgrade. The @samp{qC} packet has no arguments, but some
28620existing stubs (e.g.@: RedBoot) are known to not check for the end of the
28621packet.}.
c906108c 28622
b8ff78ce
JB
28623Like the descriptions of the other packets, each description here
28624has a template showing the packet's overall syntax, followed by an
28625explanation of the packet's meaning. We include spaces in some of the
28626templates for clarity; these are not part of the packet's syntax. No
28627@value{GDBN} packet uses spaces to separate its components.
28628
5f3bebba
JB
28629Here are the currently defined query and set packets:
28630
b8ff78ce 28631@table @samp
c906108c 28632
b8ff78ce 28633@item qC
9c16f35a 28634@cindex current thread, remote request
b8ff78ce 28635@cindex @samp{qC} packet
b90a069a 28636Return the current thread ID.
ee2d5c50
AC
28637
28638Reply:
28639@table @samp
b90a069a
SL
28640@item QC @var{thread-id}
28641Where @var{thread-id} is a thread ID as documented in
28642@ref{thread-id syntax}.
b8ff78ce 28643@item @r{(anything else)}
b90a069a 28644Any other reply implies the old thread ID.
ee2d5c50
AC
28645@end table
28646
b8ff78ce 28647@item qCRC:@var{addr},@var{length}
ff2587ec 28648@cindex CRC of memory block, remote request
b8ff78ce 28649@cindex @samp{qCRC} packet
99e008fe
EZ
28650Compute the CRC checksum of a block of memory using CRC-32 defined in
28651IEEE 802.3. The CRC is computed byte at a time, taking the most
28652significant bit of each byte first. The initial pattern code
28653@code{0xffffffff} is used to ensure leading zeros affect the CRC.
28654
28655@emph{Note:} This is the same CRC used in validating separate debug
28656files (@pxref{Separate Debug Files, , Debugging Information in Separate
28657Files}). However the algorithm is slightly different. When validating
28658separate debug files, the CRC is computed taking the @emph{least}
28659significant bit of each byte first, and the final result is inverted to
28660detect trailing zeros.
28661
ff2587ec
WZ
28662Reply:
28663@table @samp
b8ff78ce 28664@item E @var{NN}
ff2587ec 28665An error (such as memory fault)
b8ff78ce
JB
28666@item C @var{crc32}
28667The specified memory region's checksum is @var{crc32}.
ff2587ec
WZ
28668@end table
28669
b8ff78ce
JB
28670@item qfThreadInfo
28671@itemx qsThreadInfo
9c16f35a 28672@cindex list active threads, remote request
b8ff78ce
JB
28673@cindex @samp{qfThreadInfo} packet
28674@cindex @samp{qsThreadInfo} packet
b90a069a 28675Obtain a list of all active thread IDs from the target (OS). Since there
8e04817f
AC
28676may be too many active threads to fit into one reply packet, this query
28677works iteratively: it may require more than one query/reply sequence to
28678obtain the entire list of threads. The first query of the sequence will
b8ff78ce
JB
28679be the @samp{qfThreadInfo} query; subsequent queries in the
28680sequence will be the @samp{qsThreadInfo} query.
ee2d5c50 28681
b8ff78ce 28682NOTE: This packet replaces the @samp{qL} query (see below).
ee2d5c50
AC
28683
28684Reply:
28685@table @samp
b90a069a
SL
28686@item m @var{thread-id}
28687A single thread ID
28688@item m @var{thread-id},@var{thread-id}@dots{}
28689a comma-separated list of thread IDs
b8ff78ce
JB
28690@item l
28691(lower case letter @samp{L}) denotes end of list.
ee2d5c50
AC
28692@end table
28693
28694In response to each query, the target will reply with a list of one or
b90a069a 28695more thread IDs, separated by commas.
e1aac25b 28696@value{GDBN} will respond to each reply with a request for more thread
b8ff78ce 28697ids (using the @samp{qs} form of the query), until the target responds
b90a069a
SL
28698with @samp{l} (lower-case el, for @dfn{last}).
28699Refer to @ref{thread-id syntax}, for the format of the @var{thread-id}
28700fields.
c906108c 28701
b8ff78ce 28702@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
ff2587ec 28703@cindex get thread-local storage address, remote request
b8ff78ce 28704@cindex @samp{qGetTLSAddr} packet
ff2587ec
WZ
28705Fetch the address associated with thread local storage specified
28706by @var{thread-id}, @var{offset}, and @var{lm}.
28707
b90a069a
SL
28708@var{thread-id} is the thread ID associated with the
28709thread for which to fetch the TLS address. @xref{thread-id syntax}.
ff2587ec
WZ
28710
28711@var{offset} is the (big endian, hex encoded) offset associated with the
28712thread local variable. (This offset is obtained from the debug
28713information associated with the variable.)
28714
db2e3e2e 28715@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the
ff2587ec
WZ
28716the load module associated with the thread local storage. For example,
28717a @sc{gnu}/Linux system will pass the link map address of the shared
28718object associated with the thread local storage under consideration.
28719Other operating environments may choose to represent the load module
28720differently, so the precise meaning of this parameter will vary.
ee2d5c50
AC
28721
28722Reply:
b8ff78ce
JB
28723@table @samp
28724@item @var{XX}@dots{}
ff2587ec
WZ
28725Hex encoded (big endian) bytes representing the address of the thread
28726local storage requested.
28727
b8ff78ce
JB
28728@item E @var{nn}
28729An error occurred. @var{nn} are hex digits.
ff2587ec 28730
b8ff78ce
JB
28731@item
28732An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
ee2d5c50
AC
28733@end table
28734
b8ff78ce 28735@item qL @var{startflag} @var{threadcount} @var{nextthread}
8e04817f
AC
28736Obtain thread information from RTOS. Where: @var{startflag} (one hex
28737digit) is one to indicate the first query and zero to indicate a
28738subsequent query; @var{threadcount} (two hex digits) is the maximum
28739number of threads the response packet can contain; and @var{nextthread}
28740(eight hex digits), for subsequent queries (@var{startflag} is zero), is
28741returned in the response as @var{argthread}.
ee2d5c50 28742
b8ff78ce 28743Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
ee2d5c50
AC
28744
28745Reply:
28746@table @samp
b8ff78ce 28747@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
8e04817f
AC
28748Where: @var{count} (two hex digits) is the number of threads being
28749returned; @var{done} (one hex digit) is zero to indicate more threads
28750and one indicates no further threads; @var{argthreadid} (eight hex
b8ff78ce 28751digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
ee2d5c50 28752is a sequence of thread IDs from the target. @var{threadid} (eight hex
8e04817f 28753digits). See @code{remote.c:parse_threadlist_response()}.
ee2d5c50 28754@end table
c906108c 28755
b8ff78ce 28756@item qOffsets
9c16f35a 28757@cindex section offsets, remote request
b8ff78ce 28758@cindex @samp{qOffsets} packet
31d99776
DJ
28759Get section offsets that the target used when relocating the downloaded
28760image.
c906108c 28761
ee2d5c50
AC
28762Reply:
28763@table @samp
31d99776
DJ
28764@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]}
28765Relocate the @code{Text} section by @var{xxx} from its original address.
28766Relocate the @code{Data} section by @var{yyy} from its original address.
28767If the object file format provides segment information (e.g.@: @sc{elf}
28768@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire
28769segments by the supplied offsets.
28770
28771@emph{Note: while a @code{Bss} offset may be included in the response,
28772@value{GDBN} ignores this and instead applies the @code{Data} offset
28773to the @code{Bss} section.}
28774
28775@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]}
28776Relocate the first segment of the object file, which conventionally
28777contains program code, to a starting address of @var{xxx}. If
28778@samp{DataSeg} is specified, relocate the second segment, which
28779conventionally contains modifiable data, to a starting address of
28780@var{yyy}. @value{GDBN} will report an error if the object file
28781does not contain segment information, or does not contain at least
28782as many segments as mentioned in the reply. Extra segments are
28783kept at fixed offsets relative to the last relocated segment.
ee2d5c50
AC
28784@end table
28785
b90a069a 28786@item qP @var{mode} @var{thread-id}
9c16f35a 28787@cindex thread information, remote request
b8ff78ce 28788@cindex @samp{qP} packet
b90a069a
SL
28789Returns information on @var{thread-id}. Where: @var{mode} is a hex
28790encoded 32 bit mode; @var{thread-id} is a thread ID
28791(@pxref{thread-id syntax}).
ee2d5c50 28792
aa56d27a
JB
28793Don't use this packet; use the @samp{qThreadExtraInfo} query instead
28794(see below).
28795
b8ff78ce 28796Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
c906108c 28797
8b23ecc4
SL
28798@item QNonStop:1
28799@item QNonStop:0
28800@cindex non-stop mode, remote request
28801@cindex @samp{QNonStop} packet
28802@anchor{QNonStop}
28803Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode.
28804@xref{Remote Non-Stop}, for more information.
28805
28806Reply:
28807@table @samp
28808@item OK
28809The request succeeded.
28810
28811@item E @var{nn}
28812An error occurred. @var{nn} are hex digits.
28813
28814@item
28815An empty reply indicates that @samp{QNonStop} is not supported by
28816the stub.
28817@end table
28818
28819This packet is not probed by default; the remote stub must request it,
28820by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
28821Use of this packet is controlled by the @code{set non-stop} command;
28822@pxref{Non-Stop Mode}.
28823
89be2091
DJ
28824@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
28825@cindex pass signals to inferior, remote request
28826@cindex @samp{QPassSignals} packet
23181151 28827@anchor{QPassSignals}
89be2091
DJ
28828Each listed @var{signal} should be passed directly to the inferior process.
28829Signals are numbered identically to continue packets and stop replies
28830(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
28831strictly greater than the previous item. These signals do not need to stop
28832the inferior, or be reported to @value{GDBN}. All other signals should be
28833reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not
28834combine; any earlier @samp{QPassSignals} list is completely replaced by the
28835new list. This packet improves performance when using @samp{handle
28836@var{signal} nostop noprint pass}.
28837
28838Reply:
28839@table @samp
28840@item OK
28841The request succeeded.
28842
28843@item E @var{nn}
28844An error occurred. @var{nn} are hex digits.
28845
28846@item
28847An empty reply indicates that @samp{QPassSignals} is not supported by
28848the stub.
28849@end table
28850
28851Use of this packet is controlled by the @code{set remote pass-signals}
79a6e687 28852command (@pxref{Remote Configuration, set remote pass-signals}).
89be2091
DJ
28853This packet is not probed by default; the remote stub must request it,
28854by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
28855
b8ff78ce 28856@item qRcmd,@var{command}
ff2587ec 28857@cindex execute remote command, remote request
b8ff78ce 28858@cindex @samp{qRcmd} packet
ff2587ec 28859@var{command} (hex encoded) is passed to the local interpreter for
b8ff78ce
JB
28860execution. Invalid commands should be reported using the output
28861string. Before the final result packet, the target may also respond
28862with a number of intermediate @samp{O@var{output}} console output
28863packets. @emph{Implementors should note that providing access to a
28864stubs's interpreter may have security implications}.
fa93a9d8 28865
ff2587ec
WZ
28866Reply:
28867@table @samp
28868@item OK
28869A command response with no output.
28870@item @var{OUTPUT}
28871A command response with the hex encoded output string @var{OUTPUT}.
b8ff78ce 28872@item E @var{NN}
ff2587ec 28873Indicate a badly formed request.
b8ff78ce
JB
28874@item
28875An empty reply indicates that @samp{qRcmd} is not recognized.
ff2587ec 28876@end table
fa93a9d8 28877
aa56d27a
JB
28878(Note that the @code{qRcmd} packet's name is separated from the
28879command by a @samp{,}, not a @samp{:}, contrary to the naming
28880conventions above. Please don't use this packet as a model for new
28881packets.)
28882
08388c79
DE
28883@item qSearch:memory:@var{address};@var{length};@var{search-pattern}
28884@cindex searching memory, in remote debugging
28885@cindex @samp{qSearch:memory} packet
28886@anchor{qSearch memory}
28887Search @var{length} bytes at @var{address} for @var{search-pattern}.
28888@var{address} and @var{length} are encoded in hex.
28889@var{search-pattern} is a sequence of bytes, hex encoded.
28890
28891Reply:
28892@table @samp
28893@item 0
28894The pattern was not found.
28895@item 1,address
28896The pattern was found at @var{address}.
28897@item E @var{NN}
28898A badly formed request or an error was encountered while searching memory.
28899@item
28900An empty reply indicates that @samp{qSearch:memory} is not recognized.
28901@end table
28902
a6f3e723
SL
28903@item QStartNoAckMode
28904@cindex @samp{QStartNoAckMode} packet
28905@anchor{QStartNoAckMode}
28906Request that the remote stub disable the normal @samp{+}/@samp{-}
28907protocol acknowledgments (@pxref{Packet Acknowledgment}).
28908
28909Reply:
28910@table @samp
28911@item OK
28912The stub has switched to no-acknowledgment mode.
28913@value{GDBN} acknowledges this reponse,
28914but neither the stub nor @value{GDBN} shall send or expect further
28915@samp{+}/@samp{-} acknowledgments in the current connection.
28916@item
28917An empty reply indicates that the stub does not support no-acknowledgment mode.
28918@end table
28919
be2a5f71
DJ
28920@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]}
28921@cindex supported packets, remote query
28922@cindex features of the remote protocol
28923@cindex @samp{qSupported} packet
0876f84a 28924@anchor{qSupported}
be2a5f71
DJ
28925Tell the remote stub about features supported by @value{GDBN}, and
28926query the stub for features it supports. This packet allows
28927@value{GDBN} and the remote stub to take advantage of each others'
28928features. @samp{qSupported} also consolidates multiple feature probes
28929at startup, to improve @value{GDBN} performance---a single larger
28930packet performs better than multiple smaller probe packets on
28931high-latency links. Some features may enable behavior which must not
28932be on by default, e.g.@: because it would confuse older clients or
28933stubs. Other features may describe packets which could be
28934automatically probed for, but are not. These features must be
28935reported before @value{GDBN} will use them. This ``default
28936unsupported'' behavior is not appropriate for all packets, but it
28937helps to keep the initial connection time under control with new
28938versions of @value{GDBN} which support increasing numbers of packets.
28939
28940Reply:
28941@table @samp
28942@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{}
28943The stub supports or does not support each returned @var{stubfeature},
28944depending on the form of each @var{stubfeature} (see below for the
28945possible forms).
28946@item
28947An empty reply indicates that @samp{qSupported} is not recognized,
28948or that no features needed to be reported to @value{GDBN}.
28949@end table
28950
28951The allowed forms for each feature (either a @var{gdbfeature} in the
28952@samp{qSupported} packet, or a @var{stubfeature} in the response)
28953are:
28954
28955@table @samp
28956@item @var{name}=@var{value}
28957The remote protocol feature @var{name} is supported, and associated
28958with the specified @var{value}. The format of @var{value} depends
28959on the feature, but it must not include a semicolon.
28960@item @var{name}+
28961The remote protocol feature @var{name} is supported, and does not
28962need an associated value.
28963@item @var{name}-
28964The remote protocol feature @var{name} is not supported.
28965@item @var{name}?
28966The remote protocol feature @var{name} may be supported, and
28967@value{GDBN} should auto-detect support in some other way when it is
28968needed. This form will not be used for @var{gdbfeature} notifications,
28969but may be used for @var{stubfeature} responses.
28970@end table
28971
28972Whenever the stub receives a @samp{qSupported} request, the
28973supplied set of @value{GDBN} features should override any previous
28974request. This allows @value{GDBN} to put the stub in a known
28975state, even if the stub had previously been communicating with
28976a different version of @value{GDBN}.
28977
b90a069a
SL
28978The following values of @var{gdbfeature} (for the packet sent by @value{GDBN})
28979are defined:
28980
28981@table @samp
28982@item multiprocess
28983This feature indicates whether @value{GDBN} supports multiprocess
28984extensions to the remote protocol. @value{GDBN} does not use such
28985extensions unless the stub also reports that it supports them by
28986including @samp{multiprocess+} in its @samp{qSupported} reply.
28987@xref{multiprocess extensions}, for details.
28988@end table
28989
28990Stubs should ignore any unknown values for
be2a5f71
DJ
28991@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported}
28992packet supports receiving packets of unlimited length (earlier
b90a069a 28993versions of @value{GDBN} may reject overly long responses). Additional values
be2a5f71
DJ
28994for @var{gdbfeature} may be defined in the future to let the stub take
28995advantage of new features in @value{GDBN}, e.g.@: incompatible
b90a069a
SL
28996improvements in the remote protocol---the @samp{multiprocess} feature is
28997an example of such a feature. The stub's reply should be independent
be2a5f71
DJ
28998of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN}
28999describes all the features it supports, and then the stub replies with
29000all the features it supports.
29001
29002Similarly, @value{GDBN} will silently ignore unrecognized stub feature
29003responses, as long as each response uses one of the standard forms.
29004
29005Some features are flags. A stub which supports a flag feature
29006should respond with a @samp{+} form response. Other features
29007require values, and the stub should respond with an @samp{=}
29008form response.
29009
29010Each feature has a default value, which @value{GDBN} will use if
29011@samp{qSupported} is not available or if the feature is not mentioned
29012in the @samp{qSupported} response. The default values are fixed; a
29013stub is free to omit any feature responses that match the defaults.
29014
29015Not all features can be probed, but for those which can, the probing
29016mechanism is useful: in some cases, a stub's internal
29017architecture may not allow the protocol layer to know some information
29018about the underlying target in advance. This is especially common in
29019stubs which may be configured for multiple targets.
29020
29021These are the currently defined stub features and their properties:
29022
cfa9d6d9 29023@multitable @columnfractions 0.35 0.2 0.12 0.2
be2a5f71
DJ
29024@c NOTE: The first row should be @headitem, but we do not yet require
29025@c a new enough version of Texinfo (4.7) to use @headitem.
0876f84a 29026@item Feature Name
be2a5f71
DJ
29027@tab Value Required
29028@tab Default
29029@tab Probe Allowed
29030
29031@item @samp{PacketSize}
29032@tab Yes
29033@tab @samp{-}
29034@tab No
29035
0876f84a
DJ
29036@item @samp{qXfer:auxv:read}
29037@tab No
29038@tab @samp{-}
29039@tab Yes
29040
23181151
DJ
29041@item @samp{qXfer:features:read}
29042@tab No
29043@tab @samp{-}
29044@tab Yes
29045
cfa9d6d9
DJ
29046@item @samp{qXfer:libraries:read}
29047@tab No
29048@tab @samp{-}
29049@tab Yes
29050
68437a39
DJ
29051@item @samp{qXfer:memory-map:read}
29052@tab No
29053@tab @samp{-}
29054@tab Yes
29055
0e7f50da
UW
29056@item @samp{qXfer:spu:read}
29057@tab No
29058@tab @samp{-}
29059@tab Yes
29060
29061@item @samp{qXfer:spu:write}
29062@tab No
29063@tab @samp{-}
29064@tab Yes
29065
4aa995e1
PA
29066@item @samp{qXfer:siginfo:read}
29067@tab No
29068@tab @samp{-}
29069@tab Yes
29070
29071@item @samp{qXfer:siginfo:write}
29072@tab No
29073@tab @samp{-}
29074@tab Yes
29075
8b23ecc4
SL
29076@item @samp{QNonStop}
29077@tab No
29078@tab @samp{-}
29079@tab Yes
29080
89be2091
DJ
29081@item @samp{QPassSignals}
29082@tab No
29083@tab @samp{-}
29084@tab Yes
29085
a6f3e723
SL
29086@item @samp{QStartNoAckMode}
29087@tab No
29088@tab @samp{-}
29089@tab Yes
29090
b90a069a
SL
29091@item @samp{multiprocess}
29092@tab No
29093@tab @samp{-}
29094@tab No
29095
782b2b07
SS
29096@item @samp{ConditionalTracepoints}
29097@tab No
29098@tab @samp{-}
29099@tab No
29100
0d772ac9
MS
29101@item @samp{ReverseContinue}
29102@tab No
29103@tab @samp{+}
29104@tab No
29105
29106@item @samp{ReverseStep}
29107@tab No
29108@tab @samp{+}
29109@tab No
29110
be2a5f71
DJ
29111@end multitable
29112
29113These are the currently defined stub features, in more detail:
29114
29115@table @samp
29116@cindex packet size, remote protocol
29117@item PacketSize=@var{bytes}
29118The remote stub can accept packets up to at least @var{bytes} in
29119length. @value{GDBN} will send packets up to this size for bulk
29120transfers, and will never send larger packets. This is a limit on the
29121data characters in the packet, including the frame and checksum.
29122There is no trailing NUL byte in a remote protocol packet; if the stub
29123stores packets in a NUL-terminated format, it should allow an extra
29124byte in its buffer for the NUL. If this stub feature is not supported,
29125@value{GDBN} guesses based on the size of the @samp{g} packet response.
29126
0876f84a
DJ
29127@item qXfer:auxv:read
29128The remote stub understands the @samp{qXfer:auxv:read} packet
29129(@pxref{qXfer auxiliary vector read}).
29130
23181151
DJ
29131@item qXfer:features:read
29132The remote stub understands the @samp{qXfer:features:read} packet
29133(@pxref{qXfer target description read}).
29134
cfa9d6d9
DJ
29135@item qXfer:libraries:read
29136The remote stub understands the @samp{qXfer:libraries:read} packet
29137(@pxref{qXfer library list read}).
29138
23181151
DJ
29139@item qXfer:memory-map:read
29140The remote stub understands the @samp{qXfer:memory-map:read} packet
29141(@pxref{qXfer memory map read}).
29142
0e7f50da
UW
29143@item qXfer:spu:read
29144The remote stub understands the @samp{qXfer:spu:read} packet
29145(@pxref{qXfer spu read}).
29146
29147@item qXfer:spu:write
29148The remote stub understands the @samp{qXfer:spu:write} packet
29149(@pxref{qXfer spu write}).
29150
4aa995e1
PA
29151@item qXfer:siginfo:read
29152The remote stub understands the @samp{qXfer:siginfo:read} packet
29153(@pxref{qXfer siginfo read}).
29154
29155@item qXfer:siginfo:write
29156The remote stub understands the @samp{qXfer:siginfo:write} packet
29157(@pxref{qXfer siginfo write}).
29158
8b23ecc4
SL
29159@item QNonStop
29160The remote stub understands the @samp{QNonStop} packet
29161(@pxref{QNonStop}).
29162
23181151
DJ
29163@item QPassSignals
29164The remote stub understands the @samp{QPassSignals} packet
29165(@pxref{QPassSignals}).
29166
a6f3e723
SL
29167@item QStartNoAckMode
29168The remote stub understands the @samp{QStartNoAckMode} packet and
29169prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}.
29170
b90a069a
SL
29171@item multiprocess
29172@anchor{multiprocess extensions}
29173@cindex multiprocess extensions, in remote protocol
29174The remote stub understands the multiprocess extensions to the remote
29175protocol syntax. The multiprocess extensions affect the syntax of
29176thread IDs in both packets and replies (@pxref{thread-id syntax}), and
29177add process IDs to the @samp{D} packet and @samp{W} and @samp{X}
29178replies. Note that reporting this feature indicates support for the
29179syntactic extensions only, not that the stub necessarily supports
29180debugging of more than one process at a time. The stub must not use
29181multiprocess extensions in packet replies unless @value{GDBN} has also
29182indicated it supports them in its @samp{qSupported} request.
29183
07e059b5
VP
29184@item qXfer:osdata:read
29185The remote stub understands the @samp{qXfer:osdata:read} packet
29186((@pxref{qXfer osdata read}).
29187
782b2b07
SS
29188@item ConditionalTracepoints
29189The remote stub accepts and implements conditional expressions defined
29190for tracepoints (@pxref{Tracepoint Conditions}).
29191
0d772ac9
MS
29192@item ReverseContinue
29193The remote stub accepts and implements the reverse continue packet
29194(@pxref{bc}).
29195
29196@item ReverseStep
29197The remote stub accepts and implements the reverse step packet
29198(@pxref{bs}).
29199
be2a5f71
DJ
29200@end table
29201
b8ff78ce 29202@item qSymbol::
ff2587ec 29203@cindex symbol lookup, remote request
b8ff78ce 29204@cindex @samp{qSymbol} packet
ff2587ec
WZ
29205Notify the target that @value{GDBN} is prepared to serve symbol lookup
29206requests. Accept requests from the target for the values of symbols.
fa93a9d8
JB
29207
29208Reply:
ff2587ec 29209@table @samp
b8ff78ce 29210@item OK
ff2587ec 29211The target does not need to look up any (more) symbols.
b8ff78ce 29212@item qSymbol:@var{sym_name}
ff2587ec
WZ
29213The target requests the value of symbol @var{sym_name} (hex encoded).
29214@value{GDBN} may provide the value by using the
b8ff78ce
JB
29215@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
29216below.
ff2587ec 29217@end table
83761cbd 29218
b8ff78ce 29219@item qSymbol:@var{sym_value}:@var{sym_name}
ff2587ec
WZ
29220Set the value of @var{sym_name} to @var{sym_value}.
29221
29222@var{sym_name} (hex encoded) is the name of a symbol whose value the
29223target has previously requested.
29224
29225@var{sym_value} (hex) is the value for symbol @var{sym_name}. If
29226@value{GDBN} cannot supply a value for @var{sym_name}, then this field
29227will be empty.
29228
29229Reply:
29230@table @samp
b8ff78ce 29231@item OK
ff2587ec 29232The target does not need to look up any (more) symbols.
b8ff78ce 29233@item qSymbol:@var{sym_name}
ff2587ec
WZ
29234The target requests the value of a new symbol @var{sym_name} (hex
29235encoded). @value{GDBN} will continue to supply the values of symbols
29236(if available), until the target ceases to request them.
fa93a9d8 29237@end table
0abb7bc7 29238
9d29849a
JB
29239@item QTDP
29240@itemx QTFrame
29241@xref{Tracepoint Packets}.
29242
b90a069a 29243@item qThreadExtraInfo,@var{thread-id}
ff2587ec 29244@cindex thread attributes info, remote request
b8ff78ce
JB
29245@cindex @samp{qThreadExtraInfo} packet
29246Obtain a printable string description of a thread's attributes from
b90a069a
SL
29247the target OS. @var{thread-id} is a thread ID;
29248see @ref{thread-id syntax}. This
b8ff78ce
JB
29249string may contain anything that the target OS thinks is interesting
29250for @value{GDBN} to tell the user about the thread. The string is
29251displayed in @value{GDBN}'s @code{info threads} display. Some
29252examples of possible thread extra info strings are @samp{Runnable}, or
29253@samp{Blocked on Mutex}.
ff2587ec
WZ
29254
29255Reply:
29256@table @samp
b8ff78ce
JB
29257@item @var{XX}@dots{}
29258Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
29259comprising the printable string containing the extra information about
29260the thread's attributes.
ff2587ec 29261@end table
814e32d7 29262
aa56d27a
JB
29263(Note that the @code{qThreadExtraInfo} packet's name is separated from
29264the command by a @samp{,}, not a @samp{:}, contrary to the naming
29265conventions above. Please don't use this packet as a model for new
29266packets.)
29267
9d29849a
JB
29268@item QTStart
29269@itemx QTStop
29270@itemx QTinit
29271@itemx QTro
29272@itemx qTStatus
29273@xref{Tracepoint Packets}.
29274
0876f84a
DJ
29275@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
29276@cindex read special object, remote request
29277@cindex @samp{qXfer} packet
68437a39 29278@anchor{qXfer read}
0876f84a
DJ
29279Read uninterpreted bytes from the target's special data area
29280identified by the keyword @var{object}. Request @var{length} bytes
29281starting at @var{offset} bytes into the data. The content and
0e7f50da 29282encoding of @var{annex} is specific to @var{object}; it can supply
0876f84a
DJ
29283additional details about what data to access.
29284
29285Here are the specific requests of this form defined so far. All
29286@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply
29287formats, listed below.
29288
29289@table @samp
29290@item qXfer:auxv:read::@var{offset},@var{length}
29291@anchor{qXfer auxiliary vector read}
29292Access the target's @dfn{auxiliary vector}. @xref{OS Information,
427c3a89 29293auxiliary vector}. Note @var{annex} must be empty.
0876f84a
DJ
29294
29295This packet is not probed by default; the remote stub must request it,
89be2091 29296by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
0876f84a 29297
23181151
DJ
29298@item qXfer:features:read:@var{annex}:@var{offset},@var{length}
29299@anchor{qXfer target description read}
29300Access the @dfn{target description}. @xref{Target Descriptions}. The
29301annex specifies which XML document to access. The main description is
29302always loaded from the @samp{target.xml} annex.
29303
29304This packet is not probed by default; the remote stub must request it,
29305by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
29306
cfa9d6d9
DJ
29307@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length}
29308@anchor{qXfer library list read}
29309Access the target's list of loaded libraries. @xref{Library List Format}.
29310The annex part of the generic @samp{qXfer} packet must be empty
29311(@pxref{qXfer read}).
29312
29313Targets which maintain a list of libraries in the program's memory do
29314not need to implement this packet; it is designed for platforms where
29315the operating system manages the list of loaded libraries.
29316
29317This packet is not probed by default; the remote stub must request it,
29318by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
29319
68437a39
DJ
29320@item qXfer:memory-map:read::@var{offset},@var{length}
29321@anchor{qXfer memory map read}
79a6e687 29322Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The
68437a39
DJ
29323annex part of the generic @samp{qXfer} packet must be empty
29324(@pxref{qXfer read}).
29325
0e7f50da
UW
29326This packet is not probed by default; the remote stub must request it,
29327by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
29328
4aa995e1
PA
29329@item qXfer:siginfo:read::@var{offset},@var{length}
29330@anchor{qXfer siginfo read}
29331Read contents of the extra signal information on the target
29332system. The annex part of the generic @samp{qXfer} packet must be
29333empty (@pxref{qXfer read}).
29334
29335This packet is not probed by default; the remote stub must request it,
29336by supplying an appropriate @samp{qSupported} response
29337(@pxref{qSupported}).
29338
0e7f50da
UW
29339@item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
29340@anchor{qXfer spu read}
29341Read contents of an @code{spufs} file on the target system. The
29342annex specifies which file to read; it must be of the form
29343@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
29344in the target process, and @var{name} identifes the @code{spufs} file
29345in that context to be accessed.
29346
68437a39 29347This packet is not probed by default; the remote stub must request it,
07e059b5
VP
29348by supplying an appropriate @samp{qSupported} response
29349(@pxref{qSupported}).
29350
29351@item qXfer:osdata:read::@var{offset},@var{length}
29352@anchor{qXfer osdata read}
29353Access the target's @dfn{operating system information}.
29354@xref{Operating System Information}.
29355
68437a39
DJ
29356@end table
29357
0876f84a
DJ
29358Reply:
29359@table @samp
29360@item m @var{data}
29361Data @var{data} (@pxref{Binary Data}) has been read from the
29362target. There may be more data at a higher address (although
29363it is permitted to return @samp{m} even for the last valid
29364block of data, as long as at least one byte of data was read).
29365@var{data} may have fewer bytes than the @var{length} in the
29366request.
29367
29368@item l @var{data}
29369Data @var{data} (@pxref{Binary Data}) has been read from the target.
29370There is no more data to be read. @var{data} may have fewer bytes
29371than the @var{length} in the request.
29372
29373@item l
29374The @var{offset} in the request is at the end of the data.
29375There is no more data to be read.
29376
29377@item E00
29378The request was malformed, or @var{annex} was invalid.
29379
29380@item E @var{nn}
29381The offset was invalid, or there was an error encountered reading the data.
29382@var{nn} is a hex-encoded @code{errno} value.
29383
29384@item
29385An empty reply indicates the @var{object} string was not recognized by
29386the stub, or that the object does not support reading.
29387@end table
29388
29389@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
29390@cindex write data into object, remote request
4aa995e1 29391@anchor{qXfer write}
0876f84a
DJ
29392Write uninterpreted bytes into the target's special data area
29393identified by the keyword @var{object}, starting at @var{offset} bytes
0e7f50da 29394into the data. @var{data}@dots{} is the binary-encoded data
0876f84a 29395(@pxref{Binary Data}) to be written. The content and encoding of @var{annex}
0e7f50da 29396is specific to @var{object}; it can supply additional details about what data
0876f84a
DJ
29397to access.
29398
0e7f50da
UW
29399Here are the specific requests of this form defined so far. All
29400@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply
29401formats, listed below.
29402
29403@table @samp
4aa995e1
PA
29404@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{}
29405@anchor{qXfer siginfo write}
29406Write @var{data} to the extra signal information on the target system.
29407The annex part of the generic @samp{qXfer} packet must be
29408empty (@pxref{qXfer write}).
29409
29410This packet is not probed by default; the remote stub must request it,
29411by supplying an appropriate @samp{qSupported} response
29412(@pxref{qSupported}).
29413
84fcdf95 29414@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
0e7f50da
UW
29415@anchor{qXfer spu write}
29416Write @var{data} to an @code{spufs} file on the target system. The
29417annex specifies which file to write; it must be of the form
29418@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
29419in the target process, and @var{name} identifes the @code{spufs} file
29420in that context to be accessed.
29421
29422This packet is not probed by default; the remote stub must request it,
29423by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
29424@end table
0876f84a
DJ
29425
29426Reply:
29427@table @samp
29428@item @var{nn}
29429@var{nn} (hex encoded) is the number of bytes written.
29430This may be fewer bytes than supplied in the request.
29431
29432@item E00
29433The request was malformed, or @var{annex} was invalid.
29434
29435@item E @var{nn}
29436The offset was invalid, or there was an error encountered writing the data.
29437@var{nn} is a hex-encoded @code{errno} value.
29438
29439@item
29440An empty reply indicates the @var{object} string was not
29441recognized by the stub, or that the object does not support writing.
29442@end table
29443
29444@item qXfer:@var{object}:@var{operation}:@dots{}
29445Requests of this form may be added in the future. When a stub does
29446not recognize the @var{object} keyword, or its support for
29447@var{object} does not recognize the @var{operation} keyword, the stub
29448must respond with an empty packet.
29449
0b16c5cf
PA
29450@item qAttached:@var{pid}
29451@cindex query attached, remote request
29452@cindex @samp{qAttached} packet
29453Return an indication of whether the remote server attached to an
29454existing process or created a new process. When the multiprocess
29455protocol extensions are supported (@pxref{multiprocess extensions}),
29456@var{pid} is an integer in hexadecimal format identifying the target
29457process. Otherwise, @value{GDBN} will omit the @var{pid} field and
29458the query packet will be simplified as @samp{qAttached}.
29459
29460This query is used, for example, to know whether the remote process
29461should be detached or killed when a @value{GDBN} session is ended with
29462the @code{quit} command.
29463
29464Reply:
29465@table @samp
29466@item 1
29467The remote server attached to an existing process.
29468@item 0
29469The remote server created a new process.
29470@item E @var{NN}
29471A badly formed request or an error was encountered.
29472@end table
29473
ee2d5c50
AC
29474@end table
29475
29476@node Register Packet Format
29477@section Register Packet Format
eb12ee30 29478
b8ff78ce 29479The following @code{g}/@code{G} packets have previously been defined.
ee2d5c50
AC
29480In the below, some thirty-two bit registers are transferred as
29481sixty-four bits. Those registers should be zero/sign extended (which?)
599b237a
BW
29482to fill the space allocated. Register bytes are transferred in target
29483byte order. The two nibbles within a register byte are transferred
ee2d5c50 29484most-significant - least-significant.
eb12ee30 29485
ee2d5c50 29486@table @r
eb12ee30 29487
8e04817f 29488@item MIPS32
ee2d5c50 29489
599b237a 29490All registers are transferred as thirty-two bit quantities in the order:
8e04817f
AC
2949132 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
29492registers; fsr; fir; fp.
eb12ee30 29493
8e04817f 29494@item MIPS64
ee2d5c50 29495
599b237a 29496All registers are transferred as sixty-four bit quantities (including
8e04817f
AC
29497thirty-two bit registers such as @code{sr}). The ordering is the same
29498as @code{MIPS32}.
eb12ee30 29499
ee2d5c50
AC
29500@end table
29501
9d29849a
JB
29502@node Tracepoint Packets
29503@section Tracepoint Packets
29504@cindex tracepoint packets
29505@cindex packets, tracepoint
29506
29507Here we describe the packets @value{GDBN} uses to implement
29508tracepoints (@pxref{Tracepoints}).
29509
29510@table @samp
29511
782b2b07 29512@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:X@var{len},@var{bytes}]@r{[}-@r{]}
9d29849a
JB
29513Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena}
29514is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then
29515the tracepoint is disabled. @var{step} is the tracepoint's step
782b2b07
SS
29516count, and @var{pass} is its pass count. If an @samp{X} is present,
29517it introduces a tracepoint condition, which consists of a hexadecimal
29518length, followed by a comma and hex-encoded bytes, in a manner similar
29519to action encodings as described below. If the trailing @samp{-} is
9d29849a
JB
29520present, further @samp{QTDP} packets will follow to specify this
29521tracepoint's actions.
29522
29523Replies:
29524@table @samp
29525@item OK
29526The packet was understood and carried out.
29527@item
29528The packet was not recognized.
29529@end table
29530
29531@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]}
29532Define actions to be taken when a tracepoint is hit. @var{n} and
29533@var{addr} must be the same as in the initial @samp{QTDP} packet for
29534this tracepoint. This packet may only be sent immediately after
29535another @samp{QTDP} packet that ended with a @samp{-}. If the
29536trailing @samp{-} is present, further @samp{QTDP} packets will follow,
29537specifying more actions for this tracepoint.
29538
29539In the series of action packets for a given tracepoint, at most one
29540can have an @samp{S} before its first @var{action}. If such a packet
29541is sent, it and the following packets define ``while-stepping''
29542actions. Any prior packets define ordinary actions --- that is, those
29543taken when the tracepoint is first hit. If no action packet has an
29544@samp{S}, then all the packets in the series specify ordinary
29545tracepoint actions.
29546
29547The @samp{@var{action}@dots{}} portion of the packet is a series of
29548actions, concatenated without separators. Each action has one of the
29549following forms:
29550
29551@table @samp
29552
29553@item R @var{mask}
29554Collect the registers whose bits are set in @var{mask}. @var{mask} is
599b237a 29555a hexadecimal number whose @var{i}'th bit is set if register number
9d29849a
JB
29556@var{i} should be collected. (The least significant bit is numbered
29557zero.) Note that @var{mask} may be any number of digits long; it may
29558not fit in a 32-bit word.
29559
29560@item M @var{basereg},@var{offset},@var{len}
29561Collect @var{len} bytes of memory starting at the address in register
29562number @var{basereg}, plus @var{offset}. If @var{basereg} is
29563@samp{-1}, then the range has a fixed address: @var{offset} is the
29564address of the lowest byte to collect. The @var{basereg},
599b237a 29565@var{offset}, and @var{len} parameters are all unsigned hexadecimal
9d29849a
JB
29566values (the @samp{-1} value for @var{basereg} is a special case).
29567
29568@item X @var{len},@var{expr}
29569Evaluate @var{expr}, whose length is @var{len}, and collect memory as
29570it directs. @var{expr} is an agent expression, as described in
29571@ref{Agent Expressions}. Each byte of the expression is encoded as a
29572two-digit hex number in the packet; @var{len} is the number of bytes
29573in the expression (and thus one-half the number of hex digits in the
29574packet).
29575
29576@end table
29577
29578Any number of actions may be packed together in a single @samp{QTDP}
29579packet, as long as the packet does not exceed the maximum packet
c1947b85
JB
29580length (400 bytes, for many stubs). There may be only one @samp{R}
29581action per tracepoint, and it must precede any @samp{M} or @samp{X}
29582actions. Any registers referred to by @samp{M} and @samp{X} actions
29583must be collected by a preceding @samp{R} action. (The
29584``while-stepping'' actions are treated as if they were attached to a
29585separate tracepoint, as far as these restrictions are concerned.)
9d29849a
JB
29586
29587Replies:
29588@table @samp
29589@item OK
29590The packet was understood and carried out.
29591@item
29592The packet was not recognized.
29593@end table
29594
29595@item QTFrame:@var{n}
29596Select the @var{n}'th tracepoint frame from the buffer, and use the
29597register and memory contents recorded there to answer subsequent
29598request packets from @value{GDBN}.
29599
29600A successful reply from the stub indicates that the stub has found the
29601requested frame. The response is a series of parts, concatenated
29602without separators, describing the frame we selected. Each part has
29603one of the following forms:
29604
29605@table @samp
29606@item F @var{f}
29607The selected frame is number @var{n} in the trace frame buffer;
599b237a 29608@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there
9d29849a
JB
29609was no frame matching the criteria in the request packet.
29610
29611@item T @var{t}
29612The selected trace frame records a hit of tracepoint number @var{t};
599b237a 29613@var{t} is a hexadecimal number.
9d29849a
JB
29614
29615@end table
29616
29617@item QTFrame:pc:@var{addr}
29618Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
29619currently selected frame whose PC is @var{addr};
599b237a 29620@var{addr} is a hexadecimal number.
9d29849a
JB
29621
29622@item QTFrame:tdp:@var{t}
29623Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
29624currently selected frame that is a hit of tracepoint @var{t}; @var{t}
599b237a 29625is a hexadecimal number.
9d29849a
JB
29626
29627@item QTFrame:range:@var{start}:@var{end}
29628Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
29629currently selected frame whose PC is between @var{start} (inclusive)
599b237a 29630and @var{end} (exclusive); @var{start} and @var{end} are hexadecimal
9d29849a
JB
29631numbers.
29632
29633@item QTFrame:outside:@var{start}:@var{end}
29634Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first
29635frame @emph{outside} the given range of addresses.
29636
29637@item QTStart
29638Begin the tracepoint experiment. Begin collecting data from tracepoint
29639hits in the trace frame buffer.
29640
29641@item QTStop
29642End the tracepoint experiment. Stop collecting trace frames.
29643
29644@item QTinit
29645Clear the table of tracepoints, and empty the trace frame buffer.
29646
29647@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{}
29648Establish the given ranges of memory as ``transparent''. The stub
29649will answer requests for these ranges from memory's current contents,
29650if they were not collected as part of the tracepoint hit.
29651
29652@value{GDBN} uses this to mark read-only regions of memory, like those
29653containing program code. Since these areas never change, they should
29654still have the same contents they did when the tracepoint was hit, so
29655there's no reason for the stub to refuse to provide their contents.
29656
29657@item qTStatus
29658Ask the stub if there is a trace experiment running right now.
29659
29660Replies:
29661@table @samp
29662@item T0
29663There is no trace experiment running.
29664@item T1
29665There is a trace experiment running.
29666@end table
29667
29668@end table
29669
29670
a6b151f1
DJ
29671@node Host I/O Packets
29672@section Host I/O Packets
29673@cindex Host I/O, remote protocol
29674@cindex file transfer, remote protocol
29675
29676The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O
29677operations on the far side of a remote link. For example, Host I/O is
29678used to upload and download files to a remote target with its own
29679filesystem. Host I/O uses the same constant values and data structure
29680layout as the target-initiated File-I/O protocol. However, the
29681Host I/O packets are structured differently. The target-initiated
29682protocol relies on target memory to store parameters and buffers.
29683Host I/O requests are initiated by @value{GDBN}, and the
29684target's memory is not involved. @xref{File-I/O Remote Protocol
29685Extension}, for more details on the target-initiated protocol.
29686
29687The Host I/O request packets all encode a single operation along with
29688its arguments. They have this format:
29689
29690@table @samp
29691
29692@item vFile:@var{operation}: @var{parameter}@dots{}
29693@var{operation} is the name of the particular request; the target
29694should compare the entire packet name up to the second colon when checking
29695for a supported operation. The format of @var{parameter} depends on
29696the operation. Numbers are always passed in hexadecimal. Negative
29697numbers have an explicit minus sign (i.e.@: two's complement is not
29698used). Strings (e.g.@: filenames) are encoded as a series of
29699hexadecimal bytes. The last argument to a system call may be a
29700buffer of escaped binary data (@pxref{Binary Data}).
29701
29702@end table
29703
29704The valid responses to Host I/O packets are:
29705
29706@table @samp
29707
29708@item F @var{result} [, @var{errno}] [; @var{attachment}]
29709@var{result} is the integer value returned by this operation, usually
29710non-negative for success and -1 for errors. If an error has occured,
29711@var{errno} will be included in the result. @var{errno} will have a
29712value defined by the File-I/O protocol (@pxref{Errno Values}). For
29713operations which return data, @var{attachment} supplies the data as a
29714binary buffer. Binary buffers in response packets are escaped in the
29715normal way (@pxref{Binary Data}). See the individual packet
29716documentation for the interpretation of @var{result} and
29717@var{attachment}.
29718
29719@item
29720An empty response indicates that this operation is not recognized.
29721
29722@end table
29723
29724These are the supported Host I/O operations:
29725
29726@table @samp
29727@item vFile:open: @var{pathname}, @var{flags}, @var{mode}
29728Open a file at @var{pathname} and return a file descriptor for it, or
29729return -1 if an error occurs. @var{pathname} is a string,
29730@var{flags} is an integer indicating a mask of open flags
29731(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask
29732of mode bits to use if the file is created (@pxref{mode_t Values}).
c1c25a1a 29733@xref{open}, for details of the open flags and mode values.
a6b151f1
DJ
29734
29735@item vFile:close: @var{fd}
29736Close the open file corresponding to @var{fd} and return 0, or
29737-1 if an error occurs.
29738
29739@item vFile:pread: @var{fd}, @var{count}, @var{offset}
29740Read data from the open file corresponding to @var{fd}. Up to
29741@var{count} bytes will be read from the file, starting at @var{offset}
29742relative to the start of the file. The target may read fewer bytes;
29743common reasons include packet size limits and an end-of-file
29744condition. The number of bytes read is returned. Zero should only be
29745returned for a successful read at the end of the file, or if
29746@var{count} was zero.
29747
29748The data read should be returned as a binary attachment on success.
29749If zero bytes were read, the response should include an empty binary
29750attachment (i.e.@: a trailing semicolon). The return value is the
29751number of target bytes read; the binary attachment may be longer if
29752some characters were escaped.
29753
29754@item vFile:pwrite: @var{fd}, @var{offset}, @var{data}
29755Write @var{data} (a binary buffer) to the open file corresponding
29756to @var{fd}. Start the write at @var{offset} from the start of the
29757file. Unlike many @code{write} system calls, there is no
29758separate @var{count} argument; the length of @var{data} in the
29759packet is used. @samp{vFile:write} returns the number of bytes written,
29760which may be shorter than the length of @var{data}, or -1 if an
29761error occurred.
29762
29763@item vFile:unlink: @var{pathname}
29764Delete the file at @var{pathname} on the target. Return 0,
29765or -1 if an error occurs. @var{pathname} is a string.
29766
29767@end table
29768
9a6253be
KB
29769@node Interrupts
29770@section Interrupts
29771@cindex interrupts (remote protocol)
29772
29773When a program on the remote target is running, @value{GDBN} may
29774attempt to interrupt it by sending a @samp{Ctrl-C} or a @code{BREAK},
29775control of which is specified via @value{GDBN}'s @samp{remotebreak}
29776setting (@pxref{set remotebreak}).
29777
29778The precise meaning of @code{BREAK} is defined by the transport
8775bb90
MS
29779mechanism and may, in fact, be undefined. @value{GDBN} does not
29780currently define a @code{BREAK} mechanism for any of the network
29781interfaces except for TCP, in which case @value{GDBN} sends the
29782@code{telnet} BREAK sequence.
9a6253be
KB
29783
29784@samp{Ctrl-C}, on the other hand, is defined and implemented for all
29785transport mechanisms. It is represented by sending the single byte
29786@code{0x03} without any of the usual packet overhead described in
29787the Overview section (@pxref{Overview}). When a @code{0x03} byte is
29788transmitted as part of a packet, it is considered to be packet data
29789and does @emph{not} represent an interrupt. E.g., an @samp{X} packet
0876f84a 29790(@pxref{X packet}), used for binary downloads, may include an unescaped
9a6253be
KB
29791@code{0x03} as part of its packet.
29792
29793Stubs are not required to recognize these interrupt mechanisms and the
29794precise meaning associated with receipt of the interrupt is
8b23ecc4
SL
29795implementation defined. If the target supports debugging of multiple
29796threads and/or processes, it should attempt to interrupt all
29797currently-executing threads and processes.
29798If the stub is successful at interrupting the
29799running program, it should send one of the stop
29800reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result
29801of successfully stopping the program in all-stop mode, and a stop reply
29802for each stopped thread in non-stop mode.
29803Interrupts received while the
29804program is stopped are discarded.
29805
29806@node Notification Packets
29807@section Notification Packets
29808@cindex notification packets
29809@cindex packets, notification
29810
29811The @value{GDBN} remote serial protocol includes @dfn{notifications},
29812packets that require no acknowledgment. Both the GDB and the stub
29813may send notifications (although the only notifications defined at
29814present are sent by the stub). Notifications carry information
29815without incurring the round-trip latency of an acknowledgment, and so
29816are useful for low-impact communications where occasional packet loss
29817is not a problem.
29818
29819A notification packet has the form @samp{% @var{data} #
29820@var{checksum}}, where @var{data} is the content of the notification,
29821and @var{checksum} is a checksum of @var{data}, computed and formatted
29822as for ordinary @value{GDBN} packets. A notification's @var{data}
29823never contains @samp{$}, @samp{%} or @samp{#} characters. Upon
29824receiving a notification, the recipient sends no @samp{+} or @samp{-}
29825to acknowledge the notification's receipt or to report its corruption.
29826
29827Every notification's @var{data} begins with a name, which contains no
29828colon characters, followed by a colon character.
29829
29830Recipients should silently ignore corrupted notifications and
29831notifications they do not understand. Recipients should restart
29832timeout periods on receipt of a well-formed notification, whether or
29833not they understand it.
29834
29835Senders should only send the notifications described here when this
29836protocol description specifies that they are permitted. In the
29837future, we may extend the protocol to permit existing notifications in
29838new contexts; this rule helps older senders avoid confusing newer
29839recipients.
29840
29841(Older versions of @value{GDBN} ignore bytes received until they see
29842the @samp{$} byte that begins an ordinary packet, so new stubs may
29843transmit notifications without fear of confusing older clients. There
29844are no notifications defined for @value{GDBN} to send at the moment, but we
29845assume that most older stubs would ignore them, as well.)
29846
29847The following notification packets from the stub to @value{GDBN} are
29848defined:
29849
29850@table @samp
29851@item Stop: @var{reply}
29852Report an asynchronous stop event in non-stop mode.
29853The @var{reply} has the form of a stop reply, as
29854described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop},
29855for information on how these notifications are acknowledged by
29856@value{GDBN}.
29857@end table
29858
29859@node Remote Non-Stop
29860@section Remote Protocol Support for Non-Stop Mode
29861
29862@value{GDBN}'s remote protocol supports non-stop debugging of
29863multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub
29864supports non-stop mode, it should report that to @value{GDBN} by including
29865@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}).
29866
29867@value{GDBN} typically sends a @samp{QNonStop} packet only when
29868establishing a new connection with the stub. Entering non-stop mode
29869does not alter the state of any currently-running threads, but targets
29870must stop all threads in any already-attached processes when entering
29871all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to
29872probe the target state after a mode change.
29873
29874In non-stop mode, when an attached process encounters an event that
29875would otherwise be reported with a stop reply, it uses the
29876asynchronous notification mechanism (@pxref{Notification Packets}) to
29877inform @value{GDBN}. In contrast to all-stop mode, where all threads
29878in all processes are stopped when a stop reply is sent, in non-stop
29879mode only the thread reporting the stop event is stopped. That is,
29880when reporting a @samp{S} or @samp{T} response to indicate completion
29881of a step operation, hitting a breakpoint, or a fault, only the
29882affected thread is stopped; any other still-running threads continue
29883to run. When reporting a @samp{W} or @samp{X} response, all running
29884threads belonging to other attached processes continue to run.
29885
29886Only one stop reply notification at a time may be pending; if
29887additional stop events occur before @value{GDBN} has acknowledged the
29888previous notification, they must be queued by the stub for later
29889synchronous transmission in response to @samp{vStopped} packets from
29890@value{GDBN}. Because the notification mechanism is unreliable,
29891the stub is permitted to resend a stop reply notification
29892if it believes @value{GDBN} may not have received it. @value{GDBN}
29893ignores additional stop reply notifications received before it has
29894finished processing a previous notification and the stub has completed
29895sending any queued stop events.
29896
29897Otherwise, @value{GDBN} must be prepared to receive a stop reply
29898notification at any time. Specifically, they may appear when
29899@value{GDBN} is not otherwise reading input from the stub, or when
29900@value{GDBN} is expecting to read a normal synchronous response or a
29901@samp{+}/@samp{-} acknowledgment to a packet it has sent.
29902Notification packets are distinct from any other communication from
29903the stub so there is no ambiguity.
29904
29905After receiving a stop reply notification, @value{GDBN} shall
29906acknowledge it by sending a @samp{vStopped} packet (@pxref{vStopped packet})
29907as a regular, synchronous request to the stub. Such acknowledgment
29908is not required to happen immediately, as @value{GDBN} is permitted to
29909send other, unrelated packets to the stub first, which the stub should
29910process normally.
29911
29912Upon receiving a @samp{vStopped} packet, if the stub has other queued
29913stop events to report to @value{GDBN}, it shall respond by sending a
29914normal stop reply response. @value{GDBN} shall then send another
29915@samp{vStopped} packet to solicit further responses; again, it is
29916permitted to send other, unrelated packets as well which the stub
29917should process normally.
29918
29919If the stub receives a @samp{vStopped} packet and there are no
29920additional stop events to report, the stub shall return an @samp{OK}
29921response. At this point, if further stop events occur, the stub shall
29922send a new stop reply notification, @value{GDBN} shall accept the
29923notification, and the process shall be repeated.
29924
29925In non-stop mode, the target shall respond to the @samp{?} packet as
29926follows. First, any incomplete stop reply notification/@samp{vStopped}
29927sequence in progress is abandoned. The target must begin a new
29928sequence reporting stop events for all stopped threads, whether or not
29929it has previously reported those events to @value{GDBN}. The first
29930stop reply is sent as a synchronous reply to the @samp{?} packet, and
29931subsequent stop replies are sent as responses to @samp{vStopped} packets
29932using the mechanism described above. The target must not send
29933asynchronous stop reply notifications until the sequence is complete.
29934If all threads are running when the target receives the @samp{?} packet,
29935or if the target is not attached to any process, it shall respond
29936@samp{OK}.
9a6253be 29937
a6f3e723
SL
29938@node Packet Acknowledgment
29939@section Packet Acknowledgment
29940
29941@cindex acknowledgment, for @value{GDBN} remote
29942@cindex packet acknowledgment, for @value{GDBN} remote
29943By default, when either the host or the target machine receives a packet,
29944the first response expected is an acknowledgment: either @samp{+} (to indicate
29945the package was received correctly) or @samp{-} (to request retransmission).
29946This mechanism allows the @value{GDBN} remote protocol to operate over
29947unreliable transport mechanisms, such as a serial line.
29948
29949In cases where the transport mechanism is itself reliable (such as a pipe or
29950TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant.
29951It may be desirable to disable them in that case to reduce communication
29952overhead, or for other reasons. This can be accomplished by means of the
29953@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}.
29954
29955When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or
29956expect @samp{+}/@samp{-} protocol acknowledgments. The packet
29957and response format still includes the normal checksum, as described in
29958@ref{Overview}, but the checksum may be ignored by the receiver.
29959
29960If the stub supports @samp{QStartNoAckMode} and prefers to operate in
29961no-acknowledgment mode, it should report that to @value{GDBN}
29962by including @samp{QStartNoAckMode+} in its response to @samp{qSupported};
29963@pxref{qSupported}.
29964If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been
29965disabled via the @code{set remote noack-packet off} command
29966(@pxref{Remote Configuration}),
29967@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub.
29968Only then may the stub actually turn off packet acknowledgments.
29969@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK}
29970response, which can be safely ignored by the stub.
29971
29972Note that @code{set remote noack-packet} command only affects negotiation
29973between @value{GDBN} and the stub when subsequent connections are made;
29974it does not affect the protocol acknowledgment state for any current
29975connection.
29976Since @samp{+}/@samp{-} acknowledgments are enabled by default when a
29977new connection is established,
29978there is also no protocol request to re-enable the acknowledgments
29979for the current connection, once disabled.
29980
ee2d5c50
AC
29981@node Examples
29982@section Examples
eb12ee30 29983
8e04817f
AC
29984Example sequence of a target being re-started. Notice how the restart
29985does not get any direct output:
eb12ee30 29986
474c8240 29987@smallexample
d2c6833e
AC
29988-> @code{R00}
29989<- @code{+}
8e04817f 29990@emph{target restarts}
d2c6833e 29991-> @code{?}
8e04817f 29992<- @code{+}
d2c6833e
AC
29993<- @code{T001:1234123412341234}
29994-> @code{+}
474c8240 29995@end smallexample
eb12ee30 29996
8e04817f 29997Example sequence of a target being stepped by a single instruction:
eb12ee30 29998
474c8240 29999@smallexample
d2c6833e 30000-> @code{G1445@dots{}}
8e04817f 30001<- @code{+}
d2c6833e
AC
30002-> @code{s}
30003<- @code{+}
30004@emph{time passes}
30005<- @code{T001:1234123412341234}
8e04817f 30006-> @code{+}
d2c6833e 30007-> @code{g}
8e04817f 30008<- @code{+}
d2c6833e
AC
30009<- @code{1455@dots{}}
30010-> @code{+}
474c8240 30011@end smallexample
eb12ee30 30012
79a6e687
BW
30013@node File-I/O Remote Protocol Extension
30014@section File-I/O Remote Protocol Extension
0ce1b118
CV
30015@cindex File-I/O remote protocol extension
30016
30017@menu
30018* File-I/O Overview::
79a6e687
BW
30019* Protocol Basics::
30020* The F Request Packet::
30021* The F Reply Packet::
30022* The Ctrl-C Message::
0ce1b118 30023* Console I/O::
79a6e687 30024* List of Supported Calls::
db2e3e2e 30025* Protocol-specific Representation of Datatypes::
0ce1b118
CV
30026* Constants::
30027* File-I/O Examples::
30028@end menu
30029
30030@node File-I/O Overview
30031@subsection File-I/O Overview
30032@cindex file-i/o overview
30033
9c16f35a 30034The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the
fc320d37 30035target to use the host's file system and console I/O to perform various
0ce1b118 30036system calls. System calls on the target system are translated into a
fc320d37
SL
30037remote protocol packet to the host system, which then performs the needed
30038actions and returns a response packet to the target system.
0ce1b118
CV
30039This simulates file system operations even on targets that lack file systems.
30040
fc320d37
SL
30041The protocol is defined to be independent of both the host and target systems.
30042It uses its own internal representation of datatypes and values. Both
0ce1b118 30043@value{GDBN} and the target's @value{GDBN} stub are responsible for
fc320d37
SL
30044translating the system-dependent value representations into the internal
30045protocol representations when data is transmitted.
0ce1b118 30046
fc320d37
SL
30047The communication is synchronous. A system call is possible only when
30048@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S}
30049or @samp{s} packets. While @value{GDBN} handles the request for a system call,
0ce1b118 30050the target is stopped to allow deterministic access to the target's
fc320d37
SL
30051memory. Therefore File-I/O is not interruptible by target signals. On
30052the other hand, it is possible to interrupt File-I/O by a user interrupt
c8aa23ab 30053(@samp{Ctrl-C}) within @value{GDBN}.
0ce1b118
CV
30054
30055The target's request to perform a host system call does not finish
30056the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
30057after finishing the system call, the target returns to continuing the
30058previous activity (continue, step). No additional continue or step
30059request from @value{GDBN} is required.
30060
30061@smallexample
f7dc1244 30062(@value{GDBP}) continue
0ce1b118
CV
30063 <- target requests 'system call X'
30064 target is stopped, @value{GDBN} executes system call
3f94c067
BW
30065 -> @value{GDBN} returns result
30066 ... target continues, @value{GDBN} returns to wait for the target
0ce1b118
CV
30067 <- target hits breakpoint and sends a Txx packet
30068@end smallexample
30069
fc320d37
SL
30070The protocol only supports I/O on the console and to regular files on
30071the host file system. Character or block special devices, pipes,
30072named pipes, sockets or any other communication method on the host
0ce1b118
CV
30073system are not supported by this protocol.
30074
8b23ecc4
SL
30075File I/O is not supported in non-stop mode.
30076
79a6e687
BW
30077@node Protocol Basics
30078@subsection Protocol Basics
0ce1b118
CV
30079@cindex protocol basics, file-i/o
30080
fc320d37
SL
30081The File-I/O protocol uses the @code{F} packet as the request as well
30082as reply packet. Since a File-I/O system call can only occur when
30083@value{GDBN} is waiting for a response from the continuing or stepping target,
30084the File-I/O request is a reply that @value{GDBN} has to expect as a result
30085of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
0ce1b118
CV
30086This @code{F} packet contains all information needed to allow @value{GDBN}
30087to call the appropriate host system call:
30088
30089@itemize @bullet
b383017d 30090@item
0ce1b118
CV
30091A unique identifier for the requested system call.
30092
30093@item
30094All parameters to the system call. Pointers are given as addresses
30095in the target memory address space. Pointers to strings are given as
b383017d 30096pointer/length pair. Numerical values are given as they are.
db2e3e2e 30097Numerical control flags are given in a protocol-specific representation.
0ce1b118
CV
30098
30099@end itemize
30100
fc320d37 30101At this point, @value{GDBN} has to perform the following actions.
0ce1b118
CV
30102
30103@itemize @bullet
b383017d 30104@item
fc320d37
SL
30105If the parameters include pointer values to data needed as input to a
30106system call, @value{GDBN} requests this data from the target with a
0ce1b118
CV
30107standard @code{m} packet request. This additional communication has to be
30108expected by the target implementation and is handled as any other @code{m}
30109packet.
30110
30111@item
30112@value{GDBN} translates all value from protocol representation to host
30113representation as needed. Datatypes are coerced into the host types.
30114
30115@item
fc320d37 30116@value{GDBN} calls the system call.
0ce1b118
CV
30117
30118@item
30119It then coerces datatypes back to protocol representation.
30120
30121@item
fc320d37
SL
30122If the system call is expected to return data in buffer space specified
30123by pointer parameters to the call, the data is transmitted to the
0ce1b118
CV
30124target using a @code{M} or @code{X} packet. This packet has to be expected
30125by the target implementation and is handled as any other @code{M} or @code{X}
30126packet.
30127
30128@end itemize
30129
30130Eventually @value{GDBN} replies with another @code{F} packet which contains all
30131necessary information for the target to continue. This at least contains
30132
30133@itemize @bullet
30134@item
30135Return value.
30136
30137@item
30138@code{errno}, if has been changed by the system call.
30139
30140@item
30141``Ctrl-C'' flag.
30142
30143@end itemize
30144
30145After having done the needed type and value coercion, the target continues
30146the latest continue or step action.
30147
79a6e687
BW
30148@node The F Request Packet
30149@subsection The @code{F} Request Packet
0ce1b118
CV
30150@cindex file-i/o request packet
30151@cindex @code{F} request packet
30152
30153The @code{F} request packet has the following format:
30154
30155@table @samp
fc320d37 30156@item F@var{call-id},@var{parameter@dots{}}
0ce1b118
CV
30157
30158@var{call-id} is the identifier to indicate the host system call to be called.
30159This is just the name of the function.
30160
fc320d37
SL
30161@var{parameter@dots{}} are the parameters to the system call.
30162Parameters are hexadecimal integer values, either the actual values in case
30163of scalar datatypes, pointers to target buffer space in case of compound
30164datatypes and unspecified memory areas, or pointer/length pairs in case
30165of string parameters. These are appended to the @var{call-id} as a
30166comma-delimited list. All values are transmitted in ASCII
30167string representation, pointer/length pairs separated by a slash.
0ce1b118 30168
b383017d 30169@end table
0ce1b118 30170
fc320d37 30171
0ce1b118 30172
79a6e687
BW
30173@node The F Reply Packet
30174@subsection The @code{F} Reply Packet
0ce1b118
CV
30175@cindex file-i/o reply packet
30176@cindex @code{F} reply packet
30177
30178The @code{F} reply packet has the following format:
30179
30180@table @samp
30181
d3bdde98 30182@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment}
0ce1b118
CV
30183
30184@var{retcode} is the return code of the system call as hexadecimal value.
30185
db2e3e2e
BW
30186@var{errno} is the @code{errno} set by the call, in protocol-specific
30187representation.
0ce1b118
CV
30188This parameter can be omitted if the call was successful.
30189
fc320d37
SL
30190@var{Ctrl-C flag} is only sent if the user requested a break. In this
30191case, @var{errno} must be sent as well, even if the call was successful.
30192The @var{Ctrl-C flag} itself consists of the character @samp{C}:
0ce1b118
CV
30193
30194@smallexample
30195F0,0,C
30196@end smallexample
30197
30198@noindent
fc320d37 30199or, if the call was interrupted before the host call has been performed:
0ce1b118
CV
30200
30201@smallexample
30202F-1,4,C
30203@end smallexample
30204
30205@noindent
db2e3e2e 30206assuming 4 is the protocol-specific representation of @code{EINTR}.
0ce1b118
CV
30207
30208@end table
30209
0ce1b118 30210
79a6e687
BW
30211@node The Ctrl-C Message
30212@subsection The @samp{Ctrl-C} Message
0ce1b118
CV
30213@cindex ctrl-c message, in file-i/o protocol
30214
c8aa23ab 30215If the @samp{Ctrl-C} flag is set in the @value{GDBN}
79a6e687 30216reply packet (@pxref{The F Reply Packet}),
fc320d37 30217the target should behave as if it had
0ce1b118 30218gotten a break message. The meaning for the target is ``system call
fc320d37 30219interrupted by @code{SIGINT}''. Consequentially, the target should actually stop
0ce1b118 30220(as with a break message) and return to @value{GDBN} with a @code{T02}
c8aa23ab 30221packet.
fc320d37
SL
30222
30223It's important for the target to know in which
30224state the system call was interrupted. There are two possible cases:
0ce1b118
CV
30225
30226@itemize @bullet
30227@item
30228The system call hasn't been performed on the host yet.
30229
30230@item
30231The system call on the host has been finished.
30232
30233@end itemize
30234
30235These two states can be distinguished by the target by the value of the
30236returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
30237call hasn't been performed. This is equivalent to the @code{EINTR} handling
30238on POSIX systems. In any other case, the target may presume that the
fc320d37 30239system call has been finished --- successfully or not --- and should behave
0ce1b118
CV
30240as if the break message arrived right after the system call.
30241
fc320d37 30242@value{GDBN} must behave reliably. If the system call has not been called
0ce1b118
CV
30243yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
30244@code{errno} in the packet. If the system call on the host has been finished
fc320d37
SL
30245before the user requests a break, the full action must be finished by
30246@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary.
30247The @code{F} packet may only be sent when either nothing has happened
0ce1b118
CV
30248or the full action has been completed.
30249
30250@node Console I/O
30251@subsection Console I/O
30252@cindex console i/o as part of file-i/o
30253
d3e8051b 30254By default and if not explicitly closed by the target system, the file
0ce1b118
CV
30255descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
30256on the @value{GDBN} console is handled as any other file output operation
30257(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
30258by @value{GDBN} so that after the target read request from file descriptor
302590 all following typing is buffered until either one of the following
30260conditions is met:
30261
30262@itemize @bullet
30263@item
c8aa23ab 30264The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the
0ce1b118
CV
30265@code{read}
30266system call is treated as finished.
30267
30268@item
7f9087cb 30269The user presses @key{RET}. This is treated as end of input with a trailing
fc320d37 30270newline.
0ce1b118
CV
30271
30272@item
c8aa23ab
EZ
30273The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing
30274character (neither newline nor @samp{Ctrl-D}) is appended to the input.
0ce1b118
CV
30275
30276@end itemize
30277
fc320d37
SL
30278If the user has typed more characters than fit in the buffer given to
30279the @code{read} call, the trailing characters are buffered in @value{GDBN} until
30280either another @code{read(0, @dots{})} is requested by the target, or debugging
30281is stopped at the user's request.
0ce1b118 30282
0ce1b118 30283
79a6e687
BW
30284@node List of Supported Calls
30285@subsection List of Supported Calls
0ce1b118
CV
30286@cindex list of supported file-i/o calls
30287
30288@menu
30289* open::
30290* close::
30291* read::
30292* write::
30293* lseek::
30294* rename::
30295* unlink::
30296* stat/fstat::
30297* gettimeofday::
30298* isatty::
30299* system::
30300@end menu
30301
30302@node open
30303@unnumberedsubsubsec open
30304@cindex open, file-i/o system call
30305
fc320d37
SL
30306@table @asis
30307@item Synopsis:
0ce1b118 30308@smallexample
0ce1b118
CV
30309int open(const char *pathname, int flags);
30310int open(const char *pathname, int flags, mode_t mode);
0ce1b118
CV
30311@end smallexample
30312
fc320d37
SL
30313@item Request:
30314@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}}
30315
0ce1b118 30316@noindent
fc320d37 30317@var{flags} is the bitwise @code{OR} of the following values:
0ce1b118
CV
30318
30319@table @code
b383017d 30320@item O_CREAT
0ce1b118
CV
30321If the file does not exist it will be created. The host
30322rules apply as far as file ownership and time stamps
30323are concerned.
30324
b383017d 30325@item O_EXCL
fc320d37 30326When used with @code{O_CREAT}, if the file already exists it is
0ce1b118
CV
30327an error and open() fails.
30328
b383017d 30329@item O_TRUNC
0ce1b118 30330If the file already exists and the open mode allows
fc320d37
SL
30331writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be
30332truncated to zero length.
0ce1b118 30333
b383017d 30334@item O_APPEND
0ce1b118
CV
30335The file is opened in append mode.
30336
b383017d 30337@item O_RDONLY
0ce1b118
CV
30338The file is opened for reading only.
30339
b383017d 30340@item O_WRONLY
0ce1b118
CV
30341The file is opened for writing only.
30342
b383017d 30343@item O_RDWR
0ce1b118 30344The file is opened for reading and writing.
fc320d37 30345@end table
0ce1b118
CV
30346
30347@noindent
fc320d37 30348Other bits are silently ignored.
0ce1b118 30349
0ce1b118
CV
30350
30351@noindent
fc320d37 30352@var{mode} is the bitwise @code{OR} of the following values:
0ce1b118
CV
30353
30354@table @code
b383017d 30355@item S_IRUSR
0ce1b118
CV
30356User has read permission.
30357
b383017d 30358@item S_IWUSR
0ce1b118
CV
30359User has write permission.
30360
b383017d 30361@item S_IRGRP
0ce1b118
CV
30362Group has read permission.
30363
b383017d 30364@item S_IWGRP
0ce1b118
CV
30365Group has write permission.
30366
b383017d 30367@item S_IROTH
0ce1b118
CV
30368Others have read permission.
30369
b383017d 30370@item S_IWOTH
0ce1b118 30371Others have write permission.
fc320d37 30372@end table
0ce1b118
CV
30373
30374@noindent
fc320d37 30375Other bits are silently ignored.
0ce1b118 30376
0ce1b118 30377
fc320d37
SL
30378@item Return value:
30379@code{open} returns the new file descriptor or -1 if an error
30380occurred.
0ce1b118 30381
fc320d37 30382@item Errors:
0ce1b118
CV
30383
30384@table @code
b383017d 30385@item EEXIST
fc320d37 30386@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used.
0ce1b118 30387
b383017d 30388@item EISDIR
fc320d37 30389@var{pathname} refers to a directory.
0ce1b118 30390
b383017d 30391@item EACCES
0ce1b118
CV
30392The requested access is not allowed.
30393
30394@item ENAMETOOLONG
fc320d37 30395@var{pathname} was too long.
0ce1b118 30396
b383017d 30397@item ENOENT
fc320d37 30398A directory component in @var{pathname} does not exist.
0ce1b118 30399
b383017d 30400@item ENODEV
fc320d37 30401@var{pathname} refers to a device, pipe, named pipe or socket.
0ce1b118 30402
b383017d 30403@item EROFS
fc320d37 30404@var{pathname} refers to a file on a read-only filesystem and
0ce1b118
CV
30405write access was requested.
30406
b383017d 30407@item EFAULT
fc320d37 30408@var{pathname} is an invalid pointer value.
0ce1b118 30409
b383017d 30410@item ENOSPC
0ce1b118
CV
30411No space on device to create the file.
30412
b383017d 30413@item EMFILE
0ce1b118
CV
30414The process already has the maximum number of files open.
30415
b383017d 30416@item ENFILE
0ce1b118
CV
30417The limit on the total number of files open on the system
30418has been reached.
30419
b383017d 30420@item EINTR
0ce1b118
CV
30421The call was interrupted by the user.
30422@end table
30423
fc320d37
SL
30424@end table
30425
0ce1b118
CV
30426@node close
30427@unnumberedsubsubsec close
30428@cindex close, file-i/o system call
30429
fc320d37
SL
30430@table @asis
30431@item Synopsis:
0ce1b118 30432@smallexample
0ce1b118 30433int close(int fd);
fc320d37 30434@end smallexample
0ce1b118 30435
fc320d37
SL
30436@item Request:
30437@samp{Fclose,@var{fd}}
0ce1b118 30438
fc320d37
SL
30439@item Return value:
30440@code{close} returns zero on success, or -1 if an error occurred.
0ce1b118 30441
fc320d37 30442@item Errors:
0ce1b118
CV
30443
30444@table @code
b383017d 30445@item EBADF
fc320d37 30446@var{fd} isn't a valid open file descriptor.
0ce1b118 30447
b383017d 30448@item EINTR
0ce1b118
CV
30449The call was interrupted by the user.
30450@end table
30451
fc320d37
SL
30452@end table
30453
0ce1b118
CV
30454@node read
30455@unnumberedsubsubsec read
30456@cindex read, file-i/o system call
30457
fc320d37
SL
30458@table @asis
30459@item Synopsis:
0ce1b118 30460@smallexample
0ce1b118 30461int read(int fd, void *buf, unsigned int count);
fc320d37 30462@end smallexample
0ce1b118 30463
fc320d37
SL
30464@item Request:
30465@samp{Fread,@var{fd},@var{bufptr},@var{count}}
0ce1b118 30466
fc320d37 30467@item Return value:
0ce1b118
CV
30468On success, the number of bytes read is returned.
30469Zero indicates end of file. If count is zero, read
b383017d 30470returns zero as well. On error, -1 is returned.
0ce1b118 30471
fc320d37 30472@item Errors:
0ce1b118
CV
30473
30474@table @code
b383017d 30475@item EBADF
fc320d37 30476@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
30477reading.
30478
b383017d 30479@item EFAULT
fc320d37 30480@var{bufptr} is an invalid pointer value.
0ce1b118 30481
b383017d 30482@item EINTR
0ce1b118
CV
30483The call was interrupted by the user.
30484@end table
30485
fc320d37
SL
30486@end table
30487
0ce1b118
CV
30488@node write
30489@unnumberedsubsubsec write
30490@cindex write, file-i/o system call
30491
fc320d37
SL
30492@table @asis
30493@item Synopsis:
0ce1b118 30494@smallexample
0ce1b118 30495int write(int fd, const void *buf, unsigned int count);
fc320d37 30496@end smallexample
0ce1b118 30497
fc320d37
SL
30498@item Request:
30499@samp{Fwrite,@var{fd},@var{bufptr},@var{count}}
0ce1b118 30500
fc320d37 30501@item Return value:
0ce1b118
CV
30502On success, the number of bytes written are returned.
30503Zero indicates nothing was written. On error, -1
30504is returned.
30505
fc320d37 30506@item Errors:
0ce1b118
CV
30507
30508@table @code
b383017d 30509@item EBADF
fc320d37 30510@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
30511writing.
30512
b383017d 30513@item EFAULT
fc320d37 30514@var{bufptr} is an invalid pointer value.
0ce1b118 30515
b383017d 30516@item EFBIG
0ce1b118 30517An attempt was made to write a file that exceeds the
db2e3e2e 30518host-specific maximum file size allowed.
0ce1b118 30519
b383017d 30520@item ENOSPC
0ce1b118
CV
30521No space on device to write the data.
30522
b383017d 30523@item EINTR
0ce1b118
CV
30524The call was interrupted by the user.
30525@end table
30526
fc320d37
SL
30527@end table
30528
0ce1b118
CV
30529@node lseek
30530@unnumberedsubsubsec lseek
30531@cindex lseek, file-i/o system call
30532
fc320d37
SL
30533@table @asis
30534@item Synopsis:
0ce1b118 30535@smallexample
0ce1b118 30536long lseek (int fd, long offset, int flag);
0ce1b118
CV
30537@end smallexample
30538
fc320d37
SL
30539@item Request:
30540@samp{Flseek,@var{fd},@var{offset},@var{flag}}
30541
30542@var{flag} is one of:
0ce1b118
CV
30543
30544@table @code
b383017d 30545@item SEEK_SET
fc320d37 30546The offset is set to @var{offset} bytes.
0ce1b118 30547
b383017d 30548@item SEEK_CUR
fc320d37 30549The offset is set to its current location plus @var{offset}
0ce1b118
CV
30550bytes.
30551
b383017d 30552@item SEEK_END
fc320d37 30553The offset is set to the size of the file plus @var{offset}
0ce1b118
CV
30554bytes.
30555@end table
30556
fc320d37 30557@item Return value:
0ce1b118
CV
30558On success, the resulting unsigned offset in bytes from
30559the beginning of the file is returned. Otherwise, a
30560value of -1 is returned.
30561
fc320d37 30562@item Errors:
0ce1b118
CV
30563
30564@table @code
b383017d 30565@item EBADF
fc320d37 30566@var{fd} is not a valid open file descriptor.
0ce1b118 30567
b383017d 30568@item ESPIPE
fc320d37 30569@var{fd} is associated with the @value{GDBN} console.
0ce1b118 30570
b383017d 30571@item EINVAL
fc320d37 30572@var{flag} is not a proper value.
0ce1b118 30573
b383017d 30574@item EINTR
0ce1b118
CV
30575The call was interrupted by the user.
30576@end table
30577
fc320d37
SL
30578@end table
30579
0ce1b118
CV
30580@node rename
30581@unnumberedsubsubsec rename
30582@cindex rename, file-i/o system call
30583
fc320d37
SL
30584@table @asis
30585@item Synopsis:
0ce1b118 30586@smallexample
0ce1b118 30587int rename(const char *oldpath, const char *newpath);
fc320d37 30588@end smallexample
0ce1b118 30589
fc320d37
SL
30590@item Request:
30591@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}}
0ce1b118 30592
fc320d37 30593@item Return value:
0ce1b118
CV
30594On success, zero is returned. On error, -1 is returned.
30595
fc320d37 30596@item Errors:
0ce1b118
CV
30597
30598@table @code
b383017d 30599@item EISDIR
fc320d37 30600@var{newpath} is an existing directory, but @var{oldpath} is not a
0ce1b118
CV
30601directory.
30602
b383017d 30603@item EEXIST
fc320d37 30604@var{newpath} is a non-empty directory.
0ce1b118 30605
b383017d 30606@item EBUSY
fc320d37 30607@var{oldpath} or @var{newpath} is a directory that is in use by some
0ce1b118
CV
30608process.
30609
b383017d 30610@item EINVAL
0ce1b118
CV
30611An attempt was made to make a directory a subdirectory
30612of itself.
30613
b383017d 30614@item ENOTDIR
fc320d37
SL
30615A component used as a directory in @var{oldpath} or new
30616path is not a directory. Or @var{oldpath} is a directory
30617and @var{newpath} exists but is not a directory.
0ce1b118 30618
b383017d 30619@item EFAULT
fc320d37 30620@var{oldpathptr} or @var{newpathptr} are invalid pointer values.
0ce1b118 30621
b383017d 30622@item EACCES
0ce1b118
CV
30623No access to the file or the path of the file.
30624
30625@item ENAMETOOLONG
b383017d 30626
fc320d37 30627@var{oldpath} or @var{newpath} was too long.
0ce1b118 30628
b383017d 30629@item ENOENT
fc320d37 30630A directory component in @var{oldpath} or @var{newpath} does not exist.
0ce1b118 30631
b383017d 30632@item EROFS
0ce1b118
CV
30633The file is on a read-only filesystem.
30634
b383017d 30635@item ENOSPC
0ce1b118
CV
30636The device containing the file has no room for the new
30637directory entry.
30638
b383017d 30639@item EINTR
0ce1b118
CV
30640The call was interrupted by the user.
30641@end table
30642
fc320d37
SL
30643@end table
30644
0ce1b118
CV
30645@node unlink
30646@unnumberedsubsubsec unlink
30647@cindex unlink, file-i/o system call
30648
fc320d37
SL
30649@table @asis
30650@item Synopsis:
0ce1b118 30651@smallexample
0ce1b118 30652int unlink(const char *pathname);
fc320d37 30653@end smallexample
0ce1b118 30654
fc320d37
SL
30655@item Request:
30656@samp{Funlink,@var{pathnameptr}/@var{len}}
0ce1b118 30657
fc320d37 30658@item Return value:
0ce1b118
CV
30659On success, zero is returned. On error, -1 is returned.
30660
fc320d37 30661@item Errors:
0ce1b118
CV
30662
30663@table @code
b383017d 30664@item EACCES
0ce1b118
CV
30665No access to the file or the path of the file.
30666
b383017d 30667@item EPERM
0ce1b118
CV
30668The system does not allow unlinking of directories.
30669
b383017d 30670@item EBUSY
fc320d37 30671The file @var{pathname} cannot be unlinked because it's
0ce1b118
CV
30672being used by another process.
30673
b383017d 30674@item EFAULT
fc320d37 30675@var{pathnameptr} is an invalid pointer value.
0ce1b118
CV
30676
30677@item ENAMETOOLONG
fc320d37 30678@var{pathname} was too long.
0ce1b118 30679
b383017d 30680@item ENOENT
fc320d37 30681A directory component in @var{pathname} does not exist.
0ce1b118 30682
b383017d 30683@item ENOTDIR
0ce1b118
CV
30684A component of the path is not a directory.
30685
b383017d 30686@item EROFS
0ce1b118
CV
30687The file is on a read-only filesystem.
30688
b383017d 30689@item EINTR
0ce1b118
CV
30690The call was interrupted by the user.
30691@end table
30692
fc320d37
SL
30693@end table
30694
0ce1b118
CV
30695@node stat/fstat
30696@unnumberedsubsubsec stat/fstat
30697@cindex fstat, file-i/o system call
30698@cindex stat, file-i/o system call
30699
fc320d37
SL
30700@table @asis
30701@item Synopsis:
0ce1b118 30702@smallexample
0ce1b118
CV
30703int stat(const char *pathname, struct stat *buf);
30704int fstat(int fd, struct stat *buf);
fc320d37 30705@end smallexample
0ce1b118 30706
fc320d37
SL
30707@item Request:
30708@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@*
30709@samp{Ffstat,@var{fd},@var{bufptr}}
0ce1b118 30710
fc320d37 30711@item Return value:
0ce1b118
CV
30712On success, zero is returned. On error, -1 is returned.
30713
fc320d37 30714@item Errors:
0ce1b118
CV
30715
30716@table @code
b383017d 30717@item EBADF
fc320d37 30718@var{fd} is not a valid open file.
0ce1b118 30719
b383017d 30720@item ENOENT
fc320d37 30721A directory component in @var{pathname} does not exist or the
0ce1b118
CV
30722path is an empty string.
30723
b383017d 30724@item ENOTDIR
0ce1b118
CV
30725A component of the path is not a directory.
30726
b383017d 30727@item EFAULT
fc320d37 30728@var{pathnameptr} is an invalid pointer value.
0ce1b118 30729
b383017d 30730@item EACCES
0ce1b118
CV
30731No access to the file or the path of the file.
30732
30733@item ENAMETOOLONG
fc320d37 30734@var{pathname} was too long.
0ce1b118 30735
b383017d 30736@item EINTR
0ce1b118
CV
30737The call was interrupted by the user.
30738@end table
30739
fc320d37
SL
30740@end table
30741
0ce1b118
CV
30742@node gettimeofday
30743@unnumberedsubsubsec gettimeofday
30744@cindex gettimeofday, file-i/o system call
30745
fc320d37
SL
30746@table @asis
30747@item Synopsis:
0ce1b118 30748@smallexample
0ce1b118 30749int gettimeofday(struct timeval *tv, void *tz);
fc320d37 30750@end smallexample
0ce1b118 30751
fc320d37
SL
30752@item Request:
30753@samp{Fgettimeofday,@var{tvptr},@var{tzptr}}
0ce1b118 30754
fc320d37 30755@item Return value:
0ce1b118
CV
30756On success, 0 is returned, -1 otherwise.
30757
fc320d37 30758@item Errors:
0ce1b118
CV
30759
30760@table @code
b383017d 30761@item EINVAL
fc320d37 30762@var{tz} is a non-NULL pointer.
0ce1b118 30763
b383017d 30764@item EFAULT
fc320d37
SL
30765@var{tvptr} and/or @var{tzptr} is an invalid pointer value.
30766@end table
30767
0ce1b118
CV
30768@end table
30769
30770@node isatty
30771@unnumberedsubsubsec isatty
30772@cindex isatty, file-i/o system call
30773
fc320d37
SL
30774@table @asis
30775@item Synopsis:
0ce1b118 30776@smallexample
0ce1b118 30777int isatty(int fd);
fc320d37 30778@end smallexample
0ce1b118 30779
fc320d37
SL
30780@item Request:
30781@samp{Fisatty,@var{fd}}
0ce1b118 30782
fc320d37
SL
30783@item Return value:
30784Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise.
0ce1b118 30785
fc320d37 30786@item Errors:
0ce1b118
CV
30787
30788@table @code
b383017d 30789@item EINTR
0ce1b118
CV
30790The call was interrupted by the user.
30791@end table
30792
fc320d37
SL
30793@end table
30794
30795Note that the @code{isatty} call is treated as a special case: it returns
307961 to the target if the file descriptor is attached
30797to the @value{GDBN} console, 0 otherwise. Implementing through system calls
30798would require implementing @code{ioctl} and would be more complex than
30799needed.
30800
30801
0ce1b118
CV
30802@node system
30803@unnumberedsubsubsec system
30804@cindex system, file-i/o system call
30805
fc320d37
SL
30806@table @asis
30807@item Synopsis:
0ce1b118 30808@smallexample
0ce1b118 30809int system(const char *command);
fc320d37 30810@end smallexample
0ce1b118 30811
fc320d37
SL
30812@item Request:
30813@samp{Fsystem,@var{commandptr}/@var{len}}
0ce1b118 30814
fc320d37 30815@item Return value:
5600ea19
NS
30816If @var{len} is zero, the return value indicates whether a shell is
30817available. A zero return value indicates a shell is not available.
30818For non-zero @var{len}, the value returned is -1 on error and the
30819return status of the command otherwise. Only the exit status of the
30820command is returned, which is extracted from the host's @code{system}
30821return value by calling @code{WEXITSTATUS(retval)}. In case
30822@file{/bin/sh} could not be executed, 127 is returned.
0ce1b118 30823
fc320d37 30824@item Errors:
0ce1b118
CV
30825
30826@table @code
b383017d 30827@item EINTR
0ce1b118
CV
30828The call was interrupted by the user.
30829@end table
30830
fc320d37
SL
30831@end table
30832
30833@value{GDBN} takes over the full task of calling the necessary host calls
30834to perform the @code{system} call. The return value of @code{system} on
30835the host is simplified before it's returned
30836to the target. Any termination signal information from the child process
30837is discarded, and the return value consists
30838entirely of the exit status of the called command.
30839
30840Due to security concerns, the @code{system} call is by default refused
30841by @value{GDBN}. The user has to allow this call explicitly with the
30842@code{set remote system-call-allowed 1} command.
30843
30844@table @code
30845@item set remote system-call-allowed
30846@kindex set remote system-call-allowed
30847Control whether to allow the @code{system} calls in the File I/O
30848protocol for the remote target. The default is zero (disabled).
30849
30850@item show remote system-call-allowed
30851@kindex show remote system-call-allowed
30852Show whether the @code{system} calls are allowed in the File I/O
30853protocol.
30854@end table
30855
db2e3e2e
BW
30856@node Protocol-specific Representation of Datatypes
30857@subsection Protocol-specific Representation of Datatypes
30858@cindex protocol-specific representation of datatypes, in file-i/o protocol
0ce1b118
CV
30859
30860@menu
79a6e687
BW
30861* Integral Datatypes::
30862* Pointer Values::
30863* Memory Transfer::
0ce1b118
CV
30864* struct stat::
30865* struct timeval::
30866@end menu
30867
79a6e687
BW
30868@node Integral Datatypes
30869@unnumberedsubsubsec Integral Datatypes
0ce1b118
CV
30870@cindex integral datatypes, in file-i/o protocol
30871
fc320d37
SL
30872The integral datatypes used in the system calls are @code{int},
30873@code{unsigned int}, @code{long}, @code{unsigned long},
30874@code{mode_t}, and @code{time_t}.
0ce1b118 30875
fc320d37 30876@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
0ce1b118
CV
30877implemented as 32 bit values in this protocol.
30878
fc320d37 30879@code{long} and @code{unsigned long} are implemented as 64 bit types.
b383017d 30880
0ce1b118
CV
30881@xref{Limits}, for corresponding MIN and MAX values (similar to those
30882in @file{limits.h}) to allow range checking on host and target.
30883
30884@code{time_t} datatypes are defined as seconds since the Epoch.
30885
30886All integral datatypes transferred as part of a memory read or write of a
30887structured datatype e.g.@: a @code{struct stat} have to be given in big endian
30888byte order.
30889
79a6e687
BW
30890@node Pointer Values
30891@unnumberedsubsubsec Pointer Values
0ce1b118
CV
30892@cindex pointer values, in file-i/o protocol
30893
30894Pointers to target data are transmitted as they are. An exception
30895is made for pointers to buffers for which the length isn't
30896transmitted as part of the function call, namely strings. Strings
30897are transmitted as a pointer/length pair, both as hex values, e.g.@:
30898
30899@smallexample
30900@code{1aaf/12}
30901@end smallexample
30902
30903@noindent
30904which is a pointer to data of length 18 bytes at position 0x1aaf.
30905The length is defined as the full string length in bytes, including
fc320d37
SL
30906the trailing null byte. For example, the string @code{"hello world"}
30907at address 0x123456 is transmitted as
0ce1b118
CV
30908
30909@smallexample
fc320d37 30910@code{123456/d}
0ce1b118
CV
30911@end smallexample
30912
79a6e687
BW
30913@node Memory Transfer
30914@unnumberedsubsubsec Memory Transfer
fc320d37
SL
30915@cindex memory transfer, in file-i/o protocol
30916
30917Structured data which is transferred using a memory read or write (for
db2e3e2e 30918example, a @code{struct stat}) is expected to be in a protocol-specific format
fc320d37
SL
30919with all scalar multibyte datatypes being big endian. Translation to
30920this representation needs to be done both by the target before the @code{F}
30921packet is sent, and by @value{GDBN} before
30922it transfers memory to the target. Transferred pointers to structured
30923data should point to the already-coerced data at any time.
0ce1b118 30924
0ce1b118
CV
30925
30926@node struct stat
30927@unnumberedsubsubsec struct stat
30928@cindex struct stat, in file-i/o protocol
30929
fc320d37
SL
30930The buffer of type @code{struct stat} used by the target and @value{GDBN}
30931is defined as follows:
0ce1b118
CV
30932
30933@smallexample
30934struct stat @{
30935 unsigned int st_dev; /* device */
30936 unsigned int st_ino; /* inode */
30937 mode_t st_mode; /* protection */
30938 unsigned int st_nlink; /* number of hard links */
30939 unsigned int st_uid; /* user ID of owner */
30940 unsigned int st_gid; /* group ID of owner */
30941 unsigned int st_rdev; /* device type (if inode device) */
30942 unsigned long st_size; /* total size, in bytes */
30943 unsigned long st_blksize; /* blocksize for filesystem I/O */
30944 unsigned long st_blocks; /* number of blocks allocated */
30945 time_t st_atime; /* time of last access */
30946 time_t st_mtime; /* time of last modification */
30947 time_t st_ctime; /* time of last change */
30948@};
30949@end smallexample
30950
fc320d37 30951The integral datatypes conform to the definitions given in the
79a6e687 30952appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
30953structure is of size 64 bytes.
30954
30955The values of several fields have a restricted meaning and/or
30956range of values.
30957
fc320d37 30958@table @code
0ce1b118 30959
fc320d37
SL
30960@item st_dev
30961A value of 0 represents a file, 1 the console.
0ce1b118 30962
fc320d37
SL
30963@item st_ino
30964No valid meaning for the target. Transmitted unchanged.
0ce1b118 30965
fc320d37
SL
30966@item st_mode
30967Valid mode bits are described in @ref{Constants}. Any other
30968bits have currently no meaning for the target.
0ce1b118 30969
fc320d37
SL
30970@item st_uid
30971@itemx st_gid
30972@itemx st_rdev
30973No valid meaning for the target. Transmitted unchanged.
0ce1b118 30974
fc320d37
SL
30975@item st_atime
30976@itemx st_mtime
30977@itemx st_ctime
30978These values have a host and file system dependent
30979accuracy. Especially on Windows hosts, the file system may not
30980support exact timing values.
30981@end table
0ce1b118 30982
fc320d37
SL
30983The target gets a @code{struct stat} of the above representation and is
30984responsible for coercing it to the target representation before
0ce1b118
CV
30985continuing.
30986
fc320d37
SL
30987Note that due to size differences between the host, target, and protocol
30988representations of @code{struct stat} members, these members could eventually
0ce1b118
CV
30989get truncated on the target.
30990
30991@node struct timeval
30992@unnumberedsubsubsec struct timeval
30993@cindex struct timeval, in file-i/o protocol
30994
fc320d37 30995The buffer of type @code{struct timeval} used by the File-I/O protocol
0ce1b118
CV
30996is defined as follows:
30997
30998@smallexample
b383017d 30999struct timeval @{
0ce1b118
CV
31000 time_t tv_sec; /* second */
31001 long tv_usec; /* microsecond */
31002@};
31003@end smallexample
31004
fc320d37 31005The integral datatypes conform to the definitions given in the
79a6e687 31006appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
31007structure is of size 8 bytes.
31008
31009@node Constants
31010@subsection Constants
31011@cindex constants, in file-i/o protocol
31012
31013The following values are used for the constants inside of the
fc320d37 31014protocol. @value{GDBN} and target are responsible for translating these
0ce1b118
CV
31015values before and after the call as needed.
31016
31017@menu
79a6e687
BW
31018* Open Flags::
31019* mode_t Values::
31020* Errno Values::
31021* Lseek Flags::
0ce1b118
CV
31022* Limits::
31023@end menu
31024
79a6e687
BW
31025@node Open Flags
31026@unnumberedsubsubsec Open Flags
0ce1b118
CV
31027@cindex open flags, in file-i/o protocol
31028
31029All values are given in hexadecimal representation.
31030
31031@smallexample
31032 O_RDONLY 0x0
31033 O_WRONLY 0x1
31034 O_RDWR 0x2
31035 O_APPEND 0x8
31036 O_CREAT 0x200
31037 O_TRUNC 0x400
31038 O_EXCL 0x800
31039@end smallexample
31040
79a6e687
BW
31041@node mode_t Values
31042@unnumberedsubsubsec mode_t Values
0ce1b118
CV
31043@cindex mode_t values, in file-i/o protocol
31044
31045All values are given in octal representation.
31046
31047@smallexample
31048 S_IFREG 0100000
31049 S_IFDIR 040000
31050 S_IRUSR 0400
31051 S_IWUSR 0200
31052 S_IXUSR 0100
31053 S_IRGRP 040
31054 S_IWGRP 020
31055 S_IXGRP 010
31056 S_IROTH 04
31057 S_IWOTH 02
31058 S_IXOTH 01
31059@end smallexample
31060
79a6e687
BW
31061@node Errno Values
31062@unnumberedsubsubsec Errno Values
0ce1b118
CV
31063@cindex errno values, in file-i/o protocol
31064
31065All values are given in decimal representation.
31066
31067@smallexample
31068 EPERM 1
31069 ENOENT 2
31070 EINTR 4
31071 EBADF 9
31072 EACCES 13
31073 EFAULT 14
31074 EBUSY 16
31075 EEXIST 17
31076 ENODEV 19
31077 ENOTDIR 20
31078 EISDIR 21
31079 EINVAL 22
31080 ENFILE 23
31081 EMFILE 24
31082 EFBIG 27
31083 ENOSPC 28
31084 ESPIPE 29
31085 EROFS 30
31086 ENAMETOOLONG 91
31087 EUNKNOWN 9999
31088@end smallexample
31089
fc320d37 31090 @code{EUNKNOWN} is used as a fallback error value if a host system returns
0ce1b118
CV
31091 any error value not in the list of supported error numbers.
31092
79a6e687
BW
31093@node Lseek Flags
31094@unnumberedsubsubsec Lseek Flags
0ce1b118
CV
31095@cindex lseek flags, in file-i/o protocol
31096
31097@smallexample
31098 SEEK_SET 0
31099 SEEK_CUR 1
31100 SEEK_END 2
31101@end smallexample
31102
31103@node Limits
31104@unnumberedsubsubsec Limits
31105@cindex limits, in file-i/o protocol
31106
31107All values are given in decimal representation.
31108
31109@smallexample
31110 INT_MIN -2147483648
31111 INT_MAX 2147483647
31112 UINT_MAX 4294967295
31113 LONG_MIN -9223372036854775808
31114 LONG_MAX 9223372036854775807
31115 ULONG_MAX 18446744073709551615
31116@end smallexample
31117
31118@node File-I/O Examples
31119@subsection File-I/O Examples
31120@cindex file-i/o examples
31121
31122Example sequence of a write call, file descriptor 3, buffer is at target
31123address 0x1234, 6 bytes should be written:
31124
31125@smallexample
31126<- @code{Fwrite,3,1234,6}
31127@emph{request memory read from target}
31128-> @code{m1234,6}
31129<- XXXXXX
31130@emph{return "6 bytes written"}
31131-> @code{F6}
31132@end smallexample
31133
31134Example sequence of a read call, file descriptor 3, buffer is at target
31135address 0x1234, 6 bytes should be read:
31136
31137@smallexample
31138<- @code{Fread,3,1234,6}
31139@emph{request memory write to target}
31140-> @code{X1234,6:XXXXXX}
31141@emph{return "6 bytes read"}
31142-> @code{F6}
31143@end smallexample
31144
31145Example sequence of a read call, call fails on the host due to invalid
fc320d37 31146file descriptor (@code{EBADF}):
0ce1b118
CV
31147
31148@smallexample
31149<- @code{Fread,3,1234,6}
31150-> @code{F-1,9}
31151@end smallexample
31152
c8aa23ab 31153Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on
0ce1b118
CV
31154host is called:
31155
31156@smallexample
31157<- @code{Fread,3,1234,6}
31158-> @code{F-1,4,C}
31159<- @code{T02}
31160@end smallexample
31161
c8aa23ab 31162Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on
0ce1b118
CV
31163host is called:
31164
31165@smallexample
31166<- @code{Fread,3,1234,6}
31167-> @code{X1234,6:XXXXXX}
31168<- @code{T02}
31169@end smallexample
31170
cfa9d6d9
DJ
31171@node Library List Format
31172@section Library List Format
31173@cindex library list format, remote protocol
31174
31175On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the
31176same process as your application to manage libraries. In this case,
31177@value{GDBN} can use the loader's symbol table and normal memory
31178operations to maintain a list of shared libraries. On other
31179platforms, the operating system manages loaded libraries.
31180@value{GDBN} can not retrieve the list of currently loaded libraries
31181through memory operations, so it uses the @samp{qXfer:libraries:read}
31182packet (@pxref{qXfer library list read}) instead. The remote stub
31183queries the target's operating system and reports which libraries
31184are loaded.
31185
31186The @samp{qXfer:libraries:read} packet returns an XML document which
31187lists loaded libraries and their offsets. Each library has an
1fddbabb
PA
31188associated name and one or more segment or section base addresses,
31189which report where the library was loaded in memory.
31190
31191For the common case of libraries that are fully linked binaries, the
31192library should have a list of segments. If the target supports
31193dynamic linking of a relocatable object file, its library XML element
31194should instead include a list of allocated sections. The segment or
31195section bases are start addresses, not relocation offsets; they do not
31196depend on the library's link-time base addresses.
cfa9d6d9 31197
9cceb671
DJ
31198@value{GDBN} must be linked with the Expat library to support XML
31199library lists. @xref{Expat}.
31200
cfa9d6d9
DJ
31201A simple memory map, with one loaded library relocated by a single
31202offset, looks like this:
31203
31204@smallexample
31205<library-list>
31206 <library name="/lib/libc.so.6">
31207 <segment address="0x10000000"/>
31208 </library>
31209</library-list>
31210@end smallexample
31211
1fddbabb
PA
31212Another simple memory map, with one loaded library with three
31213allocated sections (.text, .data, .bss), looks like this:
31214
31215@smallexample
31216<library-list>
31217 <library name="sharedlib.o">
31218 <section address="0x10000000"/>
31219 <section address="0x20000000"/>
31220 <section address="0x30000000"/>
31221 </library>
31222</library-list>
31223@end smallexample
31224
cfa9d6d9
DJ
31225The format of a library list is described by this DTD:
31226
31227@smallexample
31228<!-- library-list: Root element with versioning -->
31229<!ELEMENT library-list (library)*>
31230<!ATTLIST library-list version CDATA #FIXED "1.0">
1fddbabb 31231<!ELEMENT library (segment*, section*)>
cfa9d6d9
DJ
31232<!ATTLIST library name CDATA #REQUIRED>
31233<!ELEMENT segment EMPTY>
31234<!ATTLIST segment address CDATA #REQUIRED>
1fddbabb
PA
31235<!ELEMENT section EMPTY>
31236<!ATTLIST section address CDATA #REQUIRED>
cfa9d6d9
DJ
31237@end smallexample
31238
1fddbabb
PA
31239In addition, segments and section descriptors cannot be mixed within a
31240single library element, and you must supply at least one segment or
31241section for each library.
31242
79a6e687
BW
31243@node Memory Map Format
31244@section Memory Map Format
68437a39
DJ
31245@cindex memory map format
31246
31247To be able to write into flash memory, @value{GDBN} needs to obtain a
31248memory map from the target. This section describes the format of the
31249memory map.
31250
31251The memory map is obtained using the @samp{qXfer:memory-map:read}
31252(@pxref{qXfer memory map read}) packet and is an XML document that
9cceb671
DJ
31253lists memory regions.
31254
31255@value{GDBN} must be linked with the Expat library to support XML
31256memory maps. @xref{Expat}.
31257
31258The top-level structure of the document is shown below:
68437a39
DJ
31259
31260@smallexample
31261<?xml version="1.0"?>
31262<!DOCTYPE memory-map
31263 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
31264 "http://sourceware.org/gdb/gdb-memory-map.dtd">
31265<memory-map>
31266 region...
31267</memory-map>
31268@end smallexample
31269
31270Each region can be either:
31271
31272@itemize
31273
31274@item
31275A region of RAM starting at @var{addr} and extending for @var{length}
31276bytes from there:
31277
31278@smallexample
31279<memory type="ram" start="@var{addr}" length="@var{length}"/>
31280@end smallexample
31281
31282
31283@item
31284A region of read-only memory:
31285
31286@smallexample
31287<memory type="rom" start="@var{addr}" length="@var{length}"/>
31288@end smallexample
31289
31290
31291@item
31292A region of flash memory, with erasure blocks @var{blocksize}
31293bytes in length:
31294
31295@smallexample
31296<memory type="flash" start="@var{addr}" length="@var{length}">
31297 <property name="blocksize">@var{blocksize}</property>
31298</memory>
31299@end smallexample
31300
31301@end itemize
31302
31303Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
31304by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
31305packets to write to addresses in such ranges.
31306
31307The formal DTD for memory map format is given below:
31308
31309@smallexample
31310<!-- ................................................... -->
31311<!-- Memory Map XML DTD ................................ -->
31312<!-- File: memory-map.dtd .............................. -->
31313<!-- .................................... .............. -->
31314<!-- memory-map.dtd -->
31315<!-- memory-map: Root element with versioning -->
31316<!ELEMENT memory-map (memory | property)>
31317<!ATTLIST memory-map version CDATA #FIXED "1.0.0">
31318<!ELEMENT memory (property)>
31319<!-- memory: Specifies a memory region,
31320 and its type, or device. -->
31321<!ATTLIST memory type CDATA #REQUIRED
31322 start CDATA #REQUIRED
31323 length CDATA #REQUIRED
31324 device CDATA #IMPLIED>
31325<!-- property: Generic attribute tag -->
31326<!ELEMENT property (#PCDATA | property)*>
31327<!ATTLIST property name CDATA #REQUIRED>
31328@end smallexample
31329
f418dd93
DJ
31330@include agentexpr.texi
31331
23181151
DJ
31332@node Target Descriptions
31333@appendix Target Descriptions
31334@cindex target descriptions
31335
31336@strong{Warning:} target descriptions are still under active development,
31337and the contents and format may change between @value{GDBN} releases.
31338The format is expected to stabilize in the future.
31339
31340One of the challenges of using @value{GDBN} to debug embedded systems
31341is that there are so many minor variants of each processor
31342architecture in use. It is common practice for vendors to start with
31343a standard processor core --- ARM, PowerPC, or MIPS, for example ---
31344and then make changes to adapt it to a particular market niche. Some
31345architectures have hundreds of variants, available from dozens of
31346vendors. This leads to a number of problems:
31347
31348@itemize @bullet
31349@item
31350With so many different customized processors, it is difficult for
31351the @value{GDBN} maintainers to keep up with the changes.
31352@item
31353Since individual variants may have short lifetimes or limited
31354audiences, it may not be worthwhile to carry information about every
31355variant in the @value{GDBN} source tree.
31356@item
31357When @value{GDBN} does support the architecture of the embedded system
31358at hand, the task of finding the correct architecture name to give the
31359@command{set architecture} command can be error-prone.
31360@end itemize
31361
31362To address these problems, the @value{GDBN} remote protocol allows a
31363target system to not only identify itself to @value{GDBN}, but to
31364actually describe its own features. This lets @value{GDBN} support
31365processor variants it has never seen before --- to the extent that the
31366descriptions are accurate, and that @value{GDBN} understands them.
31367
9cceb671
DJ
31368@value{GDBN} must be linked with the Expat library to support XML
31369target descriptions. @xref{Expat}.
123dc839 31370
23181151
DJ
31371@menu
31372* Retrieving Descriptions:: How descriptions are fetched from a target.
31373* Target Description Format:: The contents of a target description.
123dc839
DJ
31374* Predefined Target Types:: Standard types available for target
31375 descriptions.
31376* Standard Target Features:: Features @value{GDBN} knows about.
23181151
DJ
31377@end menu
31378
31379@node Retrieving Descriptions
31380@section Retrieving Descriptions
31381
31382Target descriptions can be read from the target automatically, or
31383specified by the user manually. The default behavior is to read the
31384description from the target. @value{GDBN} retrieves it via the remote
31385protocol using @samp{qXfer} requests (@pxref{General Query Packets,
31386qXfer}). The @var{annex} in the @samp{qXfer} packet will be
31387@samp{target.xml}. The contents of the @samp{target.xml} annex are an
31388XML document, of the form described in @ref{Target Description
31389Format}.
31390
31391Alternatively, you can specify a file to read for the target description.
31392If a file is set, the target will not be queried. The commands to
31393specify a file are:
31394
31395@table @code
31396@cindex set tdesc filename
31397@item set tdesc filename @var{path}
31398Read the target description from @var{path}.
31399
31400@cindex unset tdesc filename
31401@item unset tdesc filename
31402Do not read the XML target description from a file. @value{GDBN}
31403will use the description supplied by the current target.
31404
31405@cindex show tdesc filename
31406@item show tdesc filename
31407Show the filename to read for a target description, if any.
31408@end table
31409
31410
31411@node Target Description Format
31412@section Target Description Format
31413@cindex target descriptions, XML format
31414
31415A target description annex is an @uref{http://www.w3.org/XML/, XML}
31416document which complies with the Document Type Definition provided in
31417the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This
31418means you can use generally available tools like @command{xmllint} to
31419check that your feature descriptions are well-formed and valid.
31420However, to help people unfamiliar with XML write descriptions for
31421their targets, we also describe the grammar here.
31422
123dc839
DJ
31423Target descriptions can identify the architecture of the remote target
31424and (for some architectures) provide information about custom register
08d16641
PA
31425sets. They can also identify the OS ABI of the remote target.
31426@value{GDBN} can use this information to autoconfigure for your
123dc839 31427target, or to warn you if you connect to an unsupported target.
23181151
DJ
31428
31429Here is a simple target description:
31430
123dc839 31431@smallexample
1780a0ed 31432<target version="1.0">
23181151
DJ
31433 <architecture>i386:x86-64</architecture>
31434</target>
123dc839 31435@end smallexample
23181151
DJ
31436
31437@noindent
31438This minimal description only says that the target uses
31439the x86-64 architecture.
31440
123dc839
DJ
31441A target description has the following overall form, with [ ] marking
31442optional elements and @dots{} marking repeatable elements. The elements
31443are explained further below.
23181151 31444
123dc839 31445@smallexample
23181151
DJ
31446<?xml version="1.0"?>
31447<!DOCTYPE target SYSTEM "gdb-target.dtd">
1780a0ed 31448<target version="1.0">
123dc839 31449 @r{[}@var{architecture}@r{]}
08d16641 31450 @r{[}@var{osabi}@r{]}
e35359c5 31451 @r{[}@var{compatible}@r{]}
123dc839 31452 @r{[}@var{feature}@dots{}@r{]}
23181151 31453</target>
123dc839 31454@end smallexample
23181151
DJ
31455
31456@noindent
31457The description is generally insensitive to whitespace and line
31458breaks, under the usual common-sense rules. The XML version
31459declaration and document type declaration can generally be omitted
31460(@value{GDBN} does not require them), but specifying them may be
1780a0ed
DJ
31461useful for XML validation tools. The @samp{version} attribute for
31462@samp{<target>} may also be omitted, but we recommend
31463including it; if future versions of @value{GDBN} use an incompatible
31464revision of @file{gdb-target.dtd}, they will detect and report
31465the version mismatch.
23181151 31466
108546a0
DJ
31467@subsection Inclusion
31468@cindex target descriptions, inclusion
31469@cindex XInclude
31470@ifnotinfo
31471@cindex <xi:include>
31472@end ifnotinfo
31473
31474It can sometimes be valuable to split a target description up into
31475several different annexes, either for organizational purposes, or to
31476share files between different possible target descriptions. You can
31477divide a description into multiple files by replacing any element of
31478the target description with an inclusion directive of the form:
31479
123dc839 31480@smallexample
108546a0 31481<xi:include href="@var{document}"/>
123dc839 31482@end smallexample
108546a0
DJ
31483
31484@noindent
31485When @value{GDBN} encounters an element of this form, it will retrieve
31486the named XML @var{document}, and replace the inclusion directive with
31487the contents of that document. If the current description was read
31488using @samp{qXfer}, then so will be the included document;
31489@var{document} will be interpreted as the name of an annex. If the
31490current description was read from a file, @value{GDBN} will look for
31491@var{document} as a file in the same directory where it found the
31492original description.
31493
123dc839
DJ
31494@subsection Architecture
31495@cindex <architecture>
31496
31497An @samp{<architecture>} element has this form:
31498
31499@smallexample
31500 <architecture>@var{arch}</architecture>
31501@end smallexample
31502
e35359c5
UW
31503@var{arch} is one of the architectures from the set accepted by
31504@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
123dc839 31505
08d16641
PA
31506@subsection OS ABI
31507@cindex @code{<osabi>}
31508
31509This optional field was introduced in @value{GDBN} version 7.0.
31510Previous versions of @value{GDBN} ignore it.
31511
31512An @samp{<osabi>} element has this form:
31513
31514@smallexample
31515 <osabi>@var{abi-name}</osabi>
31516@end smallexample
31517
31518@var{abi-name} is an OS ABI name from the same selection accepted by
31519@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}).
31520
e35359c5
UW
31521@subsection Compatible Architecture
31522@cindex @code{<compatible>}
31523
31524This optional field was introduced in @value{GDBN} version 7.0.
31525Previous versions of @value{GDBN} ignore it.
31526
31527A @samp{<compatible>} element has this form:
31528
31529@smallexample
31530 <compatible>@var{arch}</compatible>
31531@end smallexample
31532
31533@var{arch} is one of the architectures from the set accepted by
31534@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
31535
31536A @samp{<compatible>} element is used to specify that the target
31537is able to run binaries in some other than the main target architecture
31538given by the @samp{<architecture>} element. For example, on the
31539Cell Broadband Engine, the main architecture is @code{powerpc:common}
31540or @code{powerpc:common64}, but the system is able to run binaries
31541in the @code{spu} architecture as well. The way to describe this
31542capability with @samp{<compatible>} is as follows:
31543
31544@smallexample
31545 <architecture>powerpc:common</architecture>
31546 <compatible>spu</compatible>
31547@end smallexample
31548
123dc839
DJ
31549@subsection Features
31550@cindex <feature>
31551
31552Each @samp{<feature>} describes some logical portion of the target
31553system. Features are currently used to describe available CPU
31554registers and the types of their contents. A @samp{<feature>} element
31555has this form:
31556
31557@smallexample
31558<feature name="@var{name}">
31559 @r{[}@var{type}@dots{}@r{]}
31560 @var{reg}@dots{}
31561</feature>
31562@end smallexample
31563
31564@noindent
31565Each feature's name should be unique within the description. The name
31566of a feature does not matter unless @value{GDBN} has some special
31567knowledge of the contents of that feature; if it does, the feature
31568should have its standard name. @xref{Standard Target Features}.
31569
31570@subsection Types
31571
31572Any register's value is a collection of bits which @value{GDBN} must
31573interpret. The default interpretation is a two's complement integer,
31574but other types can be requested by name in the register description.
31575Some predefined types are provided by @value{GDBN} (@pxref{Predefined
31576Target Types}), and the description can define additional composite types.
31577
31578Each type element must have an @samp{id} attribute, which gives
31579a unique (within the containing @samp{<feature>}) name to the type.
31580Types must be defined before they are used.
31581
31582@cindex <vector>
31583Some targets offer vector registers, which can be treated as arrays
31584of scalar elements. These types are written as @samp{<vector>} elements,
31585specifying the array element type, @var{type}, and the number of elements,
31586@var{count}:
31587
31588@smallexample
31589<vector id="@var{id}" type="@var{type}" count="@var{count}"/>
31590@end smallexample
31591
31592@cindex <union>
31593If a register's value is usefully viewed in multiple ways, define it
31594with a union type containing the useful representations. The
31595@samp{<union>} element contains one or more @samp{<field>} elements,
31596each of which has a @var{name} and a @var{type}:
31597
31598@smallexample
31599<union id="@var{id}">
31600 <field name="@var{name}" type="@var{type}"/>
31601 @dots{}
31602</union>
31603@end smallexample
31604
31605@subsection Registers
31606@cindex <reg>
31607
31608Each register is represented as an element with this form:
31609
31610@smallexample
31611<reg name="@var{name}"
31612 bitsize="@var{size}"
31613 @r{[}regnum="@var{num}"@r{]}
31614 @r{[}save-restore="@var{save-restore}"@r{]}
31615 @r{[}type="@var{type}"@r{]}
31616 @r{[}group="@var{group}"@r{]}/>
31617@end smallexample
31618
31619@noindent
31620The components are as follows:
31621
31622@table @var
31623
31624@item name
31625The register's name; it must be unique within the target description.
31626
31627@item bitsize
31628The register's size, in bits.
31629
31630@item regnum
31631The register's number. If omitted, a register's number is one greater
31632than that of the previous register (either in the current feature or in
31633a preceeding feature); the first register in the target description
31634defaults to zero. This register number is used to read or write
31635the register; e.g.@: it is used in the remote @code{p} and @code{P}
31636packets, and registers appear in the @code{g} and @code{G} packets
31637in order of increasing register number.
31638
31639@item save-restore
31640Whether the register should be preserved across inferior function
31641calls; this must be either @code{yes} or @code{no}. The default is
31642@code{yes}, which is appropriate for most registers except for
31643some system control registers; this is not related to the target's
31644ABI.
31645
31646@item type
31647The type of the register. @var{type} may be a predefined type, a type
31648defined in the current feature, or one of the special types @code{int}
31649and @code{float}. @code{int} is an integer type of the correct size
31650for @var{bitsize}, and @code{float} is a floating point type (in the
31651architecture's normal floating point format) of the correct size for
31652@var{bitsize}. The default is @code{int}.
31653
31654@item group
31655The register group to which this register belongs. @var{group} must
31656be either @code{general}, @code{float}, or @code{vector}. If no
31657@var{group} is specified, @value{GDBN} will not display the register
31658in @code{info registers}.
31659
31660@end table
31661
31662@node Predefined Target Types
31663@section Predefined Target Types
31664@cindex target descriptions, predefined types
31665
31666Type definitions in the self-description can build up composite types
31667from basic building blocks, but can not define fundamental types. Instead,
31668standard identifiers are provided by @value{GDBN} for the fundamental
31669types. The currently supported types are:
31670
31671@table @code
31672
31673@item int8
31674@itemx int16
31675@itemx int32
31676@itemx int64
7cc46491 31677@itemx int128
123dc839
DJ
31678Signed integer types holding the specified number of bits.
31679
31680@item uint8
31681@itemx uint16
31682@itemx uint32
31683@itemx uint64
7cc46491 31684@itemx uint128
123dc839
DJ
31685Unsigned integer types holding the specified number of bits.
31686
31687@item code_ptr
31688@itemx data_ptr
31689Pointers to unspecified code and data. The program counter and
31690any dedicated return address register may be marked as code
31691pointers; printing a code pointer converts it into a symbolic
31692address. The stack pointer and any dedicated address registers
31693may be marked as data pointers.
31694
6e3bbd1a
PB
31695@item ieee_single
31696Single precision IEEE floating point.
31697
31698@item ieee_double
31699Double precision IEEE floating point.
31700
123dc839
DJ
31701@item arm_fpa_ext
31702The 12-byte extended precision format used by ARM FPA registers.
31703
31704@end table
31705
31706@node Standard Target Features
31707@section Standard Target Features
31708@cindex target descriptions, standard features
31709
31710A target description must contain either no registers or all the
31711target's registers. If the description contains no registers, then
31712@value{GDBN} will assume a default register layout, selected based on
31713the architecture. If the description contains any registers, the
31714default layout will not be used; the standard registers must be
31715described in the target description, in such a way that @value{GDBN}
31716can recognize them.
31717
31718This is accomplished by giving specific names to feature elements
31719which contain standard registers. @value{GDBN} will look for features
31720with those names and verify that they contain the expected registers;
31721if any known feature is missing required registers, or if any required
31722feature is missing, @value{GDBN} will reject the target
31723description. You can add additional registers to any of the
31724standard features --- @value{GDBN} will display them just as if
31725they were added to an unrecognized feature.
31726
31727This section lists the known features and their expected contents.
31728Sample XML documents for these features are included in the
31729@value{GDBN} source tree, in the directory @file{gdb/features}.
31730
31731Names recognized by @value{GDBN} should include the name of the
31732company or organization which selected the name, and the overall
31733architecture to which the feature applies; so e.g.@: the feature
31734containing ARM core registers is named @samp{org.gnu.gdb.arm.core}.
31735
ff6f572f
DJ
31736The names of registers are not case sensitive for the purpose
31737of recognizing standard features, but @value{GDBN} will only display
31738registers using the capitalization used in the description.
31739
e9c17194
VP
31740@menu
31741* ARM Features::
1e26b4f8 31742* MIPS Features::
e9c17194 31743* M68K Features::
1e26b4f8 31744* PowerPC Features::
e9c17194
VP
31745@end menu
31746
31747
31748@node ARM Features
123dc839
DJ
31749@subsection ARM Features
31750@cindex target descriptions, ARM features
31751
31752The @samp{org.gnu.gdb.arm.core} feature is required for ARM targets.
31753It should contain registers @samp{r0} through @samp{r13}, @samp{sp},
31754@samp{lr}, @samp{pc}, and @samp{cpsr}.
31755
31756The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it
31757should contain registers @samp{f0} through @samp{f7} and @samp{fps}.
31758
ff6f572f
DJ
31759The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present,
31760it should contain at least registers @samp{wR0} through @samp{wR15} and
31761@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon},
31762@samp{wCSSF}, and @samp{wCASF} registers are optional.
23181151 31763
58d6951d
DJ
31764The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it
31765should contain at least registers @samp{d0} through @samp{d15}. If
31766they are present, @samp{d16} through @samp{d31} should also be included.
31767@value{GDBN} will synthesize the single-precision registers from
31768halves of the double-precision registers.
31769
31770The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not
31771need to contain registers; it instructs @value{GDBN} to display the
31772VFP double-precision registers as vectors and to synthesize the
31773quad-precision registers from pairs of double-precision registers.
31774If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also
31775be present and include 32 double-precision registers.
31776
1e26b4f8 31777@node MIPS Features
f8b73d13
DJ
31778@subsection MIPS Features
31779@cindex target descriptions, MIPS features
31780
31781The @samp{org.gnu.gdb.mips.cpu} feature is required for MIPS targets.
31782It should contain registers @samp{r0} through @samp{r31}, @samp{lo},
31783@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending
31784on the target.
31785
31786The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should
31787contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause}
31788registers. They may be 32-bit or 64-bit depending on the target.
31789
31790The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though
31791it may be optional in a future version of @value{GDBN}. It should
31792contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and
31793@samp{fir}. They may be 32-bit or 64-bit depending on the target.
31794
822b6570
DJ
31795The @samp{org.gnu.gdb.mips.linux} feature is optional. It should
31796contain a single register, @samp{restart}, which is used by the
31797Linux kernel to control restartable syscalls.
31798
e9c17194
VP
31799@node M68K Features
31800@subsection M68K Features
31801@cindex target descriptions, M68K features
31802
31803@table @code
31804@item @samp{org.gnu.gdb.m68k.core}
31805@itemx @samp{org.gnu.gdb.coldfire.core}
31806@itemx @samp{org.gnu.gdb.fido.core}
31807One of those features must be always present.
249e1128 31808The feature that is present determines which flavor of m68k is
e9c17194
VP
31809used. The feature that is present should contain registers
31810@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp},
31811@samp{sp}, @samp{ps} and @samp{pc}.
31812
31813@item @samp{org.gnu.gdb.coldfire.fp}
31814This feature is optional. If present, it should contain registers
31815@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
31816@samp{fpiaddr}.
31817@end table
31818
1e26b4f8 31819@node PowerPC Features
7cc46491
DJ
31820@subsection PowerPC Features
31821@cindex target descriptions, PowerPC features
31822
31823The @samp{org.gnu.gdb.power.core} feature is required for PowerPC
31824targets. It should contain registers @samp{r0} through @samp{r31},
31825@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and
31826@samp{xer}. They may be 32-bit or 64-bit depending on the target.
31827
31828The @samp{org.gnu.gdb.power.fpu} feature is optional. It should
31829contain registers @samp{f0} through @samp{f31} and @samp{fpscr}.
31830
31831The @samp{org.gnu.gdb.power.altivec} feature is optional. It should
31832contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
31833and @samp{vrsave}.
31834
677c5bb1
LM
31835The @samp{org.gnu.gdb.power.vsx} feature is optional. It should
31836contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN}
31837will combine these registers with the floating point registers
31838(@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0}
aeac0ff9 31839through @samp{vr31}) to present the 128-bit wide registers @samp{vs0}
677c5bb1
LM
31840through @samp{vs63}, the set of vector registers for POWER7.
31841
7cc46491
DJ
31842The @samp{org.gnu.gdb.power.spe} feature is optional. It should
31843contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
31844@samp{spefscr}. SPE targets should provide 32-bit registers in
31845@samp{org.gnu.gdb.power.core} and provide the upper halves in
31846@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine
31847these to present registers @samp{ev0} through @samp{ev31} to the
31848user.
31849
07e059b5
VP
31850@node Operating System Information
31851@appendix Operating System Information
31852@cindex operating system information
31853
31854@menu
31855* Process list::
31856@end menu
31857
31858Users of @value{GDBN} often wish to obtain information about the state of
31859the operating system running on the target---for example the list of
31860processes, or the list of open files. This section describes the
31861mechanism that makes it possible. This mechanism is similar to the
31862target features mechanism (@pxref{Target Descriptions}), but focuses
31863on a different aspect of target.
31864
31865Operating system information is retrived from the target via the
31866remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata
31867read}). The object name in the request should be @samp{osdata}, and
31868the @var{annex} identifies the data to be fetched.
31869
31870@node Process list
31871@appendixsection Process list
31872@cindex operating system information, process list
31873
31874When requesting the process list, the @var{annex} field in the
31875@samp{qXfer} request should be @samp{processes}. The returned data is
31876an XML document. The formal syntax of this document is defined in
31877@file{gdb/features/osdata.dtd}.
31878
31879An example document is:
31880
31881@smallexample
31882<?xml version="1.0"?>
31883<!DOCTYPE target SYSTEM "osdata.dtd">
31884<osdata type="processes">
31885 <item>
31886 <column name="pid">1</column>
31887 <column name="user">root</column>
31888 <column name="command">/sbin/init</column>
31889 </item>
31890</osdata>
31891@end smallexample
31892
31893Each item should include a column whose name is @samp{pid}. The value
31894of that column should identify the process on the target. The
31895@samp{user} and @samp{command} columns are optional, and will be
31896displayed by @value{GDBN}. Target may provide additional columns,
31897which @value{GDBN} currently ignores.
31898
aab4e0ec 31899@include gpl.texi
eb12ee30 31900
2154891a 31901@raisesections
6826cf00 31902@include fdl.texi
2154891a 31903@lowersections
6826cf00 31904
6d2ebf8b 31905@node Index
c906108c
SS
31906@unnumbered Index
31907
31908@printindex cp
31909
31910@tex
31911% I think something like @colophon should be in texinfo. In the
31912% meantime:
31913\long\def\colophon{\hbox to0pt{}\vfill
31914\centerline{The body of this manual is set in}
31915\centerline{\fontname\tenrm,}
31916\centerline{with headings in {\bf\fontname\tenbf}}
31917\centerline{and examples in {\tt\fontname\tentt}.}
31918\centerline{{\it\fontname\tenit\/},}
31919\centerline{{\bf\fontname\tenbf}, and}
31920\centerline{{\sl\fontname\tensl\/}}
31921\centerline{are used for emphasis.}\vfill}
31922\page\colophon
31923% Blame: doc@cygnus.com, 1991.
31924@end tex
31925
c906108c 31926@bye
This page took 3.962754 seconds and 4 git commands to generate.